final Point2D CENTER = new Point2D(BOUNDS.getWidth() / 2, BOUNDS.getHeight() / 2);
final double RADIUS = Math.sqrt(BOUNDS.getWidth() * BOUNDS.getWidth() + BOUNDS.getHeight() * BOUNDS.getHeight()) / 2;
final double ANGLE_STEP = 0.1;
final GradientLookup COLOR_LOOKUP = new GradientLookup(STOPS);
CTX.translate(CENTER.getX(), CENTER.getY());
CTX.rotate(-90 + ROTATION_OFFSET);
CTX.translate(-CENTER.getX(), -CENTER.getY());
for (int i = 0, size = STOPS.length - 1; i < size; i++) {
for (double angle = STOPS[i].getOffset() * 360; Double.compare(angle,STOPS[i + 1].getOffset() * 360) <= 0; angle += 0.1) {
CTX.beginPath();
CTX.moveTo(CENTER.getX() - RADIUS, CENTER.getY() - RADIUS);