private StreamingRenderer setupMap(SimpleFeatureSource fs, Style style) { 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)); return renderer; }
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; } }
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; }
try { mapArea = RendererUtilities.createMapEnvelope(paintArea, worldToScreen); paint(graphics, paintArea, mapArea, worldToScreen); } catch (NoninvertibleTransformException e) { fireErrorEvent(e);
private StreamingRenderer getNewRenderer(MapContent context) { StreamingRenderer renderer = new StreamingRenderer(); Map<String, Object> rendererParams = new HashMap<String, Object>(); LabelCacheImpl labelCache = new LabelCacheImpl(); rendererParams.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); renderer.setRendererHints(rendererParams); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); renderer.setMapContent(context); return renderer; }
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(); }
@Override protected void setUp() throws Exception { // setup data File property = new File(TestData.getResource(this, "square.properties").toURI()); PropertyDataStore ds = new PropertyDataStore(property.getParentFile()); squareFS = ds.getFeatureSource("square"); bounds = new ReferencedEnvelope(0, 10, 0, 10, DefaultGeographicCRS.WGS84); renderer = new StreamingRenderer(); context = new DefaultMapContext(DefaultGeographicCRS.WGS84); renderer.setContext(context); Map hints = new HashMap(); hints.put("maxFiltersToSendToDatastore", 2); hints.put("optimizedDataLoadingEnabled", true); renderer.setRendererHints(hints); // System.setProperty("org.geotools.test.interactive", "true"); }
mapContent.addLayer(new MockLayer()); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mapContent); renderer.paint(destGraphics, SCREEN, WORLD); mapContent.dispose();
/** * Utility to quickly render a set of vector data on top of a buffered image * * @param sources * @param styles * @return * @throws Exception */ public static BufferedImage render(MapContext map) throws Exception { StreamingRenderer r = new StreamingRenderer(); r.setContext(map); return RendererBaseTest.showRender("testPointLabeling", r, 5000, map.getLayerBounds()); }
private void renderEmptyGeometry(SimpleFeature f, Style style) { SimpleFeatureCollection fc = DataUtilities.collection(f); MapContext mc = new DefaultMapContext(); mc.addLayer(fc, style); StreamingRenderer sr = new StreamingRenderer(); sr.setContext(mc); BufferedImage bi = new BufferedImage(640, 480, BufferedImage.TYPE_4BYTE_ABGR); sr.addRenderListener( new RenderListener() { public void featureRenderer(SimpleFeature feature) {} public void errorOccurred(Exception e) { java.util.logging.Logger.getGlobal() .log(java.util.logging.Level.INFO, "", e); fail( "Got an exception during rendering, this should not happen, " + "not even with emtpy geometries"); } }); sr.paint( (Graphics2D) bi.getGraphics(), new Rectangle(640, 480), new ReferencedEnvelope(new Envelope(0, 10, 0, 10), DefaultGeographicCRS.WGS84)); mc.dispose(); } }
@Test public void testFillSLD10HighDPI() throws Exception { Style style = RendererBaseTest.loadStyle(this, "margin/fill10.sld"); MapContent mc = new MapContent(); mc.addLayer(new FeatureLayer(bfs, style)); StreamingRenderer renderer = new StreamingRenderer(); renderer.setMapContent(mc); Map hints = Collections.singletonMap(StreamingRenderer.DPI_KEY, 300); renderer.setRendererHints(hints); BufferedImage image = RendererBaseTest.renderImage(renderer, bounds, null, 480, 480); ImageAssert.assertEquals( new File( "./src/test/resources/org/geotools/renderer/lite/test-data/margin/expected-dpi300.png"), image, 100); }
@Override protected void setUp() throws Exception { // setup data File property = new File(TestData.getResource(this, "diaglines.properties").toURI()); PropertyDataStore ds = new PropertyDataStore(property.getParentFile()); fs = ds.getFeatureSource("diaglines"); bounds = new ReferencedEnvelope(0, 10, 0, 10, DefaultGeographicCRS.WGS84); renderer = new StreamingRenderer(); Map rendererParams = new HashMap(); LabelCacheImpl labelCache = new LabelCacheImpl(); rendererParams.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); renderer.setRendererHints(rendererParams); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); // System.setProperty("org.geotools.test.interactive", "true"); RendererBaseTest.setupVeraFonts(); }
public void testLabelCacheImpl() throws Exception { Style pStyle = RendererBaseTest.loadStyle(this, "textAnchorRotation.sld"); Style lStyle = RendererBaseTest.loadStyle(this, "lineGray.sld"); DefaultMapContext mc = new DefaultMapContext(DefaultGeographicCRS.WGS84); mc.addLayer(lineFS, lStyle); mc.addLayer(pointFS, pStyle); StreamingRenderer renderer = new StreamingRenderer(); renderer.setContext(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); Map rendererParams = new HashMap(); LabelCacheImpl labelCache = new LabelCacheImpl(); rendererParams.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); renderer.setRendererHints(rendererParams); RendererBaseTest.showRender("New labeller", renderer, TIME, bounds); } }
@Test public void testIsometric() throws Exception { Style style = RendererBaseTest.loadStyle(this, "isometric.sld"); DefaultMapContext mc = new DefaultMapContext(DefaultGeographicCRS.WGS84); mc.addLayer(bfs, style); StreamingRenderer renderer = new StreamingRenderer(); renderer.setContext(mc); renderer.setJava2DHints(new RenderingHints(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON)); RendererBaseTest.showRender("lineStartEnd.sld", renderer, TIME, bbounds); }
BufferedImage image = new BufferedImage(screen.width, screen.height, BufferedImage.TYPE_4BYTE_ABGR); final StreamingRenderer sr = new StreamingRenderer(); sr.setContext(mapContext); sr.paint(image.createGraphics(), screen, worldToScreen); assertTrue("Pixel should be drawn at 0,0 ", image.getRGB(0, 0) != 0); assertTrue(
private double getStrokeWidth( List<FeatureTypeStyle> featureTypeStyles, Rule[] rules, double dpi) { ArrayList<LiteFeatureTypeStyle> lfts = new ArrayList<LiteFeatureTypeStyle>(); for (FeatureTypeStyle fts : featureTypeStyles) { List<Rule> ruleList = new ArrayList<Rule>(Arrays.asList(rules)); List<Rule> elseRuleList = new ArrayList<Rule>(); LiteFeatureTypeStyle s = new LiteFeatureTypeStyle( null, null, ruleList, elseRuleList, fts.getTransformation()); lfts.add(s); } Map hints = new HashMap(); hints.put("dpi", new Double(dpi)); StreamingRenderer renderer = new StreamingRenderer(); renderer.scaleDenominator = 1; renderer.setRendererHints(hints); renderer.applyUnitRescale(lfts); for (LiteFeatureTypeStyle s : lfts) { Rule r = s.ruleList[0]; LineSymbolizer rescaledLineSymbolizer = (LineSymbolizer) r.getSymbolizers()[0]; return rescaledLineSymbolizer.getStroke().getWidth().evaluate(null, Double.class); } // this should not happen return -1; } }
/** * Gets the renderer, creating a default one if required. * * @return the renderer */ public GTRenderer getRenderer() { if (renderer == null) { doSetRenderer(new StreamingRenderer()); } return renderer; }
public void testPartialLineLabelTrue() throws Exception { // System.setProperty("java.awt.headless", "false"); Thread.sleep(1000); Style style = RendererBaseTest.loadStyle(this, "partialLineLabelTrue.sld"); DefaultMapContext mc = new DefaultMapContext(DefaultGeographicCRS.WGS84); mc.addLayer(fs_line, style); renderer.setContext(mc); final BufferedImage image = RendererBaseTest.renderImage(renderer, bounds, null); // RenderedImageBrowser.showChain(image); RendererBaseTest.assertPixel(image, 150, 1, Color.BLACK, 30); }
/** * Renders features based on the map layers and their styles as specified in the map context * using <code>setContext</code>. * * <p>This version of the method assumes that the area of the visible part of the map and the * size of the output area are known. The transform between the two is calculated internally. * * @param graphics The graphics object to draw to. * @param paintArea The size of the output area in output units (eg: pixels). * @param mapArea the map's visible area (viewport) in map coordinates. */ public void paint(Graphics2D graphics, Rectangle paintArea, ReferencedEnvelope mapArea) { if (mapArea == null || paintArea == null) { LOGGER.info("renderer passed null arguments"); return; } // Other arguments get checked later paint( graphics, paintArea, mapArea, RendererUtilities.worldToScreenTransform(mapArea, paintArea)); }
private void workaroundLabelCacheBug() { Map<Object, Object> hints = (Map<Object, Object>) renderer.getRendererHints(); if (hints == null) { hints = new HashMap<Object, Object>(); } if (hints.containsKey(StreamingRenderer.LABEL_CACHE_KEY)) { labelCache = (LabelCache) hints.get(StreamingRenderer.LABEL_CACHE_KEY); } else { labelCache = new LabelCacheImpl(); hints.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache); } renderer.setRendererHints(hints); }