Ignore:
Timestamp:
2009-12-22T09:13:07+01:00 (14 years ago)
Author:
jttt
Message:

Make MapPaintVisitor independent of SimplePaintVisitor

File:
1 edited

Legend:

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

    r2668 r2671  
    77
    88import java.awt.Color;
     9import java.awt.Graphics2D;
    910import java.awt.Point;
    1011import java.awt.Polygon;
     12import java.awt.Rectangle;
    1113import java.awt.geom.Point2D;
    1214import java.util.ArrayList;
     
    3234import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
    3335import org.openstreetmap.josm.gui.DefaultNameFormatter;
     36import org.openstreetmap.josm.gui.NavigatableComponent;
    3437import org.openstreetmap.josm.gui.mappaint.AreaElemStyle;
    3538import org.openstreetmap.josm.gui.mappaint.ElemStyle;
     
    4043import org.openstreetmap.josm.tools.LanguageInfo;
    4144
    42 public class MapPaintVisitor extends SimplePaintVisitor {
     45public class MapPaintVisitor implements PaintVisitor {
     46
     47    protected Graphics2D g;
     48    protected NavigatableComponent nc;
     49
    4350    protected boolean useRealWidth;
    4451    protected boolean zoomLevelDisplay;
     
    6370    protected Collection<String> regionalNameOrder;
    6471
     72    public boolean inactive;
     73    protected boolean fillSelectedNode;
     74    protected boolean fillUnselectedNode;
     75    protected int defaultSegmentWidth;
     76    protected boolean showOrderNumber;
     77
     78    protected boolean showRelevantDirectionsOnly;
     79    protected boolean showHeadArrowOnly;
     80    protected boolean showDirectionArrow;
     81
     82    protected int selectedNodeRadius;
     83    protected int selectedNodeSize;
     84    protected int taggedNodeSize;
     85    protected int taggedNodeRadius;
     86    protected int unselectedNodeRadius;
     87    protected int unselectedNodeSize;
     88
     89    protected Color selectedColor;
     90    protected Color highlightColor;
     91    protected Color inactiveColor;
     92    protected Color nodeColor;
     93
    6594    protected boolean isZoomOk(ElemStyle e) {
    6695        if (!zoomLevelDisplay) /* show everything if the user wishes so */
     
    108137    }
    109138
    110     /**
    111      * Draw a small rectangle.
    112      * White if selected (as always) or red otherwise.
    113      *
    114      * @param n The node to draw.
    115      */
    116     @Override
    117     public void visit(Node n) {}
    118139    public void drawNode(Node n) {
    119140        /* check, if the node is visible at all */
     
    151172    }
    152173
    153     /**
    154      * Draw a line for all segments, according to tags.
    155      * @param w The way to draw.
    156      */
    157     @Override
    158     public void visit(Way w) {}
    159174    public void drawWay(Way w, int fillAreas) {
    160175        if(w.getNodesCount() < 2)
     
    453468    }
    454469
    455     @Override
    456     public void visit(Relation r) {}
    457470    public void paintUnselectedRelation(Relation r) {
    458471
     
    982995    }
    983996
     997    protected boolean isPolygonVisible(Polygon polygon) {
     998        Rectangle bounds = polygon.getBounds();
     999        if (bounds.width == 0 && bounds.height == 0) return false;
     1000        if (bounds.x > nc.getWidth()) return false;
     1001        if (bounds.y > nc.getHeight()) return false;
     1002        if (bounds.x + bounds.width < 0) return false;
     1003        if (bounds.y + bounds.height < 0) return false;
     1004        return true;
     1005    }
     1006
    9841007    protected Polygon getPolygon(Way w)
    9851008    {
     
    10541077    }
    10551078
    1056     @Override
    1057     public void getColors()
    1058     {
    1059         super.getColors();
     1079    public void getColors() {
     1080        selectedColor  = PaintColors.SELECTED.get();
     1081        highlightColor = PaintColors.HIGHLIGHT.get();
     1082        inactiveColor = PaintColors.INACTIVE.get();
     1083        nodeColor = PaintColors.NODE.get();
    10601084        untaggedColor = PaintColors.UNTAGGED.get();
    10611085        textColor = PaintColors.TEXT.get();
     
    10831107
    10841108    /* Shows areas before non-areas */
    1085     @Override
    10861109    public void visitAll(DataSet data, boolean virtual, Bounds bounds) {
    10871110        BBox bbox = new BBox(bounds);
     
    10981121        dist = ll1.greatCircleDistance(ll2);
    10991122
    1100         getSettings(virtual);
     1123        getColors();
     1124
     1125        showDirectionArrow = Main.pref.getBoolean("draw.segment.direction", true);
     1126        showRelevantDirectionsOnly = Main.pref.getBoolean("draw.segment.relevant_directions_only", true);
     1127        showHeadArrowOnly = Main.pref.getBoolean("draw.segment.head_only", false);
     1128        showOrderNumber = Main.pref.getBoolean("draw.segment.order_number", false);
     1129        selectedNodeRadius = Main.pref.getInteger("mappaint.node.selected-size", 5) / 2;
     1130        selectedNodeSize = selectedNodeRadius * 2;
     1131        unselectedNodeRadius = Main.pref.getInteger("mappaint.node.unselected-size", 3) / 2;
     1132        unselectedNodeSize = unselectedNodeRadius * 2;
     1133        taggedNodeRadius = Main.pref.getInteger("mappaint.node.tagged-size", 5) / 2;
     1134        taggedNodeSize = taggedNodeRadius * 2;
     1135        defaultSegmentWidth = Main.pref.getInteger("mappaint.segment.default-width", 2);
     1136        fillSelectedNode = Main.pref.getBoolean("mappaint.node.fill-selected", true);
     1137        fillUnselectedNode = Main.pref.getBoolean("mappaint.node.fill-unselected", false);
     1138
    11011139        useRealWidth = Main.pref.getBoolean("mappaint.useRealWidth", false);
    11021140        zoomLevelDisplay = Main.pref.getBoolean("mappaint.zoomLevelDisplay", false);
     
    11111149        regionalNameOrder = Main.pref.getCollection("mappaint.nameOrder", Arrays.asList(names));
    11121150
    1113         this.painter = new MapPainter(g, inactive, nc, useStrokes > dist);
     1151        this.painter = new MapPainter(g, inactive, nc, useStrokes > dist, virtual);
    11141152
    11151153        data.clearErrors();
     
    11941232        }
    11951233
    1196         drawVirtualNodes(data.searchWays(bbox));
     1234        painter.drawVirtualNodes(data.searchWays(bbox));
    11971235    }
    11981236
     
    12041242        Point p1 = nc.getPoint(n1);
    12051243        Point p2 = nc.getPoint(n2);
    1206         drawOrderNumber(p1, p2, orderNumber);
     1244        painter.drawOrderNumber(p1, p2, orderNumber);
    12071245    }
    12081246
     
    12111249        data.addError(p, isError ? tr("Error: {0}", text) : tr("Warning: {0}", text));
    12121250    }
     1251
     1252    public void setGraphics(Graphics2D g) {
     1253        this.g = g;
     1254    }
     1255
     1256    public void setInactive(boolean inactive) {
     1257        this.inactive = inactive;
     1258    }
     1259
     1260    public void setNavigatableComponent(NavigatableComponent nc) {
     1261        this.nc = nc;
     1262    }
    12131263}
Note: See TracChangeset for help on using the changeset viewer.