Ignore:
Timestamp:
2011-05-15T23:51:25+02:00 (15 years ago)
Author:
bastiK
Message:

PaintVisitor refactoring, includes hook for external MapRenderers (author: Gubaer)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r4046 r4087  
    4242import org.openstreetmap.josm.data.conflict.Conflict;
    4343import org.openstreetmap.josm.data.conflict.ConflictCollection;
    44 import org.openstreetmap.josm.data.coor.EastNorth;
    4544import org.openstreetmap.josm.data.coor.LatLon;
    4645import org.openstreetmap.josm.data.gpx.GpxData;
     
    6160import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
    6261import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    63 import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintVisitor;
    64 import org.openstreetmap.josm.data.osm.visitor.paint.PaintVisitor;
    65 import org.openstreetmap.josm.data.osm.visitor.paint.SimplePaintVisitor;
     62import org.openstreetmap.josm.data.osm.visitor.paint.MapRendererFactory;
     63import org.openstreetmap.josm.data.osm.visitor.paint.Rendering;
    6664import org.openstreetmap.josm.data.validation.TestError;
    6765import org.openstreetmap.josm.gui.HelpAwareOptionPane;
     
    241239            Area a = new Area(b);
    242240
    243             // now succesively subtract downloaded areas
    244             for (DataSource src : data.dataSources) {
    245                 if (src.bounds != null && !src.bounds.getMin().equals(src.bounds.getMax())) {
    246                     EastNorth en1 = mv.getProjection().latlon2eastNorth(src.bounds.getMin());
    247                     EastNorth en2 = mv.getProjection().latlon2eastNorth(src.bounds.getMax());
    248                     Point p1 = mv.getPoint(en1);
    249                     Point p2 = mv.getPoint(en2);
    250                     Rectangle r = new Rectangle(Math.min(p1.x, p2.x),Math.min(p1.y, p2.y),Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y));
    251                     a.subtract(new Area(r));
     241            // now successively subtract downloaded areas
     242            for (Bounds bounds : data.getDataSourceBounds()) {
     243                if (bounds.isCollapsed()) {
     244                    continue;
    252245                }
     246                Point p1 = mv.getPoint(bounds.getMin());
     247                Point p2 = mv.getPoint(bounds.getMax());
     248                Rectangle r = new Rectangle(Math.min(p1.x, p2.x),Math.min(p1.y, p2.y),Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y));
     249                a.subtract(new Area(r));
    253250            }
    254251
     
    258255        }
    259256
    260         PaintVisitor painter;
    261         if (Main.pref.getBoolean("draw.wireframe")) {
    262             painter = new SimplePaintVisitor();
    263         } else {
    264             painter = new MapPaintVisitor();
    265         }
    266         painter.setGraphics(g);
    267         painter.setNavigatableComponent(mv);
    268         painter.setInactive(inactive);
    269         painter.visitAll(data, virtual, box);
     257        Rendering painter = MapRendererFactory.getInstance().createActiveRenderer(g, mv, inactive);
     258        painter.render(data, virtual, box);
    270259        Main.map.conflictDialog.paintConflicts(g, mv);
    271260    }
     
    528517            }
    529518            String name = n.get("name");
    530             if (name == null)
    531                 continue;
     519            if (name == null) {
     520                continue;
     521            }
    532522            WayPoint wpt = new WayPoint(n.getCoor());
    533523            wpt.attr.put("name", name);
     
    538528            String desc = n.get("description");
    539529            if (desc != null) {
    540                wpt.attr.put("desc", desc);
    541             }
     530                wpt.attr.put("desc", desc);
     531            }
    542532
    543533            gpxData.waypoints.add(wpt);
Note: See TracChangeset for help on using the changeset viewer.