Search in sources :

Example 1 with Mark

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);
    }
}
Also used : GridGeometry(org.apache.sis.coverage.grid.GridGeometry) PointSymbolizer(org.opengis.style.PointSymbolizer) GridExtent(org.apache.sis.coverage.grid.GridExtent) Stroke(org.opengis.style.Stroke) Fill(org.opengis.style.Fill) Graphic(org.opengis.style.Graphic) RenderingContext2D(org.geotoolkit.display2d.canvas.RenderingContext2D) Mark(org.opengis.style.Mark) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 2 with Mark

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);
    }
}
Also used : PointSymbolizer(org.opengis.style.PointSymbolizer) Fill(org.opengis.style.Fill) Stroke(org.opengis.style.Stroke) PolygonSymbolizer(org.opengis.style.PolygonSymbolizer) Graphic(org.opengis.style.Graphic) LineSymbolizer(org.opengis.style.LineSymbolizer) GraphicalSymbol(org.opengis.style.GraphicalSymbol) ArrayList(java.util.ArrayList) Mark(org.opengis.style.Mark)

Example 3 with Mark

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);
}
Also used : PointSymbolizer(org.opengis.style.PointSymbolizer) Marshaller(javax.xml.bind.Marshaller) Mark(org.opengis.style.Mark) JAXBElement(javax.xml.bind.JAXBElement) Unmarshaller(javax.xml.bind.Unmarshaller) Test(org.junit.Test)

Example 4 with Mark

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);
}
Also used : PointSymbolizer(org.opengis.style.PointSymbolizer) Graphic(org.opengis.style.Graphic) Mark(org.opengis.style.Mark) JAXBElement(javax.xml.bind.JAXBElement) Interpolate(org.geotoolkit.style.function.Interpolate) Expression(org.opengis.filter.Expression) Unmarshaller(javax.xml.bind.Unmarshaller) Test(org.junit.Test)

Example 5 with Mark

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;
}
Also used : Stroke(org.opengis.style.Stroke) GraphicStroke(org.opengis.style.GraphicStroke) Fill(org.opengis.style.Fill) GraphicFill(org.opengis.style.GraphicFill) Description(org.opengis.style.Description) GraphicalSymbol(org.opengis.style.GraphicalSymbol) ArrayList(java.util.ArrayList) ExternalMark(org.opengis.style.ExternalMark) Mark(org.opengis.style.Mark) Unit(javax.measure.Unit) Displacement(org.opengis.style.Displacement) AnchorPoint(org.opengis.style.AnchorPoint) MutableStyle(org.geotoolkit.style.MutableStyle) Expression(org.opengis.filter.Expression) GraphicFill(org.opengis.style.GraphicFill) LineSymbolizer(org.opengis.style.LineSymbolizer)

Aggregations

Mark (org.opengis.style.Mark)19 GraphicalSymbol (org.opengis.style.GraphicalSymbol)14 Expression (org.opengis.filter.Expression)11 ArrayList (java.util.ArrayList)10 PointSymbolizer (org.opengis.style.PointSymbolizer)10 AnchorPoint (org.opengis.style.AnchorPoint)9 Displacement (org.opengis.style.Displacement)9 ExternalMark (org.opengis.style.ExternalMark)9 Fill (org.opengis.style.Fill)9 Stroke (org.opengis.style.Stroke)9 Graphic (org.opengis.style.Graphic)8 Unit (javax.measure.Unit)6 Description (org.opengis.style.Description)6 MutableStyle (org.geotoolkit.style.MutableStyle)5 Test (org.junit.Test)5 GraphicFill (org.opengis.style.GraphicFill)5 GraphicStroke (org.opengis.style.GraphicStroke)5 ExternalGraphic (org.opengis.style.ExternalGraphic)4 LineSymbolizer (org.opengis.style.LineSymbolizer)4 PolygonSymbolizer (org.opengis.style.PolygonSymbolizer)4