use of org.opengis.style.Mark in project geotoolkit by Geomatys.
the class CachedPointSymbolizerTest method testMargin.
@Test
public void testMargin() throws FactoryException {
final GridGeometry grid = new GridGeometry(new GridExtent(1, 1), CRS.getDomainOfValidity(CommonCRS.WGS84.normalizedGeographic()), GridOrientation.HOMOTHETY);
final RenderingContext2D ctx = new RenderingContext2D(grid, null);
{
// NO ANCHOR, NO DISPLACEMENT
final List<GraphicalSymbol> symbols = new ArrayList<>();
final Stroke stroke = SF.stroke(Color.BLACK, 2);
final Fill fill = SF.fill(Color.RED);
final Mark mark = SF.mark(MARK_CIRCLE, fill, stroke);
symbols.add(mark);
final Graphic graphic = SF.graphic(symbols, LITERAL_ONE_FLOAT, FF.literal(12), LITERAL_ONE_FLOAT, DEFAULT_ANCHOR_POINT, DEFAULT_DISPLACEMENT);
final PointSymbolizer symbolizer = SF.pointSymbolizer("mySymbol", (String) null, DEFAULT_DESCRIPTION, Units.POINT, graphic);
final CachedSymbolizer cached = GO2Utilities.getCached(symbolizer, null);
final float margin = cached.getMargin(null, ctx);
// 12/2 + 2*2(stroke width)
assertEquals(8f, margin, DELTA);
}
{
// NO ANCHOR
final List<GraphicalSymbol> symbols = new ArrayList<>();
final Stroke stroke = SF.stroke(Color.BLACK, 2);
final Fill fill = SF.fill(Color.RED);
final Mark mark = SF.mark(MARK_CIRCLE, fill, stroke);
symbols.add(mark);
final Graphic graphic = SF.graphic(symbols, LITERAL_ONE_FLOAT, FF.literal(12), LITERAL_ONE_FLOAT, DEFAULT_ANCHOR_POINT, SF.displacement(10, 15));
final PointSymbolizer symbolizer = SF.pointSymbolizer("mySymbol", (String) null, DEFAULT_DESCRIPTION, Units.POINT, graphic);
final CachedSymbolizer cached = GO2Utilities.getCached(symbolizer, null);
final float margin = cached.getMargin(null, ctx);
// 12/2 + 2*2(stroke width) + 15(disp)
assertEquals(23f, margin, DELTA);
}
{
final List<GraphicalSymbol> symbols = new ArrayList<>();
final Stroke stroke = SF.stroke(Color.BLACK, 2);
final Fill fill = SF.fill(Color.RED);
final Mark mark = SF.mark(MARK_CIRCLE, fill, stroke);
symbols.add(mark);
final Graphic graphic = SF.graphic(symbols, LITERAL_ONE_FLOAT, FF.literal(12), LITERAL_ONE_FLOAT, SF.anchorPoint(0, 1.7), SF.displacement(10, 15));
final PointSymbolizer symbolizer = SF.pointSymbolizer("mySymbol", (String) null, DEFAULT_DESCRIPTION, Units.POINT, graphic);
final CachedSymbolizer cached = GO2Utilities.getCached(symbolizer, null);
final float margin = cached.getMargin(null, ctx);
// 12/2 + 2*2(stroke width) + 15(disp) + 16*(1.7-0.5)
assertEquals(23f + 19.2f, margin, DELTA);
}
}
use of org.opengis.style.Mark in project geotoolkit by Geomatys.
the class IntervalStyleBuilder method derivateSymbolizer.
/**
* Derivate a symbolizer with a new color.
*/
private Symbolizer derivateSymbolizer(final Symbolizer symbol, final Color color) {
if (symbol instanceof PolygonSymbolizer) {
PolygonSymbolizer ps = (PolygonSymbolizer) symbol;
Fill fill = sf.fill(sf.literal(color), ps.getFill().getOpacity());
return sf.polygonSymbolizer(ps.getName(), ps.getGeometryPropertyName(), ps.getDescription(), ps.getUnitOfMeasure(), ps.getStroke(), fill, ps.getDisplacement(), ps.getPerpendicularOffset());
} else if (symbol instanceof LineSymbolizer) {
LineSymbolizer ls = (LineSymbolizer) symbol;
Stroke oldStroke = ls.getStroke();
Stroke stroke = sf.stroke(sf.literal(color), oldStroke.getOpacity(), oldStroke.getWidth(), oldStroke.getLineJoin(), oldStroke.getLineCap(), oldStroke.getDashArray(), oldStroke.getDashOffset());
return sf.lineSymbolizer(ls.getName(), ls.getGeometryPropertyName(), ls.getDescription(), ls.getUnitOfMeasure(), stroke, ls.getPerpendicularOffset());
} else if (symbol instanceof PointSymbolizer) {
PointSymbolizer ps = (PointSymbolizer) symbol;
Graphic oldGraphic = ps.getGraphic();
Mark oldMark = (Mark) oldGraphic.graphicalSymbols().get(0);
Fill fill = sf.fill(sf.literal(color), oldMark.getFill().getOpacity());
List<GraphicalSymbol> symbols = new ArrayList<GraphicalSymbol>();
symbols.add(sf.mark(oldMark.getWellKnownName(), fill, oldMark.getStroke()));
Graphic graphic = sf.graphic(symbols, oldGraphic.getOpacity(), oldGraphic.getSize(), oldGraphic.getRotation(), oldGraphic.getAnchorPoint(), oldGraphic.getDisplacement());
return sf.pointSymbolizer(graphic, ps.getGeometryPropertyName());
} else {
throw new IllegalArgumentException("unexpected symbolizer type : " + symbol);
}
}
use of org.opengis.style.Mark in project geotoolkit by Geomatys.
the class SEforSLD100Test method testPointSymbolizer.
@Test
public void testPointSymbolizer() throws JAXBException {
final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller();
final Marshaller MARSHALLER = POOL.acquireMarshaller();
// Read test
Object obj = UNMARSHALLER.unmarshal(FILE_SE_SYMBOL_POINT);
assertNotNull(obj);
JAXBElement<org.geotoolkit.sld.xml.v100.PointSymbolizer> jax = (JAXBElement<org.geotoolkit.sld.xml.v100.PointSymbolizer>) obj;
PointSymbolizer pointSymbol = TRANSFORMER_GT.visit(jax.getValue());
assertNotNull(pointSymbol);
assertEquals(pointSymbol.getGeometryPropertyName(), valueGeom);
assertEquals(Units.POINT, pointSymbol.getUnitOfMeasure());
assertNotNull(pointSymbol.getGraphic());
assertEquals(floatValue(pointSymbol.getGraphic().getOpacity()), 0.7f, DELTA);
assertEquals(floatValue(pointSymbol.getGraphic().getRotation()), 110f, DELTA);
assertEquals(floatValue(pointSymbol.getGraphic().getSize()), 32f, DELTA);
Mark mark = (Mark) pointSymbol.getGraphic().graphicalSymbols().get(0);
assertEquals(stringValue(mark.getWellKnownName()), "square");
assertEquals(floatValue(mark.getStroke().getWidth()), 13f, DELTA);
assertEquals(floatValue(mark.getStroke().getOpacity()), 0.4f, DELTA);
assertEquals(stringValue(mark.getStroke().getLineJoin()), "bevel");
assertEquals(stringValue(mark.getStroke().getLineCap()), "butt");
assertEquals(floatValue(mark.getStroke().getDashOffset()), 2.3f, DELTA);
assertEquals(stringValue(mark.getStroke().getColor()), "#404040");
assertEquals(floatValue(mark.getFill().getOpacity()), 1.0f, DELTA);
assertEquals(stringValue(mark.getFill().getColor()), "#808080");
// Write test
JAXBElement<org.geotoolkit.sld.xml.v100.PointSymbolizer> pvt = TRANSFORMER_OGC.visit(pointSymbol, null);
assertNotNull(pvt);
assertEquals(pvt.getValue().getGeometry().getPropertyName().getContent(), "");
org.geotoolkit.sld.xml.v100.Graphic gra = pvt.getValue().getGraphic();
assertNotNull(gra.getOpacity());
assertNotNull(gra.getRotation());
assertNotNull(gra.getSize());
assertEquals(gra.getExternalGraphicOrMark().size(), 1);
assertNotNull(pvt.getValue().getGraphic());
assertEquals(pvt.getValue().getGeometry().getPropertyName().getContent(), "");
MARSHALLER.marshal(pvt, TEST_FILE_SE_SYMBOL_POINT);
POOL.recycle(MARSHALLER);
POOL.recycle(UNMARSHALLER);
}
use of org.opengis.style.Mark in project geotoolkit by Geomatys.
the class SEforSLD110Test method testFillInterpolation.
// //////////////////////////////////////////////////////////////////////////
// JAXB TEST UNMARSHELLING FOR USER CASES //////////////////////////////////
// //////////////////////////////////////////////////////////////////////////
@Test
public void testFillInterpolation() throws JAXBException {
final Unmarshaller UNMARSHALLER = POOL.acquireUnmarshaller();
// Read test
Object obj = UNMARSHALLER.unmarshal(FILE_SE_FILL_INTERPOLATION);
assertNotNull(obj);
JAXBElement<org.geotoolkit.se.xml.v110.PointSymbolizerType> jax = (JAXBElement<org.geotoolkit.se.xml.v110.PointSymbolizerType>) obj;
PointSymbolizer pointSymbol = TRANSFORMER_GT.visit(jax.getValue());
assertNotNull(pointSymbol);
assertEquals(pointSymbol.getGeometryPropertyName(), valueGeom);
assertEquals(Units.POINT, pointSymbol.getUnitOfMeasure());
assertNotNull(pointSymbol.getGraphic());
Graphic graphic = pointSymbol.getGraphic();
Mark mark = (Mark) graphic.graphicalSymbols().get(0);
Expression color = mark.getFill().getColor();
assertTrue(color instanceof Interpolate);
POOL.recycle(UNMARSHALLER);
}
use of org.opengis.style.Mark in project geotoolkit by Geomatys.
the class Styles method graphicFillLine.
public static MutableStyle graphicFillLine() throws URISyntaxException {
// general informations
final String name = "mySymbol";
final Description desc = DEFAULT_DESCRIPTION;
// use the default geometry of the feature
final String geometry = null;
final Unit unit = Units.POINT;
final Expression offset = LITERAL_ONE_FLOAT;
// the stroke fill
// a pattern that will be repeated like a mosaic
final Expression size = FF.literal(12);
final Expression opacity = LITERAL_ONE_FLOAT;
final Expression rotation = LITERAL_ONE_FLOAT;
final AnchorPoint anchor = DEFAULT_ANCHOR_POINT;
final Displacement disp = DEFAULT_DISPLACEMENT;
final List<GraphicalSymbol> symbols = new ArrayList<GraphicalSymbol>();
final Stroke fillStroke = SF.stroke(Color.BLACK, 2);
final Fill fill = SF.fill(Color.RED);
final Mark mark = SF.mark(MARK_CIRCLE, fill, fillStroke);
symbols.add(mark);
final GraphicFill graphicfill = SF.graphicFill(symbols, opacity, size, rotation, anchor, disp);
// the visual element
final Expression color = SF.literal(Color.BLUE);
final Expression width = FF.literal(4);
final Expression linecap = STROKE_CAP_ROUND;
final Expression linejoin = STROKE_JOIN_BEVEL;
final float[] dashes = new float[] { 8, 4, 2, 2, 2, 2, 2, 4 };
final Expression dashOffset = LITERAL_ZERO_FLOAT;
final Stroke stroke = SF.stroke(graphicfill, color, opacity, width, linejoin, linecap, dashes, dashOffset);
final LineSymbolizer symbolizer = SF.lineSymbolizer(name, geometry, desc, unit, stroke, offset);
final MutableStyle style = SF.style(symbolizer);
return style;
}
Aggregations