package org.geotools.renderer.lite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.geotools.data.property.PropertyDataStore;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.map.FeatureLayer;
import org.geotools.map.MapContent;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.geotools.styling.Style;
import org.geotools.test.TestData;
import org.junit.Before;
import org.junit.Test;
/**
*
*
* @source $URL$
*/
public class WrapPointSymbolizerTest {
private static final long TIME = 4000;
SimpleFeatureSource fs;
@Before
public void setUp() throws Exception {
File property = new File(TestData.getResource(this, "bigsquare.properties").toURI());
PropertyDataStore ds = new PropertyDataStore(property.getParentFile());
fs = ds.getFeatureSource("bigsquare");
}
@Test
public void testWrapPointSymbolizer() throws Exception {
Style style = RendererBaseTest.loadStyle(this, "pointPoly.sld");
MapContent mc = new MapContent();
mc.addLayer(new FeatureLayer(fs, style));
ReferencedEnvelope bounds = new ReferencedEnvelope(0, 370, 0, 10, DefaultGeographicCRS.WGS84);
mc.getViewport().setBounds(bounds);
StreamingRenderer renderer = new StreamingRenderer();
Map<Object, Object> rendererParams = new HashMap<Object, Object>();
rendererParams.put(StreamingRenderer.ADVANCED_PROJECTION_HANDLING_KEY, true);
rendererParams.put(StreamingRenderer.CONTINUOUS_MAP_WRAPPING, true);
renderer.setRendererHints(rendererParams);
renderer.setMapContent(mc);
RendererBaseTest.showRender("WrapPointSymbolizer", renderer, TIME, bounds);
final BufferedImage image = new BufferedImage(400, 80, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D) image.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, 400, 80);
renderer.paint(g, new Rectangle(0, 0, 400, 80), bounds);
RendererBaseTest.showImage("WrapPointSymbolizer", TIME, image);
// the first instance, black polygon and red central point
RendererBaseTest.assertPixel(image, 5, 0, Color.BLACK);
RendererBaseTest.assertPixel(image, 5, 40, Color.RED);
// the second instance, black polygon and red central point
RendererBaseTest.assertPixel(image, 395, 0, Color.BLACK);
RendererBaseTest.assertPixel(image, 395, 40, Color.RED);
}
}