Changeset 759 in josm for trunk/src


Ignore:
Timestamp:
2008-08-08T18:03:46+02:00 (16 years ago)
Author:
gebner
Message:

Draw relations in wireframe mode.

This will just draw an outline around the relation members so that you can
have an idea where the relation actually is.

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java

    r637 r759  
    22package org.openstreetmap.josm.data.osm.visitor;
    33
     4import java.awt.BasicStroke;
    45import java.awt.Color;
    56import java.awt.Graphics;
     
    78import java.awt.Point;
    89import java.awt.Rectangle;
     10import java.awt.Stroke;
    911import java.awt.geom.GeneralPath;
    1012
     
    1416import org.openstreetmap.josm.data.osm.DataSet;
    1517import org.openstreetmap.josm.data.osm.Relation;
     18import org.openstreetmap.josm.data.osm.RelationMember;
    1619import org.openstreetmap.josm.data.osm.Node;
    1720import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    3134        public final static Color darkblue = new Color(0,0,128);
    3235        public final static Color darkgreen = new Color(0,128,0);
     36        public final static Color teal = new Color(0,128,128);
    3337
    3438        /**
     
    5256        protected Color nodeColor;
    5357        protected Color dfltWayColor;
     58        protected Color relationColor;
    5459        protected Color untaggedWayColor;
    5560        protected Color incompleteColor;
     
    7277                nodeColor = Preferences.getPreferencesColor("node", Color.RED);
    7378                dfltWayColor = Preferences.getPreferencesColor("way", darkblue);
     79                relationColor = Preferences.getPreferencesColor("relation", teal);
    7480                untaggedWayColor = Preferences.getPreferencesColor("untagged way", darkgreen);
    7581                incompleteColor = Preferences.getPreferencesColor("incomplete way", darkerblue);
     
    8288                // time to iterate through list twice, OTOH does not
    8389                // require changing the colour while painting...
     90                for (final OsmPrimitive osm : data.relations)
     91                        if (!osm.deleted && !osm.selected)
     92                                osm.visit(this);
     93
    8494                for (final OsmPrimitive osm : data.ways)
    8595                        if (!osm.deleted && !osm.selected && osm.tagged)
     
    157167        }
    158168
    159         public void visit(Relation e) {
    160                 // relations are not (yet?) drawn.
     169        private Stroke relatedWayStroke = new BasicStroke(
     170                4, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL);
     171        public void visit(Relation r) {
     172                if (r.incomplete) return;
     173
     174                Color col;
     175                if (inactive) {
     176                        col = inactiveColor;
     177                } else if (r.selected) {
     178                        col = selectedColor;
     179                } else {
     180                        col = relationColor;
     181                }
     182                g.setColor(col);
     183
     184                for (RelationMember m : r.members) {
     185                        if (m.member.incomplete || m.member.deleted) continue;
     186
     187                        if (m.member instanceof Node) {
     188                                Point p = nc.getPoint(((Node) m.member).eastNorth);
     189                                if (p.x < 0 || p.y < 0
     190                                        || p.x > nc.getWidth() || p.y > nc.getHeight()) continue;
     191
     192                                g.drawOval(p.x-3, p.y-3, 6, 6);
     193                        } else if (m.member instanceof Way) {
     194                                GeneralPath path = new GeneralPath();
     195
     196                                boolean first = true;
     197                                for (Node n : ((Way) m.member).nodes) {
     198                                        if (n.incomplete || n.deleted) continue;
     199                                        Point p = nc.getPoint(n.eastNorth);
     200                                        if (first) {
     201                                                path.moveTo(p.x, p.y);
     202                                                first = false;
     203                                        } else {
     204                                                path.lineTo(p.x, p.y);
     205                                        }
     206                                }
     207
     208                                ((Graphics2D) g).draw(relatedWayStroke.createStrokedShape(path));
     209                        }
     210                }
    161211        }
    162212       
  • trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java

    r758 r759  
    150150                        marktr("way"), ColorHelper.color2html(SimplePaintVisitor.darkblue),
    151151                        marktr("incomplete way"), ColorHelper.color2html(SimplePaintVisitor.darkerblue),
     152                        marktr("relation"), ColorHelper.color2html(SimplePaintVisitor.teal),
    152153                        marktr("selected"), ColorHelper.color2html(Color.white),
    153154                        marktr("gps point"), ColorHelper.color2html(Color.gray),
Note: See TracChangeset for help on using the changeset viewer.