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

save

File:
1 edited

Legend:

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

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