public void visit(Symbolizer sym) { if (sym instanceof RasterSymbolizer) { visit((RasterSymbolizer) sym); } else if (sym instanceof LineSymbolizer) { visit((LineSymbolizer) sym); } else if (sym instanceof PolygonSymbolizer) { visit((PolygonSymbolizer) sym); } else if (sym instanceof PointSymbolizer) { visit((PointSymbolizer) sym); } else if (sym instanceof TextSymbolizer) { visit((TextSymbolizer) sym); } else { throw new RuntimeException("visit(Symbolizer) unsupported"); } }
@Override public void visit(Symbolizer sym) { this.defaultUnit = sym.getUnitOfMeasure(); try { super.visit(sym); } finally { this.defaultUnit = null; } }
@Override public void visit(RasterSymbolizer sym) { this.defaultUnit = sym.getUnitOfMeasure(); try { super.visit(sym); } finally { this.defaultUnit = null; } }
@Override public void visit(PointSymbolizer sym) { this.defaultUnit = sym.getUnitOfMeasure(); try { super.visit(sym); } finally { this.defaultUnit = null; } }
/** * Utility method to apply the two rescale visitors without duplicating code * * @param fts * @param visitor */ void rescaleFeatureTypeStyle(LiteFeatureTypeStyle fts, DuplicatingStyleVisitor visitor) { for (int i = 0; i < fts.ruleList.length; i++) { visitor.visit(fts.ruleList[i]); fts.ruleList[i] = (Rule) visitor.getCopy(); } if (fts.elseRules != null) { for (int i = 0; i < fts.elseRules.length; i++) { visitor.visit(fts.elseRules[i]); fts.elseRules[i] = (Rule) visitor.getCopy(); } } }
@Override public void visit(FeatureTypeStyle fts) { super.visit(fts); FeatureTypeStyle copy = (FeatureTypeStyle) pages.peek(); copy.getOptions().remove(FeatureTypeStyle.COMPOSITE); copy.getOptions().remove(FeatureTypeStyle.COMPOSITE_BASE); } };
@Override public void visit(PolygonSymbolizer sym) { this.defaultUnit = sym.getUnitOfMeasure(); try { super.visit(sym); PolygonSymbolizer copy = (PolygonSymbolizer) pages.peek(); rescaleArrayOption(copy.getOptions(), PolygonSymbolizer.GRAPHIC_MARGIN_KEY, 0); } finally { this.defaultUnit = null; } }
@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; } }
@Override public void visit(PointSymbolizer ps) { super.visit(ps); PointSymbolizer copy = (PointSymbolizer) pages.peek(); Unit<Length> uom = copy.getUnitOfMeasure(); Graphic copyGraphic = copy.getGraphic(); rescale(copyGraphic, uom); copy.setUnitOfMeasure(Units.PIXEL); }
@Override public void visit(TextSymbolizer text) { super.visit(text); TextSymbolizer ts = (TextSymbolizer) getCopy(); ts.getOptions().put(key, String.valueOf(spacing)); } };
@Override public void visit(LinePlacement lp) { super.visit(lp); LinePlacement copy = (LinePlacement) pages.peek(); copy.setPerpendicularOffset(ff.literal(distance)); }
@Override public void visit(Mark mark) { super.visit(mark); Mark copy = (Mark) pages.peek(); copy.setWellKnownName(ff.literal(markName)); } };
@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 public void visit(TextSymbolizer text) { super.visit(text); TextSymbolizer ts = (TextSymbolizer) pages.peek(); // do we have follow line without line placement? if (ts.getLabelPlacement() == null && "true".equalsIgnoreCase(ts.getOptions().get("followLine"))) { ts.setLabelPlacement(new LinePlacementImpl()); } } }
@Override public void visit(PolygonSymbolizer poly) { super.visit(poly); PolygonSymbolizer copy = (PolygonSymbolizer) pages.peek(); Unit<Length> uom = copy.getUnitOfMeasure(); rescaleStroke(copy.getStroke(), uom); rescaleFill(copy.getFill(), uom); scaleIntArrayOption(copy.getOptions(), PolygonSymbolizer.GRAPHIC_MARGIN_KEY, uom); copy.setUnitOfMeasure(Units.PIXEL); }
@Override public void visit(LineSymbolizer line) { dynamic = false; super.visit(line); if (!dynamic) { pages.pop(); pages.push(null); } }
@Override public void visit(Graphic gr) { super.visit(gr); Expression sizeExpression = gr.getSize(); if (!dynamic) { dynamic = !(sizeExpression != null && (sizeExpression instanceof Literal || sizeExpression instanceof NilExpression)) || hasDynamicGraphic(gr); } }
this.defaultUnit = text.getUnitOfMeasure(); try { super.visit(text); TextSymbolizer copy = (TextSymbolizer) pages.peek();
@SuppressWarnings("deprecation") @Override public void visit(TextSymbolizer text) { super.visit(text); TextSymbolizer copy = (TextSymbolizer) pages.peek();
@Override public void visit(PolygonSymbolizer poly) { super.visit(poly); PolygonSymbolizer copy = (PolygonSymbolizer) pages.peek(); Unit<Length> uom = copy.getUnitOfMeasure(); if(uom == null || uom.equals(NonSI.PIXEL)) { return; } rescaleStroke(copy.getStroke(), mapScale, uom); rescaleFill(copy.getFill(), mapScale, uom); copy.setUnitOfMeasure(NonSI.PIXEL); }