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(27, 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); } } }