@Override
  public void paint(Graphics2D graphics, Dimension dimensions) {

    final Color SHADOW_COLOR = new Color(0.0f, 0.0f, 0.0f, 0.65f);

    graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    graphics.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
    // graphics.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
    // RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
    // graphics.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,
    // RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    graphics.setRenderingHint(
        RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);
    // graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
    // RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    final int imageWidth = (int) dimensions.getWidth();
    final int imageHeight = (int) dimensions.getHeight();

    final GeneralPath pointerShape;

    pointerShape = new GeneralPath();
    pointerShape.setWindingRule(Path2D.WIND_EVEN_ODD);
    pointerShape.moveTo(0.5 * imageWidth, 0.16822429906542055 * imageHeight);
    pointerShape.lineTo(0.48598130841121495 * imageWidth, 0.5 * imageHeight);
    pointerShape.lineTo(0.5 * imageWidth, 0.5046728971962616 * imageHeight);
    pointerShape.lineTo(0.5093457943925234 * imageWidth, 0.5 * imageHeight);
    pointerShape.lineTo(0.5 * imageWidth, 0.16822429906542055 * imageHeight);
    pointerShape.closePath();
    graphics.setColor(SHADOW_COLOR);
    graphics.fill(pointerShape);

    graphics.dispose();
  }
