@Test public void testParse() throws Exception { Properties props = new Properties(); props.setProperty("type", "point"); props.setProperty("color", "ff0000"); ByteArrayOutputStream bout = new ByteArrayOutputStream(); props.store(bout, null); StyledLayerDescriptor sld = Styles.handler(PropertyStyleHandler.FORMAT) .parse(new ByteArrayInputStream(bout.toByteArray()), null, null, null); assertNotNull(sld); Style style = Styles.style(sld); PointSymbolizer point = SLD.pointSymbolizer(style); assertNotNull(point); }
/** * Sets the Colour for the point symbolizer * * @param style * @param colour */ public static void setPointColour(Style style, Color colour) { if (style == null) { return; } setPointColour(pointSymbolizer(style), colour); }
/** * Retrieves the first Mark used in a Style object. * * @param style the Style * @return the first Mark object or null if unavailable. */ public static Mark pointMark(Style style) { if (style == null) { return null; } return mark(pointSymbolizer(style)); }
@SuppressWarnings("unchecked") @Test public void testRelativeExternalGraphicNoResolver() throws Exception { String yaml = "feature-styles:\n" + "- name: name\n" + " rules:\n" + " - symbolizers:\n" + " - point:\n" + " size: 32\n" + " symbols:\n" + " - external:\n" + " url: smileyface.png\n" + " format: image/png\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(p.getGraphic().graphicalSymbols().get(0), instanceOf(ExternalGraphic.class)); ExternalGraphic eg = (ExternalGraphic) p.getGraphic().graphicalSymbols().get(0); assertThat(eg.getLocation(), equalTo(new URL("file:smileyface.png"))); assertThat( eg.getOnlineResource().getLinkage(), anyOf(equalTo(new URI("smileyface.png")), equalTo(new URI("file:smileyface.png")))); }
@Test public void testEvilExpression1() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: \\$\\}\\\\\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(SLD.fill(p).getColor(), literal(equalTo("$}\\"))); }
@Test public void testRelativeExternalGraphicWithResolver() throws Exception { String yaml = "feature-styles:\n" + "- name: name\n" + " rules:\n" + " - symbolizers:\n" + " - point:\n" + " size: 32\n" + " symbols:\n" + " - external:\n" + " url: smileyface.png\n" + " format: image/png\n"; ResourceLocator locator = EasyMock.createMock(ResourceLocator.class); expect(locator.locateResource("smileyface.png")) .andReturn(new URL("http://itworked/smileyface.png")); replay(locator); StyledLayerDescriptor sld = Ysld.parse(yaml, Collections.<ZoomContextFinder>emptyList(), locator); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(p.getGraphic().graphicalSymbols().get(0), instanceOf(ExternalGraphic.class)); ExternalGraphic eg = (ExternalGraphic) p.getGraphic().graphicalSymbols().get(0); assertThat(eg.getLocation(), equalTo(new URL("http://itworked/smileyface.png"))); assertThat( eg.getOnlineResource().getLinkage(), equalTo(new URI("http://itworked/smileyface.png"))); verify(locator); }
@Test public void testAnchor() throws Exception { String yaml = "blue: &blue rgb(0,0,255)\n" + "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: *blue\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertEquals(Color.BLUE, SLD.color(SLD.fill(p))); }
@Test public void testNamedColor() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: blue\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertEquals(Color.BLUE, SLD.color(SLD.fill(p))); }
void assertSLD(StyledLayerDescriptor sld) { assertNotNull(sld); PointSymbolizer point = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertNotNull(point); assertEquals("triangle", SLD.mark(point).getWellKnownName().evaluate(null)); } }
@Test public void testDynamicColor() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: ${colourAttribute}\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(SLD.fill(p).getColor(), attribute("colourAttribute")); }
@Test public void testMarkOpacity() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: '#FF0000'\n" + " fill-opacity: 0.5\n"; // Not just 'opacity' StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat( ((Mark) p.getGraphic().graphicalSymbols().get(0)).getFill().getOpacity(), literal(lexEqualTo(0.5d))); }
@Test public void testColorSexegesimal() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: 1:17:40:20:15\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(SLD.fill(p).getColor(), literal(isColor("FFFFFF"))); }
@Test public void testPointWithGraphic() throws Exception { // <UserStyle> // <Title>GeoServer SLD Cook Book: Point as graphic</Title> // <FeatureTypeStyle> // <Rule> // <PointSymbolizer> // <Graphic> // <ExternalGraphic> // <OnlineResource // xlink:type="simple" // xlink:href="smileyface.png" /> // <Format>image/png</Format> // </ExternalGraphic> // <Size>32</Size> // </Graphic> // </PointSymbolizer> // </Rule> // </FeatureTypeStyle> // </UserStyle> Style style = parse("point", "graphic.sld"); Graphic graphic = SLD.graphic(SLD.pointSymbolizer(style)); assertEquals(32, Filters.asInt(graphic.getSize())); ExternalGraphic external = (ExternalGraphic) graphic.graphicalSymbols().get(0); assertEquals("smileyface.png", external.getLocation().getPath()); assertEquals("image/png", external.getFormat()); }
@SuppressWarnings("unchecked") @Test public void testPointDisplacement() throws Exception { String yaml = "point: \n" + " displacement: " + tuple(10, 42) + "\n" + " symbols: \n" + " - mark: \n" + " fill-color: '#FF0000'\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat( p.getGraphic().getDisplacement(), allOf( hasProperty("displacementX", literal(10)), hasProperty("displacementY", literal(42)))); // SLD/SE 1.1 feature that may not be supported by renderer }
@SuppressWarnings("unchecked") @Test public void testPointAnchor() throws Exception { String yaml = "point: \n" + " anchor: " + tuple(0.75, 0.25) + "\n" + " symbols: \n" + " - mark: \n" + " fill-color: '#FF0000'\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat( p.getGraphic().getAnchorPoint(), allOf( hasProperty("anchorPointX", literal(0.75)), hasProperty("anchorPointY", literal(0.25)))); // SLD/SE 1.1 feature that may not be supported by renderer }
@Test public void testLegend() throws Exception { String yaml = "feature-styles:\n" + "- rules:\n" + " - legend:\n" + " symbols:\n" + " - external:\n" + " url: smileyface.png\n" + " format: image/png\n" + " symbolizers:\n" + " - point:\n" + " symbols:\n" + " - mark:\n" + " shape: circle\n" + " fill-color: '#FF0000'"; StyledLayerDescriptor sld = Ysld.parse(yaml); Rule rule = SLD.rules(SLD.defaultStyle(sld))[0]; assertThat(rule.getLegend().graphicalSymbols().get(0), instanceOf(ExternalGraphic.class)); ExternalGraphic legend = (ExternalGraphic) rule.getLegend().graphicalSymbols().get(0); assertEquals(new URL("file:smileyface.png"), legend.getLocation()); assertEquals("image/png", legend.getFormat()); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertEquals("circle", SLD.wellKnownName(SLD.mark(p))); assertEquals(Color.RED, SLD.color(SLD.fill(p))); }
@Test public void testColorHex() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: 0x001122\n" + " stroke-color: 0x334455\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(SLD.fill(p).getColor(), literal(isColor("001122"))); assertThat(SLD.stroke(p).getColor(), literal(isColor("334455"))); }
@Test public void testColorQuotedHash() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: '#001122'\n" + " stroke-color: '#334455'\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(SLD.fill(p).getColor(), literal(isColor("001122"))); assertThat(SLD.stroke(p).getColor(), literal(isColor("334455"))); }
@Test public void testColorQuotedBare() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: '001122'\n" + " stroke-color: '334455'\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(SLD.fill(p).getColor(), literal(isColor("001122"))); assertThat(SLD.stroke(p).getColor(), literal(isColor("334455"))); }
@Test public void testColorQuotedHex() throws Exception { String yaml = "point: \n" + " symbols: \n" + " - mark: \n" + " fill-color: '0x001122'\n" + " stroke-color: '0x334455'\n"; StyledLayerDescriptor sld = Ysld.parse(yaml); PointSymbolizer p = SLD.pointSymbolizer(SLD.defaultStyle(sld)); assertThat(SLD.fill(p).getColor(), literal(isColor("001122"))); assertThat(SLD.stroke(p).getColor(), literal(isColor("334455"))); }