/** * Retrieves the color of the first Mark in a PointSymbolizer object. This method is identical * to {@linkplain #color(org.geotools.styling.PointSymbolizer)}. * * <p>If you are using something fun like symbols you will need to do your own thing. * * @param symbolizer Point symbolizer information. * @return Color of the point's mark, or null if unavailable. */ public static Color pointColor(PointSymbolizer symbolizer) { return color(symbolizer); }
/** * Retrieve linestring width from symbolizer if available. * * @param symbolizer Line symbolizer information. * @return width of linestring, or NOTFOUND */ public static int lineWidth(LineSymbolizer symbolizer) { if (symbolizer == null) { return NOTFOUND; } Stroke stroke = symbolizer.getStroke(); return width(stroke); }
fillColor = color; return createPolygonStyle(color, fillColor, 0.5f); return createLineStyle(color, 1.0f); fillColor = color; return createPointStyle("Circle", color, fillColor, 0.5f, 3.0f);
/** * 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)); }
/** * 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); }
@Test public void testPointWithRotation() throws Exception { // <UserStyle> // <Title>GeoServer SLD Cook Book: Rotated square</Title> // <FeatureTypeStyle> // <Rule> // <PointSymbolizer> // <Graphic> // <Mark> // <WellKnownName>square</WellKnownName> // <Fill> // <CssParameter name="fill">#009900</CssParameter> // </Fill> // </Mark> // <Size>12</Size> // <Rotation>45</Rotation> // </Graphic> // </PointSymbolizer> // </Rule> // </FeatureTypeStyle> // </UserStyle> Style style = parse("point", "rotated-square.sld"); PointSymbolizer point = SLD.pointSymbolizer(style); assertEquals("square", SLD.wellKnownName(SLD.mark(point))); assertEquals(color("009900"), SLD.color(SLD.fill(point))); assertEquals(12, SLD.pointSize(point)); assertEquals(45, Filters.asInt(SLD.graphic(point).getRotation())); }
PointSymbolizer point = SLD.pointSymbolizer(style); assertEquals("triangle", SLD.wellKnownName(SLD.mark(point))); assertEquals(color("009900"), SLD.color(SLD.fill(point))); assertEquals(0.2, SLD.opacity(SLD.fill(point)), 0.1); assertEquals(Color.black, SLD.color(SLD.stroke(point))); assertEquals(2, SLD.width(SLD.stroke(point))); assertEquals(12, SLD.pointSize(point));
LineSymbolizer line = (LineSymbolizer) SLD.rules(style)[0].symbolizers().get(0); assertEquals(Color.blue, SLD.color(line)); assertEquals(1, SLD.width(line)); assertEquals(10f, SLD.lineDash(line)[0], 0.1); assertEquals(10f, SLD.lineDash(line)[0], 0.1); line = (LineSymbolizer) SLD.rules(style)[0].symbolizers().get(1); Stroke stroke = line.getStroke(); assertEquals(5f, SLD.lineDash(line)[0], 0.1); assertEquals(15f, SLD.lineDash(line)[1], 0.1); assertEquals(7.5, Filters.asDouble(stroke.getDashOffset()), 0.1); assertEquals(5, Filters.asInt(g.getSize())); Mark mark = SLD.mark(g); assertEquals("circle", SLD.wellKnownName(mark)); assertEquals(color("000033"), SLD.color(mark.getStroke())); assertEquals(1, SLD.width(mark.getStroke()));
@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))); }
PointSymbolizer point = SLD.pointSymbolizer(style); assertEquals(6, SLD.pointSize(point)); Mark mark = SLD.pointMark(style); assertEquals("circle", SLD.wellKnownName(mark)); assertEquals(Color.red, SLD.color(mark.getFill())); assertEquals(Color.black, SLD.color(mark.getStroke())); assertEquals(2, SLD.width(mark.getStroke()));
/** * We should have a test case for the expected default values so we can be sure of correct SLD * rendering. */ public void testDefaults() { Stroke stroke = sf.getDefaultStroke(); assertEquals("default stroke width is one", 1, SLD.width(stroke)); assertEquals("default stroke color is black", Color.BLACK, SLD.color(stroke)); } /** See http://jira.codehaus.org/browse/UDIG-1374 */
LineSymbolizer line = SLD.lineSymbolizer(style); assertEquals(4f, SLD.lineDash(line)[0], 0.1); assertEquals(6f, SLD.lineDash(line)[1], 0.1); Mark mark = SLD.mark(line.getStroke().getGraphicStroke()); assertEquals("circle", SLD.wellKnownName(mark)); assertEquals(color("666666"), SLD.color(mark.getFill())); assertEquals(color("333333"), SLD.color(mark.getStroke())); assertEquals(1, SLD.width(mark.getStroke()));
PolygonSymbolizer poly = SLD.polySymbolizer(style); assertEquals(color("40FF40"), SLD.color(poly.getFill())); assertEquals(color("FFFFFF"), SLD.color(poly.getStroke())); assertEquals(2, SLD.width(poly.getStroke())); TextSymbolizer text = SLD.textSymbolizer(style); assertThat(SLD.textLabel(text), TestUtils.attribute("name")); assertEquals(Color.black, SLD.color(text.getFill())); assertEquals(0.5, Filters.asDouble(place.getAnchorPoint().getAnchorPointY()), 0.1); Font font = SLD.font(text); assertEquals("Arial", Filters.asString(font.getFontFamily())); assertEquals(11, Filters.asInt(font.getSize()));
@Test public void testPolygonWithTransparent() throws Exception { // <UserStyle> // <Title>SLD Cook Book: Transparent polygon</Title> // <FeatureTypeStyle> // <Rule> // <PolygonSymbolizer> // <Fill> // <CssParameter name="fill">#000080</CssParameter> // <CssParameter name="fill-opacity">0.5</CssParameter> // </Fill> // <Stroke> // <CssParameter name="stroke">#FFFFFF</CssParameter> // <CssParameter name="stroke-width">2</CssParameter> // </Stroke> // </PolygonSymbolizer> // </Rule> // </FeatureTypeStyle> // </UserStyle> Style style = parse("poly", "transparent.sld"); PolygonSymbolizer poly = SLD.polySymbolizer(style); assertEquals(color("000080"), SLD.color(poly.getFill())); assertEquals(0.5, SLD.opacity(poly.getFill()), 0.1); assertEquals(color("FFFFFF"), SLD.color(poly.getStroke())); assertEquals(2, SLD.width(poly.getStroke())); }
PolygonSymbolizer poly = SLD.polySymbolizer(style); assertEquals(color("40FF40"), SLD.color(poly.getFill())); assertEquals(color("FFFFFF"), SLD.color(poly.getStroke())); assertEquals(2, SLD.width(poly.getStroke())); TextSymbolizer text = SLD.textSymbolizer(style); assertEquals("name", SLD.textLabelString(text)); assertEquals(color("FFFFFF"), SLD.textHaloFill(text)); assertEquals(3, SLD.textHaloWidth(text));
PolygonSymbolizer poly = SLD.polySymbolizer(style); Mark mark = SLD.mark(poly.getFill().getGraphicFill()); assertEquals("shape://times", Filters.asString(mark.getWellKnownName())); assertEquals(color("990099"), SLD.color(mark.getStroke())); assertEquals(1, SLD.width(mark.getStroke()));
@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))); }
case MULTIPOLYGON: PolygonSymbolizer polySym = (PolygonSymbolizer) sym; setLineColorItems(SLD.color(polySym.getStroke())); setFillColorItems(SLD.color(polySym.getFill())); setFillOpacityItems(SLD.opacity(polySym.getFill())); break; case MULTILINESTRING: LineSymbolizer lineSym = (LineSymbolizer) sym; setLineColorItems(SLD.color(lineSym)); break; case MULTIPOINT: PointSymbolizer pointSym = (PointSymbolizer) sym; setLineColorItems(SLD.pointColor(pointSym)); setFillColorItems(SLD.pointFill(pointSym)); setFillOpacityItems(SLD.pointOpacity(pointSym)); setPointSizeItems(SLD.pointSize(pointSym)); setPointSymbolItems(SLD.pointWellKnownName(pointSym));
PolygonSymbolizer poly = SLD.polySymbolizer(style); assertEquals(color("40FF40"), SLD.color(poly.getFill())); assertEquals(color("FFFFFF"), SLD.color(poly.getStroke())); assertEquals(2, SLD.width(poly.getStroke())); TextSymbolizer text = SLD.textSymbolizer(style); assertEquals("name", SLD.textLabelString(text));