public void paintComponent(Graphics g) { super.paintComponent(g); if (transformer.isSetupDone()) { thread.checkSetup(transformer, config); Graphics2D g2 = ((Graphics2D) g.create()); // paint the background g2.setColor(MapPanel.BG_COLOR); g2.fillRect(0, 0, getWidth(), getHeight()); MapPanelThread.PaintInfo paintInfo = thread.getPaintInfo(transformer); if (paintInfo != null) { /*g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);*/ g2.drawImage(paintInfo.image, paintInfo.x, paintInfo.y, paintInfo.w, paintInfo.h, this); } } }
/** Create a dependent MapPanel, with its converter and maps provided from outside. */ public MapPanel(ImgFilesBag map, MapTransformer<COORD> transformer) { this.map = map; this.transformer = transformer; thread = new MapPanelThread<COORD>(this, config); thread.start(); addComponentListener( new ComponentListener() { public void componentResized(ComponentEvent e) { MapPanel.this.componentResized(); } public void componentMoved(ComponentEvent e) {} public void componentShown(ComponentEvent e) {} public void componentHidden(ComponentEvent e) {} }); transformer.setDimensions(getWidth(), getHeight()); }
protected void transformerChanged() { thread.checkSetup(transformer, config); }
public void setShading(boolean enabled) { config.setWantShading(enabled); thread.checkSetup(transformer, config); }
public void setDetailLevel(int detailLevel) { config.setDetailLevel(detailLevel); thread.checkSetup(transformer, config); }
public void setPoiThreshold(int threshold) { config.setPoiThreshold(threshold); thread.checkSetup(transformer, config); }
public void setShowPointLabel(boolean showPointLabel) { config.setShowPointLabel(showPointLabel); thread.checkSetup(transformer, config); }
/** Does not trigger a repaint... */ public void setQuality(MapConfig.Quality quality) { config.setQuality(quality); thread.checkSetup(transformer, config); }
public void clearMaps() throws IOException { map.clear(); thread.scheduleComputeMap(); }
public void addMapLocation(File location) throws IOException { if (location.isDirectory()) map.addDirectory(location); else map.addFile(location); thread.scheduleComputeMap(); }
/** * If an external class changed manually the transformer, it must call this method to make the * change effective. */ public void transformerChangedManually() { thread.checkSetup(transformer, config); repaint(); }