int[] ltt = drawCircle(circX, circY, radius, CirclePart.LEFT_TOP); System.arraycopy(ltt, 0, points, index, ltt.length); index += ltt.length; int[] lbb = drawCircle(circX, circY + height - (radius * 2), radius, CirclePart.LEFT_BOTTOM); System.arraycopy(lbb, 0, points, index, lbb.length); index += lbb.length; int[] rb = drawCircle(circX + width - (radius * 2), circY + height - (radius * 2), radius, CirclePart.RIGHT_BOTTOM); System.arraycopy(rb, 0, points, index, rb.length); index += rb.length; int[] rt = drawCircle(circX + width - (radius * 2), circY, radius, CirclePart.RIGHT_TOP); System.arraycopy(rt, 0, points, index, rt.length); index += rt.length;
private void drawCutout(GC gc, int x, int y, int radius, CirclePart side) { int centerX = x + (side.isLeft() ? radius : -radius); int centerY = y + (side.isTop() ? radius : -radius); int[] circle = drawCircle(centerX, centerY, radius, side); int[] result = new int[circle.length + 2]; result[0] = x; result[1] = y; int count = circle.length / 2; for (int idx = 0; idx < count; idx++) { int destIdx = idx * 2 + 2; int srcIdx = (count - 1 - idx) * 2; result[destIdx] = circle[srcIdx]; result[destIdx + 1] = circle[srcIdx + 1]; } gc.fillPolygon(result); }
draw(PART_BACKGROUND, SWT.NONE, trim, gc); int[] ltt = drawCircle(circX + 1, circY + 1, radius, CirclePart.LEFT_TOP); System.arraycopy(ltt, 0, points, index, ltt.length); index += ltt.length; int[] lbb = drawCircle(circX + 1, circY + height - (radius * 2) - 2, radius, CirclePart.LEFT_BOTTOM); System.arraycopy(lbb, 0, points, index, lbb.length); index += lbb.length; int[] rb = drawCircle(circX + width - (radius * 2) - 2, circY + height - (radius * 2) - 2, radius, CirclePart.RIGHT_BOTTOM); System.arraycopy(rb, 0, points, index, rb.length); index += rb.length; int[] rt = drawCircle(circX + width - (radius * 2) - 2, circY + 1, radius, CirclePart.RIGHT_TOP); System.arraycopy(rt, 0, points, index, rt.length); index += rt.length;
int[] ltt = drawCircle(leftIndex, circY, radius, LEFT_TOP); for (int i = 0; i < ltt.length / 2; i += 2) { int tmp = ltt[i]; int[] rt = drawCircle(rightIndex + width - (radius * 2), circY, radius, RIGHT_TOP); for (int i = 0; i < rt.length / 2; i += 2) { int[] ltt = drawCircle(leftIndex, circY, radius, LEFT_BOTTOM); System.arraycopy(ltt, 0, points, index, ltt.length); index += ltt.length; int[] rt = drawCircle(rightIndex + width - (radius * 2), circY, radius, RIGHT_BOTTOM); System.arraycopy(rt, 0, points, index, rt.length);
region.dispose(); int[] ltt = drawCircle(circX + 1, circY + 1, radius, LEFT_TOP); System.arraycopy(ltt, 0, points, index, ltt.length); index += ltt.length; int[] lbb = drawCircle(circX + 1, circY + height - (radius * 2) - 2, radius, LEFT_BOTTOM); System.arraycopy(lbb, 0, points, index, lbb.length); index += lbb.length; int[] rb = drawCircle(circX + width - (radius * 2) - 2, circY + height - (radius * 2) - 2, radius, RIGHT_BOTTOM); System.arraycopy(rb, 0, points, index, rb.length); index += rb.length; int[] rt = drawCircle(circX + width - (radius * 2) - 2, circY + 1, radius, RIGHT_TOP); System.arraycopy(rt, 0, points, index, rt.length);
int[] ltt = drawCircle(circX, circY, radius, LEFT_TOP); System.arraycopy(ltt, 0, points, index, ltt.length); index += ltt.length; int[] lbb = drawCircle(circX, circY + height - (radius * 2), radius, LEFT_BOTTOM); System.arraycopy(lbb, 0, points, index, lbb.length); index += lbb.length; int[] rb = drawCircle(circX + width - (radius * 2), circY + height - (radius * 2), radius, RIGHT_BOTTOM); System.arraycopy(rb, 0, points, index, rb.length); index += rb.length; int[] rt = drawCircle(circX + width - (radius * 2), circY, radius, RIGHT_TOP); System.arraycopy(rt, 0, points, index, rt.length);
int[] ltt = drawCircle(leftIndex, circY, radius, CirclePart.left(onBottom)); if (!onBottom) { mirrorCirclePoints(ltt); int[] rt = drawCircle(rightIndex + width - (radius * 2), circY, radius, CirclePart.right(onBottom)); if (!onBottom) { mirrorCirclePoints(rt);
int[] ltt = drawCircle(circX, circY, radius, LEFT_TOP); startX = ltt[6]; for (int i = 0; i < ltt.length / 2; i += 2) { index += ltt.length; int[] rt = drawCircle(circX + width - (radius * 2), circY, radius, RIGHT_TOP); endX = rt[rt.length - 4]; points[index++] = selectionY2 = bounds.y + bounds.height; } else { int[] ltt = drawCircle(circX, circY, radius, LEFT_BOTTOM); startX = ltt[6]; System.arraycopy(ltt, 0, points, index, ltt.length); index += ltt.length; int[] rt = drawCircle(circX + width - (radius * 2), circY, radius, RIGHT_BOTTOM); endX = rt[rt.length - 4];
int[] ltt = drawCircle(circX, circY, radius, CirclePart.left(onBottom)); int startX = ltt[6]; if (!onBottom) { int[] rt = drawCircle(circX + width - (radius * 2), circY, radius, CirclePart.right(onBottom)); int endX = rt[rt.length - 4]; if (!onBottom) {