Ignore:
Timestamp:
2017-12-09T13:27:26+01:00 (7 years ago)
Author:
malcolmh
Message:

Orient topmarks

Location:
applications/editors/josm/plugins/seachart
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/seachart/jicons/examples.xml

    r33941 r33943  
    2121    <tag k="seamark:topmark:orientation" v="45" />
    2222  </icon>
     23  <icon width="100" height="100" scale="0.5" file="floodlight" format="PNG" >
     24    <tag k="seamark:type" v="light" />
     25    <tag k="seamark:light:category" v="floodlight" />
     26    <tag k="seamark:topmark:shape" v="arrow" />
     27    <tag k="seamark:topmark:orientation" v="45" />
     28  </icon>
    2329</icons>
  • applications/editors/josm/plugins/seachart/src/render/Rules.java

    r33941 r33943  
    555555                        } else {
    556556                                Renderer.symbol(Beacons.Shapes.get(shape), getScheme(feature.type));
     557                                AffineTransform tr = new AffineTransform(Topmarks.BeaconDelta.t);
    557558                                if (feature.objs.containsKey(Obj.TOPMAR)) {
    558559                                        AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
    559560                                        if (topmap.containsKey(Att.TOPSHP)) {
    560                                                 Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), Topmarks.BeaconDelta);
     561                                                if (topmap.containsKey(Att.ORIENT)) {
     562                                                        tr.rotate(Math.toRadians((Double)topmap.get(Att.ORIENT).val));
     563                                                }
     564                                                Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), new Delta(Handle.BC, tr));
    561565                                        }
    562566                                } else if (feature.objs.containsKey(Obj.DAYMAR)) {
    563567                                        AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
    564568                                        if (topmap.containsKey(Att.TOPSHP)) {
    565                                                 Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), Topmarks.BeaconDelta);
     569                                                if (topmap.containsKey(Att.ORIENT)) {
     570                                                        tr.rotate(Math.toRadians((Double)topmap.get(Att.ORIENT).val));
     571                                                }
     572                                                Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), new Delta(Handle.BC, tr));
    566573                                        }
    567574                                }
     
    978985
    979986        @SuppressWarnings("unchecked")
    980         private static void points() {
    981                 boolean ok = false;
    982                 switch (feature.type) {
    983                 case FOGSIG:
    984                         if (Renderer.zoom >= 12) {
    985                                 if (feature.objs.containsKey(Obj.LIGHTS))
    986                                         lights();
    987                                 else
    988                                         Renderer.symbol(Harbours.Post);
    989                                 ok = true;
    990                         }
    991                         break;
    992                 default:
    993                         if (Renderer.zoom >= 14) {
    994                                 if (feature.objs.containsKey(Obj.LIGHTS))
    995                                         lights();
    996                                 else
    997                                         Renderer.symbol(Harbours.Post);
    998                                 ok = true;
    999                         }
    1000                         break;
    1001                 }
    1002                 if (ok) {
    1003                         if (feature.objs.containsKey(Obj.TOPMAR)) {
    1004                                 AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
    1005                                 if (topmap.containsKey(Att.TOPSHP)) {
    1006                                         Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), null);
    1007                                 }
    1008                         } else if (feature.objs.containsKey(Obj.DAYMAR)) {
    1009                                 AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
    1010                                 if (topmap.containsKey(Att.TOPSHP)) {
    1011                                         Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), null);
    1012                                 }
    1013                         }
    1014                         Signals.addSignals();
    1015                 }
    1016         }
    1017 
    1018         @SuppressWarnings("unchecked")
    1019987        private static void lights() {
    1020988                boolean ok = false;
     
    10511019                                AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
    10521020                                if (topmap.containsKey(Att.TOPSHP)) {
    1053                                         if (hasAttribute(Obj.TOPMAR, Att.ORIENT)) {
    1054                                                 tr.rotate(Math.toRadians((Double) getAttVal(Obj.TOPMAR, Att.ORIENT)));
    1055                                         }
    1056                                         tr.translate(0, -20);
     1021                                        if (topmap.containsKey(Att.ORIENT)) {
     1022                                                tr.rotate(Math.toRadians((Double)topmap.get(Att.ORIENT).val));
     1023                                        }
     1024                                        tr.concatenate(Topmarks.LightDelta.t);
    10571025                                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), new Delta(Handle.BC, tr));
    10581026                                }
     
    10631031                                AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
    10641032                                if (topmap.containsKey(Att.TOPSHP)) {
    1065                                         if (hasAttribute(Obj.DAYMAR, Att.ORIENT)) {
    1066                                                 tr.rotate(Math.toRadians((Double) getAttVal(Obj.DAYMAR, Att.ORIENT)));
    1067                                         }
    1068                                         tr.translate(0, -20);
     1033                                        if (topmap.containsKey(Att.ORIENT)) {
     1034                                                tr.rotate(Math.toRadians((Double)topmap.get(Att.ORIENT).val));
     1035                                        }
     1036                                        tr.concatenate(Topmarks.LightDelta.t);
    10691037                                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), new Delta(Handle.BC, tr));
    10701038                                }
     
    12651233        }
    12661234
     1235        @SuppressWarnings("unchecked")
     1236        private static void points() {
     1237                boolean ok = false;
     1238                switch (feature.type) {
     1239                case FOGSIG:
     1240                        if (Renderer.zoom >= 12) {
     1241                                if (feature.objs.containsKey(Obj.LIGHTS))
     1242                                        lights();
     1243                                else
     1244                                        Renderer.symbol(Harbours.Post);
     1245                                ok = true;
     1246                        }
     1247                        break;
     1248                default:
     1249                        if (Renderer.zoom >= 14) {
     1250                                if (feature.objs.containsKey(Obj.LIGHTS))
     1251                                        lights();
     1252                                else
     1253                                        Renderer.symbol(Harbours.Post);
     1254                                ok = true;
     1255                        }
     1256                        break;
     1257                }
     1258                if (ok) {
     1259                        if (feature.objs.containsKey(Obj.TOPMAR)) {
     1260                                AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
     1261                                if (topmap.containsKey(Att.TOPSHP)) {
     1262                                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), null);
     1263                                }
     1264                        } else if (feature.objs.containsKey(Obj.DAYMAR)) {
     1265                                AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
     1266                                if (topmap.containsKey(Att.TOPSHP)) {
     1267                                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), null);
     1268                                }
     1269                        }
     1270                        Signals.addSignals();
     1271                }
     1272        }
     1273
    12671274        private static void ports() {
    12681275                if (Renderer.zoom >= 14) {
  • applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java

    r33936 r33943  
    555555    public static final Delta FloatDelta  = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0));
    556556    public static final Delta BeaconDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -70.0));
     557    public static final Delta LightDelta  = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -20.0));
    557558    // CHECKSTYLE.ON: SingleSpaceSeparator
    558559}
Note: See TracChangeset for help on using the changeset viewer.