Files
VisualForecast-1000/src/com/flaremicro/visualforecast/icons/IconProvider.java
Vulpovile 0648a0178c A lot
2025-04-09 21:52:18 -07:00

85 lines
4.4 KiB
Java

package com.flaremicro.visualforecast.icons;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import com.flaremicro.visualforecast.icons.impl.BlizzardIcon;
import com.flaremicro.visualforecast.icons.impl.ButterIcon;
import com.flaremicro.visualforecast.icons.impl.CloudIcon;
import com.flaremicro.visualforecast.icons.impl.FogIcon;
import com.flaremicro.visualforecast.icons.impl.IceCubeIcon;
import com.flaremicro.visualforecast.icons.impl.InvalidIcon;
import com.flaremicro.visualforecast.icons.impl.LightningIcon;
import com.flaremicro.visualforecast.icons.impl.LightningOverlay;
import com.flaremicro.visualforecast.icons.impl.LightningStormIcon;
import com.flaremicro.visualforecast.icons.impl.PartlyCloudyIcon;
import com.flaremicro.visualforecast.icons.impl.RainIcon;
import com.flaremicro.visualforecast.icons.impl.RainSnowIcon;
import com.flaremicro.visualforecast.icons.impl.SmallCloudIcon;
import com.flaremicro.visualforecast.icons.impl.SnowIcon;
import com.flaremicro.visualforecast.icons.impl.SnowflakeIcon;
import com.flaremicro.visualforecast.icons.impl.SunIcon;
public class IconProvider {
public static final Icon[] INDEXED_ICONS = new Icon[64];
public static final Icon INVALID = registerIcon(setMainIcon(new InvalidIcon(0)));
public static final Icon SUN = registerIcon(new SunIcon(1));
public static final Icon CLOUD = registerIcon(new CloudIcon(2));
public static final Icon PARTLY_CLOUDY = registerIcon(new PartlyCloudyIcon(3, CLOUD, SUN));
public static final Icon CLOUDY_CLOUDY = registerIcon(new PartlyCloudyIcon(4, CLOUD, CLOUD));
public static final Icon RAIN_LIGHTEST = registerIcon(new RainIcon(5, 2, 2F, CLOUD));
public static final Icon RAIN_LIGHT = registerIcon(new RainIcon(6, 3, 2F, CLOUD));
public static final Icon RAIN = registerIcon(new RainIcon(7, 3, 1F, CLOUD));
public static final Icon RAIN_HEAVY = registerIcon(new RainIcon(8, 4, 1F, CLOUD));
public static final Icon RAIN_HEAVIEST = registerIcon(new RainIcon(9, 5, 1F, CLOUD));
public static final Icon RAIN_VANCOUVER = registerIcon(new RainIcon(10, 6, 1F, CLOUD));
public static final Icon SCATTERD_SHOWERS = registerIcon(new PartlyCloudyIcon(11, new RainIcon(-1, 2, 4F, CLOUD), SUN));
public static final Icon SNOWFLAKE = registerIcon(new SnowflakeIcon(12));
public static final Icon SNOW = registerIcon(new SnowIcon(13, CLOUD, SNOWFLAKE));
public static final Icon BLIZZARD = registerIcon(new BlizzardIcon(14, CLOUD, SNOWFLAKE));
public static final Icon RAIN_SNOW = registerIcon(new RainSnowIcon(15, RAIN_LIGHTEST, SNOWFLAKE, true));
public static final Icon FREEZING_RAIN = registerIcon(new RainSnowIcon(16, RAIN_LIGHT, SNOWFLAKE, false));
public static final Icon LIGHTNING_BOLT = registerIcon(new LightningIcon(17));
public static final Icon LIGHTNING_STORM = registerIcon(new LightningStormIcon(18, CLOUD, LIGHTNING_BOLT));
public static final Icon SMALL_CLOUD = registerIcon(new SmallCloudIcon(19));
public static final Icon LIGHTNING_BLIZZARD = registerIcon(new LightningOverlay(20, SMALL_CLOUD, LIGHTNING_BOLT, BLIZZARD));
public static final Icon SCATTERD_THUNDERSTORMS = registerIcon(new PartlyCloudyIcon(21, LIGHTNING_STORM, SUN));
public static final Icon FOG = registerIcon(new FogIcon(22, CLOUD));
public static final Icon ICE_CUBE = registerIcon(new IceCubeIcon(23));
public static final Icon HAIL = registerIcon(new BlizzardIcon(24, CLOUD, ICE_CUBE));
public static final Icon BUTTER = registerIcon(new ButterIcon(25));
public static final Icon BUTTER_RAIN = registerIcon(new BlizzardIcon(26, CLOUD, BUTTER));
public static final Icon RAIN_STORM = registerIcon(new LightningOverlay(27, SMALL_CLOUD, LIGHTNING_BOLT, RAIN_HEAVY));
public static final Icon INVALID_RAIN = registerIcon(new LightningOverlay(28, SUN, BUTTER, new BlizzardIcon(-1, LIGHTNING_BOLT, INVALID)));
private static Icon registerIcon(Icon icon)
{
INDEXED_ICONS[icon.id] = icon;
return icon;
}
private static Icon setMainIcon(Icon icon) {
for(int i = 0; i < INDEXED_ICONS.length; i++){
INDEXED_ICONS[i] = icon;
}
return icon;
}
public static void drawIcon(Graphics2D g2d, Icon icon, int x, int y, int scale, int animationStep)
{
if(icon != null)
{
AffineTransform af = g2d.getTransform();
g2d.translate(x, y);
g2d.scale(scale, scale);
//1g2d.setColor(Color.RED);
//g2d.fill(new Rectangle2D.Float(0, 0, 1F, 1F));
icon.drawIcon(g2d, scale, animationStep);
g2d.setTransform(af);
}
}
}