示例#2
0
  public void render(int w, int h, Graphics2D g2) {

    g2.translate(w * .2, h * .2);

    GeneralPath p = new GeneralPath(GeneralPath.WIND_NON_ZERO);
    p.moveTo(0.0f, 0.0f);
    p.lineTo(w * .5f, 0.0f);
    p.lineTo(w * .5f, h * .2f);
    p.lineTo(0.0f, h * .2f);
    p.closePath();

    p.moveTo(w * .05f, h * .05f);
    p.lineTo(w * .55f, h * .05f);
    p.lineTo(w * .55f, h * .25f);
    p.lineTo(w * .05f, h * .25f);
    p.closePath();

    g2.setColor(LIGHT_GRAY);
    g2.fill(p);
    g2.setColor(BLACK);
    g2.draw(p);
    g2.drawString("NON_ZERO rule", 0, -5);

    g2.translate(0.0f, h * .45);

    p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
    g2.setColor(LIGHT_GRAY);
    g2.fill(p);
    g2.setColor(BLACK);
    g2.draw(p);
    g2.drawString("EVEN_ODD rule", 0, -5);
  }
  @Override
  public void paint(Graphics2D graphics, Dimension dimensions) {

    final Color shadowColor = new Color(0.0f, 0.0f, 0.0f, 0.65f);

    graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    graphics.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
    // graphics.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
    // RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
    // graphics.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,
    // RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    graphics.setRenderingHint(
        RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);
    // graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
    // RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    final int imageWidth = (int) dimensions.getWidth();
    final int imageHeight = (int) dimensions.getHeight();

    final GeneralPath pointerShape;

    pointerShape = new GeneralPath();
    pointerShape.setWindingRule(Path2D.WIND_EVEN_ODD);
    pointerShape.moveTo(imageWidth * 0.5, imageHeight * 0.14953271028037382);
    pointerShape.curveTo(
        imageWidth * 0.5,
        imageHeight * 0.14953271028037382,
        imageWidth * 0.4439252336448598,
        imageHeight * 0.49065420560747663,
        imageWidth * 0.4439252336448598,
        imageHeight * 0.5);
    pointerShape.curveTo(
        imageWidth * 0.4439252336448598,
        imageHeight * 0.5327102803738317,
        imageWidth * 0.4672897196261682,
        imageHeight * 0.5560747663551402,
        imageWidth * 0.5,
        imageHeight * 0.5560747663551402);
    pointerShape.curveTo(
        imageWidth * 0.5327102803738317,
        imageHeight * 0.5560747663551402,
        imageWidth * 0.5560747663551402,
        imageHeight * 0.5327102803738317,
        imageWidth * 0.5560747663551402,
        imageHeight * 0.5);
    pointerShape.curveTo(
        imageWidth * 0.5560747663551402,
        imageHeight * 0.49065420560747663,
        imageWidth * 0.5,
        imageHeight * 0.14953271028037382,
        imageWidth * 0.5,
        imageHeight * 0.14953271028037382);
    pointerShape.closePath();
    graphics.setColor(shadowColor);
    graphics.fill(pointerShape);

    graphics.dispose();
  }
  private BufferedImage create_LCD_THRESHOLD_Image(
      final int WIDTH, final int HEIGHT, final Color COLOR) {
    if (WIDTH <= 0 || HEIGHT <= 0) {
      return null;
    }

    final BufferedImage IMAGE = UTIL.createImage(WIDTH, HEIGHT, Transparency.TRANSLUCENT);
    final Graphics2D G2 = IMAGE.createGraphics();
    G2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    G2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);
    G2.setRenderingHint(
        RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    final int IMAGE_WIDTH = IMAGE.getWidth();
    final int IMAGE_HEIGHT = IMAGE.getHeight();

    final GeneralPath LCD_THRESHOLD = new GeneralPath();
    LCD_THRESHOLD.setWindingRule(Path2D.WIND_EVEN_ODD);
    LCD_THRESHOLD.moveTo(IMAGE_WIDTH * 0.4444444444444444, IMAGE_HEIGHT * 0.7777777777777778);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.5555555555555556, IMAGE_HEIGHT * 0.7777777777777778);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.5555555555555556, IMAGE_HEIGHT * 0.8888888888888888);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.4444444444444444, IMAGE_HEIGHT * 0.8888888888888888);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.4444444444444444, IMAGE_HEIGHT * 0.7777777777777778);
    LCD_THRESHOLD.closePath();
    LCD_THRESHOLD.moveTo(IMAGE_WIDTH * 0.4444444444444444, IMAGE_HEIGHT * 0.3333333333333333);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.5555555555555556, IMAGE_HEIGHT * 0.3333333333333333);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.5555555555555556, IMAGE_HEIGHT * 0.7222222222222222);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.4444444444444444, IMAGE_HEIGHT * 0.7222222222222222);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.4444444444444444, IMAGE_HEIGHT * 0.3333333333333333);
    LCD_THRESHOLD.closePath();
    LCD_THRESHOLD.moveTo(0.0, IMAGE_HEIGHT);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH, IMAGE_HEIGHT);
    LCD_THRESHOLD.lineTo(IMAGE_WIDTH * 0.5, 0.0);
    LCD_THRESHOLD.lineTo(0.0, IMAGE_HEIGHT);
    LCD_THRESHOLD.closePath();
    G2.setColor(COLOR);
    G2.fill(LCD_THRESHOLD);

    G2.dispose();

    return IMAGE;
  }
  @Override
  protected void paintSymbol(GeneralPath symbol, Dimension dimensions) {

    int imageWidth = (int) dimensions.getWidth();
    int imageHeight = (int) dimensions.getHeight();

    symbol.setWindingRule(Path2D.WIND_EVEN_ODD);
    symbol.moveTo(imageWidth * 0.4953271028037383, imageHeight * 0.4766355140186916);
    symbol.curveTo(
        imageWidth * 0.5186915887850467,
        imageHeight * 0.4766355140186916,
        imageWidth * 0.5327102803738317,
        imageHeight * 0.49065420560747663,
        imageWidth * 0.5327102803738317,
        imageHeight * 0.514018691588785);
    symbol.curveTo(
        imageWidth * 0.5327102803738317,
        imageHeight * 0.5327102803738317,
        imageWidth * 0.5186915887850467,
        imageHeight * 0.5514018691588785,
        imageWidth * 0.4953271028037383,
        imageHeight * 0.5514018691588785);
    symbol.curveTo(
        imageWidth * 0.4766355140186916,
        imageHeight * 0.5514018691588785,
        imageWidth * 0.45794392523364486,
        imageHeight * 0.5327102803738317,
        imageWidth * 0.45794392523364486,
        imageHeight * 0.514018691588785);
    symbol.curveTo(
        imageWidth * 0.45794392523364486,
        imageHeight * 0.49065420560747663,
        imageWidth * 0.4766355140186916,
        imageHeight * 0.4766355140186916,
        imageWidth * 0.4953271028037383,
        imageHeight * 0.4766355140186916);
    symbol.closePath();
    symbol.moveTo(imageWidth * 0.42990654205607476, imageHeight * 0.5233644859813084);
    symbol.curveTo(
        imageWidth * 0.42990654205607476,
        imageHeight * 0.5233644859813084,
        imageWidth * 0.411214953271028,
        imageHeight * 0.5280373831775701,
        imageWidth * 0.411214953271028,
        imageHeight * 0.5280373831775701);
    symbol.curveTo(
        imageWidth * 0.38317757009345793,
        imageHeight * 0.5280373831775701,
        imageWidth * 0.37850467289719625,
        imageHeight * 0.5,
        imageWidth * 0.3317757009345794,
        imageHeight * 0.5);
    symbol.curveTo(
        imageWidth * 0.3130841121495327,
        imageHeight * 0.5046728971962616,
        imageWidth * 0.29439252336448596,
        imageHeight * 0.514018691588785,
        imageWidth * 0.27102803738317754,
        imageHeight * 0.5420560747663551);
    symbol.curveTo(
        imageWidth * 0.2570093457943925,
        imageHeight * 0.5700934579439252,
        imageWidth * 0.27102803738317754,
        imageHeight * 0.6869158878504673,
        imageWidth * 0.38317757009345793,
        imageHeight * 0.6869158878504673);
    symbol.curveTo(
        imageWidth * 0.38317757009345793,
        imageHeight * 0.6869158878504673,
        imageWidth * 0.4532710280373832,
        imageHeight * 0.6915887850467289,
        imageWidth * 0.4766355140186916,
        imageHeight * 0.6214953271028038);
    symbol.curveTo(
        imageWidth * 0.4766355140186916,
        imageHeight * 0.6214953271028038,
        imageWidth * 0.48598130841121495,
        imageHeight * 0.602803738317757,
        imageWidth * 0.48598130841121495,
        imageHeight * 0.5794392523364486);
    symbol.curveTo(
        imageWidth * 0.48598130841121495,
        imageHeight * 0.5794392523364486,
        imageWidth * 0.49065420560747663,
        imageHeight * 0.5794392523364486,
        imageWidth * 0.4953271028037383,
        imageHeight * 0.5794392523364486);
    symbol.curveTo(
        imageWidth * 0.5093457943925234,
        imageHeight * 0.5794392523364486,
        imageWidth * 0.5186915887850467,
        imageHeight * 0.5794392523364486,
        imageWidth * 0.5233644859813084,
        imageHeight * 0.5747663551401869);
    symbol.curveTo(
        imageWidth * 0.5233644859813084,
        imageHeight * 0.5747663551401869,
        imageWidth * 0.5280373831775701,
        imageHeight * 0.5887850467289719,
        imageWidth * 0.5280373831775701,
        imageHeight * 0.5887850467289719);
    symbol.curveTo(
        imageWidth * 0.5280373831775701,
        imageHeight * 0.616822429906542,
        imageWidth * 0.5,
        imageHeight * 0.6214953271028038,
        imageWidth * 0.5,
        imageHeight * 0.6728971962616822);
    symbol.curveTo(
        imageWidth * 0.5046728971962616,
        imageHeight * 0.6915887850467289,
        imageWidth * 0.514018691588785,
        imageHeight * 0.705607476635514,
        imageWidth * 0.5420560747663551,
        imageHeight * 0.7289719626168224);
    symbol.curveTo(
        imageWidth * 0.5747663551401869,
        imageHeight * 0.7429906542056075,
        imageWidth * 0.6915887850467289,
        imageHeight * 0.7289719626168224,
        imageWidth * 0.6915887850467289,
        imageHeight * 0.616822429906542);
    symbol.curveTo(
        imageWidth * 0.6915887850467289,
        imageHeight * 0.616822429906542,
        imageWidth * 0.6915887850467289,
        imageHeight * 0.5467289719626168,
        imageWidth * 0.6214953271028038,
        imageHeight * 0.5233644859813084);
    symbol.curveTo(
        imageWidth * 0.6214953271028038,
        imageHeight * 0.5233644859813084,
        imageWidth * 0.5981308411214953,
        imageHeight * 0.5046728971962616,
        imageWidth * 0.5654205607476636,
        imageHeight * 0.5093457943925234);
    symbol.curveTo(
        imageWidth * 0.5654205607476636,
        imageHeight * 0.5,
        imageWidth * 0.5607476635514018,
        imageHeight * 0.49065420560747663,
        imageWidth * 0.5560747663551402,
        imageHeight * 0.48598130841121495);
    symbol.curveTo(
        imageWidth * 0.5654205607476636,
        imageHeight * 0.48130841121495327,
        imageWidth * 0.5794392523364486,
        imageHeight * 0.4766355140186916,
        imageWidth * 0.5934579439252337,
        imageHeight * 0.4719626168224299);
    symbol.curveTo(
        imageWidth * 0.616822429906542,
        imageHeight * 0.4719626168224299,
        imageWidth * 0.6214953271028038,
        imageHeight * 0.5,
        imageWidth * 0.6728971962616822,
        imageHeight * 0.5);
    symbol.curveTo(
        imageWidth * 0.6915887850467289,
        imageHeight * 0.4953271028037383,
        imageWidth * 0.7102803738317757,
        imageHeight * 0.48598130841121495,
        imageWidth * 0.7289719626168224,
        imageHeight * 0.45794392523364486);
    symbol.curveTo(
        imageWidth * 0.7429906542056075,
        imageHeight * 0.42990654205607476,
        imageWidth * 0.7289719626168224,
        imageHeight * 0.3130841121495327,
        imageWidth * 0.616822429906542,
        imageHeight * 0.3130841121495327);
    symbol.curveTo(
        imageWidth * 0.616822429906542,
        imageHeight * 0.3130841121495327,
        imageWidth * 0.5514018691588785,
        imageHeight * 0.308411214953271,
        imageWidth * 0.5233644859813084,
        imageHeight * 0.37850467289719625);
    symbol.curveTo(
        imageWidth * 0.5233644859813084,
        imageHeight * 0.37850467289719625,
        imageWidth * 0.5046728971962616,
        imageHeight * 0.411214953271028,
        imageWidth * 0.5093457943925234,
        imageHeight * 0.4485981308411215);
    symbol.curveTo(
        imageWidth * 0.5046728971962616,
        imageHeight * 0.4485981308411215,
        imageWidth * 0.5,
        imageHeight * 0.4485981308411215,
        imageWidth * 0.4953271028037383,
        imageHeight * 0.4485981308411215);
    symbol.curveTo(
        imageWidth * 0.4953271028037383,
        imageHeight * 0.4485981308411215,
        imageWidth * 0.49065420560747663,
        imageHeight * 0.4485981308411215,
        imageWidth * 0.48598130841121495,
        imageHeight * 0.4485981308411215);
    symbol.curveTo(
        imageWidth * 0.48598130841121495,
        imageHeight * 0.4392523364485981,
        imageWidth * 0.4766355140186916,
        imageHeight * 0.4252336448598131,
        imageWidth * 0.4766355140186916,
        imageHeight * 0.411214953271028);
    symbol.curveTo(
        imageWidth * 0.4766355140186916,
        imageHeight * 0.38317757009345793,
        imageWidth * 0.5,
        imageHeight * 0.37850467289719625,
        imageWidth * 0.5,
        imageHeight * 0.32710280373831774);
    symbol.curveTo(
        imageWidth * 0.5,
        imageHeight * 0.308411214953271,
        imageWidth * 0.48598130841121495,
        imageHeight * 0.29439252336448596,
        imageWidth * 0.45794392523364486,
        imageHeight * 0.27102803738317754);
    symbol.curveTo(
        imageWidth * 0.42990654205607476,
        imageHeight * 0.2570093457943925,
        imageWidth * 0.3130841121495327,
        imageHeight * 0.27102803738317754,
        imageWidth * 0.3130841121495327,
        imageHeight * 0.38317757009345793);
    symbol.curveTo(
        imageWidth * 0.3130841121495327,
        imageHeight * 0.38317757009345793,
        imageWidth * 0.3130841121495327,
        imageHeight * 0.4532710280373832,
        imageWidth * 0.37850467289719625,
        imageHeight * 0.4766355140186916);
    symbol.curveTo(
        imageWidth * 0.37850467289719625,
        imageHeight * 0.4766355140186916,
        imageWidth * 0.40186915887850466,
        imageHeight * 0.49065420560747663,
        imageWidth * 0.43457943925233644,
        imageHeight * 0.49065420560747663);
    symbol.curveTo(
        imageWidth * 0.42990654205607476,
        imageHeight * 0.5,
        imageWidth * 0.42990654205607476,
        imageHeight * 0.5046728971962616,
        imageWidth * 0.42990654205607476,
        imageHeight * 0.514018691588785);
    symbol.curveTo(
        imageWidth * 0.42990654205607476,
        imageHeight * 0.5186915887850467,
        imageWidth * 0.42990654205607476,
        imageHeight * 0.5186915887850467,
        imageWidth * 0.42990654205607476,
        imageHeight * 0.5233644859813084);
    symbol.closePath();
  }
