Changeset 29199 in osm for applications/editors/josm


Ignore:
Timestamp:
2013-01-15T15:08:25+01:00 (12 years ago)
Author:
malcolmh
Message:

save

Location:
applications/editors/josm/plugins/smed2/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/src/seamap/Renderer.java

    r29198 r29199  
    1010package seamap;
    1111
     12import java.awt.BasicStroke;
    1213import java.awt.Graphics2D;
    1314import java.awt.RenderingHints;
     15import java.awt.geom.GeneralPath;
     16import java.awt.geom.Path2D;
    1417import java.awt.geom.Point2D;
    1518import java.util.ArrayList;
     
    2023import s57.S57val.*;
    2124import s57.S57val;
     25import seamap.SeaMap;
    2226import seamap.SeaMap.*;
    2327import symbols.Symbols;
     
    3135        static double tScale;
    3236        static Graphics2D g2;
     37        static int zoom;
    3338       
    34         public static void reRender(Graphics2D g, int zoom, double factor, SeaMap m, MapHelper h) {
     39        public static void reRender(Graphics2D g, int z, double factor, SeaMap m, MapHelper h) {
    3540                g2 = g;
     41                zoom = z;
    3642                helper = h;
    3743                map = m;
     
    115121        public static void symbol(Feature feature, Symbol symbol, Obj obj, Delta delta) {
    116122                Point2D point = helper.getPoint(findCentroid(feature));
    117                 ArrayList<ColCOL> colours = (ArrayList<ColCOL>) getAttVal(feature, obj, 0, Att.COLOUR);
    118                 ArrayList<ColPAT> pattern = (ArrayList<ColPAT>) getAttVal(feature, obj, 0, Att.COLPAT);
    119                 Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), delta, new Scheme(pattern, colours));
     123                if (obj == null) {
     124                        Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), delta, null);
     125                } else {
     126                        ArrayList<ColCOL> colours = (ArrayList<ColCOL>) getAttVal(feature, obj, 0, Att.COLOUR);
     127                        ArrayList<ColPAT> pattern = (ArrayList<ColPAT>) getAttVal(feature, obj, 0, Att.COLPAT);
     128                        Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), delta, new Scheme(pattern, colours));
     129                }
    120130        }
    121131       
     
    131141       
    132142        public static void lineVector (Feature feature, LineStyle style) {
    133                
     143                if (feature.flag != Fflag.NODE) {
     144                        ArrayList<Long> nodes = map.ways.get(feature.refs);
     145                        Path2D.Double p = new Path2D.Double();
     146                        p.setWindingRule(GeneralPath.WIND_NON_ZERO);
     147                        boolean first = true;
     148                        for (long node : nodes) {
     149                                Point2D point = helper.getPoint(map.nodes.get(node));
     150                                if (first) {
     151                                        p.moveTo(point.getX(), point.getY());
     152                                        first = false;
     153                                } else {
     154                                        p.lineTo(point.getX(), point.getY());
     155                                }
     156                        }
     157                        if (style.line != null) {
     158                                if (style.dash != null) {
     159                                        float[] dash = new float[style.dash.length];
     160                                        System.arraycopy(style.dash, 0, dash, 0, style.dash.length);
     161                                        for (int i = 0; i < style.dash.length; i++) {
     162                                                dash[i] *= (float) (sScale);
     163                                        }
     164                                        g2.setStroke(new BasicStroke((float) (style.width * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, dash, 0));
     165                                } else {
     166                                        g2.setStroke(new BasicStroke((float) (style.width * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
     167                                }
     168                                g2.setPaint(style.line);
     169                                g2.draw(p);
     170                        }
     171                        if (style.fill != null) {
     172                                g2.setPaint(style.fill);
     173                                g2.fill(p);
     174                        }
     175                }
    134176        }
    135177       
  • applications/editors/josm/plugins/smed2/src/seamap/Rules.java

    r29198 r29199  
    109109                                WatLEV lev = (WatLEV) Renderer.getAttVal(feature, feature.type, 0, Att.WATLEV);
    110110                                if (lev == WatLEV.LEV_CVRS) {
    111                                         Renderer.lineVector(feature, new LineStyle(new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 40, 40 }, 0), Color.black, null));
     111                                        Renderer.lineVector(feature, new LineStyle(Color.black, 10, new float[] { 40, 40 }, null));
    112112                                        if (zoom >= 15)
    113113                                                Renderer.lineText(feature, "(covers)", new TextStyle(new Font("Arial", Font.PLAIN, 80)), 0.5, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 20)));
    114114                                } else {
    115                                         Renderer.lineVector(feature, new LineStyle(new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND), Color.black, null));
     115                                        Renderer.lineVector(feature, new LineStyle(Color.black, 10, null, null));
    116116                                }
    117117                                if (zoom >= 15)
     
    144144                case TSSRON:
    145145                        if (zoom <= 15)
    146                                 Renderer.lineVector(feature, new LineStyle(null, null, new Color(0x80c480ff, true)));
     146                                Renderer.lineVector(feature, new LineStyle(null, 0, null, new Color(0x80c480ff, true)));
    147147                        else
    148                                 Renderer.lineVector(feature, new LineStyle(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND), new Color(0x80c480ff, true), null));
     148                                Renderer.lineVector(feature, new LineStyle(new Color(0x80c480ff, true), 20, null, null));
    149149                        AttItem name = feature.atts.get(Att.OBJNAM);
    150150                        if ((zoom >= 10) && (name != null))
     
    152152                        break;
    153153                case TSELNE:
    154                         Renderer.lineVector(feature, new LineStyle(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND), new Color(0x80c480ff, true), null));
     154                        Renderer.lineVector(feature, new LineStyle(new Color(0x80c480ff, true), 20, null, null));
    155155                        break;
    156156                case TSSLPT:
     
    158158                        break;
    159159                case TSSBND:
    160                         Renderer.lineVector(feature, new LineStyle(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 40, 40 }, 0), new Color(0x80c480ff, true), null));
     160                        Renderer.lineVector(feature, new LineStyle(new Color(0x80c480ff, true), 20, new float[] { 40, 40 }, null));
    161161                        break;
    162162                }
     
    177177                                Renderer.symbol(feature, Areas.MarineFarm, Obj.MARCUL, null);
    178178                        if (zoom >= 16)
    179                                 Renderer.lineVector(feature, new LineStyle(new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 10, 10 }, 0), Color.black, null));
     179                                Renderer.lineVector(feature, new LineStyle( Color.black, 4, new float[] { 10, 10 }, null));
    180180                        break;
    181181                case FAIRWY:
    182182                        if (Renderer.calcArea(feature) > 2.0) {
    183183                                if (zoom < 16)
    184                                         Renderer.lineVector(feature, new LineStyle(new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 50, 50 }, 0), new Color(0xc480ff), new Color(0x40ffffff, true)));
     184                                        Renderer.lineVector(feature, new LineStyle(new Color(0xc480ff), 8, new float[] { 50, 50 }, new Color(0x40ffffff, true)));
    185185                                else
    186                                         Renderer.lineVector(feature, new LineStyle(new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 50, 50 }, 0), new Color(0xc480ff), null));
     186                                        Renderer.lineVector(feature, new LineStyle(new Color(0xc480ff), 8, new float[] { 50, 50 }, null));
    187187                        } else {
    188188                                if (zoom >= 14)
    189                                         Renderer.lineVector(feature, new LineStyle(null, null, new Color(0x40ffffff, true)));
     189                                        Renderer.lineVector(feature, new LineStyle(new Color(0x40ffffff, true), 0, null, null));
    190190                        }
    191191                        break;
    192192                case DRGARE:
    193193                        if (zoom < 16)
    194                                 Renderer.lineVector(feature, new LineStyle(new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 25, 25 }, 0), Color.black, new Color(0x40ffffff, true)));
     194                                Renderer.lineVector(feature, new LineStyle(Color.black, 8, new float[] { 25, 25 }, new Color(0x40ffffff, true)));
    195195                        else
    196                                 Renderer.lineVector(feature, new LineStyle(new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 25, 25 }, 0), Color.black, null));
     196                                Renderer.lineVector(feature, new LineStyle(Color.black, 8, new float[] { 25, 25 }, null));
    197197                        if ((zoom >= 12) && (name != null))
    198198                                Renderer.labelText(feature, (String) name.val, new TextStyle(new Font("Arial", Font.PLAIN, 100)), new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 0)));
     
    208208                        if ((CatPRA)Renderer.getAttVal(feature, feature.type, 0, Att.CATPRA) == CatPRA.PRA_WFRM) {
    209209                                Renderer.symbol(feature, Areas.WindFarm, Obj.OSPARE, null);
    210                                 Renderer.lineVector(feature, new LineStyle(new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] { 40, 40 }, 0), Color.black, null));
     210                                Renderer.lineVector(feature, new LineStyle(Color.black, 20, new float[] { 40, 40 }, null));
    211211                                if ((zoom >= 15) && (name != null))
    212212                                        Renderer.labelText(feature, (String) name.val, new TextStyle(new Font("Arial", Font.BOLD, 80)), new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 10)));
     
    261261                        switch (lvl) {
    262262                        case LEV_CVRS:
    263                                 Renderer.symbol(feature, Areas.RockC, feature.type, null);
     263                                Renderer.symbol(feature, Areas.RockC, null, null);
    264264                                break;
    265265                        case LEV_AWSH:
    266                                 Renderer.symbol(feature, Areas.RockA, feature.type, null);
     266                                Renderer.symbol(feature, Areas.RockA, null, null);
    267267                                break;
    268268                        default:
    269                                 Renderer.symbol(feature, Areas.Rock, feature.type, null);
     269                                Renderer.symbol(feature, Areas.Rock, null, null);
    270270                        }
    271271                } else {
    272                         Renderer.symbol(feature, Areas.Rock, feature.type, null);
     272                        Renderer.symbol(feature, Areas.Rock, null, null);
    273273                }
    274274        }
     
    299299                if (cats.get(0) == CatLMK.LMK_RADR)
    300300                        fncSym = Landmarks.RadioTV;
    301                 Renderer.symbol(feature, catSym, feature.type, null);
    302                 Renderer.symbol(feature, fncSym, feature.type, null);
     301                Renderer.symbol(feature, catSym, null, null);
     302                Renderer.symbol(feature, fncSym, null, null);
    303303        }
    304304        private static void moorings(Feature feature) {
     
    306306                switch (cat) {
    307307                case MOR_DLPN:
    308                         Renderer.symbol(feature, Harbours.Dolphin, feature.type, null);
     308                        Renderer.symbol(feature, Harbours.Dolphin, null, null);
    309309                        break;
    310310                case MOR_DDPN:
    311                         Renderer.symbol(feature, Harbours.DeviationDolphin, feature.type, null);
     311                        Renderer.symbol(feature, Harbours.DeviationDolphin, null, null);
    312312                        break;
    313313                case MOR_BLRD:
    314314                case MOR_POST:
    315                         Renderer.symbol(feature, Harbours.Bollard, feature.type, null);
     315                        Renderer.symbol(feature, Harbours.Bollard, null, null);
    316316                        break;
    317317                case MOR_BUOY:
     
    335335                        case WRK_DNGR:
    336336                        case WRK_MSTS:
    337                                 Renderer.symbol(feature, Areas.WreckD, feature.type, null);
     337                                Renderer.symbol(feature, Areas.WreckD, null, null);
    338338                                break;
    339339                        case WRK_HULS:
    340                                 Renderer.symbol(feature, Areas.WreckS, feature.type, null);
     340                                Renderer.symbol(feature, Areas.WreckS, null, null);
    341341                                break;
    342342                        default:
    343                                 Renderer.symbol(feature, Areas.WreckND, feature.type, null);
     343                                Renderer.symbol(feature, Areas.WreckND, null, null);
    344344                        }
    345345                } else {
    346                         Renderer.symbol(feature, Areas.WreckND, feature.type, null);
     346                        Renderer.symbol(feature, Areas.WreckND, null, null);
    347347                }
    348348        }
     
    352352                switch (feature.type) {
    353353                case LITMAJ:
    354                         Renderer.symbol(feature, Beacons.LightMajor, feature.type, null);
     354                        Renderer.symbol(feature, Beacons.LightMajor, null, null);
    355355                        break;
    356356                case LITMIN:
    357357                case LIGHTS:
    358                         Renderer.symbol(feature, Beacons.LightMinor, feature.type, null);
     358                        Renderer.symbol(feature, Beacons.LightMinor, null, null);
    359359                        break;
    360360                }
     
    364364                case SISTAT:
    365365                case SISTAW:
    366                         Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
     366                        Renderer.symbol(feature, Harbours.SignalStation, null, null);
    367367                        break;
    368368                case RDOSTA:
    369                         Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
     369                        Renderer.symbol(feature, Harbours.SignalStation, null, null);
    370370                        break;
    371371                case RADSTA:
    372                         Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
     372                        Renderer.symbol(feature, Harbours.SignalStation, null, null);
     373                        Renderer.symbol(feature, Beacons.RadarStation, null, null);
    373374                        break;
    374375                case PILBOP:
    375                         Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
     376                        Renderer.symbol(feature, Harbours.Pilot, null, null);
    376377                        break;
    377378                case CGUSTA:
    378                         Renderer.symbol(feature, Harbours.CoastGStation, feature.type, null);
     379                        Renderer.symbol(feature, Harbours.SignalStation, null, null);
    379380                        break;
    380381                case RSCSTA:
    381                         Renderer.symbol(feature, Harbours.RescueStation, feature.type, null);
     382                        Renderer.symbol(feature, Harbours.Rescue, null, null);
    382383                        break;
    383384                }
     
    399400        }
    400401        private static void platforms(Feature feature) {
    401                 Renderer.symbol(feature, Landmarks.Platform, feature.type, null);
     402                Renderer.symbol(feature, Landmarks.Platform, null, null);
    402403        }
    403404        private static void buoys(Feature feature) {
     
    415416                        case LAM_PORT:
    416417                                if (shape == BcnSHP.BCN_PRCH)
    417                                         Renderer.symbol(feature, Beacons.PerchPort, feature.type, null);
     418                                        Renderer.symbol(feature, Beacons.PerchPort, null, null);
    418419                                else
    419                                         Renderer.symbol(feature, Beacons.WithyPort, feature.type, null);
     420                                        Renderer.symbol(feature, Beacons.WithyPort, null, null);
    420421                                break;
    421422                        case LAM_STBD:
    422423                                if (shape == BcnSHP.BCN_PRCH)
    423                                         Renderer.symbol(feature, Beacons.PerchStarboard, feature.type, null);
     424                                        Renderer.symbol(feature, Beacons.PerchStarboard, null, null);
    424425                                else
    425                                         Renderer.symbol(feature, Beacons.WithyStarboard, feature.type, null);
     426                                        Renderer.symbol(feature, Beacons.WithyStarboard, null, null);
    426427                                break;
    427428                        default:
  • applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java

    r29198 r29199  
    6767        }
    6868       
     69        public class MpolyTab extends HashMap<Long, Long> {
     70                public MpolyTab() {
     71                        super();
     72                }
     73        }
     74       
    6975        public class FtrMap extends EnumMap<Obj, ArrayList<Feature>> {
    7076                public FtrMap() {
     
    108114        public WayTab ways;
    109115        public WayTab mpolys;
     116        public MpolyTab outers;
    110117        public FtrMap features;
    111118        public FtrTab index;
     
    113120        private Feature feature;
    114121        private ArrayList<Long> list;
     122        private long mpid;
    115123
    116124        public SeaMap() {
     
    145153                list = new ArrayList<Long>();
    146154                mpolys.put(id, list);
     155                mpid = id;
    147156        }
    148157
     
    152161
    153162        public void addToMpoly(long way, boolean outer) {
    154                 if (outer)
     163                if (outer) {
    155164                        list.add(0, way);
    156                 else
     165                        outers.put(way, mpid);
     166                } else {
    157167                        list.add(way);
     168                }
    158169        }
    159170
  • applications/editors/josm/plugins/smed2/src/symbols/Harbours.java

    r29198 r29199  
    7171                ClearV.add(new Instr(Prim.LINE, new Line2D.Double(-10,25,10,25)));
    7272                ClearV.add(new Instr(Prim.LINE, new Line2D.Double(0,25,0,15)));
    73         }
    74         public static final Symbol CoastGStation = new Symbol();
    75         static{
    76                
    7773        }
    7874        public static final Symbol ContainerCrane = new Symbol();
     
    149145                MarinaNF.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
    150146        }
     147        public static final Symbol Pilot = new Symbol();
     148        static{
     149                Pilot.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     150                Pilot.add(new Instr(Prim.FILL, new Color(0xd400d4)));
     151                Path2D.Double p = new Path2D.Double(); p.moveTo(-15,0); p.lineTo(0,-56); p.lineTo(15,0); p.lineTo(0,56); p.closePath();
     152                Pilot.add(new Instr(Prim.PGON, p));
     153                Pilot.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-58,-58,116,116)));
     154        }
    151155        public static final Symbol PortCrane = new Symbol();
    152156        static {
     
    161165                Post.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-10,-10,20,20)));
    162166        }
    163         public static final Symbol RescueStation = new Symbol();
     167        public static final Symbol Rescue = new Symbol();
    164168        static{
    165                
     169                Rescue.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     170                Rescue.add(new Instr(Prim.FILL, Color.black));
     171                Path2D.Double p = new Path2D.Double(); p.moveTo(-11,0); p.lineTo(0,-43); p.lineTo(11,0); p.lineTo(0,43); p.closePath();
     172                Rescue.add(new Instr(Prim.PGON, p));
     173                Rescue.add(new Instr(Prim.LINE, new Line2D.Double(-15,0,15,0)));
    166174        }
    167175        public static final Symbol SignalStation = new Symbol();
  • applications/editors/josm/plugins/smed2/src/symbols/Symbols.java

    r29198 r29199  
    108108
    109109        public static class LineStyle {
    110                 BasicStroke stroke;
    111                 Color line;
    112                 Color fill;
    113 
    114                 public LineStyle(BasicStroke istroke, Color iline, Color ifill) {
    115                         stroke = istroke;
     110                public Color line;
     111                public float width;
     112                public float[] dash;
     113                public Color fill;
     114
     115                public LineStyle(Color iline, float iwidth, float[] idash, Color ifill) {
    116116                        line = iline;
     117                        width = iwidth;
     118                        dash = idash;
    117119                        fill = ifill;
    118120                }
Note: See TracChangeset for help on using the changeset viewer.