package net.sf.openrocket.gui.plot; import java.awt.Color; import java.awt.Image; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import net.sf.openrocket.simulation.FlightEvent; public class EventGraphics { static Color getEventColor(FlightEvent.Type type) { Color c = EVENT_COLORS.get(type); if (c != null) return c; return DEFAULT_EVENT_COLOR; } static Image getEventImage(FlightEvent.Type type ) { Image i = EVENT_IMAGES.get(type); return i; } private static final Color DEFAULT_EVENT_COLOR = new Color(0, 0, 0); private static final Map<FlightEvent.Type, Color> EVENT_COLORS = new HashMap<FlightEvent.Type, Color>(); static { EVENT_COLORS.put(FlightEvent.Type.LAUNCH, new Color(255, 0, 0)); EVENT_COLORS.put(FlightEvent.Type.LIFTOFF, new Color(0, 80, 196)); EVENT_COLORS.put(FlightEvent.Type.LAUNCHROD, new Color(0, 100, 80)); EVENT_COLORS.put(FlightEvent.Type.IGNITION, new Color(230, 130, 15)); EVENT_COLORS.put(FlightEvent.Type.BURNOUT, new Color(80, 55, 40)); EVENT_COLORS.put(FlightEvent.Type.EJECTION_CHARGE, new Color(80, 55, 40)); EVENT_COLORS.put(FlightEvent.Type.STAGE_SEPARATION, new Color(80, 55, 40)); EVENT_COLORS.put(FlightEvent.Type.APOGEE, new Color(15, 120, 15)); EVENT_COLORS.put(FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT, new Color(0, 0, 128)); EVENT_COLORS.put(FlightEvent.Type.GROUND_HIT, new Color(0, 0, 0)); EVENT_COLORS.put(FlightEvent.Type.SIMULATION_END, new Color(128, 0, 0)); EVENT_COLORS.put(FlightEvent.Type.TUMBLE, new Color(196, 0, 255)); } private static final Map<FlightEvent.Type, Image> EVENT_IMAGES = new HashMap<FlightEvent.Type, Image>(); static { loadImage(FlightEvent.Type.LAUNCH, "pix/eventicons/event-launch.png"); loadImage(FlightEvent.Type.LIFTOFF, "pix/eventicons/event-liftoff.png"); loadImage(FlightEvent.Type.LAUNCHROD, "pix/eventicons/event-launchrod.png"); loadImage(FlightEvent.Type.IGNITION, "pix/eventicons/event-ignition.png"); loadImage(FlightEvent.Type.BURNOUT, "pix/eventicons/event-burnout.png"); loadImage(FlightEvent.Type.EJECTION_CHARGE, "pix/eventicons/event-ejection-charge.png"); loadImage(FlightEvent.Type.STAGE_SEPARATION, "pix/eventicons/event-stage-separation.png"); loadImage(FlightEvent.Type.APOGEE, "pix/eventicons/event-apogee.png"); loadImage(FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT, "pix/eventicons/event-recovery-device-deployment.png"); loadImage(FlightEvent.Type.GROUND_HIT, "pix/eventicons/event-ground-hit.png"); loadImage(FlightEvent.Type.SIMULATION_END, "pix/eventicons/event-simulation-end.png"); } private static void loadImage(FlightEvent.Type type, String file) { InputStream is; is = ClassLoader.getSystemResourceAsStream(file); if (is == null) { //System.out.println("ERROR: File " + file + " not found!"); return; } try { Image image = ImageIO.read(is); EVENT_IMAGES.put(type, image); } catch (IOException ignore) { ignore.printStackTrace(); } } }