@After public void cleanup() { mapContent.dispose(); }
protected BufferedImage renderNonStraightLines( SimpleFeatureSource featureSource, Style style, int width, int height, ReferencedEnvelope bounds) { MapContent mapContent = new MapContent(); mapContent.addLayer(new FeatureLayer(featureSource, style)); // instantiate and initiate the render StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mapContent); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); // create the output image and add a dark background for testing the halo BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); Graphics2D graphics = image.createGraphics(); graphics.setColor(Color.LIGHT_GRAY); graphics.fillRect(0, 0, image.getWidth(), image.getHeight()); // render the lines with the chosen style renderer.paint(graphics, new Rectangle(0, 0, image.getWidth(), image.getHeight()), bounds); mapContent.dispose(); return image; } }
@Test public void testCrossFillZoomedOut() throws Exception { String styleName = "fillCrossUom.sld"; Style style = RendererBaseTest.loadStyle(this, styleName); MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(fs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); // this used to blow up while building the repeatable tile used to perform the fill BufferedImage bi = new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D graphics = bi.createGraphics(); renderer.paint(graphics, new Rectangle(0, 0, 10, 10), bounds); mc.dispose(); graphics.dispose(); mc.dispose(); }
private void runSingleLayerTest(String styleName, int threshold) throws Exception { Style style = RendererBaseTest.loadStyle(this, styleName); MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(fs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); // prepare an opaque background BufferedImage image = new BufferedImage(256, 256, BufferedImage.TYPE_3BYTE_BGR); Graphics2D graphics = image.createGraphics(); graphics.setColor(Color.lightGray); graphics.fillRect(0, 0, image.getWidth(), image.getHeight()); renderer.paint(graphics, new Rectangle(0, 0, image.getWidth(), image.getHeight()), bounds); mc.dispose(); File reference = new File( "./src/test/resources/org/geotools/renderer/lite/test-data/" + styleName + ".png"); ImageAssert.assertEquals(reference, image, threshold); } }
public void testAutoWrapLocalTransform() throws Exception { Style style = RendererBaseTest.loadStyle(this, "textWrapEnabled.sld"); MapContent mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); renderer.setMapContent(mc); int SIZE = 300; final BufferedImage image = new BufferedImage(SIZE, SIZE, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) image.getGraphics(); g.setColor(Color.white); g.fillRect(0, 0, SIZE, SIZE); g.setTransform( new AffineTransform( 1.1, Math.sin(Math.toRadians(15)), -Math.sin(Math.toRadians(15)), 1.1, 15, 20)); renderer.paint(g, new Rectangle(SIZE, SIZE), bounds); mc.dispose(); renderer.getMapContent().dispose(); String refPath = "./src/test/resources/org/geotools/renderer/lite/test-data/textWrapEnabledLocalTransform.png"; ImageAssert.assertEquals(new File(refPath), image, 3000); }
private void runFailureTest(RenderListener listener, MapContent mc) throws Exception { StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); renderer.addRenderListener(listener); RendererBaseTest.showRender("failures", renderer, TIME, bounds); mc.dispose(); }
@Test public void testCrossFillZoomedOut() throws Exception { String styleName = "fillCrossUom.sld"; Style style = RendererBaseTest.loadStyle(this, styleName); MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(fs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); // this used to blow up while building the repeatable tile used to perform the fill BufferedImage bi = new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D graphics = bi.createGraphics(); renderer.paint(graphics, new Rectangle(0, 0, 10, 10), bounds); graphics.dispose(); mc.dispose(); }
@Test public void test() throws IOException, URISyntaxException, MismatchedDimensionException, NoSuchAuthorityCodeException, FactoryException { StreamingRenderer renderer = new StreamingRenderer(); MapContent map = new MapContent(); URL raster = getClass().getResource(rasterBase + ".png"); GridCoverage2D gc = readGeoReferencedImageFile(new File(raster.toURI())); map.addLayer(loadGeoReferencedImageFile(gc, "test")); renderer.setMapContent(map); BufferedImage image = new BufferedImage(400, 300, BufferedImage.TYPE_INT_ARGB); Envelope env = new Envelope(1880352, 5825436, 1884352, 5828436); ReferencedEnvelope refenv = new ReferencedEnvelope(env, gc.getCoordinateReferenceSystem()); AtomicReference<Exception> error = new AtomicReference<>(); renderer.addRenderListener( new RenderListener() { @Override public void featureRenderer(SimpleFeature feature) {} @Override public void errorOccurred(Exception e) { error.set(e); } }); renderer.paint(image.createGraphics(), new Rectangle(400, 300), refenv); map.dispose(); assertNull(error.get()); }
mapContent.dispose();
private void runImageComparison(String referenceImageName, MapContent mc) throws Exception, IOException { StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); renderer.addRenderListener( new RenderListener() { @Override public void featureRenderer(SimpleFeature feature) { // nothing to do } @Override public void errorOccurred(Exception e) { fail("No rendering errors expected, but got one: " + e.getMessage()); } }); BufferedImage image = RendererBaseTest.showRender(referenceImageName, renderer, TIME, bounds); File reference = new File( "./src/test/resources/org/geotools/renderer/lite/test-data/zorder/" + referenceImageName + ".png"); ImageAssert.assertEquals(reference, image, THRESHOLD); mc.dispose(); }
g.fillRect(0, 0, 400, 80); renderer.paint(g, new Rectangle(0, 0, 400, 80), bounds); mc.dispose();
private BufferedImage composeFts(GridCoverage2D first, GridCoverage2D second) { // build the map content MapContent mc = new MapContent(); StyleBuilder sb = new StyleBuilder(); Style baseStyle = sb.createStyle(sb.createRasterSymbolizer()); mc.addLayer(new GridCoverageLayer(first, baseStyle)); FeatureTypeStyle compositeFts = sb.createFeatureTypeStyle(sb.createRasterSymbolizer()); compositeFts.getOptions().put(FeatureTypeStyle.COMPOSITE, composite); Style compositeStyle = sb.createStyle(); compositeStyle.featureTypeStyles().add(compositeFts); mc.addLayer(new GridCoverageLayer(second, compositeStyle)); // prepare the graphics for the streaming renderer and paint RenderedImage referenceImage = first.getRenderedImage(); BufferedImage blended = new BufferedImage( referenceImage.getWidth(), referenceImage.getWidth(), BufferedImage.TYPE_4BYTE_ABGR); Graphics2D graphics = blended.createGraphics(); StreamingRenderer sr = new StreamingRenderer(); sr.setMapContent(mc); sr.paint( graphics, new Rectangle(0, 0, referenceImage.getWidth(), referenceImage.getHeight()), ReferencedEnvelope.reference(first.getEnvelope())); graphics.dispose(); mc.dispose(); return blended; }
@Test public void disposeMapContentAndGetLayerPreDisposeEvent() { Layer layer = new MockLayer(WORLD); mapContent.addLayer(layer); listener.setExpected(WaitingMapListener.Type.PRE_DISPOSE); mapContent.dispose(); assertTrue(listener.await(WaitingMapListener.Type.PRE_DISPOSE, LISTENER_TIMEOUT)); }
renderer.paint(g2d, new Rectangle(0, 0, 256, 256), envelope); g2d.dispose(); content.dispose();
public void testFeatureCount(String sldFilename, int expectedCount) throws Exception { Style style = RendererBaseTest.loadStyle(this, sldFilename); MapContent mc = new MapContent(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(squareFS, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); AtomicInteger count = new AtomicInteger(); renderer.addRenderListener( new RenderListener() { public void featureRenderer(SimpleFeature feature) { count.incrementAndGet(); } public void errorOccurred(Exception e) {} }); RendererBaseTest.renderImage(renderer, bounds, null); mc.dispose(); assertEquals(expectedCount, count.get()); } }
ReferencedEnvelope.reference(first.getEnvelope())); graphics.dispose(); mc.dispose(); return blended;
public void testLetterConflictEnabled() throws Exception { LabelCacheImpl.DISABLE_LETTER_LEVEL_CONFLICT = true; Style style = RendererBaseTest.loadStyle(this, "letterConflict20.sld"); MapContent mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs_line1, style)); StreamingRenderer renderer = getNewRenderer(mc); final BufferedImage image1 = RendererBaseTest.renderImage(renderer, bounds1, null); mc.dispose(); LabelCacheImpl.DISABLE_LETTER_LEVEL_CONFLICT = false; style = RendererBaseTest.loadStyle(this, "letterConflict20.sld"); mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs_line1, style)); renderer = getNewRenderer(mc); final BufferedImage image2 = RendererBaseTest.renderImage(renderer, bounds1, null); mc.dispose(); assertTrue( "More labels in image2 than image1", countPixels(image2, Color.BLACK) >= countPixels(image1, Color.BLACK)); writeImage("letterConflictEnabledFalse", image1); writeImage("letterConflictEnabledTrue", image2); showImage("letterConflictEnabled false", TIME, image1); showImage("letterConflictEnabled true", TIME, image2); }
public void testLetterConflictEnabledCurvedLine() throws Exception { LabelCacheImpl.DISABLE_LETTER_LEVEL_CONFLICT = true; Style style = RendererBaseTest.loadStyle(this, "letterConflict20.sld"); MapContent mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs_line3, style)); StreamingRenderer renderer = getNewRenderer(mc); final BufferedImage image1 = RendererBaseTest.renderImage(renderer, bounds1, null); mc.dispose(); LabelCacheImpl.DISABLE_LETTER_LEVEL_CONFLICT = false; style = RendererBaseTest.loadStyle(this, "letterConflict20.sld"); mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs_line3, style)); renderer = getNewRenderer(mc); final BufferedImage image2 = RendererBaseTest.renderImage(renderer, bounds1, null); mc.dispose(); assertTrue( "More labels in image2 than image1", countPixels(image2, Color.BLACK) > countPixels(image1, Color.BLACK)); writeImage("letterConflictEnabledCurvedLineFalse", image1); writeImage("letterConflictEnabledCurvedLineTrue", image2); showImage("letterConflictEnabledCurvedLine false", TIME, image1); showImage("letterConflictEnabledCurvedLine true", TIME, image2); }
public void testLetterConflictEnabled2Lines() throws Exception { LabelCacheImpl.DISABLE_LETTER_LEVEL_CONFLICT = true; Style style = RendererBaseTest.loadStyle(this, "letterConflict20.sld"); MapContent mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs_line2, style)); StreamingRenderer renderer = getNewRenderer(mc); final BufferedImage image1 = RendererBaseTest.renderImage(renderer, bounds1, null); mc.dispose(); LabelCacheImpl.DISABLE_LETTER_LEVEL_CONFLICT = false; style = RendererBaseTest.loadStyle(this, "letterConflict20.sld"); mc = new MapContent(); mc.getViewport().setCoordinateReferenceSystem(DefaultGeographicCRS.WGS84); mc.addLayer(new FeatureLayer(fs_line2, style)); renderer = getNewRenderer(mc); final BufferedImage image2 = RendererBaseTest.renderImage(renderer, bounds1, null); assertTrue( "More labels in image2 than image1", countPixels(image2, Color.BLACK) > countPixels(image1, Color.BLACK)); writeImage("letterConflictEnabled2False", image1); writeImage("letterConflictEnabled2True", image2); showImage("letterConflictEnabled2 false", TIME, image1); showImage("letterConflictEnabled2 true", TIME, image2); mc.dispose(); }