Ticket #10638: 10638-v5.patch

File 10638-v5.patch, 1.4 KB (added by GerdP, 7 years ago)

Solve remaining zoom in/out problem for given test data (extract from v3)

  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

     
    1616import java.awt.TexturePaint;
    1717import java.awt.event.ActionEvent;
    1818import java.awt.geom.Area;
     19import java.awt.geom.Path2D;
    1920import java.awt.geom.Rectangle2D;
    2021import java.awt.image.BufferedImage;
    2122import java.io.File;
     
    411412            // on some platforms viewport bounds seem to be offset from the left,
    412413            // over-grow it just to be sure
    413414            b.grow(100, 100);
    414             Area a = new Area(b);
     415            Path2D p = new Path2D.Double();
    415416
    416             // now successively subtract downloaded areas
     417            // combine successively downloaded areas
    417418            for (Bounds bounds : data.getDataSourceBounds()) {
    418419                if (bounds.isCollapsed()) {
    419420                    continue;
    420421                }
    421                 a.subtract(mv.getState().getArea(bounds));
     422                p.append(mv.getState().getArea(bounds), false);
    422423            }
     424            // subtract combined areas
     425            Area a = new Area(b);
     426            a.subtract(new Area(p));
    423427
    424428            // paint remainder
    425429            MapViewPoint anchor = mv.getState().getPointFor(new EastNorth(0, 0));