Ignore:
Timestamp:
2013-01-10T17:31:17+01:00 (12 years ago)
Author:
malcolmh
Message:

save

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

Legend:

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

    r29185 r29186  
    112112        }
    113113       
    114         public static void symbol(Feature feature, ArrayList<Instr> symbol, Obj obj) {
     114        public static void symbol(Feature feature, Symbol symbol, Obj obj, Delta delta) {
    115115                Point2D point = helper.getPoint(findCentroid(feature));
    116116                ArrayList<ColCOL> colours = (ArrayList<ColCOL>) getAttVal(feature, obj, 0, Att.COLOUR);
    117117                ArrayList<ColPAT> pattern = (ArrayList<ColPAT>) getAttVal(feature, obj, 0, Att.COLPAT);
    118                 Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), null, new Scheme(pattern, colours));
     118                Symbols.drawSymbol(g2, symbol, sScale, point.getX(), point.getY(), delta, new Scheme(pattern, colours));
    119119        }
    120120       
  • applications/editors/josm/plugins/smed2/src/seamap/Rules.java

    r29185 r29186  
    1616import s57.S57obj.*;
    1717
     18import seamap.SeaMap.AttItem;
    1819import seamap.SeaMap.*;
    19 import symbols.Beacons;
    20 import symbols.Buoys;
    21 import symbols.Harbours;
    22 import symbols.Landmarks;
    23 import symbols.Symbols.Instr;
     20import symbols.*;
     21import symbols.Symbols.*;
    2422
    2523public class Rules {
     
    119117                for (Feature feature : features) {
    120118                        ArrayList<CatLMK> cats = (ArrayList<CatLMK>) Renderer.getAttVal(feature, feature.type, 0, Att.CATLMK);
    121                         ArrayList<Instr> catSym = Landmarks.Shapes.get(cats.get(0));
     119                        Symbol catSym = Landmarks.Shapes.get(cats.get(0));
    122120                        ArrayList<FncFNC> fncs = (ArrayList<FncFNC>) Renderer.getAttVal(feature, feature.type, 0, Att.FUNCTN);
    123                         ArrayList<Instr> fncSym = Landmarks.Funcs.get(fncs.get(0));
     121                        Symbol fncSym = Landmarks.Funcs.get(fncs.get(0));
    124122                        if ((fncs.get(0) == FncFNC.FNC_CHCH) && (cats.get(0) == CatLMK.LMK_TOWR)) catSym = Landmarks.ChurchTower;
    125123                        if ((cats.get(0) == CatLMK.LMK_UNKN) && (fncs.get(0) == FncFNC.FNC_UNKN) && (feature.objs.get(Obj.LIGHTS) != null)) catSym = Beacons.LightMajor;
    126124                        if (cats.get(0) == CatLMK.LMK_RADR) fncSym = Landmarks.RadioTV;
    127                         Renderer.symbol(feature, catSym, feature.type);
    128                         Renderer.symbol(feature, fncSym, feature.type);
     125                        Renderer.symbol(feature, catSym, feature.type, null);
     126                        Renderer.symbol(feature, fncSym, feature.type, null);
    129127                }
    130128        }
     
    134132                        switch (cat) {
    135133                        case MOR_DLPN:
    136                                 Renderer.symbol(feature, Harbours.Dolphin, feature.type);
     134                                Renderer.symbol(feature, Harbours.Dolphin, feature.type, null);
    137135                                break;
    138136                        case MOR_DDPN:
    139                                 Renderer.symbol(feature, Harbours.DeviationDolphin, feature.type);
     137                                Renderer.symbol(feature, Harbours.DeviationDolphin, feature.type, null);
    140138                                break;
    141139                        case MOR_BLRD:
    142140                        case MOR_POST:
    143                                 Renderer.symbol(feature, Harbours.Bollard, feature.type);
     141                                Renderer.symbol(feature, Harbours.Bollard, feature.type, null);
    144142                                break;
    145143                        case MOR_BUOY:
    146144                                BoySHP shape = (BoySHP) Renderer.getAttVal(feature, feature.type, 0, Att.BOYSHP);
    147145                                if (shape == BoySHP.BOY_UNKN) shape = BoySHP.BOY_SPHR;
    148                                 Renderer.symbol(feature, Buoys.Shapes.get(shape), feature.type);
     146                                Renderer.symbol(feature, Buoys.Shapes.get(shape), feature.type, null);
    149147                                break;
    150148                        }
     
    160158                        switch (feature.type) {
    161159                        case LITMAJ:
    162                                 Renderer.symbol(feature, Beacons.LightMajor, feature.type);
     160                                Renderer.symbol(feature, Beacons.LightMajor, feature.type, null);
    163161                                break;
    164162                        case LITMIN:
    165163                        case LIGHTS:
    166                                 Renderer.symbol(feature, Beacons.LightMinor, feature.type);
     164                                Renderer.symbol(feature, Beacons.LightMinor, feature.type, null);
    167165                                break;
    168166                        }
     
    174172                        case SISTAT:
    175173                        case SISTAW:
    176                                 Renderer.symbol(feature, Harbours.SignalStation, feature.type);
     174                                Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
    177175                                break;
    178176                        case RDOSTA:
    179                                 Renderer.symbol(feature, Harbours.SignalStation, feature.type);
     177                                Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
    180178                                break;
    181179                        case RADSTA:
    182                                 Renderer.symbol(feature, Harbours.SignalStation, feature.type);
     180                                Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
    183181                                break;
    184182                        case PILBOP:
    185                                 Renderer.symbol(feature, Harbours.SignalStation, feature.type);
     183                                Renderer.symbol(feature, Harbours.SignalStation, feature.type, null);
    186184                                break;
    187185                        case CGUSTA:
    188 //                      Renderer.symbol(feature, Harbours.CGuardStation, feature.type);
     186//                      Renderer.symbol(feature, Harbours.CGuardStation, feature.type, null);
    189187                        break;
    190188                        case RSCSTA:
    191 //                              Renderer.symbol(feature, Harbours.RescueStation, feature.type);
     189//                              Renderer.symbol(feature, Harbours.RescueStation, feature.type, null);
    192190                                break;
    193191                        }
     
    198196                        switch (feature.type) {
    199197                        case LITVES:
    200                                 Renderer.symbol(feature, Buoys.Super, feature.type);
     198                                Renderer.symbol(feature, Buoys.Super, feature.type, null);
    201199                                break;
    202200                        case LITFLT:
    203                                 Renderer.symbol(feature, Buoys.Float, feature.type);
     201                                Renderer.symbol(feature, Buoys.Float, feature.type, null);
    204202                                break;
    205203                        case BOYINB:
    206                                 Renderer.symbol(feature, Buoys.Storage, feature.type);
    207                                 break;
    208                         }
     204                                Renderer.symbol(feature, Buoys.Storage, feature.type, null);
     205                                break;
     206                        }
     207                        if (feature.objs.get(Obj.TOPMAR) != null)
     208                                Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Floats);
    209209                }
    210210        }
    211211        private static void platforms(ArrayList<Feature> features) {
    212212                for (Feature feature : features) {
    213                         Renderer.symbol(feature, Landmarks.Platform, feature.type);
     213                        Renderer.symbol(feature, Landmarks.Platform, feature.type, null);
    214214                }
    215215        }
     
    217217                for (Feature feature : features) {
    218218                        BoySHP shape = (BoySHP) Renderer.getAttVal(feature, feature.type, 0, Att.BOYSHP);
    219                         Renderer.symbol(feature, Buoys.Shapes.get(shape), feature.type);
     219                        Renderer.symbol(feature, Buoys.Shapes.get(shape), feature.type, null);
     220                        if (feature.objs.get(Obj.TOPMAR) != null) {
     221                                Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Buoys.get(shape));
     222                        }
    220223                }
    221224        }
     
    228231                                case LAM_PORT:
    229232                                        if (shape == BcnSHP.BCN_PRCH)
    230                                                 Renderer.symbol(feature, Beacons.PerchPort, feature.type);
     233                                                Renderer.symbol(feature, Beacons.PerchPort, feature.type, null);
    231234                                        else
    232                                                 Renderer.symbol(feature, Beacons.WithyPort, feature.type);
     235                                                Renderer.symbol(feature, Beacons.WithyPort, feature.type, null);
    233236                                        break;
    234237                                case LAM_STBD:
    235238                                        if (shape == BcnSHP.BCN_PRCH)
    236                                                 Renderer.symbol(feature, Beacons.PerchStarboard, feature.type);
     239                                                Renderer.symbol(feature, Beacons.PerchStarboard, feature.type, null);
    237240                                        else
    238                                                 Renderer.symbol(feature, Beacons.WithyStarboard, feature.type);
     241                                                Renderer.symbol(feature, Beacons.WithyStarboard, feature.type, null);
    239242                                        break;
    240243                                default:
    241                                         Renderer.symbol(feature, Beacons.Stake, feature.type);
     244                                        Renderer.symbol(feature, Beacons.Stake, feature.type, null);
    242245                                }
    243246                        } else {
    244                                 Renderer.symbol(feature, Beacons.Shapes.get(shape), feature.type);
     247                                Renderer.symbol(feature, Beacons.Shapes.get(shape), feature.type, null);
     248                                if (feature.objs.get(Obj.TOPMAR) != null)
     249                                        Renderer.symbol(feature, Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), Obj.TOPMAR, Topmarks.Beacons);
    245250                        }
    246251                }
  • applications/editors/josm/plugins/smed2/src/symbols/Areas.java

    r29128 r29186  
    1414import java.awt.Rectangle;
    1515import java.awt.geom.*;
    16 import java.util.ArrayList;
    1716
    1817import symbols.Symbols.*;
    1918
    2019public class Areas {
    21         public static final ArrayList<Instr> Plane = new ArrayList<Instr>();
     20        public static final Symbol Plane = new Symbol();
    2221        static {
    2322                Plane.add(new Instr(Prim.BBOX, new Rectangle(-60,-60,120,120)));
     
    2625                Plane.add(new Instr(Prim.PGON, p));
    2726        }
    28         public static final ArrayList<Instr> Cable = new ArrayList<Instr>();
     27        public static final Symbol Cable = new Symbol();
    2928        static {
    3029                Cable.add(new Instr(Prim.BBOX, new Rectangle(-30,-60,60,60)));
     
    3433                Cable.add(new Instr(Prim.PLIN, p));
    3534        }
    36         public static final ArrayList<Instr> LaneArrow = new ArrayList<Instr>();
     35        public static final Symbol LaneArrow = new Symbol();
    3736        static {
    3837                LaneArrow.add(new Instr(Prim.STRK, new BasicStroke(10.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
     
    4241                LaneArrow.add(new Instr(Prim.PLIN, p));
    4342        }
    44         public static final ArrayList<Instr> LineAnchor = new ArrayList<Instr>();
     43        public static final Symbol LineAnchor = new Symbol();
    4544        static {
    4645                LineAnchor.add(new Instr(Prim.FILL, new Color(0xc480ff)));
    47                 LineAnchor.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 0.5, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))), null)));
     46                LineAnchor.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.5, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))), null)));
    4847        }
    49         public static final ArrayList<Instr> LinePlane = new ArrayList<Instr>();
     48        public static final Symbol LinePlane = new Symbol();
    5049        static {
    5150                LinePlane.add(new Instr(Prim.FILL, new Color(0xc480ff)));
    52                 LinePlane.add(new Instr(Prim.SYMB, new Symbols.Symbol(Areas.Plane, 0.5, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))), null)));
     51                LinePlane.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Areas.Plane, 0.5, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))), null)));
    5352        }
    54         public static final ArrayList<Instr> MarineFarm = new ArrayList<Instr>();
     53        public static final Symbol MarineFarm = new Symbol();
    5554        static {
    5655                MarineFarm.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
     
    6261                MarineFarm.add(new Instr(Prim.RSHP, new Ellipse2D.Double(9,-2,4,4)));
    6362        }
    64         public static final ArrayList<Instr> NoWake = new ArrayList<Instr>();
     63        public static final Symbol NoWake = new Symbol();
    6564        static {
    6665                NoWake.add(new Instr(Prim.STRK, new BasicStroke(12.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    7271                NoWake.add(new Instr(Prim.LINE, new Line2D.Double(-60,-60,60,60)));
    7372        }
    74         public static final ArrayList<Instr> Pipeline = new ArrayList<Instr>();
     73        public static final Symbol Pipeline = new Symbol();
    7574        static {
    7675                Pipeline.add(new Instr(Prim.BBOX, new Rectangle(-15,-60,30,60)));
     
    8079                Pipeline.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-10,-60,20,20)));
    8180        }
    82         public static final ArrayList<Instr> Restricted = new ArrayList<Instr>();
     81        public static final Symbol Restricted = new Symbol();
    8382        static {
    8483                Restricted.add(new Instr(Prim.BBOX, new Rectangle(-15,-30,30,30)));
     
    8887                Restricted.add(new Instr(Prim.LINE, new Line2D.Double(0,-15,17,-15)));
    8988        }
    90         public static final ArrayList<Instr> Rock = new ArrayList<Instr>();
     89        public static final Symbol Rock = new Symbol();
    9190        static {
    9291                Rock.add(new Instr(Prim.FILL, new Color(0x80c0ff)));
     
    9998                Rock.add(new Instr(Prim.LINE, new Line2D.Double(0,-20,0,20)));
    10099        }
    101         public static final ArrayList<Instr> RockA = new ArrayList<Instr>();
     100        public static final Symbol RockA = new Symbol();
    102101        static {
    103102                RockA.add(new Instr(Prim.FILL, new Color(0x80c0ff)));
     
    114113                RockA.add(new Instr(Prim.RSHP, new Ellipse2D.Double(9,9,8,8)));
    115114        }
    116         public static final ArrayList<Instr> RockC = new ArrayList<Instr>();
     115        public static final Symbol RockC = new Symbol();
    117116        static {
    118117                RockC.add(new Instr(Prim.FILL, new Color(0x80c0ff)));
     
    126125                RockC.add(new Instr(Prim.LINE, new Line2D.Double(10,17.3,-10,-17.3)));
    127126        }
    128         public static final ArrayList<Instr> Sandwaves = new ArrayList<Instr>();
    129         public static final ArrayList<Instr> Seaplane = new ArrayList<Instr>();
     127        public static final Symbol Sandwaves = new Symbol();
     128        public static final Symbol Seaplane = new Symbol();
    130129        static {
    131130                Seaplane.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    132131                Seaplane.add(new Instr(Prim.FILL, new Color(0xa30075)));
    133132                Seaplane.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-60,-60,120,120)));
    134                 Seaplane.add(new Instr(Prim.SYMB, new Symbols.Symbol(Areas.Plane, 1.0, 0, 0, null, null)));
     133                Seaplane.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Areas.Plane, 1.0, 0, 0, null, null)));
    135134        }
    136         public static final ArrayList<Instr> WindFarm = new ArrayList<Instr>();
     135        public static final Symbol WindFarm = new Symbol();
    137136        static {
    138137                WindFarm.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    145144                WindFarm.add(new Instr(Prim.LINE, new Line2D.Double(0,-27.5,-13.8,-53.6)));
    146145        }
    147         public static final ArrayList<Instr> WreckD = new ArrayList<Instr>();
     146        public static final Symbol WreckD = new Symbol();
    148147        static {
    149148                WreckD.add(new Instr(Prim.FILL, new Color(0x80c0ff)));
     
    158157                WreckD.add(new Instr(Prim.LINE, new Line2D.Double(20,-15,20,15)));
    159158        }
    160         public static final ArrayList<Instr> WreckND = new ArrayList<Instr>();
     159        public static final Symbol WreckND = new Symbol();
    161160        static {
    162161                WreckND.add(new Instr(Prim.STRK, new BasicStroke(5.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    167166                WreckND.add(new Instr(Prim.LINE, new Line2D.Double(20,-15,20,15)));
    168167        }
    169         public static final ArrayList<Instr> WreckS = new ArrayList<Instr>();
     168        public static final Symbol WreckS = new Symbol();
    170169        static {
    171170                WreckS.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
  • applications/editors/josm/plugins/smed2/src/symbols/Beacons.java

    r29185 r29186  
    1717import java.awt.geom.Line2D;
    1818import java.awt.geom.Path2D;
    19 import java.util.ArrayList;
    2019import java.util.EnumMap;
    2120
    22 import symbols.Symbols.Instr;
    23 import symbols.Symbols.Prim;
     21import symbols.Symbols.*;
    2422
    2523import s57.S57val.*;
     
    2725public class Beacons {
    2826       
    29         public static final ArrayList<Instr> Beacon = new ArrayList<Instr>();
     27        public static final Symbol Beacon = new Symbol();
    3028        static {
    31                 ArrayList<Instr> colours = new ArrayList<Instr>();
     29                Symbol colours = new Symbol();
    3230                Path2D.Double p = new Path2D.Double(); p.moveTo(-6.0,-8.5); p.lineTo(-6.0,-70.0); p.lineTo(6.0,-70.0); p.lineTo(6.0,-8.5); p.curveTo(6.0,-10.0,-6.0,-10.0,-6.0,-8.5); p.closePath();
    3331                colours.add(new Instr(Prim.P1, p));
     
    5149                Beacon.add(new Instr(Prim.PLIN, p));
    5250        }
    53         public static final ArrayList<Instr> Cairn = new ArrayList<Instr>();
     51        public static final Symbol Cairn = new Symbol();
    5452        static {
    5553                Cairn.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
     
    6260                Cairn.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-18,-70,36,36)));
    6361        }
    64         public static final ArrayList<Instr> FogSignal = new ArrayList<Instr>();
     62        public static final Symbol FogSignal = new Symbol();
    6563        static {
    6664                FogSignal.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
     
    7371                FogSignal.add(new Instr(Prim.EARC, new Arc2D.Double(-65.0,-65.0,130.0,130.0,190.0,50.0,Arc2D.OPEN)));
    7472        }
    75         public static final ArrayList<Instr> LightFlare = new ArrayList<Instr>();
     73        public static final Symbol LightFlare = new Symbol();
    7674        static {
    7775                LightFlare.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-3,-3,6,6)));
     
    8179                LightFlare.add(new Instr(Prim.PGON, p));
    8280        }
    83         public static final ArrayList<Instr> LightMajor = new ArrayList<Instr>();
     81        public static final Symbol LightMajor = new Symbol();
    8482        static {
    8583                LightMajor.add(new Instr(Prim.FILL, Color.black));
     
    9088                LightMajor.add(new Instr(Prim.PGON, p));
    9189        }
    92         public static final ArrayList<Instr> LightMinor = new ArrayList<Instr>();
     90        public static final Symbol LightMinor = new Symbol();
    9391        static {
    9492                LightMinor.add(new Instr(Prim.FILL, Color.black));
     
    9795                LightMinor.add(new Instr(Prim.PGON, p));
    9896        }
    99         public static final ArrayList<Instr> PerchPort = new ArrayList<Instr>();
     97        public static final Symbol PerchPort = new Symbol();
    10098        static {
    10199                PerchPort.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
     
    106104                PerchPort.add(new Instr(Prim.LINE, new Line2D.Double(-25,-70,0,-40)));
    107105        }
    108         public static final ArrayList<Instr> PerchStarboard = new ArrayList<Instr>();
     106        public static final Symbol PerchStarboard = new Symbol();
    109107        static {
    110108                PerchStarboard.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
     
    115113                PerchStarboard.add(new Instr(Prim.LINE, new Line2D.Double(-25,-40,0,-68.7)));
    116114        }
    117         public static final ArrayList<Instr> RadarStation = new ArrayList<Instr>();
     115        public static final Symbol RadarStation = new Symbol();
    118116        static {
    119117                RadarStation.add(new Instr(Prim.STRK, new BasicStroke(2.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
     
    121119                RadarStation.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-125,-125,250,250)));
    122120        }
    123         public static final ArrayList<Instr> Stake = new ArrayList<Instr>();
     121        public static final Symbol Stake = new Symbol();
    124122        static {
    125123                Stake.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
    126124                Stake.add(new Instr(Prim.FILL, Color.black));
    127125                Stake.add(new Instr(Prim.LINE, new Line2D.Double(0,0,0,-70)));
    128                 ArrayList<Instr> colours = new ArrayList<Instr>();
     126                Symbol colours = new Symbol();
    129127                Path2D.Double p = new Path2D.Double(); p.moveTo(-2.0,0.0); p.lineTo(-2.0,-70.0); p.lineTo(2.0,-70.0); p.lineTo(2.0,0.0); p.closePath();
    130128                colours.add(new Instr(Prim.P1, p));
     
    141139                Stake.add(new Instr(Prim.LINE, new Line2D.Double(-10,0,10,0)));
    142140        }
    143         public static final ArrayList<Instr> Tower = new ArrayList<Instr>();
     141        public static final Symbol Tower = new Symbol();
    144142        static {
    145                 ArrayList<Instr> colours = new ArrayList<Instr>();
     143                Symbol colours = new Symbol();
    146144                Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0,0.0); p.lineTo(-20.0,-70.0); p.lineTo(20.0,-70.0); p.lineTo(25.0,0.0); p.lineTo(10.0,0.0); p.curveTo(10.0,-13.3,-10.0,-13.3,-10.0,0.0); p.closePath();
    147145                colours.add(new Instr(Prim.P1, p));
     
    165163                Tower.add(new Instr(Prim.PLIN, p));
    166164        }
    167         public static final ArrayList<Instr> WithyPort = new ArrayList<Instr>();
     165        public static final Symbol WithyPort = new Symbol();
    168166        static {
    169167                WithyPort.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
     
    176174                WithyPort.add(new Instr(Prim.LINE, new Line2D.Double(-30,-35,0,-21)));
    177175        }
    178         public static final ArrayList<Instr> WithyStarboard = new ArrayList<Instr>();
     176        public static final Symbol WithyStarboard = new Symbol();
    179177        static {
    180178                WithyStarboard.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
     
    188186        }
    189187       
    190         public static final EnumMap<BcnSHP, ArrayList<Instr>> Shapes = new EnumMap<BcnSHP, ArrayList<Instr>>(BcnSHP.class);
     188        public static final EnumMap<BcnSHP, Symbol> Shapes = new EnumMap<BcnSHP, Symbol>(BcnSHP.class);
    191189        static {
    192190                Shapes.put(BcnSHP.BCN_UNKN, Beacons.Beacon); Shapes.put(BcnSHP.BCN_STAK, Beacons.Stake); Shapes.put(BcnSHP.BCN_TOWR, Beacons.Tower);
  • applications/editors/josm/plugins/smed2/src/symbols/Buoys.java

    r29175 r29186  
    1313import java.awt.Color;
    1414import java.awt.geom.*;
    15 import java.util.ArrayList;
    1615import java.util.EnumMap;
    1716
     
    2120public class Buoys {
    2221
    23         public static final ArrayList<Instr> Barrel = new ArrayList<Instr>();
    24         static {
    25                 ArrayList<Instr> colours = new ArrayList<Instr>();
     22        public static final Symbol Barrel = new Symbol();
     23        static {
     24                Symbol colours = new Symbol();
    2625                Path2D.Double p = new Path2D.Double(); p.moveTo(-50.0,0); p.curveTo(-50.0,-11.0,-45.0,-32.0,-32.0,-36.0);
    2726                p.curveTo(-18.0,-40.0,12.0,-40.0,25.0,-36.0); p.curveTo(38.0,-32.0,43.0,-11.0,43.0,0);
     
    3837    Barrel.add(new Instr(Prim.PLIN, p));
    3938        }
    40         public static final ArrayList<Instr> Can = new ArrayList<Instr>();
    41         static {
    42                 ArrayList<Instr> colours = new ArrayList<Instr>();
     39        public static final Symbol Can = new Symbol();
     40        static {
     41                Symbol colours = new Symbol();
    4342                Path2D.Double p = new Path2D.Double(); p.moveTo(-31.6, 0); p.lineTo(-15.7,-47.4); p.lineTo(41.1,-28.4); p.lineTo(31.6,0);
    4443                p.lineTo(8.0, 0.0); p.curveTo(8.0,-11.0,-8.0,-11.0,-8.0,0.0); p.closePath();
     
    6463    Can.add(new Instr(Prim.PLIN, p));
    6564        }
    66         public static final ArrayList<Instr> Cone = new ArrayList<Instr>();
    67         static {
    68                 ArrayList<Instr> colours = new ArrayList<Instr>();
     65        public static final Symbol Cone = new Symbol();
     66        static {
     67                Symbol colours = new Symbol();
    6968                Path2D.Double p = new Path2D.Double(); p.moveTo(-31.6,0); p.curveTo(-24.9,-32.2, 1.4,-38.7,12.7,-37.9); p.curveTo(21.9,-30.5,32.8,-18.4,32.1,0.0);
    7069                p.lineTo(8.0,0.0); p.curveTo(8.0,-11.0,-8.0,-11.0,-8.0,0.0); p.closePath();
     
    9089    Cone.add(new Instr(Prim.PLIN, p));
    9190        }
    92         public static final ArrayList<Instr> Float = new ArrayList<Instr>();
    93         static {
    94                 ArrayList<Instr> colours = new ArrayList<Instr>();
     91        public static final Symbol Float = new Symbol();
     92        static {
     93                Symbol colours = new Symbol();
    9594                Path2D.Double p = new Path2D.Double(); p.moveTo(-36.0,0); p.lineTo(-47.0,-33.0); p.quadTo(-30.0, -25.0, -19.0,-23.0);
    9695                p.lineTo(-12.0,-42.0); p.lineTo(12.0,-42.0); p.lineTo(19.0,-23.0); p.quadTo(30.0,-25.0,47.0,-33.0); p.lineTo(36.0,0);
     
    121120    Float.add(new Instr(Prim.PLIN, p));
    122121        }
    123         public static final ArrayList<Instr> Ice = new ArrayList<Instr>();
    124         static {
    125                 ArrayList<Instr> colours = new ArrayList<Instr>();
     122        public static final Symbol Ice = new Symbol();
     123        static {
     124                Symbol colours = new Symbol();
    126125                Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,0); p.quadTo(-30.0,0.0,-30.0,-15.0); p.lineTo(-30.0,-25.0); p.lineTo(30.0,-25.0); p.lineTo(30.0,-15); p.quadTo(30.0,0.0,15.0,0.0);
    127126                p.lineTo(8.0, 0.0); p.curveTo(8.0,-11.0,-8.0,-11.0,-8.0,0.0); p.closePath();
     
    138137                Ice.add(new Instr(Prim.PLIN, p));
    139138        }
    140         public static final ArrayList<Instr> Pillar = new ArrayList<Instr>();
    141         static {
    142                 ArrayList<Instr> colours = new ArrayList<Instr>();
     139        public static final Symbol Pillar = new Symbol();
     140        static {
     141                Symbol colours = new Symbol();
    143142                Path2D.Double p = new Path2D.Double(); p.moveTo(-32.0,0.0); p.lineTo(-2.8,-32.5); p.lineTo(25.6,-96.7); p.lineTo(37.0,-92.9); p.lineTo(21.8,-24.3);
    144143                p.lineTo(25.0,0.0); p.lineTo(8.0, 0.0); p.curveTo(8.0,-11.0,-8.0,-11.0,-8.0,0.0); p.closePath();
     
    165164                Pillar.add(new Instr(Prim.PLIN, p));
    166165        }
    167         public static final ArrayList<Instr> Spar = new ArrayList<Instr>();
    168         static {
    169                 ArrayList<Instr> colours = new ArrayList<Instr>();
     166        public static final Symbol Spar = new Symbol();
     167        static {
     168                Symbol colours = new Symbol();
    170169                Path2D.Double p = new Path2D.Double(); p.moveTo(-3.2,-9.5); p.lineTo(25.6,-96.7); p.lineTo(37.0,-92.9); p.lineTo(8.2,-5.7); p.closePath();
    171170                colours.add(new Instr(Prim.P1, p));
     
    189188                Spar.add(new Instr(Prim.PLIN, p));
    190189        }
    191         public static final ArrayList<Instr> Sphere = new ArrayList<Instr>();
    192         static {
    193                 ArrayList<Instr> colours = new ArrayList<Instr>();
     190        public static final Symbol Sphere = new Symbol();
     191        static {
     192                Symbol colours = new Symbol();
    194193                Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0,0); p.curveTo(-32.0,-21.0,-14.0,-45.5,12.7,-37.9); p.curveTo(27.5,-33.8,37.8,-15.5,32.0,0.0);
    195194                p.lineTo(8.0,0.0); p.curveTo(8.0,-11.0,-8.0,-11.0,-8.0,0.0); p.closePath();
     
    214213    Sphere.add(new Instr(Prim.EARC, new Arc2D.Double(-26.5,-39.4,60.0,60.0,-18.0,216.0,Arc2D.OPEN)));
    215214        }
    216         public static final ArrayList<Instr> Storage = new ArrayList<Instr>();
     215        public static final Symbol Storage = new Symbol();
    217216        static {
    218217                Storage.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    223222    Storage.add(new Instr(Prim.PLIN, p));
    224223        }
    225         public static final ArrayList<Instr> Super = new ArrayList<Instr>();
    226         static {
    227                 ArrayList<Instr> colours = new ArrayList<Instr>();
     224        public static final Symbol Super = new Symbol();
     225        static {
     226                Symbol colours = new Symbol();
    228227                Path2D.Double p = new Path2D.Double(); p.moveTo(-48.0,0); p.lineTo(-28.0,-42.0); p.lineTo(28.0,-42.0); p.lineTo(48.0,0);
    229228                p.lineTo(8.0, 0.0); p.curveTo(8.0,-11.0,-8.0,-11.0,-8.0,0.0); p.closePath();
     
    250249        }
    251250       
    252         public static final EnumMap<BoySHP, ArrayList<Instr>> Shapes = new EnumMap<BoySHP, ArrayList<Instr>>(BoySHP.class);
     251        public static final EnumMap<BoySHP, Symbol> Shapes = new EnumMap<BoySHP, Symbol>(BoySHP.class);
    253252        static {
    254253                Shapes.put(BoySHP.BOY_UNKN, Buoys.Pillar); Shapes.put(BoySHP.BOY_CONE, Buoys.Cone); Shapes.put(BoySHP.BOY_CAN, Buoys.Can);
  • applications/editors/josm/plugins/smed2/src/symbols/Facilities.java

    r29134 r29186  
    1313import java.awt.Color;
    1414import java.awt.geom.*;
    15 import java.util.ArrayList;
    1615
    17 import symbols.Symbols.Instr;
    18 import symbols.Symbols.Prim;
     16import symbols.Symbols.*;
    1917
    2018public class Facilities {
    21         private static final ArrayList<Instr> Facility = new ArrayList<Instr>();
     19        private static final Symbol Facility = new Symbol();
    2220        static {
    2321                Facility.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    2826                Facility.add(new Instr(Prim.RRCT, s));
    2927        }
    30         public static final ArrayList<Instr> Boatlift = new ArrayList<Instr>();//was Crane
     28        public static final Symbol Boatlift = new Symbol();//was Crane
    3129        static {
    32                 Boatlift.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     30                Boatlift.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    3331                Boatlift.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
    3432                Boatlift.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-3.7,-19.7,12,12)));
     
    3634                Boatlift.add(new Instr(Prim.EARC, new Arc2D.Double(-10.0,-1.5,20,20,75.0,-260.0,Arc2D.OPEN)));
    3735        }
    38         public static final ArrayList<Instr> Boatyard = new ArrayList<Instr>();
     36        public static final Symbol Boatyard = new Symbol();
    3937        static {
    40                 Boatyard.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     38                Boatyard.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    4139                Boatyard.add(new Instr(Prim.STRK, new BasicStroke(8.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
    4240                Boatyard.add(new Instr(Prim.LINE, new Line2D.Double(19,19,-8,-8)));
     
    4543                Boatyard.add(new Instr(Prim.PGON, p));
    4644        }
    47         public static final ArrayList<Instr> Chandler = new ArrayList<Instr>();
     45        public static final Symbol Chandler = new Symbol();
    4846        static {
    49                 Chandler.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     47                Chandler.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    5048                Chandler.add(new Instr(Prim.STRK, new BasicStroke(5.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
    5149                Chandler.add(new Instr(Prim.ELPS, new Ellipse2D.Double(14,7,10,10)));
     
    5553                Chandler.add(new Instr(Prim.EARC, new Arc2D.Double(-16.0,-20.5,24,24,0.0,180.0,Arc2D.OPEN)));
    5654        }
    57         public static final ArrayList<Instr> Fuel = new ArrayList<Instr>();
     55        public static final Symbol Fuel = new Symbol();
    5856        static {
    59                 Fuel.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     57                Fuel.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    6058                Fuel.add(new Instr(Prim.STRK, new BasicStroke(2.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
    6159                Fuel.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    6967                Fuel.add(new Instr(Prim.PLIN, p));
    7068        }
    71         public static final ArrayList<Instr> Laundrette = new ArrayList<Instr>();
     69        public static final Symbol Laundrette = new Symbol();
    7270        static {
    73                 Laundrette.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     71                Laundrette.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    7472                Laundrette.add(new Instr(Prim.STRK, new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
    7573                Laundrette.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    8078                Laundrette.add(new Instr(Prim.PLIN, p));
    8179        }
    82         public static final ArrayList<Instr> PumpOut = new ArrayList<Instr>();
     80        public static final Symbol PumpOut = new Symbol();
    8381        static {
    84                 PumpOut.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     82                PumpOut.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    8583                PumpOut.add(new Instr(Prim.STRK, new BasicStroke(2.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
    8684                PumpOut.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    9694                PumpOut.add(new Instr(Prim.PGON, p));
    9795        }
    98         public static final ArrayList<Instr> SailingClub = new ArrayList<Instr>();
     96        public static final Symbol SailingClub = new Symbol();
    9997        static {
    100                 SailingClub.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     98                SailingClub.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    10199                SailingClub.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
    102100                SailingClub.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    105103                SailingClub.add(new Instr(Prim.PGON, p));
    106104        }
    107         public static final ArrayList<Instr> Shower = new ArrayList<Instr>();
     105        public static final Symbol Shower = new Symbol();
    108106        static {
    109                 Shower.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     107                Shower.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    110108                Shower.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
    111109                Shower.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    119117                Shower.add(new Instr(Prim.PLIN, p));
    120118        }
    121         public static final ArrayList<Instr> Slipway = new ArrayList<Instr>();
     119        public static final Symbol Slipway = new Symbol();
    122120        static {
    123                 Slipway.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     121                Slipway.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    124122                Slipway.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
    125123                Slipway.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    136134                Slipway.add(new Instr(Prim.PGON, p));
    137135        }
    138         public static final ArrayList<Instr> Toilet = new ArrayList<Instr>();
     136        public static final Symbol Toilet = new Symbol();
    139137        static {
    140                 Toilet.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
     138                Toilet.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Facilities.Facility, 1.0, 0, 0, null, null)));
    141139                Toilet.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
    142140                Toilet.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    153151                Toilet.add(new Instr(Prim.PGON, p));
    154152        }
    155         public static final ArrayList<Instr> VisitorBerth = new ArrayList<Instr>();
     153        public static final Symbol VisitorBerth = new Symbol();
    156154        static {
    157155                VisitorBerth.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    162160                VisitorBerth.add(new Instr(Prim.PGON, p));
    163161        }
    164         public static final ArrayList<Instr> VisitorMooring = new ArrayList<Instr>();
     162        public static final Symbol VisitorMooring = new Symbol();
    165163        static {
    166164                VisitorMooring.add(new Instr(Prim.FILL, new Color(0xa30075)));
  • applications/editors/josm/plugins/smed2/src/symbols/Harbours.java

    r29132 r29186  
    1414import java.awt.Rectangle;
    1515import java.awt.geom.*;
    16 import java.util.ArrayList;
    1716
    18 import symbols.Symbols.Instr;
    19 import symbols.Symbols.Prim;
     17import symbols.Symbols.*;
    2018
    2119public class Harbours {
    22         public static final ArrayList<Instr> Anchor = new ArrayList<Instr>();
     20        public static final Symbol Anchor = new Symbol();
    2321        static {
    2422                Anchor.add(new Instr(Prim.BBOX, new Rectangle(-60,-60,120,120)));
     
    3129                Anchor.add(new Instr(Prim.PGON, p));
    3230        }
    33         public static final ArrayList<Instr> Yacht = new ArrayList<Instr>();
     31        public static final Symbol Yacht = new Symbol();
    3432        static {
    3533                Yacht.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    3937                Yacht.add(new Instr(Prim.PGON, p));
    4038        }
    41         public static final ArrayList<Instr> Anchorage = new ArrayList<Instr>();
     39        public static final Symbol Anchorage = new Symbol();
    4240        static {
    4341                Anchorage.add(new Instr(Prim.FILL, new Color(0xa30075)));
    44                 Anchorage.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
     42                Anchorage.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
    4543        }
    46         public static final ArrayList<Instr> AnchorBerth = new ArrayList<Instr>();
     44        public static final Symbol AnchorBerth = new Symbol();
    4745        static {
    48                 AnchorBerth.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchorage, 1.0, 0, 0, null, null)));
     46                AnchorBerth.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchorage, 1.0, 0, 0, null, null)));
    4947                AnchorBerth.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    5048                AnchorBerth.add(new Instr(Prim.FILL, Color.white));
     
    5452                AnchorBerth.add(new Instr(Prim.ELPS, s));
    5553        }
    56         public static final ArrayList<Instr> Bollard = new ArrayList<Instr>();
     54        public static final Symbol Bollard = new Symbol();
    5755        static {
    5856                Bollard.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    6361                Bollard.add(new Instr(Prim.ELPS, s));
    6462        }
    65         public static final ArrayList<Instr> ClearV = new ArrayList<Instr>();
     63        public static final Symbol ClearV = new Symbol();
    6664        static {
    6765                ClearV.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    7472                ClearV.add(new Instr(Prim.LINE, new Line2D.Double(0,25,0,15)));
    7573        }
    76         public static final ArrayList<Instr> ContainerCrane = new ArrayList<Instr>();
     74        public static final Symbol ContainerCrane = new Symbol();
    7775        static {
    7876                ContainerCrane.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    8179                ContainerCrane.add(new Instr(Prim.RECT, new Rectangle2D.Double(-40,-12.5,80,25)));
    8280        }
    83         public static final ArrayList<Instr> DeviationDolphin = new ArrayList<Instr>();
     81        public static final Symbol DeviationDolphin = new Symbol();
    8482        static {
    8583                DeviationDolphin.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    8987                DeviationDolphin.add(new Instr(Prim.PLIN, p));
    9088        }
    91         public static final ArrayList<Instr> DistanceI = new ArrayList<Instr>();
     89        public static final Symbol DistanceI = new Symbol();
    9290        static {
    9391                DistanceI.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    9593                DistanceI.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-11,-11,22,22)));
    9694        }
    97         public static final ArrayList<Instr> DistanceU = new ArrayList<Instr>();
     95        public static final Symbol DistanceU = new Symbol();
    9896        static {
    9997                DistanceU.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    10199                DistanceU.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-11,-11,22,22)));
    102100        }
    103         public static final ArrayList<Instr> Dolphin = new ArrayList<Instr>();
     101        public static final Symbol Dolphin = new Symbol();
    104102        static {
    105103                Dolphin.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    111109                Dolphin.add(new Instr(Prim.PLIN, p));
    112110        }
    113         public static final ArrayList<Instr> Harbour = new ArrayList<Instr>();
     111        public static final Symbol Harbour = new Symbol();
    114112        static {
    115113                Harbour.add(new Instr(Prim.STRK, new BasicStroke(15.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    116114                Harbour.add(new Instr(Prim.FILL, new Color(0xa30075)));
    117115                Harbour.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-75,-75,150,150)));
    118                 Harbour.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
     116                Harbour.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
    119117        }
    120         public static final ArrayList<Instr> HarbourMaster = new ArrayList<Instr>();
     118        public static final Symbol HarbourMaster = new Symbol();
    121119        static {
    122120                HarbourMaster.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    123121                HarbourMaster.add(new Instr(Prim.FILL, Color.black));
    124122                HarbourMaster.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-35,-50,70,100)));
    125                 HarbourMaster.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 0.6, 0, 0, null, null)));
     123                HarbourMaster.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.6, 0, 0, null, null)));
    126124        }
    127         public static final ArrayList<Instr> LandingSteps = new ArrayList<Instr>();
     125        public static final Symbol LandingSteps = new Symbol();
    128126        static {
    129127                LandingSteps.add(new Instr(Prim.FILL, new Color(0xa30075)));
     
    132130                LandingSteps.add(new Instr(Prim.PGON, p));
    133131        }
    134         public static final ArrayList<Instr> Lock_Gate = new ArrayList<Instr>();
    135         public static final ArrayList<Instr> Lock = new ArrayList<Instr>();
    136         public static final ArrayList<Instr> Marina = new ArrayList<Instr>();
     132        public static final Symbol Lock_Gate = new Symbol();
     133        public static final Symbol Lock = new Symbol();
     134        public static final Symbol Marina = new Symbol();
    137135        static {
    138136                Marina.add(new Instr(Prim.STRK, new BasicStroke(15.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    139137                Marina.add(new Instr(Prim.FILL, new Color(0xa30075)));
    140                 Marina.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
     138                Marina.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
    141139                Marina.add(new Instr(Prim.EARC, new Arc2D.Double(-80.0,-80.0,160.0,160.0,215.0,-250.0,Arc2D.OPEN)));
    142140        }
    143         public static final ArrayList<Instr> MarinaNF = new ArrayList<Instr>();
     141        public static final Symbol MarinaNF = new Symbol();
    144142        static {
    145143                MarinaNF.add(new Instr(Prim.STRK, new BasicStroke(15.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    146144                MarinaNF.add(new Instr(Prim.FILL, new Color(0xa30075)));
    147                 MarinaNF.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
     145                MarinaNF.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
    148146        }
    149         public static final ArrayList<Instr> PortCrane = new ArrayList<Instr>();
     147        public static final Symbol PortCrane = new Symbol();
    150148        static {
    151149                PortCrane.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    154152                PortCrane.add(new Instr(Prim.LINE, new Line2D.Double(0,0,0,-60)));
    155153        }
    156         public static final ArrayList<Instr> Post = new ArrayList<Instr>();
     154        public static final Symbol Post = new Symbol();
    157155        static {
    158156                Post.add(new Instr(Prim.FILL, Color.black));
    159157                Post.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-10,-10,20,20)));
    160158        }
    161         public static final ArrayList<Instr> SignalStation = new ArrayList<Instr>();
     159        public static final Symbol SignalStation = new Symbol();
    162160        static {
    163161                SignalStation.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    166164                SignalStation.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
    167165        }
    168         public static final ArrayList<Instr> TideGauge = new ArrayList<Instr>();
     166        public static final Symbol TideGauge = new Symbol();
    169167        static {
    170168                TideGauge.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
  • applications/editors/josm/plugins/smed2/src/symbols/Landmarks.java

    r29185 r29186  
    1717import java.awt.geom.Path2D;
    1818import java.awt.geom.Rectangle2D;
    19 import java.util.ArrayList;
    2019import java.util.EnumMap;
    2120
     
    2524
    2625public class Landmarks {
    27         private static final ArrayList<Instr> Base = new ArrayList<Instr>();
     26        private static final Symbol Base = new Symbol();
    2827        static {
    2928                Base.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    3433        }
    3534       
    36         public static final ArrayList<Instr> Chimney = new ArrayList<Instr>();
    37         static {
    38                 Chimney.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     35        public static final Symbol Chimney = new Symbol();
     36        static {
     37                Chimney.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    3938                Chimney.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    4039                Chimney.add(new Instr(Prim.FILL, Color.black));
     
    4544                Chimney.add(new Instr(Prim.PLIN, p));
    4645        }
    47         public static final ArrayList<Instr> Church = new ArrayList<Instr>();
     46        public static final Symbol Church = new Symbol();
    4847        static {
    4948                Church.add(new Instr(Prim.FILL, Color.black));
     
    5554                Church.add(new Instr(Prim.PGON, p));
    5655        }
    57         public static final ArrayList<Instr> ChurchTower = new ArrayList<Instr>();
     56        public static final Symbol ChurchTower = new Symbol();
    5857        static {
    5958                ChurchTower.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    6261                ChurchTower.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-2,-2,4,4)));
    6362        }
    64         public static final ArrayList<Instr> Cross = new ArrayList<Instr>();
    65         static {
    66                 Cross.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     63        public static final Symbol Cross = new Symbol();
     64        static {
     65                Cross.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    6766                Cross.add(new Instr(Prim.STRK, new BasicStroke(6.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    6867                Cross.add(new Instr(Prim.FILL, Color.black));
     
    7069                Cross.add(new Instr(Prim.LINE, new Line2D.Double(-30,-115,30,-115)));
    7170        }
    72         public static final ArrayList<Instr> DishAerial = new ArrayList<Instr>();
    73         static {
    74                 DishAerial.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     71        public static final Symbol DishAerial = new Symbol();
     72        static {
     73                DishAerial.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    7574                DishAerial.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)));
    7675                DishAerial.add(new Instr(Prim.FILL, Color.black));
     
    7978                DishAerial.add(new Instr(Prim.PLIN, p));
    8079        }
    81         public static final ArrayList<Instr> Dome = new ArrayList<Instr>();
     80        public static final Symbol Dome = new Symbol();
    8281        static {
    8382                Dome.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    8685                Dome.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
    8786        }
    88         public static final ArrayList<Instr> Flagstaff = new ArrayList<Instr>();
    89         static {
    90                 Flagstaff.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     87        public static final Symbol Flagstaff = new Symbol();
     88        static {
     89                Flagstaff.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    9190                Flagstaff.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    9291                Flagstaff.add(new Instr(Prim.FILL, Color.black));
     
    9493                Flagstaff.add(new Instr(Prim.PLIN, p));
    9594        }
    96         public static final ArrayList<Instr> FlareStack = new ArrayList<Instr>();
    97         static {
    98                 FlareStack.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     95        public static final Symbol FlareStack = new Symbol();
     96        static {
     97                FlareStack.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    9998                FlareStack.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    10099                FlareStack.add(new Instr(Prim.FILL, Color.black));
     
    105104                FlareStack.add(new Instr(Prim.PLIN, p));
    106105        }
    107         public static final ArrayList<Instr> LandTower = new ArrayList<Instr>();
    108         static {
    109                 LandTower.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     106        public static final Symbol LandTower = new Symbol();
     107        static {
     108                LandTower.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    110109                LandTower.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    111110                LandTower.add(new Instr(Prim.FILL, Color.black));
     
    114113                LandTower.add(new Instr(Prim.RECT, new Rectangle2D.Double(-15,-150,30,30)));
    115114        }
    116         public static final ArrayList<Instr> Mast = new ArrayList<Instr>();
    117         static {
    118                 Mast.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     115        public static final Symbol Mast = new Symbol();
     116        static {
     117                Mast.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    119118                Mast.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)));
    120119                Mast.add(new Instr(Prim.FILL, Color.black));
     
    122121                Mast.add(new Instr(Prim.PLIN, p));
    123122        }
    124         public static final ArrayList<Instr> Monument = new ArrayList<Instr>();
    125         static {
    126                 Monument.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     123        public static final Symbol Monument = new Symbol();
     124        static {
     125                Monument.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    127126                Monument.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
    128127                Monument.add(new Instr(Prim.FILL, Color.black));
     
    131130                Monument.add(new Instr(Prim.EARC, new Arc2D.Double(-25.0,-150.0,50.0,50.0,233.0,-285.0,Arc2D.OPEN)));
    132131        }
    133         public static final ArrayList<Instr> Platform = new ArrayList<Instr>();
     132        public static final Symbol Platform = new Symbol();
    134133        static {
    135134                Platform.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    138137                Platform.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
    139138        }
    140         public static final ArrayList<Instr> RadioTV = new ArrayList<Instr>();
     139        public static final Symbol RadioTV = new Symbol();
    141140        static {
    142141                RadioTV.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL)));
     
    147146                RadioTV.add(new Instr(Prim.EARC, new Arc2D.Double(-45.0,-195.0,90.0,90.0,225.0,-90.0,Arc2D.OPEN)));
    148147        }
    149         public static final ArrayList<Instr> Spire = new ArrayList<Instr>();
     148        public static final Symbol Spire = new Symbol();
    150149        static {
    151150                Spire.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    154153                Spire.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
    155154        }
    156         public static final ArrayList<Instr> Minaret = new ArrayList<Instr>();
    157         static {
    158                 Minaret.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Spire, 1.0, 0, 0, null, null)));
     155        public static final Symbol Minaret = new Symbol();
     156        static {
     157                Minaret.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Spire, 1.0, 0, 0, null, null)));
    159158                Minaret.add(new Instr(Prim.STRK, new BasicStroke(6.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    160159                Minaret.add(new Instr(Prim.LINE, new Line2D.Double(0,-25,0,-50)));
     
    162161                Minaret.add(new Instr(Prim.EARC, new Arc2D.Double(-40.0,-110.0,80.0,60.0,180.0,180.0,Arc2D.OPEN)));
    163162        }
    164         public static final ArrayList<Instr> Temple = new ArrayList<Instr>();
     163        public static final Symbol Temple = new Symbol();
    165164        static {
    166165                Temple.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    170169                Temple.add(new Instr(Prim.LINE, new Line2D.Double(-35,21,35,-21)));
    171170        }
    172         public static final ArrayList<Instr> WaterTower = new ArrayList<Instr>();
    173         static {
    174                 WaterTower.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     171        public static final Symbol WaterTower = new Symbol();
     172        static {
     173                WaterTower.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    175174                WaterTower.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    176175                WaterTower.add(new Instr(Prim.FILL, Color.black));
     
    179178                WaterTower.add(new Instr(Prim.RECT, new Rectangle2D.Double(-25,-150,50,30)));
    180179        }
    181         public static final ArrayList<Instr> WindMotor = new ArrayList<Instr>();
    182         static {
    183                 WindMotor.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     180        public static final Symbol WindMotor = new Symbol();
     181        static {
     182                WindMotor.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    184183                WindMotor.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
    185184                WindMotor.add(new Instr(Prim.FILL, Color.black));
     
    189188                WindMotor.add(new Instr(Prim.LINE, new Line2D.Double(0,-90,-14.3,-66.7)));
    190189        }
    191         public static final ArrayList<Instr> Windmill = new ArrayList<Instr>();
     190        public static final Symbol Windmill = new Symbol();
    192191        static {
    193192                Windmill.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    197196                Windmill.add(new Instr(Prim.LINE, new Line2D.Double(-30,10,30,-42)));
    198197        }
    199         public static final ArrayList<Instr> Windsock = new ArrayList<Instr>();
    200         static {
    201                 Windsock.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
     198        public static final Symbol Windsock = new Symbol();
     199        static {
     200                Windsock.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Landmarks.Base, 1.0, 0, 0, null, null)));
    202201                Windsock.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
    203202                Windsock.add(new Instr(Prim.FILL, Color.black));
     
    212211        }
    213212       
    214         public static final EnumMap<CatLMK, ArrayList<Instr>> Shapes = new EnumMap<CatLMK, ArrayList<Instr>>(CatLMK.class);
     213        public static final EnumMap<CatLMK, Symbol> Shapes = new EnumMap<CatLMK, Symbol>(CatLMK.class);
    215214        static {
    216215                Shapes.put(CatLMK.LMK_CARN, Beacons.Cairn); Shapes.put(CatLMK.LMK_CHMY, Landmarks.Chimney);
     
    224223        }
    225224
    226         public static final EnumMap<FncFNC, ArrayList<Instr>> Funcs = new EnumMap<FncFNC, ArrayList<Instr>>(FncFNC.class);
     225        public static final EnumMap<FncFNC, Symbol> Funcs = new EnumMap<FncFNC, Symbol>(FncFNC.class);
    227226        static {
    228227                Funcs.put(FncFNC.FNC_CHCH, Landmarks.Church); Funcs.put(FncFNC.FNC_CHPL, Landmarks.Church); Funcs.put(FncFNC.FNC_TMPL, Landmarks.Temple);
  • applications/editors/josm/plugins/smed2/src/symbols/Notices.java

    r29134 r29186  
    1515import java.awt.Rectangle;
    1616import java.awt.geom.*;
    17 import java.util.ArrayList;
    18 
    19 import symbols.Symbols.Caption;
    20 import symbols.Symbols.Delta;
    21 import symbols.Symbols.Handle;
    22 import symbols.Symbols.Instr;
    23 import symbols.Symbols.Prim;
     17
     18import symbols.Symbols.*;
    2419
    2520public class Notices {
    26         private static final ArrayList<Instr> Bollard = new ArrayList<Instr>();
     21        private static final Symbol Bollard = new Symbol();
    2722        static {
    2823                Bollard.add(new Instr(Prim.FILL, Color.black));
     
    3328                Bollard.add(new Instr(Prim.PGON, p));
    3429        }
    35         private static final ArrayList<Instr> Crossing = new ArrayList<Instr>();
    36         private static final ArrayList<Instr> CrossingL = new ArrayList<Instr>();
    37         private static final ArrayList<Instr> CrossingR = new ArrayList<Instr>();
    38         private static final ArrayList<Instr> Junction = new ArrayList<Instr>();
    39         private static final ArrayList<Instr> JunctionL = new ArrayList<Instr>();
    40         private static final ArrayList<Instr> JunctionR = new ArrayList<Instr>();
    41         private static final ArrayList<Instr> Motor = new ArrayList<Instr>();
     30        private static final Symbol Crossing = new Symbol();
     31        private static final Symbol CrossingL = new Symbol();
     32        private static final Symbol CrossingR = new Symbol();
     33        private static final Symbol Junction = new Symbol();
     34        private static final Symbol JunctionL = new Symbol();
     35        private static final Symbol JunctionR = new Symbol();
     36        private static final Symbol Motor = new Symbol();
    4237        static {
    4338                Motor.add(new Instr(Prim.FILL, Color.black));
     
    4843                Motor.add(new Instr(Prim.PGON, p));
    4944        }
    50         private static final ArrayList<Instr> Proceed = new ArrayList<Instr>();
    51         private static final ArrayList<Instr> Rowboat = new ArrayList<Instr>();
    52         private static final ArrayList<Instr> Sailboard = new ArrayList<Instr>();
    53         private static final ArrayList<Instr> Sailboat = new ArrayList<Instr>();
    54         private static final ArrayList<Instr> Slipway = new ArrayList<Instr>();
    55         private static final ArrayList<Instr> Speedboat = new ArrayList<Instr>();
    56         private static final ArrayList<Instr> Sport = new ArrayList<Instr>();
     45        private static final Symbol Proceed = new Symbol();
     46        private static final Symbol Rowboat = new Symbol();
     47        private static final Symbol Sailboard = new Symbol();
     48        private static final Symbol Sailboat = new Symbol();
     49        private static final Symbol Slipway = new Symbol();
     50        private static final Symbol Speedboat = new Symbol();
     51        private static final Symbol Sport = new Symbol();
    5752        static {
    5853                Sport.add(new Instr(Prim.FONT, new Font("Arial", Font.BOLD, 15)));
    5954                Sport.add(new Instr(Prim.TEXT, new Caption("SPORT", (float)-25.0, (float)5.0)));
    6055        }
    61         private static final ArrayList<Instr> Turn = new ArrayList<Instr>();
     56        private static final Symbol Turn = new Symbol();
    6257        static {
    6358                Turn.add(new Instr(Prim.STRK, new BasicStroke(5.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     
    6964                Turn.add(new Instr(Prim.PGON, p));
    7065        }
    71         private static final ArrayList<Instr> VHF = new ArrayList<Instr>();
     66        private static final Symbol VHF = new Symbol();
    7267        static {
    7368                VHF.add(new Instr(Prim.FONT, new Font("Arial", Font.BOLD, 20)));
    7469                VHF.add(new Instr(Prim.TEXT, new Caption("VHF", (float)-20.0, (float)-5.0)));
    7570        }
    76         private static final ArrayList<Instr> Waterbike = new ArrayList<Instr>();
    77         private static final ArrayList<Instr> Waterski = new ArrayList<Instr>();
    78         private static final ArrayList<Instr> NoticeA = new ArrayList<Instr>();
     71        private static final Symbol Waterbike = new Symbol();
     72        private static final Symbol Waterski = new Symbol();
     73        private static final Symbol NoticeA = new Symbol();
    7974        static {
    8075                NoticeA.add(new Instr(Prim.FILL, new Color(0xe80000)));
     
    8984                NoticeA.add(new Instr(Prim.RRCT, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
    9085        }
    91         private static final ArrayList<Instr> NoticeB = new ArrayList<Instr>();
     86        private static final Symbol NoticeB = new Symbol();
    9287        static {
    9388                NoticeB.add(new Instr(Prim.FILL, new Color(0xe80000)));
     
    9994                NoticeB.add(new Instr(Prim.RRCT, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
    10095        }
    101         private static final ArrayList<Instr> NoticeE = new ArrayList<Instr>();
     96        private static final Symbol NoticeE = new Symbol();
    10297        static {
    10398                NoticeE.add(new Instr(Prim.FILL, new Color(0x0000a0)));
     
    108103        }
    109104
    110         public static final ArrayList<Instr> Notice = new ArrayList<Instr>();
    111         public static final ArrayList<Instr> NoticeA1 = new ArrayList<Instr>();
     105        public static final Symbol Notice = new Symbol();
     106        public static final Symbol NoticeA1 = new Symbol();
    112107        static {
    113108                NoticeA1.add(new Instr(Prim.FILL, new Color(0xe80000)));
     
    119114                NoticeA1.add(new Instr(Prim.RRCT, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
    120115        }
    121         public static final ArrayList<Instr> NoticeA1a = new ArrayList<Instr>();
     116        public static final Symbol NoticeA1a = new Symbol();
    122117        static {
    123118                NoticeA1a.add(new Instr(Prim.FILL, new Color(0xe80000)));
     
    129124                NoticeA1a.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-30,-30,60,60)));
    130125        }
    131         public static final ArrayList<Instr> NoticeA2 = new ArrayList<Instr>();
    132         static {
    133                 NoticeA2.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     126        public static final Symbol NoticeA2 = new Symbol();
     127        static {
     128                NoticeA2.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    134129                NoticeA2.add(new Instr(Prim.FILL, Color.black));
    135130                Path2D.Double p = new Path2D.Double(); p.moveTo(-10,23); p.lineTo(-10,0); p.lineTo(-6,0); p.lineTo(-12.5,-8); p.lineTo(-19,0); p.lineTo(-15,0); p.lineTo(-15,23);
     
    137132                NoticeA2.add(new Instr(Prim.PGON, p));
    138133        }
    139         public static final ArrayList<Instr> NoticeA3 = new ArrayList<Instr>();
    140         static {
    141                 NoticeA3.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA2, 1.0, 0, 0, null, null)));
     134        public static final Symbol NoticeA3 = new Symbol();
     135        static {
     136                NoticeA3.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA2, 1.0, 0, 0, null, null)));
    142137                Path2D.Double p = new Path2D.Double(); p.moveTo(-10,12); p.lineTo(-6,12); p.lineTo(-12.5,4); p.lineTo(-19,12);
    143138                p.closePath(); p.moveTo(10,-3); p.lineTo(6,-3); p.lineTo(12.5,-11); p.lineTo(19,-3); p.closePath();
    144139                NoticeA3.add(new Instr(Prim.PGON, p));
    145140        }
    146         public static final ArrayList<Instr> NoticeA4 = new ArrayList<Instr>();
    147         static {
    148                 NoticeA4.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     141        public static final Symbol NoticeA4 = new Symbol();
     142        static {
     143                NoticeA4.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    149144                NoticeA4.add(new Instr(Prim.FILL, Color.black));
    150145                Path2D.Double p = new Path2D.Double(); p.moveTo(-10,-15); p.lineTo(-10,8); p.lineTo(-6,8); p.lineTo(-12.5,16); p.lineTo(-19,8); p.lineTo(-15,8); p.lineTo(-15,-15);
     
    152147                NoticeA4.add(new Instr(Prim.PGON, p));
    153148        }
    154         public static final ArrayList<Instr> NoticeA4_1 = new ArrayList<Instr>();
    155         static {
    156                 NoticeA4_1.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA4, 1.0, 0, 0, null, null)));
     149        public static final Symbol NoticeA4_1 = new Symbol();
     150        static {
     151                NoticeA4_1.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA4, 1.0, 0, 0, null, null)));
    157152                Path2D.Double p = new Path2D.Double(); p.moveTo(-10,-4); p.lineTo(-6,-4); p.lineTo(-12.5,4); p.lineTo(-19,-4);
    158153                p.closePath(); p.moveTo(10,5); p.lineTo(6,5); p.lineTo(12.5,-3); p.lineTo(19,5); p.closePath();
    159154                NoticeA4_1.add(new Instr(Prim.PGON, p));
    160155        }
    161         public static final ArrayList<Instr> NoticeA5 = new ArrayList<Instr>();
    162         static {
    163                 NoticeA5.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     156        public static final Symbol NoticeA5 = new Symbol();
     157        static {
     158                NoticeA5.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    164159                NoticeA5.add(new Instr(Prim.FILL, Color.black));
    165160                Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD); p.moveTo(-5.3,14.6); p.lineTo(-5.3,4.0); p.lineTo(0.0,4.0); p.curveTo(4.2,4.0,7.4,3.5,9.4,0.0);
     
    168163                NoticeA5.add(new Instr(Prim.PGON, p));
    169164        }
    170         public static final ArrayList<Instr> NoticeA5_1 = new ArrayList<Instr>();
    171         static {
    172                 NoticeA5_1.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    173         }
    174         public static final ArrayList<Instr> NoticeA6 = new ArrayList<Instr>();
    175         static {
    176                 NoticeA6.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    177                 NoticeA6.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 0.4, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(180.0))), null)));
    178         }
    179         public static final ArrayList<Instr> NoticeA7 = new ArrayList<Instr>();
    180         static {
    181                 NoticeA7.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    182                 NoticeA7.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Bollard, 1.0, 0, 0, null, null)));
    183         }
    184         public static final ArrayList<Instr> NoticeA8 = new ArrayList<Instr>();
    185         static {
    186                 NoticeA8.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    187                 NoticeA8.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Turn, 1.0, 0, 0, null, null)));
    188         }
    189         public static final ArrayList<Instr> NoticeA9 = new ArrayList<Instr>();
    190         static {
    191                 NoticeA9.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     165        public static final Symbol NoticeA5_1 = new Symbol();
     166        static {
     167                NoticeA5_1.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     168        }
     169        public static final Symbol NoticeA6 = new Symbol();
     170        static {
     171                NoticeA6.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     172                NoticeA6.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.4, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(180.0))), null)));
     173        }
     174        public static final Symbol NoticeA7 = new Symbol();
     175        static {
     176                NoticeA7.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     177                NoticeA7.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Bollard, 1.0, 0, 0, null, null)));
     178        }
     179        public static final Symbol NoticeA8 = new Symbol();
     180        static {
     181                NoticeA8.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     182                NoticeA8.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Turn, 1.0, 0, 0, null, null)));
     183        }
     184        public static final Symbol NoticeA9 = new Symbol();
     185        static {
     186                NoticeA9.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    192187                NoticeA9.add(new Instr(Prim.STRK, new BasicStroke(7.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
    193188                NoticeA9.add(new Instr(Prim.FILL, Color.black));
     
    196191                NoticeA9.add(new Instr(Prim.PLIN, p));
    197192        }
    198         public static final ArrayList<Instr> NoticeA10a = new ArrayList<Instr>();
     193        public static final Symbol NoticeA10a = new Symbol();
    199194        static {
    200195                NoticeA10a.add(new Instr(Prim.BBOX, new Rectangle(-30,-30,60,60)));
     
    210205                NoticeA10a.add(new Instr(Prim.PLIN, p));
    211206        }
    212         public static final ArrayList<Instr> NoticeA10b = new ArrayList<Instr>();
    213         static {
    214                 NoticeA10b.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA10a, 1.0, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(180.0))), null)));
    215         }
    216         public static final ArrayList<Instr> NoticeA12= new ArrayList<Instr>();
    217         static {
    218                 NoticeA12.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    219                 NoticeA12.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Motor, 1.0, 0, 0, null, null)));
    220         }
    221         public static final ArrayList<Instr> NoticeA13= new ArrayList<Instr>();
    222         static {
    223                 NoticeA13.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    224                 NoticeA13.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Sport, 1.0, 0, 0, null, null)));
    225         }
    226         public static final ArrayList<Instr> NoticeA14= new ArrayList<Instr>();
    227         static {
    228                 NoticeA14.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    229                 NoticeA14.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Waterski, 1.0, 0, 0, null, null)));
    230         }
    231         public static final ArrayList<Instr> NoticeA15= new ArrayList<Instr>();
    232         static {
    233                 NoticeA15.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    234                 NoticeA15.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Sailboat, 1.0, 0, 0, null, null)));
    235         }
    236         public static final ArrayList<Instr> NoticeA16= new ArrayList<Instr>();
    237         static {
    238                 NoticeA16.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    239                 NoticeA16.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Rowboat, 1.0, 0, 0, null, null)));
    240         }
    241         public static final ArrayList<Instr> NoticeA17= new ArrayList<Instr>();
    242         static {
    243                 NoticeA17.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    244                 NoticeA17.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Sailboard, 1.0, 0, 0, null, null)));
    245         }
    246         public static final ArrayList<Instr> NoticeA18= new ArrayList<Instr>();
    247         static {
    248                 NoticeA18.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    249                 NoticeA18.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Speedboat, 1.0, 0, 0, null, null)));
    250         }
    251         public static final ArrayList<Instr> NoticeA19= new ArrayList<Instr>();
    252         static {
    253                 NoticeA19.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    254                 NoticeA19.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Slipway, 1.0, 0, 0, null, null)));
    255         }
    256         public static final ArrayList<Instr> NoticeA20= new ArrayList<Instr>();
    257         static {
    258                 NoticeA20.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
    259                 NoticeA20.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.Waterbike, 1.0, 0, 0, null, null)));
    260         }
    261         public static final ArrayList<Instr> NoticeB2a = new ArrayList<Instr>();
    262         public static final ArrayList<Instr> NoticeB2b = new ArrayList<Instr>();
    263         public static final ArrayList<Instr> NoticeB3a = new ArrayList<Instr>();
    264         public static final ArrayList<Instr> NoticeB3b = new ArrayList<Instr>();
    265         public static final ArrayList<Instr> NoticeB4a = new ArrayList<Instr>();
    266         public static final ArrayList<Instr> NoticeB4b = new ArrayList<Instr>();
    267         public static final ArrayList<Instr> NoticeB5 = new ArrayList<Instr>();
    268         public static final ArrayList<Instr> NoticeB7 = new ArrayList<Instr>();
    269         public static final ArrayList<Instr> NoticeB8 = new ArrayList<Instr>();
    270         public static final ArrayList<Instr> NoticeB11a = new ArrayList<Instr>();
    271         static {
    272                 NoticeB11a.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
    273                 NoticeB11a.add(new Instr(Prim.SYMB, new Symbols.Symbol(Notices.VHF, 1.0, 0, 0, null, null)));
    274         }
    275         public static final ArrayList<Instr> NoticeC1 = new ArrayList<Instr>();
    276         public static final ArrayList<Instr> NoticeC2 = new ArrayList<Instr>();
    277         public static final ArrayList<Instr> NoticeC3 = new ArrayList<Instr>();
    278         public static final ArrayList<Instr> NoticeC5a = new ArrayList<Instr>();
    279         public static final ArrayList<Instr> NoticeC5b = new ArrayList<Instr>();
    280         public static final ArrayList<Instr> NoticeD1a = new ArrayList<Instr>();
    281         public static final ArrayList<Instr> NoticeD1b = new ArrayList<Instr>();
    282         public static final ArrayList<Instr> NoticeD2a = new ArrayList<Instr>();
    283         public static final ArrayList<Instr> NoticeD2b = new ArrayList<Instr>();
    284         public static final ArrayList<Instr> NoticeE1 = new ArrayList<Instr>();
    285         public static final ArrayList<Instr> NoticeE2 = new ArrayList<Instr>();
    286         public static final ArrayList<Instr> NoticeE3 = new ArrayList<Instr>();
    287         public static final ArrayList<Instr> NoticeE4a = new ArrayList<Instr>();
    288         public static final ArrayList<Instr> NoticeE4b = new ArrayList<Instr>();
    289         public static final ArrayList<Instr> NoticeE5_4 = new ArrayList<Instr>();
    290         public static final ArrayList<Instr> NoticeE5_5 = new ArrayList<Instr>();
    291         public static final ArrayList<Instr> NoticeE5_6 = new ArrayList<Instr>();
    292         public static final ArrayList<Instr> NoticeE5_7 = new ArrayList<Instr>();
    293         public static final ArrayList<Instr> NoticeE5_8 = new ArrayList<Instr>();
    294         public static final ArrayList<Instr> NoticeE5_9 = new ArrayList<Instr>();
    295         public static final ArrayList<Instr> NoticeE5_10 = new ArrayList<Instr>();
    296         public static final ArrayList<Instr> NoticeE5_11 = new ArrayList<Instr>();
    297         public static final ArrayList<Instr> NoticeE5_12 = new ArrayList<Instr>();
    298         public static final ArrayList<Instr> NoticeE5_13 = new ArrayList<Instr>();
    299         public static final ArrayList<Instr> NoticeE5_14 = new ArrayList<Instr>();
    300         public static final ArrayList<Instr> NoticeE5_15 = new ArrayList<Instr>();
    301         public static final ArrayList<Instr> NoticeE7_1 = new ArrayList<Instr>();
    302         public static final ArrayList<Instr> Notice11 = new ArrayList<Instr>();
    303         public static final ArrayList<Instr> Notice13 = new ArrayList<Instr>();
    304         public static final ArrayList<Instr> Notice14 = new ArrayList<Instr>();
     207        public static final Symbol NoticeA10b = new Symbol();
     208        static {
     209                NoticeA10b.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA10a, 1.0, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(180.0))), null)));
     210        }
     211        public static final Symbol NoticeA12= new Symbol();
     212        static {
     213                NoticeA12.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     214                NoticeA12.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Motor, 1.0, 0, 0, null, null)));
     215        }
     216        public static final Symbol NoticeA13= new Symbol();
     217        static {
     218                NoticeA13.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     219                NoticeA13.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Sport, 1.0, 0, 0, null, null)));
     220        }
     221        public static final Symbol NoticeA14= new Symbol();
     222        static {
     223                NoticeA14.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     224                NoticeA14.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Waterski, 1.0, 0, 0, null, null)));
     225        }
     226        public static final Symbol NoticeA15= new Symbol();
     227        static {
     228                NoticeA15.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     229                NoticeA15.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Sailboat, 1.0, 0, 0, null, null)));
     230        }
     231        public static final Symbol NoticeA16= new Symbol();
     232        static {
     233                NoticeA16.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     234                NoticeA16.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Rowboat, 1.0, 0, 0, null, null)));
     235        }
     236        public static final Symbol NoticeA17= new Symbol();
     237        static {
     238                NoticeA17.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     239                NoticeA17.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Sailboard, 1.0, 0, 0, null, null)));
     240        }
     241        public static final Symbol NoticeA18= new Symbol();
     242        static {
     243                NoticeA18.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     244                NoticeA18.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Speedboat, 1.0, 0, 0, null, null)));
     245        }
     246        public static final Symbol NoticeA19= new Symbol();
     247        static {
     248                NoticeA19.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     249                NoticeA19.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Slipway, 1.0, 0, 0, null, null)));
     250        }
     251        public static final Symbol NoticeA20= new Symbol();
     252        static {
     253                NoticeA20.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeA, 1.0, 0, 0, null, null)));
     254                NoticeA20.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.Waterbike, 1.0, 0, 0, null, null)));
     255        }
     256        public static final Symbol NoticeB2a = new Symbol();
     257        public static final Symbol NoticeB2b = new Symbol();
     258        public static final Symbol NoticeB3a = new Symbol();
     259        public static final Symbol NoticeB3b = new Symbol();
     260        public static final Symbol NoticeB4a = new Symbol();
     261        public static final Symbol NoticeB4b = new Symbol();
     262        public static final Symbol NoticeB5 = new Symbol();
     263        public static final Symbol NoticeB7 = new Symbol();
     264        public static final Symbol NoticeB8 = new Symbol();
     265        public static final Symbol NoticeB11a = new Symbol();
     266        static {
     267                NoticeB11a.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.NoticeB, 1.0, 0, 0, null, null)));
     268                NoticeB11a.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Notices.VHF, 1.0, 0, 0, null, null)));
     269        }
     270        public static final Symbol NoticeC1 = new Symbol();
     271        public static final Symbol NoticeC2 = new Symbol();
     272        public static final Symbol NoticeC3 = new Symbol();
     273        public static final Symbol NoticeC5a = new Symbol();
     274        public static final Symbol NoticeC5b = new Symbol();
     275        public static final Symbol NoticeD1a = new Symbol();
     276        public static final Symbol NoticeD1b = new Symbol();
     277        public static final Symbol NoticeD2a = new Symbol();
     278        public static final Symbol NoticeD2b = new Symbol();
     279        public static final Symbol NoticeE1 = new Symbol();
     280        public static final Symbol NoticeE2 = new Symbol();
     281        public static final Symbol NoticeE3 = new Symbol();
     282        public static final Symbol NoticeE4a = new Symbol();
     283        public static final Symbol NoticeE4b = new Symbol();
     284        public static final Symbol NoticeE5_4 = new Symbol();
     285        public static final Symbol NoticeE5_5 = new Symbol();
     286        public static final Symbol NoticeE5_6 = new Symbol();
     287        public static final Symbol NoticeE5_7 = new Symbol();
     288        public static final Symbol NoticeE5_8 = new Symbol();
     289        public static final Symbol NoticeE5_9 = new Symbol();
     290        public static final Symbol NoticeE5_10 = new Symbol();
     291        public static final Symbol NoticeE5_11 = new Symbol();
     292        public static final Symbol NoticeE5_12 = new Symbol();
     293        public static final Symbol NoticeE5_13 = new Symbol();
     294        public static final Symbol NoticeE5_14 = new Symbol();
     295        public static final Symbol NoticeE5_15 = new Symbol();
     296        public static final Symbol NoticeE7_1 = new Symbol();
     297        public static final Symbol Notice11 = new Symbol();
     298        public static final Symbol Notice13 = new Symbol();
     299        public static final Symbol Notice14 = new Symbol();
    305300}
  • applications/editors/josm/plugins/smed2/src/symbols/Symbols.java

    r29176 r29186  
    9797        }
    9898
    99         public static class Symbol {
    100                 ArrayList<Instr> instr;
     99        public static class Symbol extends ArrayList<Instr> {
     100                private static final long serialVersionUID = 1L;
     101
     102                public Symbol() {
     103                        super();
     104                }
     105        }
     106       
     107        public static class SubSymbol {
     108                Symbol instr;
    101109                double scale;
    102110                double x;
     
    105113                Scheme scheme;
    106114
    107                 public Symbol(ArrayList<Instr> iinstr, double iscale, double ix, double iy, Delta idelta, Scheme ischeme) {
     115                public SubSymbol(Symbol iinstr, double iscale, double ix, double iy, Delta idelta, Scheme ischeme) {
    108116                        instr = iinstr;
    109117                        scale = iscale;
     
    115123        }
    116124
    117         public static void drawSymbol(Graphics2D g2, ArrayList<Instr> symbol, double scale, double x, double y, Delta dd, Scheme cs) {
     125        public static void drawSymbol(Graphics2D g2, Symbol symbol, double scale, double x, double y, Delta dd, Scheme cs) {
    118126                int pn = 0;
    119127                int cn = 0;
     
    260268                                        break;
    261269                                case SYMB:
    262                                         Symbol s = (Symbol) item.params;
     270                                        SubSymbol s = (SubSymbol) item.params;
    263271                                        drawSymbol(g2, s.instr, s.scale, s.x, s.y, s.delta, s.scheme);
    264272                                        break;
  • applications/editors/josm/plugins/smed2/src/symbols/Topmarks.java

    r29185 r29186  
    1717import java.awt.geom.Line2D;
    1818import java.awt.geom.Path2D;
    19 import java.util.ArrayList;
    2019import java.util.EnumMap;
    2120
     
    2524public class Topmarks {
    2625       
    27         public static final ArrayList<Instr> FogSignal = new ArrayList<Instr>();
    28         public static final ArrayList<Instr> LightFlare = new ArrayList<Instr>();
    29         public static final ArrayList<Instr> Radar = new ArrayList<Instr>();
    30         public static final ArrayList<Instr> TopBoard = new ArrayList<Instr>();
     26        public static final Symbol TopBoard = new Symbol();
    3127        static {
    3228                TopBoard.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
    33                 ArrayList<Instr> colours = new ArrayList<Instr>();
     29                Symbol colours = new Symbol();
    3430                Path2D.Double p = new Path2D.Double(); p.moveTo(-19.0,-2.0); p.lineTo(-19.0,-39.0); p.lineTo(19.0,-39.0); p.lineTo(19.0,-2.0); p.closePath();
    3531                colours.add(new Instr(Prim.P1, p));
     
    4036                TopBoard.add(new Instr(Prim.PLIN, p));
    4137        }
    42         public static final ArrayList<Instr> TopCan = new ArrayList<Instr>();
     38        public static final Symbol TopCan = new Symbol();
    4339        static {
    4440                TopCan.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
    45                 ArrayList<Instr> colours = new ArrayList<Instr>();
     41                Symbol colours = new Symbol();
    4642                Path2D.Double p = new Path2D.Double(); p.moveTo(-12.0,-15.0); p.lineTo(-12.0,-48.0); p.lineTo(12.0,-48.0); p.lineTo(12.0,-15.0); p.closePath();
    4743                colours.add(new Instr(Prim.P1, p));
     
    5349                TopCan.add(new Instr(Prim.PLIN, p));
    5450        }
    55         public static final ArrayList<Instr> TopCone = new ArrayList<Instr>();
     51        public static final Symbol TopCone = new Symbol();
    5652        static {
    5753                TopCone.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
    58                 ArrayList<Instr> colours = new ArrayList<Instr>();
     54                Symbol colours = new Symbol();
    5955                Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-15.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-15.0); p.closePath();
    6056                colours.add(new Instr(Prim.P1, p));
     
    6662                TopCone.add(new Instr(Prim.PLIN, p));
    6763        }
    68         public static final ArrayList<Instr> TopCross = new ArrayList<Instr>();
     64        public static final Symbol TopCross = new Symbol();
    6965        static {
    7066                TopCross.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
    71                 ArrayList<Instr> colours = new ArrayList<Instr>();
     67                Symbol colours = new Symbol();
    7268                Path2D.Double p = new Path2D.Double(); p.moveTo(-5.0,-15.0); p.lineTo(-5.0,-32.5); p.lineTo(-22.5,-32.5);       p.lineTo(-22.5,-42.5); p.lineTo(-5.0,-42.5);
    7369                p.lineTo(-5.0,-60.0); p.lineTo(5.0,-60.0); p.lineTo(5.0,-42.5); p.lineTo(22.5,-42.5);   p.lineTo(22.5,-32.5); p.lineTo(5.0,-32.5); p.lineTo(5.0,-15.0); p.closePath();
     
    8278                TopCross.add(new Instr(Prim.PLIN, p));
    8379        }
    84         public static final ArrayList<Instr> TopEast = new ArrayList<Instr>();
     80        public static final Symbol TopEast = new Symbol();
    8581        static {
    8682                TopEast.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
    87                 ArrayList<Instr> colours = new ArrayList<Instr>();
     83                Symbol colours = new Symbol();
    8884                Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-80.0); p.lineTo(-15.0,-47.0); p.lineTo(15.0,-47.0); p.closePath();
    8985                colours.add(new Instr(Prim.P1, p));
     
    10096                TopEast.add(new Instr(Prim.PLIN, p));
    10197        }
    102         public static final ArrayList<Instr> TopIsol = new ArrayList<Instr>();
     98        public static final Symbol TopIsol = new Symbol();
    10399        static {
    104100                TopIsol.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
    105                 ArrayList<Instr> colours = new ArrayList<Instr>();
     101                Symbol colours = new Symbol();
    106102                Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-55.0); p.curveTo(-13.0, -72.3, 13.0, -72.3, 13.0,-55.0); p.curveTo(13.0, -37.7, -13.0, -37.7, -13.0,-55.0); p.closePath();
    107103                colours.add(new Instr(Prim.P1, p));
     
    116112                TopIsol.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-13,-68,26,26)));
    117113        }
    118         public static final ArrayList<Instr> TopMooring = new ArrayList<Instr>();
     114        public static final Symbol TopMooring = new Symbol();
    119115        static {
    120116                TopMooring.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
     
    124120                TopMooring.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-8.5,-25,17,17)));
    125121        }
    126         public static final ArrayList<Instr> TopNorth = new ArrayList<Instr>();
     122        public static final Symbol TopNorth = new Symbol();
    127123        static {
    128124                TopNorth.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
    129                 ArrayList<Instr> colours = new ArrayList<Instr>();
     125                Symbol colours = new Symbol();
    130126                Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-78.0); p.lineTo(-15.0,-45.0); p.lineTo(15.0,-45.0); p.closePath();
    131127                colours.add(new Instr(Prim.P1, p));
     
    141137                TopNorth.add(new Instr(Prim.PLIN, p));
    142138        }
    143         public static final ArrayList<Instr> TopSouth = new ArrayList<Instr>();
     139        public static final Symbol TopSouth = new Symbol();
    144140        static {
    145141                TopSouth.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
    146                 ArrayList<Instr> colours = new ArrayList<Instr>();
     142                Symbol colours = new Symbol();
    147143                Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0);  p.lineTo(15.0,-78.0); p.closePath();
    148144                colours.add(new Instr(Prim.P1, p));
     
    158154                TopSouth.add(new Instr(Prim.PLIN, p));
    159155        }
    160         public static final ArrayList<Instr> TopSphere = new ArrayList<Instr>();
     156        public static final Symbol TopSphere = new Symbol();
    161157        static {
    162158                TopSphere.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
    163                 ArrayList<Instr> colours = new ArrayList<Instr>();
     159                Symbol colours = new Symbol();
    164160                Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0,-28.0); p.curveTo(-14.0,-46.7,14.0,-46.7,14.0,-28.0); p.curveTo(14.0,-9.3,-14.0,-9.3,-14.0,-28.0); p.closePath();
    165161                colours.add(new Instr(Prim.P1, p));
     
    171167                TopSphere.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-14,-42,28,28)));
    172168        }
    173         public static final ArrayList<Instr> TopSquare = new ArrayList<Instr>();
     169        public static final Symbol TopSquare = new Symbol();
    174170        static {
    175171                TopSquare.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
    176                 ArrayList<Instr> colours = new ArrayList<Instr>();
     172                Symbol colours = new Symbol();
    177173                Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-13.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(13.0,-1.0); p.closePath();
    178174                colours.add(new Instr(Prim.P1, p));
     
    183179                TopSquare.add(new Instr(Prim.PLIN, p));
    184180        }
    185         public static final ArrayList<Instr> TopTriangle = new ArrayList<Instr>();
     181        public static final Symbol TopTriangle = new Symbol();
    186182        static {
    187183                TopTriangle.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
    188                 ArrayList<Instr> colours = new ArrayList<Instr>();
     184                Symbol colours = new Symbol();
    189185                Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-1.0); p.lineTo(0.0,-29.0); p.lineTo(15.0,-1.0); p.closePath();
    190186                colours.add(new Instr(Prim.P1, p));
     
    195191                TopTriangle.add(new Instr(Prim.PLIN, p));
    196192        }
    197         public static final ArrayList<Instr> TopWest = new ArrayList<Instr>();
     193        public static final Symbol TopWest = new Symbol();
    198194        static {
    199195                TopWest.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
    200                 ArrayList<Instr> colours = new ArrayList<Instr>();
     196                Symbol colours = new Symbol();
    201197                Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0);  p.lineTo(15.0,-78.0); p.closePath();
    202198                colours.add(new Instr(Prim.P1, p));
     
    212208                TopWest.add(new Instr(Prim.PLIN, p));
    213209        }
    214         public static final ArrayList<Instr> TopX = new ArrayList<Instr>();
     210        public static final Symbol TopX = new Symbol();
    215211        static {
    216212                TopX.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
    217                 ArrayList<Instr> colours = new ArrayList<Instr>();
     213                Symbol colours = new Symbol();
    218214                Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-27.7); p.lineTo(-12.4,-15.7); p.lineTo(-19.3,-22.6); p.lineTo(-7.3,-35.0); p.lineTo(-19.3,-47.3);
    219215                p.lineTo(-12.4,-54.2); p.lineTo(0.0,-42.4); p.lineTo(12.4,-54.2); p.lineTo(19.3,-47.3); p.lineTo(7.3,-35.0); p.lineTo(19.3,-22.6); p.lineTo(12.4,-15.7); p.closePath();
     
    229225        }
    230226       
     227        public static final EnumMap<TopSHP, Symbol> Shapes = new EnumMap<TopSHP, Symbol>(TopSHP.class);
     228        static {
     229                Shapes.put(TopSHP.TOP_BORD, TopBoard); Shapes.put(TopSHP.TOP_CAN, TopCan); Shapes.put(TopSHP.TOP_CONE, TopCone); Shapes.put(TopSHP.TOP_CROS, TopCross);
     230                 Shapes.put(TopSHP.TOP_EAST, TopEast); Shapes.put(TopSHP.TOP_ISD, TopIsol); Shapes.put(TopSHP.TOP_NORTH, TopNorth); Shapes.put(TopSHP.TOP_SOUTH, TopSouth);
     231                 Shapes.put(TopSHP.TOP_SPHR, TopSphere); Shapes.put(TopSHP.TOP_SQUR, TopSquare); Shapes.put(TopSHP.TOP_TRI, TopTriangle); Shapes.put(TopSHP.TOP_WEST, TopWest);
     232                 Shapes.put(TopSHP.TOP_SALT, TopX);
     233        }
    231234        public static final EnumMap<BoySHP, Delta> Buoys = new EnumMap<BoySHP, Delta>(BoySHP.class);
    232235        static {
     
    240243                Buoys.put(BoySHP.BOY_ICE, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -25.0)));
    241244        }
    242         public static final Delta Floats = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -70.0));
     245        public static final Delta Floats = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0));
     246        public static final Delta Beacons = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -70.0));
    243247
    244248}
Note: See TracChangeset for help on using the changeset viewer.