@Override public double getPerpendicularOffset() { if (ls.getPerpendicularOffset() == null) { return 0d; } Double offset = ls.getPerpendicularOffset().evaluate(feature, Double.class); if (offset == null) { return 0d; } else { return offset; } }
@Override public void visit(LineSymbolizer sym) { this.defaultUnit = sym.getUnitOfMeasure(); try { super.visit(sym); LineSymbolizer copy = (LineSymbolizer) pages.peek(); copy.setPerpendicularOffset(rescale(copy.getPerpendicularOffset())); } finally { this.defaultUnit = null; } }
/** @see org.geotools.styling.StyleVisitor#visit(org.geotools.styling.LineSymbolizer) */ public void visit(LineSymbolizer line) { if (symbolizerGeometriesVisitEnabled) { if (line.getGeometry() != null) { line.getGeometry().accept(this, null); } else { this.defaultGeometryUsed = true; // they want the default geometry (see GEOS-469) } } if (line.getPerpendicularOffset() != null) { line.getPerpendicularOffset().accept(this, null); } if (line.getStroke() != null) { line.getStroke().accept(this); } }
public void visit(LineSymbolizer line) { LineSymbolizer copy = sf.getDefaultLineSymbolizer(); copy.setGeometry(copy(line.getGeometry())); copy.setUnitOfMeasure(line.getUnitOfMeasure()); copy.setStroke(copy(line.getStroke())); copy.getOptions().putAll(line.getOptions()); copy.setPerpendicularOffset(line.getPerpendicularOffset()); if (STRICT && !copy.equals(line)) { throw new IllegalStateException( "Was unable to duplicate provided LineSymbolizer:" + line); } pages.push(copy); }
public LineSymbolizerBuilder reset(LineSymbolizer original) { if (original == null) { return unset(); } geometry = original.getGeometry(); strokeBuilder.reset(original.getStroke()); uom = original.getUnitOfMeasure(); perpendicularOffset = original.getPerpendicularOffset(); return this; }
@Override public void visit(LineSymbolizer line) { super.visit(line); LineSymbolizer copy = (LineSymbolizer) pages.peek(); Unit<Length> uom = copy.getUnitOfMeasure(); Stroke copyStroke = copy.getStroke(); rescaleStroke(copyStroke, uom); copy.setPerpendicularOffset(rescale(copy.getPerpendicularOffset(), uom)); copy.setUnitOfMeasure(Units.PIXEL); }
@Override protected void encode(LineSymbolizer sym) { inline(new StrokeEncoder(sym.getStroke())); put("offset", sym.getPerpendicularOffset()); super.encode(sym); } }
public void testLineSymbolizerWithPerpendicularOffset() { LineSymbolizer ls = sf.createLineSymbolizer(); ls.setPerpendicularOffset(ff.literal(0.88)); // copy LineSymbolizer copy = (LineSymbolizer) visitor.copy(ls); // compare assertEquals( "PerpendicularOffset of LineSymbolizer has not been correctly duplicated", ls.getPerpendicularOffset(), copy.getPerpendicularOffset()); }
public void visit(LineSymbolizer line) { // adds the uom attribute according to the OGC SE specification AttributesImpl atts = new AttributesImpl(); Unit<Length> uom = line.getUnitOfMeasure(); if (uom != null) atts.addAttribute("", "uom", "uom", "", UomOgcMapping.get(uom).getSEString()); start("LineSymbolizer", atts); encodeGeometryExpression(line.getGeometry()); if (line.getStroke() != null) { line.getStroke().accept(this); } if (line.getOptions() != null) { encodeVendorOptions(line.getOptions()); } if (line.getPerpendicularOffset() != null) { element("PerpendicularOffset", line.getPerpendicularOffset()); } end("LineSymbolizer"); }
@Test public void testLineOffset() throws Exception { // See GEOT-3912 String yaml = "line:\n" + " stroke-color: '#555555'\n" + " stroke-width: 1.0\n" + " offset: 5"; StyledLayerDescriptor sld = Ysld.parse(yaml); LineSymbolizer l = SLD.lineSymbolizer(SLD.defaultStyle(sld)); assertThat(l.getPerpendicularOffset(), is(literal(5))); // SLD/SE 1.1 feature that may not be supported by renderer }
Style2D createLineStyle(Object feature, LineSymbolizer symbolizer, Range scaleRange) { // see if we have some information about the composite float opacity = 1f; if (symbolizer.getStroke() != null) { opacity = evalOpacity(symbolizer.getStroke().getOpacity(), feature); } Composite composite = getComposite(symbolizer.getOptions(), opacity); if (composite == null) { composite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, opacity); } LineStyle2D style = new LineStyle2D(); setScaleRange(style, scaleRange); style.setStroke(getStroke(symbolizer.getStroke(), feature)); style.setGraphicStroke( getGraphicStroke(symbolizer, symbolizer.getStroke(), feature, scaleRange)); style.setContour(getStrokePaint(symbolizer.getStroke(), feature)); style.setContourComposite(composite); style.setPerpendicularOffset( evalToDouble(symbolizer.getPerpendicularOffset(), feature, 0d)); return style; }
@Test public void testRescalePerpendicularOffset() throws Exception { Stroke stroke = sb.createStroke(Color.RED, 2, new float[] {5, 10}); LineSymbolizer ls = sb.createLineSymbolizer(stroke); ls.setPerpendicularOffset(ff.literal(2)); ls.accept(visitor); LineSymbolizer clone = (LineSymbolizer) visitor.getCopy(); assertEquals("4", clone.getPerpendicularOffset().evaluate(null, String.class)); }
protected void visitLineSymbolizerTest(double scaleMetersToPixel, Unit<Length> uom) { try { UomRescaleStyleVisitor visitor = null; double size = 100; double expectedRescaledSize = computeExpectedRescaleSize(size, scaleMetersToPixel, uom); StyleBuilder styleBuilder = new StyleBuilder(); LineSymbolizerImpl lineSymb = (LineSymbolizerImpl) styleBuilder.createLineSymbolizer(); lineSymb.setUnitOfMeasure(uom); FilterFactory2 filterFactory = new FilterFactoryImpl(); lineSymb.getStroke().setWidth(filterFactory.literal(size)); lineSymb.setPerpendicularOffset(filterFactory.literal(size)); visitor = new UomRescaleStyleVisitor(scaleMetersToPixel); lineSymb.accept(visitor); LineSymbolizer rescaledLineSymb = (LineSymbolizer) visitor.getCopy(); double rescaledSize = rescaledLineSymb.getStroke().getWidth().evaluate(null, Double.class); assertEquals(Math.round(expectedRescaledSize), Math.round(rescaledSize)); assertNotSame(rescaledLineSymb, lineSymb); assertEquals( expectedRescaledSize, rescaledLineSymb.getPerpendicularOffset().evaluate(null, Double.class), 0.1d); } catch (Exception e2) { java.util.logging.Logger.getGlobal().log(java.util.logging.Level.INFO, "", e2); fail(e2.getClass().getSimpleName() + " should not be thrown."); } }
public void visit(LineSymbolizer line) { LineSymbolizer copy = sf.getDefaultLineSymbolizer(); copy.setGeometry(copy(line.getGeometry())); copy.setUnitOfMeasure(line.getUnitOfMeasure()); copy.setStroke( copy( line.getStroke())); copy.getOptions().putAll(line.getOptions()); copy.setPerpendicularOffset(line.getPerpendicularOffset()); if( STRICT && !copy.equals( line )){ throw new IllegalStateException("Was unable to duplicate provided LineSymbolizer:"+line ); } pages.push(copy); }
@Override protected void encode(LineSymbolizer sym) { inline(new StrokeEncoder(sym.getStroke())); put("offset", sym.getPerpendicularOffset()); super.encode(sym); } }
@Override public void populate(SelectedSymbol selectedSymbol) { if (selectedSymbol != null) { LineSymbolizer lineSymbolizer = (LineSymbolizer) selectedSymbol.getSymbolizer(); if (lineSymbolizer != null) { populateStandardData(lineSymbolizer); fieldConfigVisitor.populateField( FieldIdEnum.PERPENDICULAR_OFFSET, lineSymbolizer.getPerpendicularOffset()); fieldConfigVisitor.populateField( FieldIdEnum.GEOMETRY, lineSymbolizer.getGeometry()); } } }
/** * (non-Javadoc) * * @see * org.geotools.styling.visitor.DuplicatingStyleVisitor#visit(org.geotools.styling.LineSymbolizer) */ public void visit(LineSymbolizer line) { LineSymbolizer copy = sf.getDefaultLineSymbolizer(); copy.setGeometry(copy(line.getGeometry())); copy.setUnitOfMeasure(line.getUnitOfMeasure()); copy.setStroke(copy(line.getStroke())); copy.getOptions().putAll(line.getOptions()); copy.setPerpendicularOffset(line.getPerpendicularOffset()); if (STRICT && !copy.equals(line)) { throw new IllegalStateException( "Was unable to duplicate provided LineSymbolizer:" + line); } pages.push(copy); }
public void visit(LineSymbolizer line) { // adds the uom attribute according to the OGC SE specification AttributesImpl atts = new AttributesImpl(); Unit<Length> uom = line.getUnitOfMeasure(); if(uom != null) atts.addAttribute("", "uom", "uom", "", UomOgcMapping.get(uom).getSEString()); start("LineSymbolizer", atts); encodeGeometryExpression(line.getGeometry()); if( line.getStroke() != null ){ line.getStroke().accept(this); } if (line.getOptions() != null) { encodeVendorOptions(line.getOptions()); } if (line.getPerpendicularOffset()!=null){ element("PerpendicularOffset", line.getPerpendicularOffset() + ""); } end("LineSymbolizer"); }
/** * (non-Javadoc) * * @see * org.geotools.styling.visitor.DuplicatingStyleVisitor#visit(org.geotools.styling.LineSymbolizer) */ @Override public void visit(LineSymbolizer line) { LineSymbolizer copy = sf.getDefaultLineSymbolizer(); copy.setGeometry(copy(LineString.class, line.getGeometry())); copy.setUnitOfMeasure(line.getUnitOfMeasure()); copy.setStroke(copy(line.getStroke())); copy.getOptions().putAll(line.getOptions()); copy.setPerpendicularOffset(line.getPerpendicularOffset()); if (STRICT && !copy.equals(line)) { throw new IllegalStateException( "Was unable to duplicate provided LineSymbolizer:" + line); } pages.push(copy); }
@Override public void visit(LineSymbolizer line) { if (line.getDescription() != null) { line.getDescription().accept(this); } if (line.getGeometry() != null) { //line.getGeometry().accept(visitor, extraData) } if (line.getPerpendicularOffset() != null) { //line.getPerpendicularOffset().accept(visitor, extraData) } if (line.getStroke() != null) { line.getStroke().accept(this); } }