示例#6
0
  @Override
  protected void paintSymbol(GeneralPath symbol, Dimension dimensions) {

    int imageWidth = (int) dimensions.getWidth();
    int imageHeight = (int) dimensions.getHeight();

    symbol.setWindingRule(Path2D.WIND_EVEN_ODD);
    symbol.moveTo(imageWidth * 0.42990654205607476, imageHeight * 0.5794392523364486);
    symbol.curveTo(
        imageWidth * 0.42990654205607476,
        imageHeight * 0.5794392523364486,
        imageWidth * 0.29906542056074764,
        imageHeight * 0.43457943925233644,
        imageWidth * 0.29906542056074764,
        imageHeight * 0.43457943925233644);
    symbol.curveTo(
        imageWidth * 0.40654205607476634,
        imageHeight * 0.3364485981308411,
        imageWidth * 0.5934579439252337,
        imageHeight * 0.3364485981308411,
        imageWidth * 0.705607476635514,
        imageHeight * 0.43457943925233644);
    symbol.curveTo(
        imageWidth * 0.705607476635514,
        imageHeight * 0.43457943925233644,
        imageWidth * 0.5747663551401869,
        imageHeight * 0.5794392523364486,
        imageWidth * 0.5747663551401869,
        imageHeight * 0.5794392523364486);
    symbol.curveTo(
        imageWidth * 0.5514018691588785,
        imageHeight * 0.5560747663551402,
        imageWidth * 0.514018691588785,
        imageHeight * 0.5514018691588785,
        imageWidth * 0.4766355140186916,
        imageHeight * 0.5560747663551402);
    symbol.curveTo(
        imageWidth * 0.4766355140186916,
        imageHeight * 0.5560747663551402,
        imageWidth * 0.40186915887850466,
        imageHeight * 0.4158878504672897,
        imageWidth * 0.40186915887850466,
        imageHeight * 0.4158878504672897);
    symbol.curveTo(
        imageWidth * 0.40186915887850466,
        imageHeight * 0.411214953271028,
        imageWidth * 0.3925233644859813,
        imageHeight * 0.40654205607476634,
        imageWidth * 0.3878504672897196,
        imageHeight * 0.411214953271028);
    symbol.curveTo(
        imageWidth * 0.37850467289719625,
        imageHeight * 0.4158878504672897,
        imageWidth * 0.37850467289719625,
        imageHeight * 0.4252336448598131,
        imageWidth * 0.38317757009345793,
        imageHeight * 0.42990654205607476);
    symbol.curveTo(
        imageWidth * 0.38317757009345793,
        imageHeight * 0.42990654205607476,
        imageWidth * 0.4532710280373832,
        imageHeight * 0.5654205607476636,
        imageWidth * 0.4532710280373832,
        imageHeight * 0.5654205607476636);
    symbol.curveTo(
        imageWidth * 0.4439252336448598,
        imageHeight * 0.5700934579439252,
        imageWidth * 0.43457943925233644,
        imageHeight * 0.5747663551401869,
        imageWidth * 0.42990654205607476,
        imageHeight * 0.5794392523364486);
    symbol.closePath();
    symbol.moveTo(imageWidth * 0.4205607476635514, imageHeight * 0.602803738317757);
    symbol.curveTo(
        imageWidth * 0.43457943925233644,
        imageHeight * 0.5934579439252337,
        imageWidth * 0.4485981308411215,
        imageHeight * 0.5841121495327103,
        imageWidth * 0.46261682242990654,
        imageHeight * 0.5794392523364486);
    symbol.curveTo(
        imageWidth * 0.46261682242990654,
        imageHeight * 0.5794392523364486,
        imageWidth * 0.48130841121495327,
        imageHeight * 0.616822429906542,
        imageWidth * 0.48130841121495327,
        imageHeight * 0.616822429906542);
    symbol.curveTo(
        imageWidth * 0.4719626168224299,
        imageHeight * 0.6261682242990654,
        imageWidth * 0.4719626168224299,
        imageHeight * 0.6355140186915887,
        imageWidth * 0.4766355140186916,
        imageHeight * 0.6495327102803738);
    symbol.curveTo(
        imageWidth * 0.48598130841121495,
        imageHeight * 0.6635514018691588,
        imageWidth * 0.5046728971962616,
        imageHeight * 0.6682242990654206,
        imageWidth * 0.5186915887850467,
        imageHeight * 0.6588785046728972);
    symbol.curveTo(
        imageWidth * 0.5327102803738317,
        imageHeight * 0.6542056074766355,
        imageWidth * 0.5373831775700935,
        imageHeight * 0.6355140186915887,
        imageWidth * 0.5327102803738317,
        imageHeight * 0.6214953271028038);
    symbol.curveTo(
        imageWidth * 0.5233644859813084,
        imageHeight * 0.6121495327102804,
        imageWidth * 0.514018691588785,
        imageHeight * 0.602803738317757,
        imageWidth * 0.5046728971962616,
        imageHeight * 0.602803738317757);
    symbol.curveTo(
        imageWidth * 0.5046728971962616,
        imageHeight * 0.602803738317757,
        imageWidth * 0.48598130841121495,
        imageHeight * 0.5747663551401869,
        imageWidth * 0.48598130841121495,
        imageHeight * 0.5747663551401869);
    symbol.curveTo(
        imageWidth * 0.5186915887850467,
        imageHeight * 0.5700934579439252,
        imageWidth * 0.5514018691588785,
        imageHeight * 0.5794392523364486,
        imageWidth * 0.5794392523364486,
        imageHeight * 0.602803738317757);
    symbol.curveTo(
        imageWidth * 0.5794392523364486,
        imageHeight * 0.602803738317757,
        imageWidth * 0.7336448598130841,
        imageHeight * 0.42990654205607476,
        imageWidth * 0.7336448598130841,
        imageHeight * 0.42990654205607476);
    symbol.curveTo(
        imageWidth * 0.5981308411214953,
        imageHeight * 0.308411214953271,
        imageWidth * 0.40186915887850466,
        imageHeight * 0.3130841121495327,
        imageWidth * 0.26635514018691586,
        imageHeight * 0.42990654205607476);
    symbol.curveTo(
        imageWidth * 0.26635514018691586,
        imageHeight * 0.42990654205607476,
        imageWidth * 0.4205607476635514,
        imageHeight * 0.602803738317757,
        imageWidth * 0.4205607476635514,
        imageHeight * 0.602803738317757);
    symbol.closePath();
  }
  private BufferedImage create_SMALL_POINTER_SHADOW_Image(final int WIDTH) {
    if (WIDTH <= 0) {
      return null;
    }

    final BufferedImage IMAGE = UTIL.createImage(WIDTH, WIDTH, Transparency.TRANSLUCENT);
    final Graphics2D G2 = IMAGE.createGraphics();
    G2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    final int IMAGE_WIDTH = IMAGE.getWidth();
    final int IMAGE_HEIGHT = IMAGE.getHeight();

    final GeneralPath STOPWATCHPOINTERSMALL = new GeneralPath();
    STOPWATCHPOINTERSMALL.setWindingRule(Path2D.WIND_EVEN_ODD);
    STOPWATCHPOINTERSMALL.moveTo(
        IMAGE_WIDTH * 0.4766355140186916, IMAGE_HEIGHT * 0.3130841121495327);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.4766355140186916,
        IMAGE_HEIGHT * 0.32242990654205606,
        IMAGE_WIDTH * 0.48598130841121495,
        IMAGE_HEIGHT * 0.3317757009345794,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.3364485981308411);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.3364485981308411,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.35046728971962615,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.35046728971962615);
    STOPWATCHPOINTERSMALL.lineTo(
        IMAGE_WIDTH * 0.5046728971962616, IMAGE_HEIGHT * 0.35046728971962615);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.35046728971962615,
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.3364485981308411,
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.3364485981308411);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.514018691588785,
        IMAGE_HEIGHT * 0.3317757009345794,
        IMAGE_WIDTH * 0.5233644859813084,
        IMAGE_HEIGHT * 0.32242990654205606,
        IMAGE_WIDTH * 0.5233644859813084,
        IMAGE_HEIGHT * 0.3130841121495327);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.5233644859813084,
        IMAGE_HEIGHT * 0.3037383177570093,
        IMAGE_WIDTH * 0.514018691588785,
        IMAGE_HEIGHT * 0.29439252336448596,
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.2897196261682243);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.2897196261682243,
        IMAGE_WIDTH * 0.5,
        IMAGE_HEIGHT * 0.20093457943925233,
        IMAGE_WIDTH * 0.5,
        IMAGE_HEIGHT * 0.20093457943925233);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.5,
        IMAGE_HEIGHT * 0.20093457943925233,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.2897196261682243,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.2897196261682243);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.48598130841121495,
        IMAGE_HEIGHT * 0.29439252336448596,
        IMAGE_WIDTH * 0.4766355140186916,
        IMAGE_HEIGHT * 0.3037383177570093,
        IMAGE_WIDTH * 0.4766355140186916,
        IMAGE_HEIGHT * 0.3130841121495327);
    STOPWATCHPOINTERSMALL.closePath();

    G2.setPaint(SHADOW_COLOR);
    G2.fill(STOPWATCHPOINTERSMALL);

    G2.dispose();

    return IMAGE;
  }
  private BufferedImage create_SMALL_POINTER_Image(final int WIDTH) {
    if (WIDTH <= 0) {
      return null;
    }

    final BufferedImage IMAGE = UTIL.createImage(WIDTH, WIDTH, Transparency.TRANSLUCENT);
    final Graphics2D G2 = IMAGE.createGraphics();
    G2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    G2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    // G2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
    // RenderingHints.VALUE_STROKE_NORMALIZE);

    final int IMAGE_WIDTH = IMAGE.getWidth();
    final int IMAGE_HEIGHT = IMAGE.getHeight();

    final GeneralPath STOPWATCHPOINTERSMALL = new GeneralPath();
    STOPWATCHPOINTERSMALL.setWindingRule(Path2D.WIND_EVEN_ODD);
    STOPWATCHPOINTERSMALL.moveTo(
        IMAGE_WIDTH * 0.4766355140186916, IMAGE_HEIGHT * 0.3130841121495327);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.4766355140186916,
        IMAGE_HEIGHT * 0.32242990654205606,
        IMAGE_WIDTH * 0.48598130841121495,
        IMAGE_HEIGHT * 0.3317757009345794,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.3364485981308411);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.3364485981308411,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.35046728971962615,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.35046728971962615);
    STOPWATCHPOINTERSMALL.lineTo(
        IMAGE_WIDTH * 0.5046728971962616, IMAGE_HEIGHT * 0.35046728971962615);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.35046728971962615,
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.3364485981308411,
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.3364485981308411);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.514018691588785,
        IMAGE_HEIGHT * 0.3317757009345794,
        IMAGE_WIDTH * 0.5233644859813084,
        IMAGE_HEIGHT * 0.32242990654205606,
        IMAGE_WIDTH * 0.5233644859813084,
        IMAGE_HEIGHT * 0.3130841121495327);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.5233644859813084,
        IMAGE_HEIGHT * 0.3037383177570093,
        IMAGE_WIDTH * 0.514018691588785,
        IMAGE_HEIGHT * 0.29439252336448596,
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.2897196261682243);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.5046728971962616,
        IMAGE_HEIGHT * 0.2897196261682243,
        IMAGE_WIDTH * 0.5,
        IMAGE_HEIGHT * 0.20093457943925233,
        IMAGE_WIDTH * 0.5,
        IMAGE_HEIGHT * 0.20093457943925233);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.5,
        IMAGE_HEIGHT * 0.20093457943925233,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.2897196261682243,
        IMAGE_WIDTH * 0.4953271028037383,
        IMAGE_HEIGHT * 0.2897196261682243);
    STOPWATCHPOINTERSMALL.curveTo(
        IMAGE_WIDTH * 0.48598130841121495,
        IMAGE_HEIGHT * 0.29439252336448596,
        IMAGE_WIDTH * 0.4766355140186916,
        IMAGE_HEIGHT * 0.3037383177570093,
        IMAGE_WIDTH * 0.4766355140186916,
        IMAGE_HEIGHT * 0.3130841121495327);
    STOPWATCHPOINTERSMALL.closePath();
    if (flatNeedle) {
      G2.setColor(getPointerColor().MEDIUM);
      G2.fill(STOPWATCHPOINTERSMALL);
    } else {
      final Point2D POINTER_START =
          new Point2D.Double(STOPWATCHPOINTERSMALL.getBounds2D().getMinX(), 0);
      final Point2D POINTER_STOP =
          new Point2D.Double(STOPWATCHPOINTERSMALL.getBounds2D().getMaxX(), 0);
      final float[] POINTER_FRACTIONS = {0.0f, 0.3888888889f, 0.5f, 0.6111111111f, 1.0f};
      final Color[] POINTER_COLORS = {
        getPointerColor().MEDIUM,
        getPointerColor().MEDIUM,
        getPointerColor().LIGHT,
        getPointerColor().MEDIUM,
        getPointerColor().MEDIUM
      };
      final LinearGradientPaint GRADIENT =
          new LinearGradientPaint(POINTER_START, POINTER_STOP, POINTER_FRACTIONS, POINTER_COLORS);
      G2.setPaint(GRADIENT);
      G2.fill(STOPWATCHPOINTERSMALL);
      G2.setPaint(getPointerColor().DARK);
      G2.draw(STOPWATCHPOINTERSMALL);
    }

    final Ellipse2D SWBRASSRINGSMALL =
        new Ellipse2D.Double(
            IMAGE_WIDTH * 0.4813084006309509,
            IMAGE_HEIGHT * 0.29439252614974976,
            IMAGE_WIDTH * 0.037383198738098145,
            IMAGE_HEIGHT * 0.03738316893577576);
    G2.setColor(new Color(0xC48200));
    G2.fill(SWBRASSRINGSMALL);

    final Ellipse2D SWRING1SMALL =
        new Ellipse2D.Double(
            IMAGE_WIDTH * 0.4859813153743744,
            IMAGE_HEIGHT * 0.29906541109085083,
            IMAGE_WIDTH * 0.02803739905357361,
            IMAGE_HEIGHT * 0.02803739905357361);
    G2.setColor(new Color(0x999999));
    G2.fill(SWRING1SMALL);

    final Ellipse2D SWRING1SMALL0 =
        new Ellipse2D.Double(
            IMAGE_WIDTH * 0.49065420031547546,
            IMAGE_HEIGHT * 0.3037383258342743,
            IMAGE_WIDTH * 0.018691569566726685,
            IMAGE_HEIGHT * 0.018691569566726685);
    G2.setColor(Color.BLACK);
    G2.fill(SWRING1SMALL0);

    G2.dispose();

    return IMAGE;
  }
  private BufferedImage create_MAIN_POINTER_SHADOW_Image(final int WIDTH) {
    if (WIDTH <= 0) {
      return null;
    }

    final BufferedImage IMAGE = UTIL.createImage(WIDTH, WIDTH, Transparency.TRANSLUCENT);
    final Graphics2D G2 = IMAGE.createGraphics();
    G2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    final int IMAGE_WIDTH = IMAGE.getWidth();
    final int IMAGE_HEIGHT = IMAGE.getHeight();

    final GeneralPath STOPWATCHPOINTER = new GeneralPath();
    STOPWATCHPOINTER.setWindingRule(Path2D.WIND_EVEN_ODD);
    STOPWATCHPOINTER.moveTo(IMAGE_WIDTH * 0.5093457943925234, IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.5, IMAGE_HEIGHT * 0.102803738317757);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.49065420560747663, IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.45794392523364486,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.45794392523364486,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.4719626168224299,
        IMAGE_HEIGHT * 0.46261682242990654,
        IMAGE_WIDTH * 0.45794392523364486,
        IMAGE_HEIGHT * 0.48130841121495327,
        IMAGE_WIDTH * 0.45794392523364486,
        IMAGE_HEIGHT * 0.5);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.45794392523364486,
        IMAGE_HEIGHT * 0.5186915887850467,
        IMAGE_WIDTH * 0.4719626168224299,
        IMAGE_HEIGHT * 0.5373831775700935,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.5420560747663551);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.5420560747663551,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.5420560747663551,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.5420560747663551);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.49065420560747663, IMAGE_HEIGHT * 0.6214953271028038);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.5093457943925234, IMAGE_HEIGHT * 0.6214953271028038);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.5093457943925234, IMAGE_HEIGHT * 0.5420560747663551);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.5420560747663551,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.5420560747663551,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.5420560747663551);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.5280373831775701,
        IMAGE_HEIGHT * 0.5373831775700935,
        IMAGE_WIDTH * 0.5420560747663551,
        IMAGE_HEIGHT * 0.5186915887850467,
        IMAGE_WIDTH * 0.5420560747663551,
        IMAGE_HEIGHT * 0.5);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.5420560747663551,
        IMAGE_HEIGHT * 0.48130841121495327,
        IMAGE_WIDTH * 0.5280373831775701,
        IMAGE_HEIGHT * 0.46261682242990654,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.45794392523364486,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.45794392523364486,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.closePath();

    G2.setPaint(SHADOW_COLOR);
    G2.fill(STOPWATCHPOINTER);

    G2.dispose();

    return IMAGE;
  }
  private BufferedImage create_MAIN_POINTER_Image(final int WIDTH) {
    if (WIDTH <= 0) {
      return null;
    }

    final BufferedImage IMAGE = UTIL.createImage(WIDTH, WIDTH, Transparency.TRANSLUCENT);
    final Graphics2D G2 = IMAGE.createGraphics();
    G2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    G2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    // G2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
    // RenderingHints.VALUE_STROKE_NORMALIZE);

    final int IMAGE_WIDTH = IMAGE.getWidth();
    final int IMAGE_HEIGHT = IMAGE.getHeight();

    final GeneralPath STOPWATCHPOINTER = new GeneralPath();
    STOPWATCHPOINTER.setWindingRule(Path2D.WIND_EVEN_ODD);
    STOPWATCHPOINTER.moveTo(IMAGE_WIDTH * 0.5093457943925234, IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.5, IMAGE_HEIGHT * 0.102803738317757);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.49065420560747663, IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.45794392523364486,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.45794392523364486,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.4719626168224299,
        IMAGE_HEIGHT * 0.46261682242990654,
        IMAGE_WIDTH * 0.45794392523364486,
        IMAGE_HEIGHT * 0.48130841121495327,
        IMAGE_WIDTH * 0.45794392523364486,
        IMAGE_HEIGHT * 0.5);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.45794392523364486,
        IMAGE_HEIGHT * 0.5186915887850467,
        IMAGE_WIDTH * 0.4719626168224299,
        IMAGE_HEIGHT * 0.5373831775700935,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.5420560747663551);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.5420560747663551,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.5420560747663551,
        IMAGE_WIDTH * 0.49065420560747663,
        IMAGE_HEIGHT * 0.5420560747663551);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.49065420560747663, IMAGE_HEIGHT * 0.6214953271028038);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.5093457943925234, IMAGE_HEIGHT * 0.6214953271028038);
    STOPWATCHPOINTER.lineTo(IMAGE_WIDTH * 0.5093457943925234, IMAGE_HEIGHT * 0.5420560747663551);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.5420560747663551,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.5420560747663551,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.5420560747663551);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.5280373831775701,
        IMAGE_HEIGHT * 0.5373831775700935,
        IMAGE_WIDTH * 0.5420560747663551,
        IMAGE_HEIGHT * 0.5186915887850467,
        IMAGE_WIDTH * 0.5420560747663551,
        IMAGE_HEIGHT * 0.5);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.5420560747663551,
        IMAGE_HEIGHT * 0.48130841121495327,
        IMAGE_WIDTH * 0.5280373831775701,
        IMAGE_HEIGHT * 0.46261682242990654,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.curveTo(
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.45794392523364486,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.45794392523364486,
        IMAGE_WIDTH * 0.5093457943925234,
        IMAGE_HEIGHT * 0.45794392523364486);
    STOPWATCHPOINTER.closePath();
    if (flatNeedle) {
      G2.setColor(getPointerColor().MEDIUM);
      G2.fill(STOPWATCHPOINTER);
    } else {
      final Point2D POINTER_START = new Point2D.Double(STOPWATCHPOINTER.getBounds2D().getMinX(), 0);
      final Point2D POINTER_STOP = new Point2D.Double(STOPWATCHPOINTER.getBounds2D().getMaxX(), 0);
      final float[] POINTER_FRACTIONS = {0.0f, 0.3888888889f, 0.5f, 0.6111111111f, 1.0f};
      final Color[] POINTER_COLORS = {
        getPointerColor().MEDIUM,
        getPointerColor().MEDIUM,
        getPointerColor().LIGHT,
        getPointerColor().MEDIUM,
        getPointerColor().MEDIUM
      };
      final LinearGradientPaint GRADIENT =
          new LinearGradientPaint(POINTER_START, POINTER_STOP, POINTER_FRACTIONS, POINTER_COLORS);
      G2.setPaint(GRADIENT);
      G2.fill(STOPWATCHPOINTER);
      G2.setPaint(getPointerColor().DARK);
      G2.draw(STOPWATCHPOINTER);
    }

    final Ellipse2D SWBRASSRING =
        new Ellipse2D.Double(
            IMAGE_WIDTH * 0.4672897160053253,
            IMAGE_HEIGHT * 0.4672897160053253,
            IMAGE_WIDTH * 0.06542053818702698,
            IMAGE_HEIGHT * 0.06542053818702698);
    final Point2D SWBRASSRING_START = new Point2D.Double(0, SWBRASSRING.getBounds2D().getMaxY());
    final Point2D SWBRASSRING_STOP = new Point2D.Double(0, SWBRASSRING.getBounds2D().getMinY());
    final float[] SWBRASSRING_FRACTIONS = {0.0f, 0.01f, 0.99f, 1.0f};
    final Color[] SWBRASSRING_COLORS = {
      new Color(230, 179, 92, 255),
      new Color(230, 179, 92, 255),
      new Color(196, 130, 0, 255),
      new Color(196, 130, 0, 255)
    };
    final LinearGradientPaint SWBRASSRING_GRADIENT =
        new LinearGradientPaint(
            SWBRASSRING_START, SWBRASSRING_STOP, SWBRASSRING_FRACTIONS, SWBRASSRING_COLORS);
    G2.setPaint(SWBRASSRING_GRADIENT);
    G2.fill(SWBRASSRING);

    final Ellipse2D SWRING1 =
        new Ellipse2D.Double(
            IMAGE_WIDTH * 0.47663551568984985,
            IMAGE_HEIGHT * 0.47663551568984985,
            IMAGE_WIDTH * 0.04672896862030029,
            IMAGE_HEIGHT * 0.04672896862030029);
    final Point2D SWRING1_CENTER = new Point2D.Double((0.5 * IMAGE_WIDTH), (0.5 * IMAGE_HEIGHT));
    final float[] SWRING1_FRACTIONS = {0.0f, 0.19f, 0.22f, 0.8f, 0.99f, 1.0f};
    final Color[] SWRING1_COLORS = {
      new Color(197, 197, 197, 255),
      new Color(197, 197, 197, 255),
      new Color(0, 0, 0, 255),
      new Color(0, 0, 0, 255),
      new Color(112, 112, 112, 255),
      new Color(112, 112, 112, 255)
    };
    final RadialGradientPaint SWRING1_GRADIENT =
        new RadialGradientPaint(
            SWRING1_CENTER,
            (float) (0.02336448598130841 * IMAGE_WIDTH),
            SWRING1_FRACTIONS,
            SWRING1_COLORS);
    G2.setPaint(SWRING1_GRADIENT);
    G2.fill(SWRING1);

    G2.dispose();

    return IMAGE;
  }