@Override public void draw(Graphics2D graphics, MapContent map, MapViewport theViewport) { LOGGER.fine("Started drawing"); final MapViewport viewport = new MapViewport(theViewport); final ReferencedEnvelope viewportExtent = viewport.getBounds(); int scale = calculateScale(viewportExtent, viewport.getScreenArea()); Collection<Tile> tiles = service.findTilesInExtent(viewportExtent, scale, false, 128); BufferedImage mosaickedImage = createImage(viewport.getScreenArea()); Graphics2D g2d = mosaickedImage.createGraphics(); renderTiles(tiles, g2d, viewportExtent, viewport.getWorldToScreen()); this.coverage = gridFactory.create("GridCoverage", mosaickedImage, viewportExtent); graphics.drawImage(mosaickedImage, 0, 0, null); LOGGER.fine("Drawing done"); }
if (viewport == null || viewport.getScreenArea() == null) { return; // renderer is not set up for use yet return; // no message to draw Rectangle2D screen = rectangle2D(viewport.getScreenArea()); Double dx = Converters.convert(getUserData().get(X), Double.class); Double dy = Converters.convert(getUserData().get(Y), Double.class);
/** * Creates a new rendering task. * * @param mapContent * @param renderer * @param graphics */ public RenderingTask( MapContent mapContent, Graphics2D destinationGraphics, GTRenderer renderer) { if (mapContent == null) { throw new IllegalArgumentException("mapContent must not be null"); } if (renderer == null) { throw new IllegalArgumentException("renderer must not be null"); } if (destinationGraphics == null) { throw new IllegalArgumentException("graphics must not be null"); } this.destinationGraphics = destinationGraphics; this.deviceArea = mapContent.getViewport().getScreenArea(); this.worldArea = mapContent.getViewport().getBounds(); this.worldToScreenTransform = mapContent.getViewport().getWorldToScreen(); this.renderer = renderer; running = new AtomicBoolean(false); failed = new AtomicBoolean(false); cancelled = new AtomicBoolean(false); }
private static BufferedImage renderImage( SimpleFeatureSource featureSource, int width, int height, Rectangle2D mapArea, Style style, Map renderingHints) { BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) image.getGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); MapContent mapContent = new MapContent(); MapViewport viewport = mapContent.getViewport(); viewport.setBounds(new ReferencedEnvelope(mapArea, DefaultGeographicCRS.WGS84)); viewport.setScreenArea(new Rectangle(width, height)); mapContent.addLayer(new FeatureLayer(featureSource, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setRendererHints(renderingHints); renderer.setMapContent(mapContent); renderer.paint(g, viewport.getScreenArea(), viewport.getBounds()); return image; }
if (mapContent.getViewport().getScreenArea().equals(getVisibleRect())) { return;
/** * Checks if two viewports have equal attributes other than their editable setting. * * @param vp1 first viewport * @param vp2 second viewport */ private void assertViewportsEqual(MapViewport vp1, MapViewport vp2) { assertEquals(vp1.getBounds(), vp2.getBounds()); assertEquals(vp1.getScreenArea(), vp2.getScreenArea()); assertEquals(vp1.getScreenToWorld(), vp2.getScreenToWorld()); assertEquals(vp1.isMatchingAspectRatio(), vp2.isMatchingAspectRatio()); }
@Test public void callSetScreenAreaWhenNonEditable() throws Exception { MapViewport vp = new MapViewport(); vp.setScreenArea(SCREEN_1_1); vp.setEditable(false); grabLogger(); vp.setScreenArea(SCREEN_2_1); String s = getLogOutput(); assertTrue(s.contains("Ignored call to setScreenArea")); assertEquals(SCREEN_1_1, vp.getScreenArea()); releaseLogger(); }
@Test public void boundsCtor() { MapViewport vp = new MapViewport(WORLD_1_1); assertTrue(vp.isEmpty()); assertFalse(vp.isMatchingAspectRatio()); assertTrue(vp.getScreenArea().isEmpty()); assertTrue(WORLD_1_1.boundsEquals2D(vp.getBounds(), TOL)); }
@Test public void fullCtor() { MapViewport vp = new MapViewport(WORLD_1_1, true); assertTrue(vp.isEmpty()); assertTrue(vp.isMatchingAspectRatio()); assertTrue(vp.getScreenArea().isEmpty()); assertTrue(WORLD_1_1.boundsEquals2D(vp.getBounds(), TOL)); }
@Test public void booleanCtor() { MapViewport vp = new MapViewport(true); assertTrue(vp.isEmpty()); assertTrue(vp.isMatchingAspectRatio()); assertTrue(vp.getBounds().isEmpty()); assertTrue(vp.getScreenArea().isEmpty()); }
@Test public void defaultCtor() { MapViewport vp = new MapViewport(); assertFalse(vp.isMatchingAspectRatio()); assertTrue(vp.isEmpty()); assertTrue(vp.getBounds().isEmpty()); assertTrue(vp.getScreenArea().isEmpty()); assertNull(vp.getCoordinateReferenceSystem()); }
@Override public void draw(Graphics2D graphics, MapContent map, MapViewport theViewport) { LOGGER.fine("Started drawing"); final MapViewport viewport = new MapViewport(theViewport); final ReferencedEnvelope viewportExtent = viewport.getBounds(); int scale = calculateScale(viewportExtent, viewport.getScreenArea()); Collection<Tile> tiles = service.findTilesInExtent(viewportExtent, scale, false, 128); BufferedImage mosaickedImage = createImage(viewport.getScreenArea()); Graphics2D g2d = mosaickedImage.createGraphics(); long t = System.currentTimeMillis(); renderTiles(tiles, g2d, viewportExtent, viewport.getWorldToScreen()); this.coverage = gridFactory.create("GridCoverage", mosaickedImage, viewportExtent); graphics.drawImage(mosaickedImage, 0, 0, null); LOGGER.fine("Drawing done"); }
this.deviceArea = mapContent.getViewport().getScreenArea(); this.worldArea = mapContent.getViewport().getBounds(); this.worldToScreenTransform = mapContent.getViewport().getWorldToScreen();
if (viewport == null || viewport.getScreenArea() == null) { return; // renderer is not set up for use yet return; // no message to draw Rectangle2D screen = rectangle2D(viewport.getScreenArea()); Double dx = Converters.convert(getUserData().get(X), Double.class); Double dy = Converters.convert(getUserData().get(Y), Double.class);
if (mapContent.getViewport().getScreenArea().equals(getVisibleRect())) { return;
} else { Rectangle screenArea = map.getViewport().getScreenArea(); width = screenArea.getWidth(); height = screenArea.getHeight();