// ********************************************************************** // // <copyright> // // BBN Technologies // 10 Moulton Street // Cambridge, MA 02138 // (617) 873-8000 // // Copyright (C) BBNT Solutions LLC. All rights reserved. // // </copyright> // ********************************************************************** // // $Source: /cvs/distapps/openmap/src/corba/com/bbn/openmap/layer/specialist/JGraphic.java,v $ // $RCSfile: JGraphic.java,v $ // $Revision: 1.4 $ // $Date: 2004/10/14 18:05:36 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap.layer.specialist; import java.awt.BasicStroke; import java.awt.Color; import java.io.Serializable; import com.bbn.openmap.corba.CSpecialist.CColorPackage.EColor; import com.bbn.openmap.corba.CSpecialist.GraphicPackage.DeclutterType; import com.bbn.openmap.corba.CSpecialist.GraphicPackage.EGraphic; import com.bbn.openmap.corba.CSpecialist.GraphicPackage.GraphicType; import com.bbn.openmap.corba.CSpecialist.GraphicPackage.LineType; import com.bbn.openmap.corba.CSpecialist.GraphicPackage.RenderType; import com.bbn.openmap.omGraphics.OMGraphic; /** class JGraphic */ public class JGraphic implements Serializable { public final static int GRAPHICTYPE_UNITSYMBOL = 8; public final static int GRAPHICTYPE_2525SYMBOL = 9; public final static int GRAPHICTYPE_FORCEARROW = 10; public final static int GRAPHICTYPE_NEW = 11; public final static int GRAPHICTYPE_REORDER = 12; private JGraphic() {} public static void fillOMGraphicParams(OMGraphic newbie, EGraphic egraphic) { // newbie.setGraphicID(egraphic.gID); newbie.setLineType(getOMGraphicLineType(egraphic.lType.value())); newbie.setRenderType(getOMGraphicRenderType(egraphic.rType.value())); // newbie.setGraphicType(getOMGraphicType(egraphic.gType.value())); newbie.setStroke(new BasicStroke(egraphic.lineWidth)); newbie.setDeclutterType(egraphic.dcType.value()); newbie.setLinePaint(getColor(egraphic.color)); newbie.setFillPaint(getColor(egraphic.fillColor)); if (newbie instanceof JObjectHolder) ((JObjectHolder) newbie).setObject(egraphic.obj); } ////////////////////////////////////////////////////////////////////////// /** getRenderType() */ public static int getOMGraphicRenderType(int cRenderType) { int rType; switch (cRenderType) { case RenderType._RT_LatLon: rType = OMGraphic.RENDERTYPE_LATLON; break; case RenderType._RT_Offset: rType = OMGraphic.RENDERTYPE_OFFSET; break; default: // default to XY rType = OMGraphic.RENDERTYPE_XY; break; } return rType; } /** getLineType() */ public static int getOMGraphicLineType(int cLineType) { int lType; switch (cLineType) { case LineType._LT_Rhumb: lType = OMGraphic.LINETYPE_RHUMB; break; case LineType._LT_GreatCircle: lType = OMGraphic.LINETYPE_GREATCIRCLE; break; default: // default to STRAIGHT lType = OMGraphic.LINETYPE_STRAIGHT; break; } return lType; } /** getDeclutterType() */ public static int getOMGraphicDeclutterType(int cDeclutterType) { int dcType; switch (cDeclutterType) { case DeclutterType._DC_Space: dcType = OMGraphic.DECLUTTERTYPE_SPACE; break; case DeclutterType._DC_Move: dcType = OMGraphic.DECLUTTERTYPE_MOVE; break; case DeclutterType._DC_Line: dcType = OMGraphic.DECLUTTERTYPE_LINE; break; default: dcType = OMGraphic.DECLUTTERTYPE_NONE; break; } return dcType; } /** getGraphicType() */ public static int getOMGraphicType(int cGraphicType) { int gtype; switch (cGraphicType) { case GraphicType._GT_Bitmap: gtype = OMGraphic.GRAPHICTYPE_BITMAP; break; case GraphicType._GT_Text: gtype = OMGraphic.GRAPHICTYPE_TEXT; break; case GraphicType._GT_Poly: gtype = OMGraphic.GRAPHICTYPE_POLY; break; case GraphicType._GT_Line: gtype = OMGraphic.GRAPHICTYPE_LINE; break; case GraphicType._GT_UnitSymbol: gtype = GRAPHICTYPE_UNITSYMBOL; break; case GraphicType._GT_2525Symbol: gtype = GRAPHICTYPE_2525SYMBOL; break; case GraphicType._GT_Rectangle: gtype = OMGraphic.GRAPHICTYPE_RECTANGLE; break; case GraphicType._GT_Circle: gtype = OMGraphic.GRAPHICTYPE_CIRCLE; break; case GraphicType._GT_Raster: gtype = OMGraphic.GRAPHICTYPE_RASTER; break; case GraphicType._GT_ForceArrow: gtype = GRAPHICTYPE_FORCEARROW; break; case GraphicType._GT_NewGraphic: gtype = GRAPHICTYPE_NEW; break; case GraphicType._GT_ReorderGraphic: gtype = GRAPHICTYPE_REORDER; break; default: gtype = OMGraphic.GRAPHICTYPE_GRAPHIC; break; } return gtype; } /** Get a Color from an EColor. */ public static Color getColor(EColor color) { Color ret; if (color != null) { if ((color.red == 0) && (color.green == 0) && (color.blue == 0) && (color.color == null)) { ret = null; } else { ret = new Color(((color.red >> 8) & 0x00FF), ((color.green >> 8) & 0x00FF), ((color.blue >> 8) & 0x00FF)); } } else { ret = null; } return ret; } // public static OMStipple getOMStipple( // com.bbn.openmap.corba.CSpecialist.CStipplePackage.EStipple estip) // { // System.err.println("EGraphic.getOMStipple: unimplemented"); // return (OMStipple) null; // } ////////////////////////////////////////////////////////////////////////// /** * constructGesture() - constructs a CSpecialist.MouseEvent from a * MapGesture */ protected static com.bbn.openmap.corba.CSpecialist.MouseEvent constructGesture( MapGesture gest) { com.bbn.openmap.corba.CSpecialist.Mouse mouse = new com.bbn.openmap.corba.CSpecialist.Mouse(); // set the mouse parameters mouse.point = new com.bbn.openmap.corba.CSpecialist.XYPoint((short) gest.point.x, (short) gest.point.y); mouse.llpoint = new com.bbn.openmap.corba.CSpecialist.LLPoint(gest.llpoint.getLatitude(), gest.llpoint.getLongitude()); mouse.press = gest.press; mouse.mousebutton = gest.mousebutton; mouse.modifiers = new com.bbn.openmap.corba.CSpecialist.key_modifiers(gest.alt, gest.shift, gest.control); // mouse.modifiers.meta = gest.meta; // construct the CSpecialist.MouseEvent com.bbn.openmap.corba.CSpecialist.MouseEvent event = new com.bbn.openmap.corba.CSpecialist.MouseEvent(); switch (gest.event_type) { case com.bbn.openmap.corba.CSpecialist.MouseType._ClickEvent: event.click(mouse); break; case com.bbn.openmap.corba.CSpecialist.MouseType._MotionEvent: event.motion(mouse); break; case com.bbn.openmap.corba.CSpecialist.MouseType._KeyEvent: event.keypress(new com.bbn.openmap.corba.CSpecialist.Keypress(mouse.point, gest.key, mouse.modifiers)); break; default: System.err.println("JGraphic.constructGesture() - invalid type"); } return event; } public static void update( JObjectHolder graphic, com.bbn.openmap.corba.CSpecialist.GraphicPackage.GF_update update) { // do the updates, but don't rerender just yet switch (update.discriminator().value()) { // mousable object changed case com.bbn.openmap.corba.CSpecialist.GraphicPackage.settableFields._GF_object: graphic.setObject(update.obj()); break; // line type changed case com.bbn.openmap.corba.CSpecialist.GraphicPackage.settableFields._GF_lType: ((OMGraphic) graphic).setLineType(update.lType().value()); break; // render type changed case com.bbn.openmap.corba.CSpecialist.GraphicPackage.settableFields._GF_rType: ((OMGraphic) graphic).setRenderType(update.rType().value()); break; case com.bbn.openmap.corba.CSpecialist.GraphicPackage.settableFields._GF_color: ((OMGraphic) graphic).setLinePaint(getColor(update.color())); break; case com.bbn.openmap.corba.CSpecialist.GraphicPackage.settableFields._GF_fillColor: ((OMGraphic) graphic).setFillPaint(getColor(update.fillColor())); break; case com.bbn.openmap.corba.CSpecialist.GraphicPackage.settableFields._GF_lineWidth: ((OMGraphic) graphic).setStroke(new BasicStroke(update.lineWidth())); break; case com.bbn.openmap.corba.CSpecialist.GraphicPackage.settableFields._GF_stipple: System.err.println("ignoring stipple"); // ((OMGraphic)graphic).setStipple(getOMStipple(update.stipple())); break; case com.bbn.openmap.corba.CSpecialist.GraphicPackage.settableFields._GF_fillStipple: System.err.println("ignoring fill stipple"); // ((OMGraphic)graphic).setFillStipple(getOMStipple(update.fillStipple())); break; default: System.err.println("JGraphic.update: invalid graphic update"); break; } } }