Ticket #685: josm-render-speedup.diff

File josm-render-speedup.diff, 1.2 KB (added by dnaber, 17 years ago)

speed up using BufferedImage

  • home/dnaber/workspace/JOSM/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

     
    1010import java.awt.Graphics;
    1111import java.awt.GridBagLayout;
    1212import java.awt.Point;
     13import java.awt.Transparency;
    1314import java.awt.event.ActionEvent;
     15import java.awt.image.BufferedImage;
    1416import java.io.File;
    1517import java.util.Collection;
    1618import java.util.HashSet;
     
    170172                }
    171173                else
    172174                {
    173                         standardMapPainter.setGraphics(g);
     175                        // MapPaintVisitor paints calls fillPolygon() with an alpha
     176                        // channel -- this is slow, speed it up by rendering to a BufferedImage:
     177                        BufferedImage bim = new BufferedImage(mv.getWidth(), mv.getHeight(), Transparency.OPAQUE);
     178                        standardMapPainter.setGraphics(bim.createGraphics());
    174179                        standardMapPainter.setNavigatableComponent(mv);
    175180                        standardMapPainter.inactive = inactive;
    176181                        standardMapPainter.visitAll(data);
     182                        g.drawImage(bim, 0, 0, null);
    177183                }
    178184                Main.map.conflictDialog.paintConflicts(g, mv);
    179185        }