Ticket #3313: work around openjdk bug without introducing new ones.2.patch

File work around openjdk bug without introducing new ones.2.patch, 1.9 KB (added by xeen, 16 years ago)

unused imports must die!

  • src/org/openstreetmap/josm/gui/MapView.java

     
    88import java.awt.Graphics;
    99import java.awt.Graphics2D;
    1010import java.awt.Point;
     11import java.awt.Rectangle;
    1112import java.awt.event.ComponentAdapter;
    1213import java.awt.event.ComponentEvent;
    1314import java.awt.event.MouseEvent;
    1415import java.awt.event.MouseMotionListener;
     16import java.awt.geom.Area;
    1517import java.awt.geom.GeneralPath;
    1618import java.awt.image.BufferedImage;
    1719import java.beans.PropertyChangeEvent;
     
    365367
    366368        // draw world borders
    367369        tempG.setColor(Color.WHITE);
    368         GeneralPath path = new GeneralPath();
    369370        Bounds b = getProjection().getWorldBoundsLatLon();
    370371        double lat = b.min.lat();
    371372        double lon = b.min.lon();
    372373
    373374        Point p = getPoint(b.min);
    374         path.moveTo(p.x, p.y);
     375
     376        GeneralPath path = new GeneralPath();
    375377
     378        path.moveTo(p.x, p.y);
    376379        double max = b.max.lat();
    377380        for(; lat <= max; lat += 1.0)
    378381        {
     
    398401            path.lineTo(p.x, p.y);
    399402        }
    400403
     404        int w = offscreenBuffer.getWidth();
     405        int h = offscreenBuffer.getHeight();
     406
     407        // Work around OpenJDK having problems when drawing out of bounds
     408        final Area border = new Area(path);
     409        // Make the viewport 1px larger in every direction to prevent an
     410        // additional 1px border when zooming in
     411        final Area viewport = new Area(new Rectangle(-1, -1, w + 2, h + 2));
     412        border.intersect(viewport);
     413        tempG.draw(border);
     414
    401415        if (playHeadMarker != null) {
    402416            playHeadMarker.paint(tempG, this);
    403417        }
    404         tempG.draw(path);
    405418
    406419        g.drawImage(offscreenBuffer, 0, 0, null);
    407420        super.paint(g);