@Test public void newBoundsAreHonoured_NoAspectMatching() { MapViewport vp = new MapViewport(false); vp.setScreenArea(SCREEN_1_1); vp.setBounds(WORLD_1_1); vp.setBounds(BIG_WORLD_1_1); assertTrue(BIG_WORLD_1_1.boundsEquals2D(vp.getBounds(), TOL)); }
@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 synchronized MapViewport getViewport() { if (viewport == null) { viewport = new MapViewport(); try { ReferencedEnvelope layerBounds = getLayerBounds(); if (layerBounds != null) { viewport.setBounds(layerBounds); viewport.setCoordinateReferenceSystem( layerBounds.getCoordinateReferenceSystem()); } } catch (IOException e) { } } return viewport; } }
@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"); }
/** * 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); }
/** * Set the area of interest. This triggers a MapBoundsEvent to be published. * * @param areaOfInterest the new area of interest * @param coordinateReferenceSystem the CRS for the new area of interest * @throws IllegalArgumentException if either argument is {@code null} */ public void setAreaOfInterest(Envelope areaOfInterest, CoordinateReferenceSystem crs) throws IllegalArgumentException { getViewport().setBounds(new ReferencedEnvelope(areaOfInterest, crs)); }
/** * Called when a new map layer has been added. Sets the layer as selected (for queries) and, if * the layer table is being used, adds the new layer to the table. */ @Override public void layerAdded(MapLayerListEvent event) { paramsLock.writeLock().lock(); try { Layer layer = event.getElement(); if (layer instanceof ComponentListener) { addComponentListener((ComponentListener) layer); } setFullExtent(); MapViewport viewport = mapContent.getViewport(); if (viewport.getBounds().isEmpty()) { viewport.setBounds(fullExtent); } } finally { paramsLock.writeLock().unlock(); } drawLayers(false); repaint(); }
@Test public void callSetBoundsWhenNonEditable() throws Exception { MapViewport vp = new MapViewport(); vp.setBounds(WORLD_1_1); vp.setEditable(false); grabLogger(); vp.setBounds(BIG_WORLD_1_1); String s = getLogOutput(); assertTrue(s.contains("Ignored call to setBounds")); assertTrue(WORLD_1_1.boundsEquals2D(vp.getBounds(), TOL)); releaseLogger(); }
@Test public void noArgCtorThenSetBoundsGivesNullWorldToScreen() { MapViewport vp = new MapViewport(); vp.setBounds(WORLD_1_1); assertNull(vp.getWorldToScreen()); }
.setCoordinateReferenceSystem( mapContent.getViewport().getCoordinateReferenceSystem()); result.getViewport().setBounds(mapContent.getViewport().getBounds()); ZGroupLayer currentGroup = null; for (Layer layer : mapContent.layers()) {
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; }
@Test public void settingBoundsSetsTheViewportCRS() { MapViewport vp = new MapViewport(); assertFalse( CRS.equalsIgnoreMetadata( WORLD_1_1.getCoordinateReferenceSystem(), vp.getCoordinateReferenceSystem())); vp.setBounds(WORLD_1_1); assertTrue( CRS.equalsIgnoreMetadata( WORLD_1_1.getCoordinateReferenceSystem(), vp.getCoordinateReferenceSystem())); }
@Test public void setNewViewportAndCheckBounds() { mapContent.addLayer(new MockLayer(WORLD)); MapViewport newViewport = new MapViewport(); newViewport.setBounds(SMALL_WORLD); mapContent.setViewport(newViewport); ReferencedEnvelope bounds = mapContent.getBounds(); assertTrue(SMALL_WORLD.boundsEquals2D(bounds, TOL)); }
@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(); }
private void assertAspectCorrection(Rectangle screenArea, ReferencedEnvelope expectedBounds) { MapViewport vp = new MapViewport(WORLD_1_1, true); vp.setScreenArea(screenArea); assertTrue(expectedBounds.boundsEquals2D(vp.getBounds(), TOL)); }
@Test public void callSetCoordinateReferenceSystemWhenNonEditable() throws Exception { final CoordinateReferenceSystem crs = WORLD_1_1.getCoordinateReferenceSystem(); MapViewport vp = new MapViewport(); vp.setCoordinateReferenceSystem(crs); vp.setEditable(false); grabLogger(); vp.setCoordinateReferenceSystem(null); String s = getLogOutput(); assertTrue(s.contains("Ignored call to setCoordinateReferenceSystem")); assertTrue(CRS.equalsIgnoreMetadata(crs, vp.getCoordinateReferenceSystem())); releaseLogger(); }
/** * 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()); }
if (mapContent.getViewport().getScreenArea().equals(getVisibleRect())) { return; mapContent.getViewport().setScreenArea(getVisibleRect()); pendingDisplayArea = null; } else if (mapContent.getViewport().getBounds().isEmpty()) { setFullExtent(); doSetDisplayArea(fullExtent);
@Deprecated public MapContent(CoordinateReferenceSystem crs) { this(); getViewport().setCoordinateReferenceSystem(crs); }
@Test public void copyCtor() { MapViewport vp = new MapViewport(WORLD_1_1, true); vp.setScreenArea(SCREEN_1_1); vp.setEditable(false); MapViewport copy = new MapViewport(vp); assertTrue(copy.isEditable()); assertViewportsEqual(vp, copy); }