84 lines
2.4 KiB
Java
84 lines
2.4 KiB
Java
package com.flaremicro.visualforecast.icons.impl;
|
|
|
|
import java.awt.BasicStroke;
|
|
import java.awt.Color;
|
|
import java.awt.Graphics2D;
|
|
import java.awt.geom.Ellipse2D;
|
|
import java.awt.geom.Path2D;
|
|
|
|
import com.flaremicro.visualforecast.icons.Icon;
|
|
|
|
public class SunIcon extends Icon {
|
|
Path2D.Float sunPath = new Path2D.Float();
|
|
Ellipse2D.Float sunCircle1 = new Ellipse2D.Float(0.2F, 0.2F, 0.6F, 0.6F);
|
|
Ellipse2D.Float sunInternalCircle1 = new Ellipse2D.Float(0.28F, 0.22F, 0.5F, 0.5F);
|
|
Ellipse2D.Float sunInternalCircle2 = new Ellipse2D.Float(0.34F, 0.22F, 0.4F, 0.4F);
|
|
Color[] animationColours = new Color[]{
|
|
new Color(255, 100, 0),
|
|
new Color(255, 120, 0),
|
|
new Color(255, 140, 0),
|
|
new Color(255, 160, 0),
|
|
new Color(255, 180, 0),
|
|
new Color(255, 200, 0),
|
|
new Color(255, 220, 0),
|
|
new Color(255, 200, 0),
|
|
new Color(255, 180, 0),
|
|
new Color(255, 160, 0),
|
|
new Color(255, 140, 0),
|
|
new Color(255, 120, 0),
|
|
};
|
|
public SunIcon(int id)
|
|
{
|
|
super(id);
|
|
sunPath.moveTo(0.5F, 0.0F);
|
|
sunPath.lineTo(0.605F, 0.106F);
|
|
sunPath.lineTo(0.750F, 0.067F);
|
|
sunPath.lineTo(0.789F, 0.211F);
|
|
sunPath.lineTo(0.933F, 0.250F);
|
|
sunPath.lineTo(0.894F, 0.394F);
|
|
sunPath.lineTo(1.0F, 0.5F);
|
|
sunPath.lineTo(0.894F, 0.606F);
|
|
sunPath.lineTo(0.933F, 0.750F);
|
|
sunPath.lineTo(0.789F, 0.789F);
|
|
sunPath.lineTo(0.750F, 0.933F);
|
|
sunPath.lineTo(0.605F, 0.894F);
|
|
sunPath.lineTo(0.5F, 1.0F);
|
|
sunPath.lineTo(0.394F, 0.894F);
|
|
sunPath.lineTo(0.250F, 0.933F);
|
|
sunPath.lineTo(0.211F, 0.789F);
|
|
sunPath.lineTo(0.067F, 0.750F);
|
|
sunPath.lineTo(0.106F, 0.606F);
|
|
sunPath.lineTo(0.0F, 0.5F);
|
|
sunPath.lineTo(0.106F, 0.394F);
|
|
sunPath.lineTo(0.067F, 0.250F);
|
|
sunPath.lineTo(0.211F, 0.211F);
|
|
sunPath.lineTo(0.250F, 0.067F);
|
|
sunPath.lineTo(0.394F, 0.106F);
|
|
sunPath.closePath();
|
|
}
|
|
|
|
@Override
|
|
public void drawIcon(Graphics2D g2d, float scale, int animationStep) {
|
|
g2d.setColor(Color.BLACK);
|
|
g2d.setStroke(new BasicStroke(4/scale));
|
|
g2d.draw(sunPath);
|
|
g2d.setColor(animationColours[animationStep % animationColours.length]);
|
|
g2d.fill(sunPath);
|
|
g2d.setColor(new Color(0xFFEE00));
|
|
g2d.fill(sunCircle1);
|
|
g2d.setColor(new Color(0xFFFF88));
|
|
g2d.fill(sunInternalCircle1);
|
|
g2d.setColor(new Color(0xFFFFDD));
|
|
g2d.fill(sunInternalCircle2);
|
|
g2d.setColor(Color.BLACK);
|
|
g2d.setStroke(new BasicStroke(2/scale));
|
|
g2d.draw(sunCircle1);
|
|
}
|
|
|
|
@Override
|
|
public boolean isAnimated() {
|
|
return true;
|
|
}
|
|
|
|
}
|