@Test public void testVisitLineSymbolizer_NullStroke() { try { UomRescaleStyleVisitor visitor = null; StyleBuilder styleBuilder = new StyleBuilder(); Stroke stroke = null; LineSymbolizerImpl lineSymb = (LineSymbolizerImpl) styleBuilder.createLineSymbolizer(stroke); lineSymb.setUnitOfMeasure(SI.METRE); visitor = new UomRescaleStyleVisitor(10); lineSymb.accept(visitor); LineSymbolizer rescaledLineSymb = (LineSymbolizer) visitor.getCopy(); assertNull(rescaledLineSymb.getStroke()); assertNotSame(rescaledLineSymb, lineSymb); } catch (Exception e2) { java.util.logging.Logger.getGlobal().log(java.util.logging.Level.INFO, "", e2); fail(e2.getClass().getSimpleName() + " should not be thrown."); } }
protected void visitPointSymbolizerTest(double scaleMetersToPixel, Unit<Length> uom) { try { UomRescaleStyleVisitor visitor = null; double size = 100; double expectedRescaledSize = computeExpectedRescaleSize(size, scaleMetersToPixel, uom); StyleBuilder styleBuilder = new StyleBuilder(); PointSymbolizerImpl pointSymb = (PointSymbolizerImpl) styleBuilder.createPointSymbolizer(); pointSymb.setUnitOfMeasure(uom); FilterFactory2 filterFactory = new FilterFactoryImpl(); pointSymb.getGraphic().setSize(filterFactory.literal(size)); visitor = new UomRescaleStyleVisitor(scaleMetersToPixel); pointSymb.accept(visitor); PointSymbolizer rescaledPointSymb = (PointSymbolizer) visitor.getCopy(); double rescaledSize = rescaledPointSymb.getGraphic().getSize().evaluate(null, Double.class); assertEquals(Math.round(expectedRescaledSize), Math.round(rescaledSize)); assertNotSame(rescaledPointSymb, pointSymb); } catch (Exception e2) { java.util.logging.Logger.getGlobal().log(java.util.logging.Level.INFO, "", e2); fail(e2.getClass().getSimpleName() + " should not be thrown."); } }
@Test public void testVisitPolygonSymbolizer_NullStroke() { try { UomRescaleStyleVisitor visitor = null; StyleBuilder styleBuilder = new StyleBuilder(); Fill fill = styleBuilder.createFill(Color.RED); PolygonSymbolizerImpl polySymb = (PolygonSymbolizerImpl) styleBuilder.createPolygonSymbolizer(null, fill); visitor = new UomRescaleStyleVisitor(10); polySymb.accept(visitor); PolygonSymbolizer rescaledPolySymb = (PolygonSymbolizer) visitor.getCopy(); assertEquals(polySymb.getFill(), rescaledPolySymb.getFill()); assertNull(rescaledPolySymb.getStroke()); assertNotSame(rescaledPolySymb, polySymb); } catch (Exception e2) { java.util.logging.Logger.getGlobal().log(java.util.logging.Level.INFO, "", e2); fail(e2.getClass().getSimpleName() + " should not be thrown."); } }
@Test public void visitLocalUomPixelOverridingMeters() { UomRescaleStyleVisitor visitor = null; double size = 100; double scaleMetersToPixel = 10; StyleBuilder styleBuilder = new StyleBuilder(); LineSymbolizerImpl lineSymb = (LineSymbolizerImpl) styleBuilder.createLineSymbolizer(); lineSymb.setUnitOfMeasure(SI.METRE); lineSymb.getStroke().setWidth(ff.literal(size + "px")); visitor = new UomRescaleStyleVisitor(scaleMetersToPixel); lineSymb.accept(visitor); LineSymbolizer rescaledLineSymb = (LineSymbolizer) visitor.getCopy(); double rescaledSize = rescaledLineSymb.getStroke().getWidth().evaluate(null, Double.class); assertEquals(Math.round(size), Math.round(size)); assertNotSame(rescaledLineSymb, lineSymb); }
PolygonSymbolizer rescaledPolySymb = (PolygonSymbolizer) visitor.getCopy(); double rescaledSize = rescaledPolySymb.getStroke().getWidth().evaluate(null, Double.class);
LineSymbolizer rescaledLineSymb = (LineSymbolizer) visitor.getCopy(); String rescaledDynamicDashArray = (String)
@Test public void visitLocalUomMeters() { UomRescaleStyleVisitor visitor = null; double size = 100; double scaleMetersToPixel = 10; double expectedRescaledSize = computeExpectedRescaleSize(size, scaleMetersToPixel, SI.METRE); StyleBuilder styleBuilder = new StyleBuilder(); LineSymbolizerImpl lineSymb = (LineSymbolizerImpl) styleBuilder.createLineSymbolizer(); lineSymb.getStroke().setWidth(ff.literal(size + "m")); 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); }
TextSymbolizer rescaledTextSymb = (TextSymbolizer) visitor.getCopy();
@Test public void visitLocalUomOverrideFeet() { UomRescaleStyleVisitor visitor = null; double size = 100; double scaleMetersToPixel = 10; double expectedRescaledSize = computeExpectedRescaleSize(size, scaleMetersToPixel, SI.METRE); StyleBuilder styleBuilder = new StyleBuilder(); LineSymbolizerImpl lineSymb = (LineSymbolizerImpl) styleBuilder.createLineSymbolizer(); lineSymb.setUnitOfMeasure(USCustomary.FOOT); lineSymb.getStroke().setWidth(ff.literal(size + "m")); 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); }
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."); } }
TextSymbolizer rescaledTextSymb = (TextSymbolizer) visitor.getCopy();
@Test public void testRescaleGraphicPointSymbolizer() { // create a graphic that needs rescaling StyleBuilder sb = new StyleBuilder(); // create a circle Mark circle = sb.createMark("circle", null, sb.createStroke(500)); Graphic g = sb.createGraphic(null, circle, null); // a point symbolizer with the specified circle PointSymbolizer ps = sb.createPointSymbolizer(g); // first see it in feet ps.setUnitOfMeasure(USCustomary.FOOT); // rescale it UomRescaleStyleVisitor visitor = new UomRescaleStyleVisitor(10); ps.accept(visitor); PointSymbolizer rps = (PointSymbolizer) visitor.getCopy(); Mark rm = (Mark) rps.getGraphic().graphicalSymbols().get(0); assertEquals(1524.0, rm.getStroke().getWidth().evaluate(null, Double.class), 0d); // now let's see the same in meters ps.setUnitOfMeasure(SI.METRE); // rescale it visitor = new UomRescaleStyleVisitor(10); ps.accept(visitor); rps = (PointSymbolizer) visitor.getCopy(); rm = (Mark) rps.getGraphic().graphicalSymbols().get(0); assertEquals(5000.0, rm.getStroke().getWidth().evaluate(null, Double.class), 0d); }
/** * Tests size calculation of dynamically sized feature, using real-world units combined with * DPI-based resizing. */ @Test public void testCombinedResizingDpiUom() { // given: Point with dynamic size in real-world units int sizeNum = 10; double scaleDpi = 2; double scaleUom = 3; PointSymbolizer symbolizer = sb.createPointSymbolizer(); Graphic graphic = sb.createGraphic(); graphic.setSize(ff.function("strConcat", ff.property("size"), ff.literal("m"))); symbolizer.setGraphic(graphic); // when: DPI based resizing is applied RescaleStyleVisitor dpiVisitor = new GraphicsAwareDpiRescaleStyleVisitor(scaleDpi); symbolizer.accept(dpiVisitor); symbolizer = (PointSymbolizer) dpiVisitor.getCopy(); // and: UOM resizing is applied UomRescaleStyleVisitor uomVisitor = new UomRescaleStyleVisitor(scaleUom); uomVisitor.visit(symbolizer); symbolizer = (PointSymbolizer) uomVisitor.getCopy(); SimpleFeature feature = createFeatureSized(sizeNum); // then: only the UOM resizing must have an effect Double size = symbolizer.getGraphic().getSize().evaluate(feature, Double.class); assertEquals(sizeNum * scaleUom, size.doubleValue(), 0d); }
PolygonSymbolizer rps = (PolygonSymbolizer) visitor.getCopy(); Mark rm = (Mark) rps.getStroke().getGraphicStroke().graphicalSymbols().get(0); assertEquals(10.0, rm.getStroke().getWidth().evaluate(null, Double.class), 0d); LineSymbolizer lps = (LineSymbolizer) visitor.getCopy(); rm = (Mark) lps.getStroke().getGraphicStroke().graphicalSymbols().get(0); assertEquals(10.0, rm.getStroke().getWidth().evaluate(null, Double.class), 0d);
LineSymbolizer rescaledLineSymb = (LineSymbolizer) visitor.getCopy();
private void rescaleRules(List<Rule> rules, FeatureInfoRequestParameters params) { Map<Object, Object> rendererParams = new HashMap<Object, Object>(); Integer requestedDpi = ((Integer) params.getGetMapRequest().getFormatOptions().get("dpi")); if (requestedDpi != null) { rendererParams.put(StreamingRenderer.DPI_KEY, requestedDpi); } // apply dpi rescale if necessary double standardDpi = RendererUtilities.getDpi(rendererParams); if (requestedDpi != null && standardDpi != requestedDpi) { double scaleFactor = requestedDpi / standardDpi; DpiRescaleStyleVisitor dpiVisitor = new GraphicsAwareDpiRescaleStyleVisitor(scaleFactor); for (int i = 0; i < rules.size(); i++) { rules.get(i).accept(dpiVisitor); Rule rescaled = (Rule) dpiVisitor.getCopy(); rules.set(i, rescaled); } } // apply UOM rescaling double pixelsPerMeters = RendererUtilities.calculatePixelsPerMeterRatio( params.getScaleDenominator(), rendererParams); UomRescaleStyleVisitor uomVisitor = new UomRescaleStyleVisitor(pixelsPerMeters); for (int i = 0; i < rules.size(); i++) { rules.get(i).accept(uomVisitor); Rule rescaled = (Rule) uomVisitor.getCopy(); rules.set(i, rescaled); } }
UomRescaleStyleVisitor rescaleVisitor = new UomRescaleStyleVisitor(pixelsPerMeters); rescaleVisitor.visit(gt2Style); gt2Style = (Style) rescaleVisitor.getCopy();
UomRescaleStyleVisitor rescaleVisitor = new UomRescaleStyleVisitor(pixelsPerMeters); rescaleVisitor.visit(gt2Style); gt2Style = (Style) rescaleVisitor.getCopy();