Ignore:
Timestamp:
2016-03-08T10:10:33+01:00 (9 years ago)
Author:
malcolmh
Message:

[SeaChart] finish notices

Location:
applications/editors/josm/plugins/seachart/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/seachart/src/render/Renderer.java

    r32090 r32101  
    345345                        while (git.hasComp()) {
    346346                                git.nextComp();
     347                                boolean newComp = true;
    347348                                while (git.hasEdge()) {
    348349                                        git.nextEdge();
    349350                                        point = context.getPoint(git.next());
    350                                         p.moveTo(point.getX(), point.getY());
     351                                        if (newComp) {
     352                                                p.moveTo(point.getX(), point.getY());
     353                                                newComp = false;
     354                                        } else {
     355                                                p.lineTo(point.getX(), point.getY());
     356                                        }
    351357                                        while (git.hasNode()) {
    352358                                                Snode node = git.next();
     
    357363                                }
    358364                        }
    359             g2.setPaint(new TexturePaint(image, new Rectangle(0, 0, 1 + (int)(100 * sScale), 1 + (int)(100 * sScale))));
     365            g2.setPaint(new TexturePaint(image, new Rectangle(0, 0, 1 + (int)(300 * sScale), 1 + (int)(300 * sScale))));
    360366            g2.fill(p);
    361367            break;
  • applications/editors/josm/plugins/seachart/src/render/Rules.java

    r32095 r32101  
    230230                        if (testObject(Obj.ISTZNE)) for (Feature f : objects) if (testFeature(f)) separation();
    231231                        if (testObject(Obj.SNDWAV)) for (Feature f : objects) if (testFeature(f)) areas();
     232                        if (testObject(Obj.WEDKLP)) for (Feature f : objects) if (testFeature(f)) areas();
    232233                        if (testObject(Obj.OSPARE)) for (Feature f : objects) if (testFeature(f)) areas();
    233234                        if (testObject(Obj.FAIRWY)) for (Feature f : objects) if (testFeature(f)) areas();
     
    256257                        if (testObject(Obj.SMCFAC)) for (Feature f : objects) if (testFeature(f)) marinas();
    257258                        if (testObject(Obj.BRIDGE)) for (Feature f : objects) if (testFeature(f)) bridges();
    258                         if (testObject(Obj.PILPNT)) for (Feature f : objects) if (testFeature(f)) lights();
     259                        if (testObject(Obj.PILPNT)) for (Feature f : objects) if (testFeature(f)) points();
     260                        if (testObject(Obj.TOPMAR)) for (Feature f : objects) if (testFeature(f)) points();
     261                        if (testObject(Obj.DAYMAR)) for (Feature f : objects) if (testFeature(f)) points();
     262                        if (testObject(Obj.FOGSIG)) for (Feature f : objects) if (testFeature(f)) points();
    259263                        if (testObject(Obj.RDOCAL)) for (Feature f : objects) if (testFeature(f)) callpoint();
    260264                        if (testObject(Obj.LITMIN)) for (Feature f : objects) if (testFeature(f)) lights();
     
    429433                        if (Renderer.zoom >= 12) Renderer.fillPattern(Areas.Sandwaves);
    430434                        break;
     435                case WEDKLP:
     436                        if (Renderer.zoom >= 12) {
     437                                switch ((CatWED) getAttEnum(feature.type, Att.CATWED)) {
     438                                case WED_KELP:
     439                                        if (feature.geom.prim == Pflag.AREA) {
     440                                                Renderer.fillPattern(Areas.KelpA);
     441                                        } else {
     442                                                Renderer.symbol(Areas.KelpS);
     443                                        }
     444                                        break;
     445                                default:
     446                                        break;
     447                                }
     448                        }
     449                        break;
    431450                case SPLARE:
    432451                        if (Renderer.zoom >= 12) {
     
    605624                                        String str = "";
    606625                                        if (atts.containsKey(Att.HUNITS)) {
    607                                                 switch ((UniHLU) atts.get(Att.HUNITS).val) {
     626                                                switch ((UniHLU) getAttEnum(Obj.DISMAR, Att.HUNITS)) {
    608627                                                case HLU_METR:
    609628                                                        str += "m ";
     
    858877       
    859878        @SuppressWarnings("unchecked")
     879        private static void points() {
     880                boolean ok = false;
     881                switch (feature.type) {
     882                case FOGSIG:
     883                        if (Renderer.zoom >= 12) {
     884                                if (feature.objs.containsKey(Obj.LIGHTS))
     885                                        lights();
     886                                else
     887                                        Renderer.symbol(Harbours.Post);
     888                                ok = true;
     889                        }
     890                        break;
     891                default:
     892                        if (Renderer.zoom >= 14) {
     893                                if (feature.objs.containsKey(Obj.LIGHTS))
     894                                        lights();
     895                                else
     896                                        Renderer.symbol(Harbours.Post);
     897                                ok = true;
     898                        }
     899                        break;
     900                }
     901                if (ok) {
     902                        if (feature.objs.containsKey(Obj.TOPMAR)) {
     903                                AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
     904                                if (topmap.containsKey(Att.TOPSHP)) {
     905                                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), null);
     906                                }
     907                        } else if (feature.objs.containsKey(Obj.DAYMAR)) {
     908                                AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
     909                                if (topmap.containsKey(Att.TOPSHP)) {
     910                                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), null);
     911                                }
     912                        }
     913                        Signals.addSignals();
     914                }
     915        }
     916       
     917        @SuppressWarnings("unchecked")
    860918        private static void lights() {
    861919                boolean ok = false;
     
    863921                case LITMAJ:
    864922                case LNDMRK:
    865                         Renderer.symbol(Beacons.LightMajor);
    866                         ok = true;
     923                        if (Renderer.zoom >= 12) {
     924                                Renderer.symbol(Beacons.LightMajor);
     925                                ok = true;
     926                        }
    867927                        break;
    868928                case LITMIN:
    869929                case LIGHTS:
     930                case PILPNT:
    870931                        if (Renderer.zoom >= 14) {
    871932                                Renderer.symbol(Beacons.LightMinor);
    872                                 ok = true;
    873                         }
    874                         break;
    875                 case PILPNT:
    876                         if (Renderer.zoom >= 14) {
    877                                 if (feature.objs.containsKey(Obj.LIGHTS))
    878                                         Renderer.symbol(Beacons.LightMinor);
    879                                 else
    880                                         Renderer.symbol(Harbours.Post);
    881933                                ok = true;
    882934                        }
     
    9591011                        }
    9601012                        MarSYS sys = MarSYS.SYS_CEVN;
    961 //                      BnkWTW bnk = BnkWTW.BWW_UNKN;
     1013                        BnkWTW bnk = BnkWTW.BWW_UNKN;
    9621014                        AttVal<?> att = feature.atts.get(Att.MARSYS);
    9631015                        if (att != null) sys = (MarSYS)att.val;
     1016                        att = feature.atts.get(Att.BNKWTW);
     1017                        if (att != null) bnk = (BnkWTW)att.val;
    9641018                        ObjTab objs = feature.objs.get(Obj.NOTMRK);
    9651019                        int n = objs.size();
     
    9691023                                int i = 0;
    9701024                                for (AttMap atts : objs.values()) {
    971                                         if (atts.get(Att.MARSYS) != null) sys = (MarSYS)(atts.get(Att.MARSYS).val);
     1025                                        if (atts.get(Att.MARSYS) != null) sys = (MarSYS)(getAttEnum(Obj.NOTMRK, Att.MARSYS));
     1026                                        if (atts.get(Att.BNKWTW) != null) bnk = (BnkWTW)(getAttEnum(Obj.NOTMRK, Att.BNKWTW));
    9721027                                        CatNMK cat = CatNMK.NMK_UNKN;
    973                                         if (atts.get(Att.CATNMK) != null) cat = (CatNMK)(atts.get(Att.CATNMK).val);
    974                                         Symbol sym = Notices.getNotice(cat, sys);
     1028                                        if (atts.get(Att.CATNMK) != null) cat = (CatNMK)(getAttEnum(Obj.NOTMRK, Att.CATNMK));
     1029                                        Symbol sym = Notices.getNotice(cat, sys, bnk);
     1030                                        Scheme sch = Notices.getScheme(sys, bnk);
    9751031                                        Handle h = Handle.CC;
    9761032                                        switch (i) {
     
    10001056                                                break;
    10011057                                        }
    1002                                         if (h != null) Renderer.symbol(sym, new Delta(h, AffineTransform.getTranslateInstance(dx, dy)));
     1058                                        if (h != null) Renderer.symbol(sym, sch, new Delta(h, AffineTransform.getTranslateInstance(dx, dy)));
    10031059                                        i++;
    10041060                                }
  • applications/editors/josm/plugins/seachart/src/s57/S57val.java

    r32095 r32101  
    6666  Catair.put(CatAIR.AIR_EMRG, new S57enum(8, "emergency"));
    6767 }
    68  public enum CatACH { ACH_UNKN, ACH_UNRD, ACH_DEEP, ACH_TANK, ACH_EXPL, ACH_QUAR, ACH_SEAP, ACH_SMCF, ACH_SMCM, ACH_H24P, ACH_LTPD, ACH_NPSH, ACH_DRYC, ACH_RAFT }
     68 public enum CatACH { ACH_UNKN, ACH_UNRD, ACH_DEEP, ACH_TANK, ACH_EXPL, ACH_QUAR, ACH_SEAP, ACH_SMCF, ACH_SMCM, ACH_H24P, ACH_LTPD, ACH_NPSH, ACH_DRYC, ACH_RAFT, ACH_WAIT, ACH_REPT }
    6969 private static final EnumMap<CatACH, S57enum> Catach = new EnumMap<>(CatACH.class); static {Catach.put(CatACH.ACH_UNKN, new S57enum(0, ""));
    7070  Catach.put(CatACH.ACH_UNRD, new S57enum(1, "unrestricted")); Catach.put(CatACH.ACH_DEEP, new S57enum(2, "deep_water")); Catach.put(CatACH.ACH_TANK, new S57enum(3, "tanker"));
     
    7272  Catach.put(CatACH.ACH_SMCF, new S57enum(7, "small_craft")); Catach.put(CatACH.ACH_SMCM, new S57enum(8, "small_craft_mooring")); Catach.put(CatACH.ACH_H24P, new S57enum(9, "24_hour"));
    7373  Catach.put(CatACH.ACH_LTPD, new S57enum(10, "limited_period")); Catach.put(CatACH.ACH_NPSH, new S57enum(11, "non_pushing")); Catach.put(CatACH.ACH_DRYC, new S57enum(12, "dry_cargo"));
    74   Catach.put(CatACH.ACH_RAFT, new S57enum(13, "raft"));
     74  Catach.put(CatACH.ACH_RAFT, new S57enum(13, "raft")); Catach.put(CatACH.ACH_WAIT, new S57enum(14, "waiting")); Catach.put(CatACH.ACH_REPT, new S57enum(15, "reported"));
    7575 }
    7676 public enum CatBRG { BRG_UNKN, BRG_FIXD, BRG_OPEN, BRG_SWNG, BRG_LIFT, BRG_BASC, BRG_PONT, BRG_DRAW, BRG_TRNS, BRG_FOOT, BRG_VIAD, BRG_AQUA, BRG_SUSP }
     
    122122  Catcon.put(CatCON.CAT_AERL, new S57enum(1, "aerial")); Catcon.put(CatCON.CAT_BELT, new S57enum(2, "belt"));
    123123 }
    124  public enum CatCRN { CRN_UNKN, CRN_NONS, CRN_CONT, CRN_SHRL, CRN_TRAV, CRN_AFRM }
     124 public enum CatCRN { CRN_UNKN, CRN_NONS, CRN_CONT, CRN_SHRL, CRN_TRAV, CRN_AFRM, CRN_GLTH }
    125125 private static final EnumMap<CatCRN, S57enum> Catcrn = new EnumMap<>(CatCRN.class); static { Catcrn.put(CatCRN.CRN_UNKN, new S57enum(0, ""));
    126126  Catcrn.put(CatCRN.CRN_NONS, new S57enum(1, "non-specific")); Catcrn.put(CatCRN.CRN_CONT, new S57enum(2, "container")); Catcrn.put(CatCRN.CRN_SHRL, new S57enum(3, "sheerlegs"));
    127   Catcrn.put(CatCRN.CRN_TRAV, new S57enum(4, "travelling")); Catcrn.put(CatCRN.CRN_AFRM , new S57enum(5, "a-frame"));
     127  Catcrn.put(CatCRN.CRN_TRAV, new S57enum(4, "travelling")); Catcrn.put(CatCRN.CRN_AFRM , new S57enum(5, "a-frame")); Catcrn.put(CatCRN.CRN_GLTH , new S57enum(6, "goliath"));
    128128 }
    129129 public enum CatDAM { DAM_UNKN, DAM_WEIR, DAM_DAM, DAM_FLDB }
     
    216216 }
    217217 public enum CatLMK { LMK_UNKN, LMK_CARN, LMK_CMTY, LMK_CHMY, LMK_DISH, LMK_FLAG, LMK_FLAR, LMK_MAST, LMK_WNDS, LMK_MNMT, LMK_CLMN, LMK_MEML, LMK_OBLK, LMK_STAT, LMK_CROS,
    218   LMK_DOME, LMK_RADR, LMK_TOWR, LMK_WNDM, LMK_WNDG, LMK_SPIR, LMK_BLDR }
     218  LMK_DOME, LMK_RADR, LMK_TOWR, LMK_WNDM, LMK_WNDG, LMK_SPIR, LMK_BLDR, LMK_TRIM, LMK_BNDM, LMK_OBSW, LMK_TORL }
    219219 private static final EnumMap<CatLMK, S57enum> Catlmk = new EnumMap<>(CatLMK.class); static {Catlmk.put(CatLMK.LMK_UNKN, new S57enum(0, ""));
    220220  Catlmk.put(CatLMK.LMK_CARN, new S57enum(1, "cairn")); Catlmk.put(CatLMK.LMK_CMTY, new S57enum(2, "cemetery")); Catlmk.put(CatLMK.LMK_CHMY, new S57enum(3, "chimney"));
     
    225225   Catlmk.put(CatLMK.LMK_RADR, new S57enum(16, "radar_scanner")); Catlmk.put(CatLMK.LMK_TOWR, new S57enum(17, "tower")); Catlmk.put(CatLMK.LMK_WNDM, new S57enum(18, "windmill"));
    226226   Catlmk.put(CatLMK.LMK_WNDG, new S57enum(19, "windmotor")); Catlmk.put(CatLMK.LMK_SPIR, new S57enum(20, "spire")); Catlmk.put(CatLMK.LMK_BLDR, new S57enum(21, "boulder"));
     227   Catlmk.put(CatLMK.LMK_TRIM, new S57enum(22, "triangulation_mark")); Catlmk.put(CatLMK.LMK_BNDM, new S57enum(23, "boundary_mark"));
     228   Catlmk.put(CatLMK.LMK_OBSW, new S57enum(24, "observation_wheel")); Catlmk.put(CatLMK.LMK_TORL, new S57enum(25, "toril"));
    227229 }
    228230 public enum CatLAM { LAM_UNKN, LAM_PORT, LAM_STBD, LAM_PCST, LAM_PCPT, LAM_WWLT, LAM_WWRT, LAM_CHLT, LAM_CHRT, LAM_WWSN, LAM_CHSN, LAM_CHRB, LAM_CHLB, LAM_CRRT, LAM_CRLT,
     
    268270  Catnav.put(CatNAV.NAV_CLRG, new S57enum(1, "clearing")); Catnav.put(CatNAV.NAV_TRST, new S57enum(2, "transit")); Catnav.put(CatNAV.NAV_LDNG, new S57enum(3, "leading"));
    269271 }
    270  public enum CatOBS { OBS_UNKN, OBS_STMP, OBS_WELH, OBS_DIFF, OBS_CRIB, OBS_FHVN, OBS_FLAR, OBS_FLGD, OBS_ICEB, OBS_GTKL, OBS_BOOM }
     272 public enum CatOBS { OBS_UNKN, OBS_STMP, OBS_WELH, OBS_DIFF, OBS_CRIB, OBS_FHVN, OBS_FLAR, OBS_FLGD, OBS_ICEB, OBS_GTKL, OBS_BOOM, OBS_UWTB, OBS_TPLT, OBS_WEND, OBS_UWAS,
     273         OBS_REEF, OBS_MNFD, OBS_PNGO, OBS_RPLT, OBS_SCII }
    271274 private static final EnumMap<CatOBS, S57enum> Catobs = new EnumMap<>(CatOBS.class); static { Catobs.put(CatOBS.OBS_UNKN, new S57enum(0, ""));
    272275  Catobs.put(CatOBS.OBS_STMP, new S57enum(1, "stump")); Catobs.put(CatOBS.OBS_WELH, new S57enum(2, "wellhead")); Catobs.put(CatOBS.OBS_DIFF, new S57enum(3, "diffuser"));
    273276  Catobs.put(CatOBS.OBS_CRIB, new S57enum(4, "crib")); Catobs.put(CatOBS.OBS_FHVN, new S57enum(5, "fish_haven")); Catobs.put(CatOBS.OBS_FLAR, new S57enum(6, "foul_area"));
    274277  Catobs.put(CatOBS.OBS_FLGD, new S57enum(7, "foul_ground")); Catobs.put(CatOBS.OBS_ICEB, new S57enum(8, "ice_boom")); Catobs.put(CatOBS.OBS_GTKL, new S57enum(9, "ground_tackle"));
    275   Catobs.put(CatOBS.OBS_BOOM, new S57enum(10, "boom"));
    276  }
    277  public enum CatOFP { OFP_UNKN, OFP_OIL, OFP_PROD, OFP_OBS, OFP_ALP, OFP_SALM, OFP_MOOR, OFP_AISL, OFP_FPSO, OFP_ACCN, OFP_NCCB }
     278  Catobs.put(CatOBS.OBS_BOOM, new S57enum(10, "boom")); Catobs.put(CatOBS.OBS_UWTB, new S57enum(11, "underwater_turbine")); Catobs.put(CatOBS.OBS_TPLT, new S57enum(12, "template"));
     279  Catobs.put(CatOBS.OBS_WEND, new S57enum(13, "wave_energy_device")); Catobs.put(CatOBS.OBS_UWAS, new S57enum(14, "subsurface_data")); Catobs.put(CatOBS.OBS_REEF, new S57enum(15, "artificial_reef"));
     280  Catobs.put(CatOBS.OBS_MNFD, new S57enum(16, "manifold")); Catobs.put(CatOBS.OBS_PNGO, new S57enum(17, "submerged_pingo")); Catobs.put(CatOBS.OBS_RPLT, new S57enum(18, "platform_remains"));
     281  Catobs.put(CatOBS.OBS_SCII, new S57enum(19, "scientific_instrument"));
     282 }
     283
     284 public enum CatOFP { OFP_UNKN, OFP_OIL, OFP_PROD, OFP_OBS, OFP_ALP, OFP_SALM, OFP_MOOR, OFP_AISL, OFP_FPSO, OFP_ACCN, OFP_NCCB, OFP_FOTK }
    278285 private static final EnumMap<CatOFP, S57enum> Catofp = new EnumMap<>(CatOFP.class); static { Catofp.put(CatOFP.OFP_UNKN, new S57enum(0, ""));
    279286  Catofp.put(CatOFP.OFP_OIL, new S57enum(1, "oil")); Catofp.put(CatOFP.OFP_PROD, new S57enum(2, "production")); Catofp.put(CatOFP.OFP_OBS, new S57enum(3, "observation"));
    280287  Catofp.put(CatOFP.OFP_ALP, new S57enum(4, "alp")); Catofp.put(CatOFP.OFP_SALM, new S57enum(5, "salm")); Catofp.put(CatOFP.OFP_MOOR, new S57enum(6, "mooring"));
    281288  Catofp.put(CatOFP.OFP_AISL, new S57enum(7, "artificial_island")); Catofp.put(CatOFP.OFP_FPSO, new S57enum(8, "fpso")); Catofp.put(CatOFP.OFP_ACCN, new S57enum(9, "accommodation"));
    282   Catofp.put(CatOFP.OFP_NCCB, new S57enum(10, "nccb"));
     289  Catofp.put(CatOFP.OFP_NCCB, new S57enum(10, "nccb")); Catofp.put(CatOFP.OFP_FOTK, new S57enum(11, "floating_oil_tank"));
    283290 }
    284291 public enum CatOLB { OLB_UNKN, OLB_RETN, OLB_FLTG }
     
    286293  Catolb.put(CatOLB.OLB_RETN, new S57enum(1, "retention")); Catolb.put(CatOLB.OLB_FLTG, new S57enum(2, "floating"));
    287294 }
    288  public enum CatPLE { PLE_UNKN, PLE_STAK, PLE_SNAG, PLE_POST, PLE_TRIP }
     295 public enum CatPLE { PLE_UNKN, PLE_STAK, PLE_POST, PLE_TRIP, PLE_PLNG, PLE_PARE, PLE_PIPE }
    289296 private static final EnumMap<CatPLE, S57enum> Catple = new EnumMap<>(CatPLE.class); static { Catple.put(CatPLE.PLE_UNKN, new S57enum(0, ""));
    290   Catple.put(CatPLE.PLE_STAK, new S57enum(1, "stake")); Catple.put(CatPLE.PLE_SNAG, new S57enum(2, "snag")); Catple.put(CatPLE.PLE_POST, new S57enum(3, "post"));
    291   Catple.put(CatPLE.PLE_TRIP, new S57enum(4, "tripodal"));
    292  }
     297  Catple.put(CatPLE.PLE_STAK, new S57enum(1, "stake")); Catple.put(CatPLE.PLE_POST, new S57enum(3, "post")); Catple.put(CatPLE.PLE_TRIP, new S57enum(4, "tripodal"));
     298  Catple.put(CatPLE.PLE_PLNG, new S57enum(5, "piling")); Catple.put(CatPLE.PLE_PARE, new S57enum(6, "pile_area")); Catple.put(CatPLE.PLE_PIPE, new S57enum(7, "pipe"));
     299 }
     300
    293301 public enum CatPIL { PIL_UNKN, PIL_CVSL, PIL_HELI, PIL_SHOR }
    294302 private static final EnumMap<CatPIL, S57enum> Catpil = new EnumMap<>(CatPIL.class); static { Catpil.put(CatPIL.PIL_UNKN, new S57enum(0, ""));
     
    345353 }
    346354 public enum CatREA { REA_UNKN, REA_SFTY, REA_NANC, REA_NFSH, REA_NATR, REA_BRDS, REA_GRSV, REA_SEAL, REA_DEGR, REA_MILY, REA_HIST, REA_INST,
    347   REA_NASF, REA_STRD, REA_MINE, REA_NDIV, REA_TBAV, REA_PROH, REA_SWIM, REA_WAIT, REA_RSCH, REA_DREG, REA_FSNC, REA_ERES, REA_NWAK, REA_SWNG, REA_WSKI, REA_ESSA, REA_PSSA }
     355  REA_NASF, REA_STRD, REA_MINE, REA_NDIV, REA_TBAV, REA_PROH, REA_SWIM, REA_WAIT, REA_RSCH, REA_DREG, REA_FSNC, REA_ERES, REA_NWAK, REA_SWNG,
     356  REA_WSKI, REA_ESSA, REA_PSSA, REA_DISA, REA_PSAR, REA_CRLS }
    348357 private static final EnumMap<CatREA, S57enum> Catrea = new EnumMap<>(CatREA.class); static { Catrea.put(CatREA.REA_UNKN, new S57enum(0, ""));
    349358  Catrea.put(CatREA.REA_SFTY, new S57enum(1, "safety")); Catrea.put(CatREA.REA_NANC, new S57enum(2, "no_anchoring")); Catrea.put(CatREA.REA_NFSH, new S57enum(3, "no_fishing"));
     
    357366   Catrea.put(CatREA.REA_SWNG, new S57enum(25, "swinging")); Catrea.put(CatREA.REA_WSKI, new S57enum(26, "water_skiing"));
    358367   Catrea.put(CatREA.REA_ESSA, new S57enum(27, "environmentally_sensitive")); Catrea.put(CatREA.REA_PSSA, new S57enum(28, "particularly_sensitive"));
     368   Catrea.put(CatREA.REA_DISA, new S57enum(29, "disengagement")); Catrea.put(CatREA.REA_PSAR, new S57enum(30, "port_security")); Catrea.put(CatREA.REA_CRLS, new S57enum(31, "coral_sactuary"));
    359369 }
    360370 public enum CatROD { ROD_UNKN, ROD_MWAY, ROD_MAJR, ROD_MINR, ROD_TRAK, ROD_MAJS, ROD_MINS, ROD_CRSG, ROD_PATH }
     
    556566 public enum FncFNC { FNC_UNKN, FNC_HBRM, FNC_CSTM, FNC_HLTH, FNC_HOSP, FNC_POST, FNC_HOTL, FNC_RAIL, FNC_POLC, FNC_WPOL, FNC_PILO, FNC_PILL, FNC_BANK,
    557567  FNC_DIST, FNC_TRNS, FNC_FCTY, FNC_POWR, FNC_ADMIN, FNC_EDUC, FNC_CHCH, FNC_CHPL, FNC_TMPL, FNC_PGDA, FNC_SHSH, FNC_BTMP, FNC_MOSQ, FNC_MRBT,
    558   FNC_LOOK, FNC_COMM, FNC_TV, FNC_RADO, FNC_RADR, FNC_LGHT, FNC_MCWV, FNC_COOL, FNC_OBS, FNC_TMBL, FNC_CLOK, FNC_CTRL, FNC_ASHM, FNC_STAD, FNC_BUSS }
     568  FNC_LOOK, FNC_COMM, FNC_TV, FNC_RADO, FNC_RADR, FNC_LGHT, FNC_MCWV, FNC_COOL, FNC_OBS, FNC_TMBL, FNC_CLOK, FNC_CTRL, FNC_ASHM, FNC_STAD, FNC_BUSS,
     569  FNC_PTRM, FNC_SRCT, FNC_OBSV, FNC_OREC, FNC_BTHS, FNC_PMPS }
    559570 private static final EnumMap<FncFNC, S57enum> Functn = new EnumMap<>(FncFNC.class); static {Functn.put(FncFNC.FNC_UNKN, new S57enum(0, ""));
    560571  Functn.put(FncFNC.FNC_HBRM, new S57enum(2, "harbour_master")); Functn.put(FncFNC.FNC_CSTM, new S57enum(3, "customs")); Functn.put(FncFNC.FNC_HLTH, new S57enum(4, "health"));
     
    571582   Functn.put(FncFNC.FNC_COOL, new S57enum(35, "cooling")); Functn.put(FncFNC.FNC_OBS, new S57enum(36, "observation")); Functn.put(FncFNC.FNC_TMBL, new S57enum(37, "time_ball"));
    572583   Functn.put(FncFNC.FNC_CLOK, new S57enum(38, "clock")); Functn.put(FncFNC.FNC_CTRL, new S57enum(39, "control")); Functn.put(FncFNC.FNC_ASHM, new S57enum(40, "airship_mooring"));
    573    Functn.put(FncFNC.FNC_STAD, new S57enum(41, "stadium")); Functn.put(FncFNC.FNC_BUSS, new S57enum(42, "bus_station"));
    574  }
     584   Functn.put(FncFNC.FNC_STAD, new S57enum(41, "stadium")); Functn.put(FncFNC.FNC_BUSS, new S57enum(42, "bus_station")); Functn.put(FncFNC.FNC_PTRM, new S57enum(43, "passenger_terminal"));
     585   Functn.put(FncFNC.FNC_SRCT, new S57enum(44, "sea_rescue_control")); Functn.put(FncFNC.FNC_OBSV, new S57enum(45, "observatory")); Functn.put(FncFNC.FNC_OREC, new S57enum(46, "ore_crusher"));
     586   Functn.put(FncFNC.FNC_BTHS, new S57enum(47, "boathouse")); Functn.put(FncFNC.FNC_PMPS, new S57enum(48, "pumping_station"));
     587 }
     588
    575589 public enum UniHLU { HLU_UNKN, HLU_METR, HLU_FEET, HLU_KMTR, HLU_HMTR, HLU_SMIL, HLU_NMIL }
    576590 private static final EnumMap<UniHLU, S57enum> Hunits = new EnumMap<>(UniHLU.class); static { Hunits.put(UniHLU.HLU_UNKN, new S57enum(0, ""));
     
    606620  Marsys.put(MarSYS.SYS_BWR2, new S57enum(13, "bniwr2")); Marsys.put(MarSYS.SYS_BNWR, new S57enum(14, "bniwr")); Marsys.put(MarSYS.SYS_PPWB, new S57enum(15, "ppwbc"));
    607621 }
    608  public enum NatCON { CON_UNKN, CON_MSNY, CON_CONC, CON_BDRS, CON_HSRF, CON_USRF, CON_WOOD, CON_METL, CON_GRP, CON_PNTD, CON_FMWK }
     622 public enum NatCON { CON_UNKN, CON_MSNY, CON_CONC, CON_BDRS, CON_HSRF, CON_USRF, CON_WOOD, CON_METL, CON_GRP, CON_PNTD, CON_FMWK, CON_LATT, CON_GLAS }
    609623 private static final EnumMap<NatCON, S57enum> Natcon = new EnumMap<>(NatCON.class); static { Natcon.put(NatCON.CON_UNKN, new S57enum(0, ""));
    610624  Natcon.put(NatCON.CON_MSNY, new S57enum(1, "masonry")); Natcon.put(NatCON.CON_CONC, new S57enum(2, "concreted")); Natcon.put(NatCON.CON_BDRS, new S57enum(3, "loose_boulders"));
    611625  Natcon.put(NatCON.CON_HSRF, new S57enum(4, "hard-surfaced")); Natcon.put(NatCON.CON_USRF, new S57enum(5, "unsurfaced")); Natcon.put(NatCON.CON_WOOD, new S57enum(6, "wooden"));
    612626  Natcon.put(NatCON.CON_METL, new S57enum(7, "metal")); Natcon.put(NatCON.CON_GRP, new S57enum(8, "grp")); Natcon.put(NatCON.CON_PNTD, new S57enum(9, "painted"));
    613   Natcon.put(NatCON.CON_FMWK, new S57enum(10, "framework"));
     627  Natcon.put(NatCON.CON_FMWK, new S57enum(10, "framework")); Natcon.put(NatCON.CON_LATT, new S57enum(11, "latticed")); Natcon.put(NatCON.CON_GLAS, new S57enum(12, "glass"));
    614628 }
    615629 public enum NatSUR { SUR_UNKN, SUR_MUD, SUR_CLAY, SUR_SILT, SUR_SAND, SUR_STON, SUR_GRVL, SUR_PBBL, SUR_CBBL, SUR_ROCK, SUR_LAVA, SUR_CORL, SUR_SHEL, SUR_BLDR }
     
    648662 }
    649663 public enum RstRST { RST_UNKN, RST_NANC, RST_RANC, RST_NFSH, RST_RFSH, RST_NTRL, RST_RTRL, RST_NENT, RST_RENT, RST_NDRG, RST_RDRG, RST_NDVG, RST_RDVG, RST_NWAK, RST_TBAV, RST_NCST, RST_NDSC,
    650   RST_RDSC, RST_NEXD, RST_REXD, RST_NDRL, RST_RDRL, RST_NHAR, RST_NLTG, RST_NDRA, RST_NSTP, RST_NLND, RST_RSPD, RST_NOVT, RST_NCOV, RST_NPOV, RST_NBRT, RST_RBRT, RST_NMFT, RST_RMFT, RST_NTRN, RST_RFWD }
     664  RST_RDSC, RST_NEXD, RST_REXD, RST_NDRL, RST_RDRL, RST_NHAR, RST_NLTG, RST_NDRA, RST_NSTP, RST_NLND, RST_RSPD, RST_NOVT, RST_NCOV, RST_NPOV, RST_NBRT, RST_RBRT, RST_NMFT, RST_RMFT, RST_NTRN,
     665  RST_RFWD, RST_RFWW, RST_NSWM  }
    651666 private static final EnumMap<RstRST, S57enum> Restrn = new EnumMap<>(RstRST.class); static { Restrn.put(RstRST.RST_UNKN, new S57enum(0, ""));
    652667  Restrn.put(RstRST.RST_NANC, new S57enum(1, "no_anchoring")); Restrn.put(RstRST.RST_RANC, new S57enum(2, "restricted_anchoring")); Restrn.put(RstRST.RST_NFSH, new S57enum(3, "no_fishing"));
     
    663678   Restrn.put(RstRST.RST_NBRT, new S57enum(31, "no_berthing")); Restrn.put(RstRST.RST_RBRT, new S57enum(32, "restricted_berthing")); Restrn.put(RstRST.RST_NMFT, new S57enum(33, "no_making_fast"));
    664679   Restrn.put(RstRST.RST_RMFT, new S57enum(34, "restricted_making_fast")); Restrn.put(RstRST.RST_NTRN, new S57enum(35, "no_turning")); Restrn.put(RstRST.RST_RFWD, new S57enum(36, "restricted_fairway_depth"));
     680   Restrn.put(RstRST.RST_RFWW, new S57enum(37, "restricted_fairway_width")); Restrn.put(RstRST.RST_NSWM, new S57enum(38, "no_swimming"));
    665681 }
    666682 public enum SigGEN { GEN_UNKN, GEN_AUTO, GEN_WAVE, GEN_HAND, GEN_WIND }
     
    688704 public enum TecSOU { SOU_UNKN, SOU_ESND, SOU_FSSN, SOU_MLBM, SOU_DIVR, SOU_LDLN, SOU_WDRG, SOU_LASR, SOU_VACC, SOU_EMAG, SOU_PHGY, SOU_SATL, SOU_LEVL, SOU_SSSN, SOU_COMP }
    689705 private static final EnumMap<TecSOU, S57enum> Tecsou = new EnumMap<>(TecSOU.class); static { Tecsou.put(TecSOU.SOU_UNKN, new S57enum(0, ""));
    690   Tecsou.put(TecSOU.SOU_ESND, new S57enum(1, "echo-sounder")); Tecsou.put(TecSOU.SOU_FSSN, new S57enum(2, "side-scan_sonar")); Tecsou.put(TecSOU.SOU_MLBM, new S57enum(3, "multi-beam"));
     706        Tecsou.put(TecSOU.SOU_ESND, new S57enum(1, "echo-sounder")); Tecsou.put(TecSOU.SOU_FSSN, new S57enum(2, "side-scan_sonar")); Tecsou.put(TecSOU.SOU_MLBM, new S57enum(3, "multi-beam"));
    691707  Tecsou.put(TecSOU.SOU_DIVR, new S57enum(4, "diver")); Tecsou.put(TecSOU.SOU_LDLN, new S57enum(5, "lead-line")); Tecsou.put(TecSOU.SOU_WDRG, new S57enum(6, "wire-drag"));
    692708  Tecsou.put(TecSOU.SOU_LASR, new S57enum(7, "laser")); Tecsou.put(TecSOU.SOU_VACC, new S57enum(8, "vertical_acoustic")); Tecsou.put(TecSOU.SOU_EMAG, new S57enum(9, "electromagnetic"));
    693    Tecsou.put(TecSOU.SOU_PHGY, new S57enum(10, "photogrammetry")); Tecsou.put(TecSOU.SOU_SATL, new S57enum(11, "satellite")); Tecsou.put(TecSOU.SOU_LEVL, new S57enum(12, "levelling"));
    694    Tecsou.put(TecSOU.SOU_SSSN, new S57enum(13, "side-scan_sonar_swept")); Tecsou.put(TecSOU.SOU_COMP, new S57enum(14, "computer"));
     709  Tecsou.put(TecSOU.SOU_PHGY, new S57enum(10, "photogrammetry")); Tecsou.put(TecSOU.SOU_SATL, new S57enum(11, "satellite")); Tecsou.put(TecSOU.SOU_LEVL, new S57enum(12, "levelling"));
     710  Tecsou.put(TecSOU.SOU_SSSN, new S57enum(13, "side-scan_sonar_swept")); Tecsou.put(TecSOU.SOU_COMP, new S57enum(14, "computer"));
    695711 }
    696712 public enum TopSHP { TOP_UNKN, TOP_CONE, TOP_ICONE, TOP_SPHR, TOP_ISD, TOP_CAN, TOP_BORD, TOP_SALT, TOP_CROS, TOP_CUBE, TOP_WEST, TOP_EAST, TOP_RHOM,
    697713   TOP_NORTH, TOP_SOUTH, TOP_BESM, TOP_IBESM, TOP_FLAG, TOP_SPRH, TOP_SQUR, TOP_HRECT, TOP_VRECT, TOP_TRAP, TOP_ITRAP, TOP_TRI, TOP_ITRI, TOP_CIRC,
    698    TOP_CRSS, TOP_T, TOP_TRCL, TOP_CRCL, TOP_RHCL, TOP_CLTR, TOP_OTHR }
    699  private static final EnumMap<TopSHP, S57enum> Topshp = new EnumMap<>(TopSHP.class); static { Topshp.put(TopSHP.TOP_UNKN, new S57enum(0, ""));
    700   Topshp.put(TopSHP.TOP_CONE, new S57enum(1, "cone, point up")); Topshp.put(TopSHP.TOP_ICONE, new S57enum(2, "cone, point down")); Topshp.put(TopSHP.TOP_SPHR, new S57enum(3, "sphere"));
    701   Topshp.put(TopSHP.TOP_ISD, new S57enum(4, "2 spheres")); Topshp.put(TopSHP.TOP_CAN, new S57enum(5, "cylinder")); Topshp.put(TopSHP.TOP_BORD, new S57enum(6, "board"));
    702   Topshp.put(TopSHP.TOP_SALT, new S57enum(7, "x-shape")); Topshp.put(TopSHP.TOP_CROS, new S57enum(8, "cross")); Topshp.put(TopSHP.TOP_CUBE, new S57enum(9, "cube, point up"));
    703   Topshp.put(TopSHP.TOP_WEST, new S57enum(10, "2 cones point together")); Topshp.put(TopSHP.TOP_EAST, new S57enum(11, "2 cones base together")); Topshp.put(TopSHP.TOP_RHOM, new S57enum(12, "rhombus"));
    704    Topshp.put(TopSHP.TOP_NORTH, new S57enum(13, "2 cones up")); Topshp.put(TopSHP.TOP_SOUTH, new S57enum(14, "2 cones down")); Topshp.put(TopSHP.TOP_BESM, new S57enum(15, "besom, point up"));
    705    Topshp.put(TopSHP.TOP_IBESM, new S57enum(16, "besom, point down")); Topshp.put(TopSHP.TOP_FLAG, new S57enum(17, "flag")); Topshp.put(TopSHP.TOP_SPRH, new S57enum(18, "sphere over rhombus"));
    706    Topshp.put(TopSHP.TOP_SQUR, new S57enum(19, "square")); Topshp.put(TopSHP.TOP_HRECT, new S57enum(20, "rectangle, horizontal")); Topshp.put(TopSHP.TOP_VRECT, new S57enum(21, "rectangle, vertical"));
    707    Topshp.put(TopSHP.TOP_TRAP, new S57enum(22, "trapezium, up")); Topshp.put(TopSHP.TOP_ITRAP, new S57enum(23, "trapezium, down")); Topshp.put(TopSHP.TOP_TRI, new S57enum(24, "triangle, point up"));
    708    Topshp.put(TopSHP.TOP_ITRI, new S57enum(25, "triangle, point down")); Topshp.put(TopSHP.TOP_CIRC, new S57enum(26, "circle")); Topshp.put(TopSHP.TOP_CRSS, new S57enum(27, "2 upright crosses"));
    709    Topshp.put(TopSHP.TOP_T, new S57enum(28, "t-shape")); Topshp.put(TopSHP.TOP_TRCL, new S57enum(29, "triangle, point up over circle")); Topshp.put(TopSHP.TOP_CRCL, new S57enum(30, "upright cross over circle"));
    710    Topshp.put(TopSHP.TOP_RHCL, new S57enum(31, "rhombus over circle")); Topshp.put(TopSHP.TOP_CLTR, new S57enum(32, "circle over triangle, point up")); Topshp.put(TopSHP.TOP_OTHR, new S57enum(33, "other"));
    711  }
     714   TOP_CRSS, TOP_T, TOP_TRCL, TOP_CRCL, TOP_RHCL, TOP_CLTR, TOP_OTHR, TOP_CYSP, TOP_COSP }
     715
     716        private static final EnumMap<TopSHP, S57enum> Topshp = new EnumMap<>(TopSHP.class); static { Topshp.put(TopSHP.TOP_UNKN, new S57enum(0, ""));
     717                Topshp.put(TopSHP.TOP_CONE, new S57enum(1, "cone, point up")); Topshp.put(TopSHP.TOP_ICONE, new S57enum(2, "cone, point down")); Topshp.put(TopSHP.TOP_SPHR, new S57enum(3, "sphere"));
     718                Topshp.put(TopSHP.TOP_ISD, new S57enum(4, "2 spheres")); Topshp.put(TopSHP.TOP_CAN, new S57enum(5, "cylinder")); Topshp.put(TopSHP.TOP_BORD, new S57enum(6, "board"));
     719                Topshp.put(TopSHP.TOP_SALT, new S57enum(7, "x-shape")); Topshp.put(TopSHP.TOP_CROS, new S57enum(8, "cross")); Topshp.put(TopSHP.TOP_CUBE, new S57enum(9, "cube, point up"));
     720                Topshp.put(TopSHP.TOP_WEST, new S57enum(10, "2 cones point together")); Topshp.put(TopSHP.TOP_EAST, new S57enum(11, "2 cones base together")); Topshp.put(TopSHP.TOP_RHOM, new S57enum(12, "rhombus"));
     721                Topshp.put(TopSHP.TOP_NORTH, new S57enum(13, "2 cones up")); Topshp.put(TopSHP.TOP_SOUTH, new S57enum(14, "2 cones down")); Topshp.put(TopSHP.TOP_BESM, new S57enum(15, "besom, point up"));
     722                Topshp.put(TopSHP.TOP_IBESM, new S57enum(16, "besom, point down")); Topshp.put(TopSHP.TOP_FLAG, new S57enum(17, "flag")); Topshp.put(TopSHP.TOP_SPRH, new S57enum(18, "sphere over rhombus"));
     723                Topshp.put(TopSHP.TOP_SQUR, new S57enum(19, "square")); Topshp.put(TopSHP.TOP_HRECT, new S57enum(20, "rectangle, horizontal")); Topshp.put(TopSHP.TOP_VRECT, new S57enum(21, "rectangle, vertical"));
     724                Topshp.put(TopSHP.TOP_TRAP, new S57enum(22, "trapezium, up")); Topshp.put(TopSHP.TOP_ITRAP, new S57enum(23, "trapezium, down")); Topshp.put(TopSHP.TOP_TRI, new S57enum(24, "triangle, point up"));
     725                Topshp.put(TopSHP.TOP_ITRI, new S57enum(25, "triangle, point down")); Topshp.put(TopSHP.TOP_CIRC, new S57enum(26, "circle")); Topshp.put(TopSHP.TOP_CRSS, new S57enum(27, "2 upright crosses"));
     726                Topshp.put(TopSHP.TOP_T, new S57enum(28, "t-shape")); Topshp.put(TopSHP.TOP_TRCL, new S57enum(29, "triangle, point up over circle")); Topshp.put(TopSHP.TOP_CRCL, new S57enum(30, "upright cross over circle"));
     727                Topshp.put(TopSHP.TOP_RHCL, new S57enum(31, "rhombus over circle")); Topshp.put(TopSHP.TOP_CLTR, new S57enum(32, "circle over triangle, point up")); Topshp.put(TopSHP.TOP_OTHR, new S57enum(33, "other"));
     728                Topshp.put(TopSHP.TOP_CYSP, new S57enum(34, "cylinder over sphere")); Topshp.put(TopSHP.TOP_COSP, new S57enum(35, "cone, point up over sphere"));
     729        }
    712730 public enum TrfTRF { TRF_UNKN, TRF_INBD, TRF_OBND, TRF_ONEW, TRF_TWOW }
    713731 private static final EnumMap<TrfTRF, S57enum> Trafic = new EnumMap<>(TrfTRF.class); static { Trafic.put(TrfTRF.TRF_UNKN, new S57enum(0, ""));
     
    765783 Bnkwtw.put(BnkWTW.BWW_LEFT, new S57enum(1, "left")); Bnkwtw.put(BnkWTW.BWW_RGHT, new S57enum(2, "right"));
    766784 }
    767  public enum CatNMK { NMK_UNKN, NMK_NENT, NMK_CLSA, NMK_NOVK, NMK_NCOV, NMK_NPAS, NMK_NCPS, NMK_NBRT, NMK_NBLL, NMK_NANK, NMK_NMOR, NMK_NTRN, NMK_NWSH,
     785 public enum CatNMK { NMK_UNKN, NMK_NENT, NMK_CLSA, NMK_NOVK, NMK_NCOV, NMK_NPAS, NMK_NBRT, NMK_NBLL, NMK_NANK, NMK_NMOR, NMK_NTRN, NMK_NWSH,
    768786  NMK_NPSL, NMK_NPSR, NMK_NMTC, NMK_NSPC, NMK_NWSK, NMK_NSLC, NMK_NUPC, NMK_NSLB, NMK_NWBK, NMK_NHSC, NMK_NLBG, NMK_MVTL, NMK_MVTR, NMK_MVTP,
    769787  NMK_MVTS, NMK_KPTP, NMK_KPTS, NMK_CSTP, NMK_CSTS, NMK_STOP, NMK_SPDL, NMK_SHRN, NMK_KPLO, NMK_GWJN, NMK_GWCS, NMK_MKRC, NMK_LMDP, NMK_LMHR,
     
    772790  NMK_BTU1, NMK_BTU2, NMK_BTU3, NMK_ANKP, NMK_MORP, NMK_VLBT, NMK_TRNA, NMK_SWWC, NMK_SWWR, NMK_SWWL, NMK_WRSA, NMK_WLSA, NMK_WRSL, NMK_WLSR,
    773791  NMK_WRAL, NMK_WLAR, NMK_MWWC, NMK_MWWJ, NMK_MWAR, NMK_MWAL, NMK_WARL, NMK_WALR, NMK_PEND, NMK_DWTR, NMK_TELE, NMK_MTCP, NMK_SPCP, NMK_WSKP,
    774   NMK_SLCP, NMK_UPCP, NMK_SLBP, NMK_RADI, NMK_WTBP, NMK_HSCP, NMK_LBGP, NMK_KTPM, NMK_KTSM, NMK_KTMR, NMK_CRTP, NMK_CRTS, NMK_TRBM, NMK_RSPD }
     792  NMK_SLCP, NMK_UPCP, NMK_SLBP, NMK_RADI, NMK_WTBP, NMK_HSCP, NMK_LBGP, NMK_KTPM, NMK_KTSM, NMK_KTMR, NMK_CRTP, NMK_CRTS, NMK_TRBM, NMK_RSPD,
     793  NMK_WRKP, NMK_PSBS, NMK_NCPS, NMK_NSMC, NMK_ATTN, NMK_FWCR, NMK_SHIP }
    775794 private static final EnumMap<CatNMK, S57enum> Catnmk = new EnumMap<>(CatNMK.class); static { Catnmk.put(CatNMK.NMK_UNKN, new S57enum(0, ""));
    776795  Catnmk.put(CatNMK.NMK_NENT, new S57enum(1, "no_entry")); Catnmk.put(CatNMK.NMK_CLSA, new S57enum(2, "closed_area")); Catnmk.put(CatNMK.NMK_NOVK, new S57enum(3, "no_overtaking"));
     
    814833   Catnmk.put(CatNMK.NMK_KTPM, new S57enum(103, "keep_to_port_margin")); Catnmk.put(CatNMK.NMK_KTSM, new S57enum(104, "keep_to_starboard_margin")); Catnmk.put(CatNMK.NMK_KTMR, new S57enum(105, "keep_to_mid-river"));
    815834   Catnmk.put(CatNMK.NMK_CRTP, new S57enum(106, "cross_river_to_port")); Catnmk.put(CatNMK.NMK_CRTS, new S57enum(107, "cross_river_to_starboard")); Catnmk.put(CatNMK.NMK_TRBM, new S57enum(108, "traffic_between_margins"));
    816    Catnmk.put(CatNMK.NMK_RSPD, new S57enum(109, "reduce_speed")); Catnmk.put(CatNMK.NMK_NCPS, new S57enum(199, "no_convoy_passing"));
     835   Catnmk.put(CatNMK.NMK_RSPD, new S57enum(109, "reduce_speed")); Catnmk.put(CatNMK.NMK_WRKP, new S57enum(110, "wreck_pontoon")); Catnmk.put(CatNMK.NMK_PSBS, new S57enum(111, "pass_both_sides"));
     836   Catnmk.put(CatNMK.NMK_NCPS, new S57enum(112, "no_convoy_passing")); Catnmk.put(CatNMK.NMK_NSMC, new S57enum(113, "no_small_craft")); Catnmk.put(CatNMK.NMK_ATTN, new S57enum(114, "attention"));
     837   Catnmk.put(CatNMK.NMK_FWCR, new S57enum(115, "fairway_crossing")); Catnmk.put(CatNMK.NMK_SHIP, new S57enum(112, "shipping_inspection_point"));
    817838 }
    818839 public enum ClsDNG { DNG_UNKN, DNG_1BLU, DNG_2BLU, DNG_3BLU, DNG_0BLU, DNG_1RED }
  • applications/editors/josm/plugins/seachart/src/symbols/Areas.java

    r31044 r32101  
    5353                LaneArrow.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-240,40,240)));
    5454                LaneArrow.add(new Instr(Form.STRK, new BasicStroke(10, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
    55                 LaneArrow.add(new Instr(Form.FILL, Symbols.Mline));
     55                LaneArrow.add(new Instr(Form.FILL, Symbols.Mtss));
    5656                Path2D.Double p = new Path2D.Double(); p.moveTo(15,0); p.lineTo(15,-195); p.lineTo(40,-195);
    5757                p.lineTo(0,-240); p.lineTo(-40,-195); p.lineTo(-15,-195); p.lineTo(-15,0); p.closePath();
     
    204204                g2.draw(p);
    205205        }
     206        public static final Symbol KelpS = new Symbol();
     207        static {
     208                KelpS.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
     209                Path2D.Double p = new Path2D.Double(); p.moveTo(-60,0); p.curveTo(-20,-20,-24,40,24,20); p.moveTo(-60,0); p.quadTo(-48,20,-32,12);
     210                p.moveTo(-36,-4); p.quadTo(-24,-24,-4,-16); p.quadTo(8,-32,20,-24); p.moveTo(-4,-16); p.quadTo(8,0,20,-8);
     211                p.moveTo(-8,20); p.quadTo(12,0,36,8); p.quadTo(48,24,60,16); p.moveTo(36,8); p.quadTo(48,-8,60,0);
     212                KelpS.add(new Instr(Form.PLIN, p));
     213        }
     214        public static final BufferedImage KelpA = new BufferedImage(240, 240, BufferedImage.TYPE_INT_ARGB);
     215        static {
     216                Graphics2D g2 = KelpA.createGraphics();
     217                g2.setStroke(new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
     218                g2.setBackground(new Color(0, true));
     219                g2.clearRect(0,  0, 240, 240);
     220                g2.setPaint(Color.black);
     221                Path2D.Double p = new Path2D.Double();
     222                        p.moveTo(0,60); p.curveTo(40,40,44,100,84,80); p.moveTo(0,60); p.quadTo(12,80,28,72); p.moveTo(24,56); p.quadTo(36,36,56,44); p.quadTo(68,28,80,36);
     223      p.moveTo(56,44); p.quadTo(68,60,80,52); p.moveTo(52,76); p.quadTo(72,60,96,68); p.quadTo(108,84,120,76); p.moveTo(96,68); p.quadTo(108,52,120,60);
     224      p.moveTo(120,180); p.curveTo(160,160,164,220,204,200); p.moveTo(120,180); p.quadTo(132,200,148,192); p.moveTo(144,176); p.quadTo(156,156,176,164); p.quadTo(188,148,200,156);
     225      p.moveTo(176,164); p.quadTo(188,180,200,172); p.moveTo(172,196); p.quadTo(192,180,216,188); p.quadTo(228,204,240,196); p.moveTo(216,188); p.quadTo(228,172,240,180);
     226                g2.draw(p);
     227        }
    206228}
  • applications/editors/josm/plugins/seachart/src/symbols/Harbours.java

    r32088 r32101  
    159159                LandingSteps.add(new Instr(Form.PGON, p));
    160160        }
    161         public static final Symbol Lock_Gate = new Symbol();
    162         public static final Symbol Lock = new Symbol();
    163161        public static final Symbol Marina = new Symbol();
    164162        static {
  • applications/editors/josm/plugins/seachart/src/symbols/Notices.java

    r30894 r32101  
    10711071  };
    10721072
     1073  private static final Symbol NoticeBB = new Symbol();
     1074  static {
     1075        NoticeBB.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1076        NoticeBB.add(new Instr(Form.LINE, new Line2D.Double(-29,-29,-29,29)));
     1077        NoticeBB.add(new Instr(Form.LINE, new Line2D.Double(29,-29,29,29)));
     1078        NoticeBB.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1079        NoticeBB.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1080  }
     1081 
     1082  private static final Symbol NoticeBP = new Symbol();
     1083        static {
     1084                NoticeBP.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1085                NoticeBP.add(new Instr(Form.FILL, Color.white));
     1086                NoticeBP.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1087                NoticeBP.add(new Instr(Form.FILL, Color.black));
     1088                NoticeBP.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1089        }
     1090
     1091  private static final Symbol NoticeCR = new Symbol();
     1092        static {
     1093                NoticeCR.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1094                NoticeCR.add(new Instr(Form.FILL, Color.white));
     1095                Path2D.Double p = new Path2D.Double(); p.moveTo(0, -30); p.lineTo(-30, 0); p.lineTo(0, 30); p.lineTo(30, 0); p.closePath();
     1096                NoticeCR.add(new Instr(Form.PGON, p));
     1097                NoticeCR.add(new Instr(Form.FILL, Color.black));
     1098                NoticeCR.add(new Instr(Form.PLIN, p));
     1099        }
     1100
     1101  private static final Symbol NoticeKT = new Symbol();
     1102        static {
     1103                NoticeKT.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1104                NoticeKT.add(new Instr(Form.FILL, Color.white));
     1105                Path2D.Double p = new Path2D.Double(); p.moveTo(0,-30); p.lineTo(-30,30); p.lineTo(30,30); p.closePath();
     1106                NoticeKT.add(new Instr(Form.PGON, p));
     1107                NoticeKT.add(new Instr(Form.FILL, Color.black));
     1108                NoticeKT.add(new Instr(Form.PLIN, p));
     1109        }
     1110
    10731111        public static final Symbol NoticeBnank = new Symbol();
    10741112        static {
    10751113                NoticeBnank.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
    10761114                Symbol colours = new Symbol();
    1077                 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();
    1078                 colours.add(new Instr(Form.P1, p));
    1079                 p = new Path2D.Double(); p.moveTo(0.0,-10.0); p.lineTo(-15.0,-43.0); p.lineTo(15.0,-43.0); p.closePath();
    1080                 colours.add(new Instr(Form.P2, p));
     1115                Symbol ss = new Symbol();
     1116                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1117                colours.add(new Instr(Form.N1, ss));
     1118                ss = new Symbol();
     1119                ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.4, 0, 0, null, null)));
     1120                ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
     1121                ss.add(new Instr(Form.LINE, new Line2D.Double(-27,-27,27,27)));
     1122                ss.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1123                ss.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1124                colours.add(new Instr(Form.N2, ss));
    10811125                NoticeBnank.add(new Instr(Form.COLR, colours));
    10821126        }
    10831127        public static final Symbol NoticeBlmhr = new Symbol();
     1128        static {
     1129                NoticeBlmhr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1130                Symbol colours = new Symbol();
     1131                Symbol ss = new Symbol();
     1132                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1133                colours.add(new Instr(Form.N1, ss));
     1134                ss = new Symbol();
     1135                ss.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
     1136                Path2D.Double p = new Path2D.Double(); p.moveTo(-29,-29); p.lineTo(29,-29); p.lineTo(0,0); p.closePath();
     1137                ss.add(new Instr(Form.PGON, p));
     1138                ss.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1139                ss.add(new Instr(Form.RRCT, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1140                colours.add(new Instr(Form.N2, ss));
     1141                NoticeBlmhr.add(new Instr(Form.COLR, colours));
     1142        }
     1143        public static final Symbol NoticeBktpm = new Symbol();
     1144        static {
     1145                NoticeBktpm.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1146                Symbol colours = new Symbol();
     1147                Symbol ss = new Symbol();
     1148                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1149                colours.add(new Instr(Form.N1, ss));
     1150                ss = new Symbol();
     1151                Path2D.Double p = new Path2D.Double(); p.moveTo(-14,-26); p.lineTo(-20,-12); p.lineTo(-8,-12); p.closePath();
     1152                ss.add(new Instr(Form.PGON, p));
     1153        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1154        ss.add(new Instr(Form.LINE, new Line2D.Double(-14,-16,-14,25)));
     1155                ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
     1156                colours.add(new Instr(Form.N2, ss));
     1157                NoticeBktpm.add(new Instr(Form.COLR, colours));
     1158        }
     1159        public static final Symbol NoticeBktsm = new Symbol();
     1160        static {
     1161                NoticeBktsm.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1162                Symbol colours = new Symbol();
     1163                Symbol ss = new Symbol();
     1164                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1165                colours.add(new Instr(Form.N1, ss));
     1166                ss = new Symbol();
     1167                Path2D.Double p = new Path2D.Double(); p.moveTo(14,-26); p.lineTo(20,-12); p.lineTo(8,-12); p.closePath();
     1168                ss.add(new Instr(Form.PGON, p));
     1169        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1170        ss.add(new Instr(Form.LINE, new Line2D.Double(14,-16,14,25)));
     1171                ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
     1172                colours.add(new Instr(Form.N2, ss));
     1173                NoticeBktsm.add(new Instr(Form.COLR, colours));
     1174        }
     1175        public static final Symbol NoticeBktmr = new Symbol();
     1176        static {
     1177                NoticeBktmr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1178                Symbol colours = new Symbol();
     1179                Symbol ss = new Symbol();
     1180                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1181                colours.add(new Instr(Form.N1, ss));
     1182                ss = new Symbol();
     1183                Path2D.Double p = new Path2D.Double(); p.moveTo(0,-26); p.lineTo(-6,-12); p.lineTo(6,-12); p.closePath();
     1184                ss.add(new Instr(Form.PGON, p));
     1185        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1186        ss.add(new Instr(Form.LINE, new Line2D.Double(0,-16,0,25)));
     1187                ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
     1188                colours.add(new Instr(Form.N2, ss));
     1189                NoticeBktmr.add(new Instr(Form.COLR, colours));
     1190        }
     1191        public static final Symbol NoticeBcrtp = new Symbol();
     1192        static {
     1193                NoticeBcrtp.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1194                Symbol colours = new Symbol();
     1195                Symbol ss = new Symbol();
     1196                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1197                colours.add(new Instr(Form.N1, ss));
     1198                ss = new Symbol();
     1199                Path2D.Double p = new Path2D.Double(); p.moveTo(-14,-26); p.lineTo(-20,-12); p.lineTo(-8,-12); p.closePath();
     1200                ss.add(new Instr(Form.PGON, p));
     1201        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1202                p = new Path2D.Double(); p.moveTo(-14,-16); p.lineTo(-14,0); p.lineTo(14,10); p.lineTo(14,25);
     1203                ss.add(new Instr(Form.PLIN, p));
     1204                ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
     1205                colours.add(new Instr(Form.N2, ss));
     1206                NoticeBcrtp.add(new Instr(Form.COLR, colours));
     1207        }
     1208        public static final Symbol NoticeBcrts = new Symbol();
     1209        static {
     1210                NoticeBcrts.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1211                Symbol colours = new Symbol();
     1212                Symbol ss = new Symbol();
     1213                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1214                colours.add(new Instr(Form.N1, ss));
     1215                ss = new Symbol();
     1216                Path2D.Double p = new Path2D.Double(); p.moveTo(14,-26); p.lineTo(20,-12); p.lineTo(8,-12); p.closePath();
     1217                ss.add(new Instr(Form.PGON, p));
     1218        ss.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1219                p = new Path2D.Double(); p.moveTo(14,-16); p.lineTo(14,0); p.lineTo(-14,10); p.lineTo(-14,25);
     1220                ss.add(new Instr(Form.PLIN, p));
     1221                ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
     1222                colours.add(new Instr(Form.N2, ss));
     1223                NoticeBcrts.add(new Instr(Form.COLR, colours));
     1224        }
     1225        public static final Symbol NoticeBtrbm = new Symbol();
     1226        static {
     1227                NoticeBtrbm.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1228                Symbol colours = new Symbol();
     1229                Symbol ss = new Symbol();
     1230                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1231                colours.add(new Instr(Form.N1, ss));
     1232                ss = new Symbol();
     1233        ss.add(new Instr(Form.STRK, new BasicStroke(15, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1234        ss.add(new Instr(Form.LINE, new Line2D.Double(0,-25,0,25)));
     1235        ss.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1236        ss.add(new Instr(Form.LINE, new Line2D.Double(-20,0,20,0)));
     1237                ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
     1238                colours.add(new Instr(Form.N2, ss));
     1239                NoticeBtrbm.add(new Instr(Form.COLR, colours));
     1240        }
     1241        public static final Symbol NoticeBrspd = new Symbol();
     1242        static {
     1243                NoticeBrspd.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1244                Symbol colours = new Symbol();
     1245                Symbol ss = new Symbol();
     1246                ss.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1247                colours.add(new Instr(Form.N1, ss));
     1248                ss = new Symbol();
     1249                ss.add(new Instr(Form.TEXT, new Caption("R", new Font("Arial", Font.BOLD, 60), null, new Delta(Handle.CC, null))));
     1250                ss.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBB, 1.0, 0, 0, null, null)));
     1251                colours.add(new Instr(Form.N2, ss));
     1252                NoticeBrspd.add(new Instr(Form.COLR, colours));
     1253        }
     1254        static final Symbol NoticePBwral = new Symbol();
     1255        static {
     1256                NoticePBwral.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1257                NoticePBwral.add(new Instr(Form.FILL, new Color(0xffff00)));
     1258                Path2D.Double p = new Path2D.Double(); p.moveTo(-20,-25); p.lineTo(-8,-5); p.lineTo(-8,25); p.lineTo(8,25); p.lineTo(8,-5);
     1259                p.lineTo(20,-25); p.lineTo(5,-25); p.lineTo(-5,-10); p.lineTo(-15,-25); p.closePath();
     1260                NoticePBwral.add(new Instr(Form.PGON, p));
     1261        }
    10841262        public static final Symbol NoticeBwral = new Symbol();
    1085         public static final Symbol NoticeBwrar = new Symbol();
    1086         public static final Symbol NoticeBktpm = new Symbol();
    1087         public static final Symbol NoticeBktsm = new Symbol();
    1088         public static final Symbol NoticeBktmr = new Symbol();
    1089         public static final Symbol NoticeBcrtp = new Symbol();
    1090         public static final Symbol NoticeBcrts = new Symbol();
    1091         public static final Symbol NoticeBtrbm = new Symbol();
    1092         public static final Symbol NoticeBrspd = new Symbol();
     1263        static {
     1264                NoticeBwral.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1265                NoticeBwral.add(new Instr(Form.FILL, Color.black));
     1266                NoticeBwral.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1267                NoticeBwral.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticePBwral, 1.0, 0, 0, null, null)));
     1268        }
     1269        public static final Symbol NoticeBwlar = new Symbol();
     1270        static {
     1271                NoticeBwlar.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1272                NoticeBwlar.add(new Instr(Form.FILL, Color.black));
     1273                NoticeBwlar.add(new Instr(Form.RSHP, new RoundRectangle2D.Double(-30,-30,60,60,4,4)));
     1274                NoticeBwlar.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticePBwral, 1.0, 0, 0, null, new Delta(Handle.CC, AffineTransform.getScaleInstance(-1, 1)))));
     1275        }
     1276        public static final Symbol NoticeBoptr = new Symbol();
     1277        static {
     1278                NoticeBoptr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1279                NoticeBoptr.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBP, 1.0, 0, 0, null, null)));
     1280                NoticeBoptr.add(new Instr(Form.FILL, new Color(0x00a000)));
     1281                NoticeBoptr.add(new Instr(Form.RSHP, new Rectangle2D.Double(-20,-20,40,40)));
     1282        }
     1283        public static final Symbol NoticeBoptl = new Symbol();
     1284        static {
     1285                NoticeBoptl.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1286                NoticeBoptl.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBP, 1.0, 0, 0, null, null)));
     1287                NoticeBoptl.add(new Instr(Form.FILL, new Color(0xf00000)));
     1288                Path2D.Double p = new Path2D.Double(); p.moveTo(0,-20); p.lineTo(-20,20); p.lineTo(20,20); p.closePath();
     1289                NoticeBoptl.add(new Instr(Form.PGON, p));
     1290        }
    10931291        public static final EnumMap<CatNMK, Symbol> NmkBniwr = new EnumMap<CatNMK, Symbol>(CatNMK.class);
    10941292        static {
    1095                 NmkBniwr.put(CatNMK.NMK_NANK, NoticeBnank); NmkBniwr.put(CatNMK.NMK_LMHR, NoticeBlmhr); NmkBniwr.put(CatNMK.NMK_OPTR, NoticeD2a); NmkBniwr.put(CatNMK.NMK_OPTL, NoticeD2b);
    1096                 NmkBniwr.put(CatNMK.NMK_WRAL, NoticeBwral); NmkBniwr.put(CatNMK.NMK_WLAR, NoticeBwrar); NmkBniwr.put(CatNMK.NMK_KTPM, NoticeBktpm); NmkBniwr.put(CatNMK.NMK_KTSM, NoticeBktsm);
     1293                NmkBniwr.put(CatNMK.NMK_NANK, NoticeBnank); NmkBniwr.put(CatNMK.NMK_LMHR, NoticeBlmhr); NmkBniwr.put(CatNMK.NMK_OPTR, NoticeBoptr); NmkBniwr.put(CatNMK.NMK_OPTL, NoticeBoptl);
     1294                NmkBniwr.put(CatNMK.NMK_WRAL, NoticeBwral); NmkBniwr.put(CatNMK.NMK_WLAR, NoticeBwlar); NmkBniwr.put(CatNMK.NMK_KTPM, NoticeBktpm); NmkBniwr.put(CatNMK.NMK_KTSM, NoticeBktsm);
    10971295                NmkBniwr.put(CatNMK.NMK_KTMR, NoticeBktmr); NmkBniwr.put(CatNMK.NMK_CRTP, NoticeBcrtp); NmkBniwr.put(CatNMK.NMK_CRTS, NoticeBcrts); NmkBniwr.put(CatNMK.NMK_TRBM, NoticeBtrbm);
    10981296                NmkBniwr.put(CatNMK.NMK_RSPD, NoticeBrspd);
    10991297        }
     1298        public static final Symbol NoticePwralL = new Symbol();
     1299        static {
     1300                NoticePwralL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1301                NoticePwralL.add(new Instr(Form.FILL, Color.black));
     1302                Path2D.Double p = new Path2D.Double(); p.moveTo(0,-30); p.lineTo(-30,30); p.lineTo(30,30); p.closePath();
     1303                NoticePwralL.add(new Instr(Form.PGON, p));
     1304                NoticePwralL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticePBwral, 1.0, 0, 0, null, new Delta(Handle.TC, AffineTransform.getScaleInstance(0.5, 0.5)))));
     1305        }
     1306        public static final Symbol NoticePwralR = new Symbol();
     1307        static {
     1308                NoticePwralR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1309                NoticePwralR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBwral, 1.0, 0, 0, null, null)));
     1310        }
     1311        public static final Symbol NoticePwlarL = new Symbol();
     1312        static {
     1313                NoticePwlarL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1314                NoticePwlarL.add(new Instr(Form.FILL, Color.black));
     1315                Path2D.Double p = new Path2D.Double(); p.moveTo(0,-30); p.lineTo(-30,30); p.lineTo(30,30); p.closePath();
     1316                NoticePwlarL.add(new Instr(Form.PGON, p));
     1317                NoticePwlarL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticePBwral, 1.0, 0, 0, null, new Delta(Handle.TC, AffineTransform.getScaleInstance(-0.5, 0.5)))));
     1318        }
     1319        public static final Symbol NoticePwlarR = new Symbol();
     1320        static {
     1321                NoticePwlarR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1322                NoticePwlarR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBwlar, 1.0, 0, 0, null, null)));
     1323        }
     1324        public static final Symbol NoticePktmR = new Symbol();
     1325        static {
     1326                NoticePktmR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1327                NoticePktmR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBP, 1.0, 0, 0, null, null)));
     1328                NoticePktmR.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1329                NoticePktmR.add(new Instr(Form.FILL, new Color(0x00d400)));
     1330                NoticePktmR.add(new Instr(Form.RECT, new Rectangle2D.Double(-20,-20,40,40)));
     1331        }
     1332        public static final Symbol NoticePktmL = new Symbol();
     1333        static {
     1334                NoticePktmL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1335                NoticePktmL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeKT, 1.0, 0, 0, null, null)));
     1336                NoticePktmL.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1337                NoticePktmL.add(new Instr(Form.FILL, new Color(0xd40000)));
     1338                NoticePktmL.add(new Instr(Form.RECT, new Rectangle2D.Double(-12,2,24,24)));
     1339        }
     1340        public static final Symbol NoticePktmrL = new Symbol();
     1341        static {
     1342                NoticePktmrL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1343                NoticePktmrL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeKT, 1.0, 0, 0, null, null)));
     1344                NoticePktmrL.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1345                NoticePktmrL.add(new Instr(Form.FILL, new Color(0xd40000)));
     1346                NoticePktmrL.add(new Instr(Form.LINE, new Line2D.Double(-12,2,-12,28)));
     1347                NoticePktmrL.add(new Instr(Form.LINE, new Line2D.Double(12,2,12,28)));
     1348                NoticePktmrL.add(new Instr(Form.LINE, new Line2D.Double(-12,15,12,15)));
     1349        }
     1350        public static final Symbol NoticePktmrR = new Symbol();
     1351        static {
     1352                NoticePktmrR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1353                NoticePktmrR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeBP, 1.0, 0, 0, null, null)));
     1354                NoticePktmrR.add(new Instr(Form.STRK, new BasicStroke(8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1355                NoticePktmrR.add(new Instr(Form.FILL, new Color(0x00d400)));
     1356                NoticePktmrR.add(new Instr(Form.LINE, new Line2D.Double(-15,-20,-15,20)));
     1357                NoticePktmrR.add(new Instr(Form.LINE, new Line2D.Double(15,-20,15,20)));
     1358                NoticePktmrR.add(new Instr(Form.LINE, new Line2D.Double(-15,0,15,0)));
     1359        }
     1360        public static final Symbol NoticePcrL = new Symbol();
     1361        static {
     1362                NoticePcrL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1363                NoticePcrL.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1364                NoticePcrL.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeCR, 1.0, 0, 0, null, null)));
     1365                NoticePcrL.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1366                NoticePcrL.add(new Instr(Form.FILL, new Color(0xd40000)));
     1367                NoticePcrL.add(new Instr(Form.LINE, new Line2D.Double(-12,-12,12,12)));
     1368                NoticePcrL.add(new Instr(Form.LINE, new Line2D.Double(-12,12,12,-12)));
     1369        }
     1370        public static final Symbol NoticePcrR = new Symbol();
     1371        static {
     1372                NoticePcrR.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1373                NoticePcrR.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeCR, 1.0, 0, 0, null, null)));
     1374                NoticePcrR.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1375                NoticePcrR.add(new Instr(Form.FILL, new Color(0x00d400)));
     1376                NoticePcrR.add(new Instr(Form.LINE, new Line2D.Double(-12,-12,12,12)));
     1377                NoticePcrR.add(new Instr(Form.LINE, new Line2D.Double(-12,12,12,-12)));
     1378        }
     1379        static final Symbol NoticeRphib = new Symbol();
     1380        static {
     1381                NoticeRphib.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1382                NoticeRphib.add(new Instr(Form.FILL, new Color(0xd40000)));
     1383                NoticeRphib.add(new Instr(Form.ELPS, new Ellipse2D.Double(-30,-30,60,60)));
     1384                NoticeRphib.add(new Instr(Form.LINE, new Line2D.Double(-20,-20,20,20)));
     1385        }
     1386        static final Symbol NoticeRinfo = new Symbol();
     1387        static {
     1388                NoticeRinfo.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1389                NoticeRinfo.add(new Instr(Form.FILL, new Color(0xd40000)));
     1390                NoticeRinfo.add(new Instr(Form.RECT, new Rectangle2D.Double(-30,-30,60,60)));
     1391        }
     1392        public static final Symbol NoticeRnpas = new Symbol();
     1393        static {
     1394                NoticeRnpas.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1395                NoticeRnpas.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
     1396                NoticeRnpas.add(new Instr(Form.FILL, Color.black));
     1397                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);
     1398                p.closePath(); 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); p.closePath();
     1399                NoticeRnpas.add(new Instr(Form.PGON, p));
     1400        }
     1401        public static final Symbol NoticeRnank = new Symbol();
     1402        static {
     1403                NoticeRnank.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1404                NoticeRnank.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
     1405                NoticeRnank.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.4, 0, 0, new Scheme(Color.black), null)));
     1406        }
     1407        public static final Symbol NoticeRnwsh = new Symbol();
     1408        static {
     1409                NoticeRnwsh.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1410                NoticeRnwsh.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
     1411                NoticeRnwsh.add(new Instr(Form.FILL, Color.black));
     1412                Path2D.Double p = new Path2D.Double(); p.moveTo(-23,10); p.curveTo(-11,10,-12,4,0,4); p.curveTo(12,4,11,10,23,10);
     1413                p.moveTo(-23,-3); p.curveTo(-11,-3,-12,-9,0,-9); p.curveTo(12,-9,11,-3,23,-3);
     1414                NoticeRnwsh.add(new Instr(Form.PLIN, p));
     1415        }
     1416        public static final Symbol NoticeRlmhr = new Symbol();
     1417        static {
     1418                NoticeRlmhr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1419                NoticeRlmhr.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRinfo, 1.0, 0, 0, null, null)));
     1420                NoticeRlmhr.add(new Instr(Form.FILL, Color.black));
     1421                Path2D.Double p = new Path2D.Double(); p.moveTo(0,-10); p.lineTo(27,-27); p.lineTo(-27,-27); p.closePath();
     1422                NoticeRlmhr.add(new Instr(Form.PGON, p));
     1423        }
     1424        public static final Symbol NoticeRtrna = new Symbol();
     1425        static {
     1426                NoticeRtrna.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1427                NoticeRtrna.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeCR, 1.0, 0, 0, null, null)));
     1428                NoticeRtrna.add(new Instr(Form.STRK, new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1429                NoticeRtrna.add(new Instr(Form.EARC, new Arc2D.Double(-15.0,-15.0,30.0,30.0,315.0,-280.0,Arc2D.OPEN)));
     1430                Path2D.Double p = new Path2D.Double(); p.moveTo(18.8,-2.0); p.lineTo(15.8,-13.2); p.lineTo(7.5,-5.0); p.closePath();
     1431                NoticeRtrna.add(new Instr(Form.PGON, p));
     1432        }
     1433        public static final Symbol NoticeRncps = new Symbol();
     1434        static {
     1435                NoticeRncps.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1436                NoticeRncps.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
     1437                NoticeRncps.add(new Instr(Form.FILL, Color.black));
     1438                Path2D.Double p = new Path2D.Double(); p.moveTo(-10,0); p.lineTo(-10,8); p.lineTo(-6,8); p.lineTo(-12.5,16); p.lineTo(-19,8); p.lineTo(-15,8); p.lineTo(-15,0);
     1439                p.closePath(); p.moveTo(10,0); p.lineTo(10,-8); p.lineTo(6,-8); p.lineTo(12.5,-16); p.lineTo(19,-8); p.lineTo(15,-8); p.lineTo(15,0); p.closePath();
     1440                NoticeRncps.add(new Instr(Form.PGON, p));
     1441        }
     1442        public static final Symbol NoticeRnsmc = new Symbol();
     1443        static {
     1444                NoticeRnsmc.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1445                NoticeRnsmc.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRphib, 1.0, 0, 0, null, null)));
     1446                NoticeRnsmc.add(new Instr(Form.FILL, Color.black));
     1447                Path2D.Double p = new Path2D.Double(); p.moveTo(-15,5); p.lineTo(15,5); p.lineTo(25,-10); p.lineTo(12,-5); p.lineTo(-18,-1); p.closePath();
     1448                p.moveTo(-23,2); p.lineTo(-21,10); p.lineTo(-18,8); p.lineTo(-20,0); p.closePath();
     1449                NoticeRnsmc.add(new Instr(Form.PGON, p));
     1450        }
     1451        public static final Symbol NoticeRattn = new Symbol();
     1452        static {
     1453                NoticeRattn.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1454                NoticeRattn.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRinfo, 1.0, 0, 0, null, null)));
     1455                NoticeRattn.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     1456                NoticeRattn.add(new Instr(Form.FILL, Color.black));
     1457                NoticeRattn.add(new Instr(Form.LINE, new Line2D.Double(0,-20,0,10)));
     1458                NoticeRattn.add(new Instr(Form.LINE, new Line2D.Double(0,15,0,20)));
     1459        }
     1460        public static final Symbol NoticeRfwcr = new Symbol();
     1461        static {
     1462                NoticeRfwcr.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1463                NoticeRfwcr.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeRinfo, 1.0, 0, 0, null, null)));
     1464                NoticeRfwcr.add(new Instr(Form.FILL, Color.black));
     1465                Path2D.Double p = new Path2D.Double(); p.moveTo(0,-25); p.lineTo(-8,-15); p.lineTo(-8,5); p.lineTo(-20,5); p.lineTo(-20,15); p.lineTo(-8,15); p.lineTo(-8,25);
     1466                p.lineTo(8,25); p.lineTo(8,15); p.lineTo(20,15); p.lineTo(20,5); p.lineTo(8,5); p.lineTo(8,-15); p.closePath();
     1467                NoticeRfwcr.add(new Instr(Form.PGON, p));
     1468        }
     1469        public static final Symbol NoticeRship = new Symbol();
     1470        static {
     1471                NoticeRship.add(new Instr(Form.BBOX, new Rectangle2D.Double(-30,-30,60,60)));
     1472                NoticeRship.add(new Instr(Form.SYMB, new Symbols.SubSymbol(NoticeCR, 1.0, 0, 0, null, null)));
     1473                NoticeRship.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
     1474                NoticeRship.add(new Instr(Form.FILL, Color.black));
     1475                NoticeRship.add(new Instr(Form.LINE, new Line2D.Double(-12,-12,10,10)));
     1476                NoticeRship.add(new Instr(Form.LINE, new Line2D.Double(-12,-8,-8,-12)));
     1477                NoticeRship.add(new Instr(Form.LINE, new Line2D.Double(12,-12,-10,10)));
     1478                NoticeRship.add(new Instr(Form.LINE, new Line2D.Double(12,-8,8,-12)));
     1479                NoticeRship.add(new Instr(Form.EARC, new Arc2D.Double(-17,-13,30,30,185,80,Arc2D.OPEN)));
     1480                NoticeRship.add(new Instr(Form.EARC, new Arc2D.Double(-13,-13,30,30,275,80,Arc2D.OPEN)));
     1481        }
    11001482
    1101         public static final EnumMap<CatNMK, Symbol> NmkPpwbc = new EnumMap<CatNMK, Symbol>(CatNMK.class);
    1102         static {
    1103                 NmkPpwbc.put(CatNMK.NMK_WRAL, Notice); NmkPpwbc.put(CatNMK.NMK_WLAR, Notice); NmkPpwbc.put(CatNMK.NMK_KTPM, Notice); NmkPpwbc.put(CatNMK.NMK_KTSM, Notice);
    1104                 NmkPpwbc.put(CatNMK.NMK_KTMR, Notice); NmkPpwbc.put(CatNMK.NMK_CRTP, Notice); NmkPpwbc.put(CatNMK.NMK_CRTS, Notice);
     1483        public static final EnumMap<CatNMK, Symbol> NmkPpwbcl = new EnumMap<CatNMK, Symbol>(CatNMK.class);
     1484        static {
     1485                NmkPpwbcl.put(CatNMK.NMK_WRAL, NoticePwralL); NmkPpwbcl.put(CatNMK.NMK_WLAR, NoticePwlarL); NmkPpwbcl.put(CatNMK.NMK_KTPM, NoticePktmL); NmkPpwbcl.put(CatNMK.NMK_KTSM, NoticePktmL);
     1486                NmkPpwbcl.put(CatNMK.NMK_KTMR, NoticePktmrL); NmkPpwbcl.put(CatNMK.NMK_CRTP, NoticePcrL); NmkPpwbcl.put(CatNMK.NMK_CRTS, NoticePcrL);
     1487        }
     1488       
     1489        public static final EnumMap<CatNMK, Symbol> NmkPpwbcr = new EnumMap<CatNMK, Symbol>(CatNMK.class);
     1490        static {
     1491                NmkPpwbcr.put(CatNMK.NMK_WRAL, NoticePwralR); NmkPpwbcr.put(CatNMK.NMK_WLAR, NoticePwlarR); NmkPpwbcr.put(CatNMK.NMK_KTPM, NoticePktmR); NmkPpwbcr.put(CatNMK.NMK_KTSM, NoticePktmR);
     1492                NmkPpwbcr.put(CatNMK.NMK_KTMR, NoticePktmrR); NmkPpwbcr.put(CatNMK.NMK_CRTP, NoticePcrR); NmkPpwbcr.put(CatNMK.NMK_CRTS, NoticePcrR);
     1493        }
     1494       
     1495        public static final EnumMap<CatNMK, Symbol> NmkRiwr = new EnumMap<CatNMK, Symbol>(CatNMK.class);
     1496        static {
     1497                NmkRiwr.put(CatNMK.NMK_NPAS, NoticeRnpas); NmkRiwr.put(CatNMK.NMK_NANK, NoticeRnank); NmkRiwr.put(CatNMK.NMK_NWSH, NoticeRnwsh); NmkRiwr.put(CatNMK.NMK_LMHR, NoticeRlmhr); NmkRiwr.put(CatNMK.NMK_TRNA, NoticeRtrna);
     1498                NmkRiwr.put(CatNMK.NMK_NCPS, NoticeRncps); NmkRiwr.put(CatNMK.NMK_NSMC, NoticeRnsmc); NmkRiwr.put(CatNMK.NMK_ATTN, NoticeRattn); NmkRiwr.put(CatNMK.NMK_FWCR, NoticeRfwcr); NmkRiwr.put(CatNMK.NMK_SHIP, NoticeRship);
    11051499        }
    11061500       
    11071501        public static Scheme getScheme(MarSYS sys, BnkWTW bank) {
    11081502                ArrayList<Color> colours = new ArrayList<Color>();
    1109                 Scheme scheme = new Scheme(null, colours);
     1503                Scheme scheme = new Scheme(colours);
    11101504                switch (sys) {
    11111505                case SYS_BNWR:
     1506                case SYS_BWR2:
    11121507                        switch (bank) {
    11131508                        case BWW_LEFT:
     
    11251520                        }
    11261521                        break;
    1127                 case SYS_PPWB:
    1128                         switch (bank) {
    1129                         case BWW_LEFT:
    1130                                 colours.add(Color.white);
    1131                                 colours.add(new Color(0xd40000));
    1132                                 break;
    1133                         case BWW_RGHT:
    1134                                 colours.add(Color.white);
    1135                                 colours.add(new Color(0x00d400));
    1136                                 break;
    1137                         default:
    1138                                 break;
    1139                         }
    1140                         break;
    11411522                default:
    11421523                        break;
     
    11451526        }
    11461527       
    1147         public static Symbol getNotice(CatNMK cat, MarSYS sys) {
     1528        public static Symbol getNotice(CatNMK cat, MarSYS sys, BnkWTW bank) {
    11481529                Symbol symbol = null;
    11491530                switch (sys) {
     
    11521533                        break;
    11531534                case SYS_BNWR:
     1535                case SYS_BWR2:
    11541536                        symbol = NmkBniwr.get(cat);
    11551537                        break;
    11561538                case SYS_PPWB:
    1157                         symbol = NmkPpwbc.get(cat);
     1539                        switch (bank) {
     1540                        case BWW_LEFT:
     1541                                symbol = NmkPpwbcl.get(cat);
     1542                                break;
     1543                        case BWW_RGHT:
     1544                                symbol = NmkPpwbcr.get(cat);
     1545                                break;
     1546                        default:
     1547                                break;
     1548                        }
     1549                        break;
     1550                case SYS_RIWR:
     1551                        symbol = NmkRiwr.get(cat);
    11581552                        break;
    11591553                default:
  • applications/editors/josm/plugins/seachart/src/symbols/Symbols.java

    r32090 r32101  
    2525        public static final Color Mline = new Color(0x9a6078);
    2626        public static final Color Msymb = new Color(0xa30075);
    27         public static final Color Mtss = new Color(0x80c480ff, true);
     27        public static final Color Mtss = new Color(0xc0c480ff, true);
    2828       
    2929        public enum Form {
    30                 BBOX, STRK, COLR, FILL, LINE, RECT, RRCT, ELPS, EARC, PLIN, PGON, RSHP, TEXT, SYMB, P1, P2, H2, H3, H4, H5, V2, V3, D2, D3, D4, B1, S2, S3, S4, C2, X2
     30                BBOX, STRK, COLR, FILL, LINE, RECT, RRCT, ELPS, EARC, PLIN, PGON, RSHP, TEXT, SYMB, N1, N2, P1, P2, H2, H3, H4, H5, V2, V3, D2, D3, D4, B1, S2, S3, S4, C2, X2
    3131        }
    3232
     
    6767                public ArrayList<Color> col;
    6868
     69                public Scheme(ArrayList<Color> icol) {
     70                        pat = new ArrayList<Patt>();
     71                        col = icol;
     72                }
    6973                public Scheme(ArrayList<Patt> ipat, ArrayList<Color> icol) {
    7074                        pat = ipat;
     
    233237                                                for (Instr patch : (Symbol) item.params) {
    234238                                                        switch (patch.type) {
     239                                                        case N1:
     240                                                                if (cn > 0) {
     241                                                                        Symbol s = (Symbol) patch.params;
     242                                                                        drawSymbol(g2, s, 1.0, 0, 0, new Scheme(cs.col.get(0)), null);
     243                                                                }
     244                                                                break;
     245                                                        case N2:
     246                                                                if (cn > 0) {
     247                                                                        Symbol s = (Symbol) patch.params;
     248                                                                        drawSymbol(g2, s, 1.0, 0, 0, new Scheme((cn > 1) ? cs.col.get(1) : cs.col.get(0)), null);
     249                                                                }
     250                                                                break;
    235251                                                        case P1:
    236252                                                                if (cn > 0) {
     
    288304                                                                if (bpat == Patt.B) {
    289305                                                                        g2.setPaint(bcol);
     306                                                                        g2.fill((Path2D.Double) patch.params);
     307                                                                }
     308                                                                break;
     309                                                        case S2:
     310                                                                if ((cn > 1) && (pn > 0) && (cs.pat.get(0) == Patt.S)) {
     311                                                                        g2.setPaint(cs.col.get(1));
     312                                                                        g2.fill((Path2D.Double) patch.params);
     313                                                                }
     314                                                                break;
     315                                                        case S3:
     316                                                                if ((cn > 2) && (pn > 0) && (cs.pat.get(0) == Patt.S)) {
     317                                                                        g2.setPaint(cs.col.get(2));
     318                                                                        g2.fill((Path2D.Double) patch.params);
     319                                                                }
     320                                                                break;
     321                                                        case S4:
     322                                                                if ((cn == 4) && (pn > 0) && (cs.pat.get(0) == Patt.S)) {
     323                                                                        g2.setPaint(cs.col.get(3));
    290324                                                                        g2.fill((Path2D.Double) patch.params);
    291325                                                                }
  • applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java

    r32090 r32101  
    117117                TopEast.add(new Instr(Form.PLIN, p));
    118118        }
     119        public static final Symbol TopFlag = new Symbol();
     120        static {
     121                TopFlag.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20,-80,40,80)));
     122                Symbol colours = new Symbol();
     123                Path2D.Double p = new Path2D.Double(); p.moveTo(0,-40); p.lineTo(0,-10); p.lineTo(39,-10); p.lineTo(39,-40); p.closePath();
     124                colours.add(new Instr(Form.P1, p));
     125                p = new Path2D.Double(); p.moveTo(0,-25); p.lineTo(0,-10); p.lineTo(40,-10); p.lineTo(39,-25); p.closePath();
     126                colours.add(new Instr(Form.H2, p));
     127                p = new Path2D.Double(); p.moveTo(0,-30); p.lineTo(0,-20); p.lineTo(40,-20); p.lineTo(39,-30); p.closePath();
     128                colours.add(new Instr(Form.H3, p));
     129                p = new Path2D.Double(); p.moveTo(19.5,-40); p.lineTo(19.5,-10); p.lineTo(39,-10); p.lineTo(39,-40); p.closePath();
     130                colours.add(new Instr(Form.V2, p));
     131                p = new Path2D.Double(); p.moveTo(13,-40); p.lineTo(13,-10); p.lineTo(26,-10); p.lineTo(26,-40); p.closePath();
     132                colours.add(new Instr(Form.V3, p));
     133                p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
     134                p.moveTo(0,-40); p.lineTo(0,-10); p.lineTo(39,-10); p.lineTo(39,-40); p.closePath();
     135                p.moveTo(8,-35); p.lineTo(8,-15); p.lineTo(33,-15); p.lineTo(33,-35); p.closePath();
     136                colours.add(new Instr(Form.B1, p));
     137                p = new Path2D.Double(); p.moveTo(0,-25); p.lineTo(0,-10); p.lineTo(20,-10); p.lineTo(20,-40); p.lineTo(39,-40); p.lineTo(39,-25); p.closePath();
     138                colours.add(new Instr(Form.S2, p));
     139                p = new Path2D.Double(); p.moveTo(0,-25); p.lineTo(0,-10); p.lineTo(20,-10); p.lineTo(20,-25); p.closePath();
     140                colours.add(new Instr(Form.S3, p));
     141                p = new Path2D.Double(); p.moveTo(20,-25); p.lineTo(20,-10); p.lineTo(39,-10); p.lineTo(39,-25); p.closePath();
     142                colours.add(new Instr(Form.S4, p));
     143                TopFlag.add(new Instr(Form.COLR, colours));
     144                TopFlag.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     145                TopFlag.add(new Instr(Form.FILL, Color.black));
     146                TopFlag.add(new Instr(Form.LINE, new Line2D.Double(0,0,0,-45)));
     147                TopFlag.add(new Instr(Form.STRK, new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
     148                TopFlag.add(new Instr(Form.RECT, new Rectangle2D.Double(0,-40,39,30)));
     149        }
    119150        public static final Symbol TopIcone = new Symbol();
    120151        static {
     
    321352                Shapes.put(TopSHP.TOP_ISD, TopIsol); Shapes.put(TopSHP.TOP_NORTH, TopNorth); Shapes.put(TopSHP.TOP_SOUTH, TopSouth); Shapes.put(TopSHP.TOP_SPHR, TopSphere);
    322353                Shapes.put(TopSHP.TOP_SQUR, TopSquare); Shapes.put(TopSHP.TOP_TRI, TopTriangle); Shapes.put(TopSHP.TOP_ITRI, TopItriangle); Shapes.put(TopSHP.TOP_WEST, TopWest);
    323                 Shapes.put(TopSHP.TOP_SALT, TopX); Shapes.put(TopSHP.TOP_RHOM, TopRhombus);
    324         }
     354                Shapes.put(TopSHP.TOP_SALT, TopX); Shapes.put(TopSHP.TOP_RHOM, TopRhombus); Shapes.put(TopSHP.TOP_FLAG, TopFlag);
     355        }
     356        /*
     357         TOP_CUBE, TOP_SPRH, TOP_HRECT, TOP_VRECT, TOP_TRAP, TOP_ITRAP, TOP_CIRC, TOP_CRSS, TOP_T, TOP_TRCL, TOP_CRCL, TOP_RHCL, TOP_CLTR, TOP_OTHR, TOP_CYSP, TOP_COSP
     358         */
    325359        public static final EnumMap<BoySHP, Delta> BuoyDeltas = new EnumMap<BoySHP, Delta>(BoySHP.class);
    326360        static {
Note: See TracChangeset for help on using the changeset viewer.