@Test public void testTextSymbolizer() throws Exception { TextSymbolizer ts = sb.createTextSymbolizer(Color.BLACK, (Font) null, "label"); ts.getOptions().put(TextSymbolizer.MAX_DISPLACEMENT_KEY, "10"); ts.getOptions().put(TextSymbolizer.GRAPHIC_MARGIN_KEY, "10 20"); ts.accept(visitor); TextSymbolizer clone = (TextSymbolizer) visitor.getCopy(); assertEquals("20", clone.getOptions().get(TextSymbolizer.MAX_DISPLACEMENT_KEY)); assertEquals("20 40", clone.getOptions().get(TextSymbolizer.GRAPHIC_MARGIN_KEY)); }
@Override public void visit(TextSymbolizer text) { super.visit(text); TextSymbolizer ts = (TextSymbolizer) getCopy(); ts.getOptions().put(key, String.valueOf(spacing)); } };
public void testTextSymbolizerVendorParams() { TextSymbolizer textSymb = sf.createTextSymbolizer(); textSymb.getOptions().put("autoWrap", "100"); textSymb.accept(visitor); TextSymbolizer clone = (TextSymbolizer) visitor.getCopy(); assertCopy(textSymb, clone); assertEqualsContract(textSymb, clone); assertEquals(1, clone.getOptions().size()); assertEquals("100", clone.getOptions().get("autoWrap")); }
@Test public void testTextSymbolizerArraySingleValue() throws Exception { TextSymbolizer ts = sb.createTextSymbolizer(Color.BLACK, (Font) null, "label"); ts.getOptions().put(TextSymbolizer.GRAPHIC_MARGIN_KEY, "10"); ts.accept(visitor); TextSymbolizer clone = (TextSymbolizer) visitor.getCopy(); assertEquals("20", clone.getOptions().get(TextSymbolizer.GRAPHIC_MARGIN_KEY)); }
@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()); } } }
public TextSymbolizer build() { if (unset) { return null; } Font[] array = null; if (!fonts.isEmpty()) { array = new Font[fonts.size()]; for (int i = 0; i < array.length; i++) { array[i] = fonts.get(i).build(); } } TextSymbolizer ts = sf.createTextSymbolizer( fill.build(), array, halo.build(), label, placement.build(), null); ts.setGeometry(geometry); if (uom != null) { ts.setUnitOfMeasure(uom); } ts.getOptions().putAll(options); ts.setPriority(priority); if (ts instanceof TextSymbolizer2) { TextSymbolizer2 ts2 = (TextSymbolizer2) ts; if (!shield.isUnset()) { ts2.setGraphic(shield.build()); } } reset(); return ts; }
public void testTextSymbolizerVendorOptions() { TextSymbolizer textSymb = sf.createTextSymbolizer(); textSymb.getOptions().put("autoWrap", "100"); textSymb.accept(visitor); TextSymbolizer clone = (TextSymbolizer) visitor.getCopy(); assertCopy(textSymb, clone); assertEqualsContract(textSymb, clone); }
public void visit(TextSymbolizer text) { TextSymbolizer copy = sf.createTextSymbolizer(); copy.setFill(copy(text.getFill())); copy.fonts().clear(); copy.fonts().addAll(copyFonts(text.fonts())); copy.setGeometry(copy(text.getGeometry())); copy.setUnitOfMeasure(text.getUnitOfMeasure()); copy.setHalo(copy(text.getHalo())); copy.setLabel(copy(text.getLabel())); copy.setLabelPlacement(copy(text.getLabelPlacement())); copy.setPriority(copy(text.getPriority())); copy.getOptions().putAll(text.getOptions()); if (text instanceof TextSymbolizer2) { TextSymbolizer2 text2 = (TextSymbolizer2) text; TextSymbolizer2 copy2 = (TextSymbolizer2) copy; copy2.setGraphic(copy(text2.getGraphic())); copy2.setSnippet(copy(text2.getSnippet())); copy2.setFeatureDescription(copy(text2.getFeatureDescription())); copy2.setOtherText(copy(text2.getOtherText())); } if (STRICT && !copy.equals(text)) { throw new IllegalStateException( "Was unable to duplicate provided TextSymbolizer:" + text); } pages.push(copy); }
Font font = sb.createFont("Bitstream Vera Sans", 12); TextSymbolizer ts = sb.createTextSymbolizer(Color.BLACK, font, "name"); ts.getOptions().put(TextSymbolizer.FOLLOW_LINE_KEY, "true");
@Test public void testGroupDifferentSymbolizers() throws Exception { TextSymbolizer ts1 = sb.createTextSymbolizer(Color.BLACK, (Font) null, "name"); ts1.getOptions().put(TextSymbolizer.GROUP_KEY, "true"); TextSymbolizer ts2 = sb.createTextSymbolizer(Color.YELLOW, (Font) null, "name"); ts2.getOptions().put(TextSymbolizer.GROUP_KEY, "true"); SimpleFeature f1 = createFeature("label1", L1); SimpleFeature f2 = createFeature("label1", L2); cache.put( LAYER_ID, ts1, f1, new LiteShape2((Geometry) f1.getDefaultGeometry(), null, null, false), ALL_SCALES); cache.put( LAYER_ID, ts2, f2, new LiteShape2((Geometry) f2.getDefaultGeometry(), null, null, false), ALL_SCALES); // two different symbolizers, we should have two List<LabelCacheItem> labels = cache.getActiveLabels(); assertEquals(2, labels.size()); }
@Test public void testNoUnit() throws Exception { Stroke original = sb.createStroke(Color.RED, 2, new float[] {5, 10}); LineSymbolizer ls = sb.createLineSymbolizer(original); ls.accept(visitor); Stroke clone = ((LineSymbolizer) visitor.getCopy()).getStroke(); assertEquals(4.0d, clone.getWidth().evaluate(null, Double.class), 0d); assertEquals(10.0f, clone.getDashArray()[0], 0f); assertEquals(20.0f, clone.getDashArray()[1], 0f); TextSymbolizer ts = sb.createTextSymbolizer(); ts.getOptions().put(TextSymbolizer.SPACE_AROUND_KEY, "10"); ts.accept(visitor); TextSymbolizer clonedTs = (TextSymbolizer) visitor.getCopy(); assertEquals("20.0", clonedTs.getOptions().get(TextSymbolizer.SPACE_AROUND_KEY)); }
TextSymbolizer text = SLD.textSymbolizer(style); assertEquals("name", SLD.textLabelString(text)); Map<String, String> options = text.getOptions(); assertEquals("true", options.get("followLine"));
private static Style createLabelOffsetStyle() { StyleBuilder sb = new StyleBuilder(); PointPlacement pp = sb.createPointPlacement(0.5, 0.5, 50, 0, 0); TextSymbolizer ts = sb.createTextSymbolizer(); ts.setFont(sb.createFont("Bitstream Vera Sans", 20)); ts.setLabel(sb.getFilterFactory().literal("name")); ts.setLabelPlacement(pp); ts.getOptions().put("partials", "true"); return sb.createStyle(ts); }
@Test public void testAllFeet() throws Exception { Stroke original = sb.createStroke(Color.RED, 2, new float[] {5, 10}); LineSymbolizer ls = sb.createLineSymbolizer(original); ls.setUnitOfMeasure(USCustomary.FOOT); ls.accept(visitor); Stroke clone = ((LineSymbolizer) visitor.getCopy()).getStroke(); assertEquals(2d, clone.getWidth().evaluate(null, Double.class), 0d); assertEquals(5f, clone.getDashArray()[0], 0f); assertEquals(10f, clone.getDashArray()[1], 0f); TextSymbolizer ts = sb.createTextSymbolizer(); ts.getOptions().put(TextSymbolizer.SPACE_AROUND_KEY, "10"); ts.setUnitOfMeasure(USCustomary.FOOT); ts.accept(visitor); TextSymbolizer clonedTs = (TextSymbolizer) visitor.getCopy(); assertEquals("10.0", clonedTs.getOptions().get(TextSymbolizer.SPACE_AROUND_KEY)); }
public void testKerningOffByDefault() throws Exception { TextSymbolizer ts = sf.createTextSymbolizer(); ts.setFill(sf.createFill(null)); Font font = sf.createFont( ff.literal("Serif"), ff.literal("italic"), ff.literal("bold"), ff.literal(20)); ts.setFont(font); ts.getOptions().put(TextSymbolizer.KERNING_KEY, "false"); TextStyle2D tsd = (TextStyle2D) sld.createTextStyle(feature, ts, range); assertEquals(20, tsd.getFont().getSize()); Map<TextAttribute, ?> attributes = tsd.getFont().getAttributes(); Object kerningValue = attributes.get(TextAttribute.KERNING); assertNull(kerningValue); }
@Test public void testAllMeters() throws Exception { Stroke original = sb.createStroke(Color.RED, 2, new float[] {5, 10}); LineSymbolizer ls = sb.createLineSymbolizer(original); ls.setUnitOfMeasure(SI.METRE); ls.accept(visitor); Stroke clone = ((LineSymbolizer) visitor.getCopy()).getStroke(); assertEquals(2d, clone.getWidth().evaluate(null, Double.class), 0d); assertEquals(5f, clone.getDashArray()[0], 0f); assertEquals(10f, clone.getDashArray()[1], 0f); TextSymbolizer ts = sb.createTextSymbolizer(); ts.getOptions().put(TextSymbolizer.SPACE_AROUND_KEY, "10"); ts.setUnitOfMeasure(SI.METRE); ts.accept(visitor); TextSymbolizer clonedTs = (TextSymbolizer) visitor.getCopy(); assertEquals("10.0", clonedTs.getOptions().get(TextSymbolizer.SPACE_AROUND_KEY)); }
@Test public void testSimpleGrouping() throws Exception { TextSymbolizer ts = sb.createTextSymbolizer(Color.BLACK, (Font) null, "name"); ts.getOptions().put(TextSymbolizer.GROUP_KEY, "true"); SimpleFeature f1 = createFeature("label1", L1); SimpleFeature f2 = createFeature("label1", L2); cache.put( LAYER_ID, ts, f1, new LiteShape2((Geometry) f1.getDefaultGeometry(), null, null, false), ALL_SCALES); cache.put( LAYER_ID, ts, f2, new LiteShape2((Geometry) f2.getDefaultGeometry(), null, null, false), ALL_SCALES); // we have just one List<LabelCacheItem> labels = cache.getActiveLabels(); assertEquals(1, labels.size()); LabelCacheItem item = labels.get(0); assertEquals("label1", item.getLabel()); assertEquals(2, item.getGeoms().size()); }
@Test public void testSymbolizerPixelOverrideInMeters() throws Exception { Stroke original = sb.createStroke(Color.RED, 2, new float[] {5, 10}); original.setWidth(ff.literal("2m")); LineSymbolizer ls = sb.createLineSymbolizer(original); ls.accept(visitor); Stroke clone = ((LineSymbolizer) visitor.getCopy()).getStroke(); // this one has not been rescaled assertEquals("2m", clone.getWidth().evaluate(null, String.class)); // the dash array did , it's supposed to be pixels assertEquals(10f, clone.getDashArray()[0], 0f); assertEquals(20f, clone.getDashArray()[1], 0f); TextSymbolizer ts = sb.createTextSymbolizer(); ts.getOptions().put(TextSymbolizer.SPACE_AROUND_KEY, "10m"); ts.accept(visitor); TextSymbolizer clonedTs = (TextSymbolizer) visitor.getCopy(); // this one has not been rescaled assertEquals("10.0m", clonedTs.getOptions().get(TextSymbolizer.SPACE_AROUND_KEY)); } }
@Test public void testSymbolizerMeterOverrideInPixels() throws Exception { Stroke original = sb.createStroke(Color.RED, 2, new float[] {5, 10}); original.setWidth(ff.literal("2px")); LineSymbolizer ls = sb.createLineSymbolizer(original); ls.setUnitOfMeasure(SI.METRE); ls.accept(visitor); Stroke clone = ((LineSymbolizer) visitor.getCopy()).getStroke(); // this one has been rescaled assertEquals(4d, clone.getWidth().evaluate(null, Double.class), 0d); // the dash array did not, it's supposed to be meters assertEquals(5f, clone.getDashArray()[0], 0f); assertEquals(10f, clone.getDashArray()[1], 0f); TextSymbolizer ts = sb.createTextSymbolizer(); ts.getOptions().put(TextSymbolizer.SPACE_AROUND_KEY, "10px"); ts.setUnitOfMeasure(SI.METRE); ts.accept(visitor); TextSymbolizer clonedTs = (TextSymbolizer) visitor.getCopy(); // this one has been rescaled assertEquals("20.0", clonedTs.getOptions().get(TextSymbolizer.SPACE_AROUND_KEY)); }
TextSymbolizer ts = sb.createTextSymbolizer(Color.BLACK, (Font) null, "name"); TextSymbolizer tsGroup = sb.createTextSymbolizer(Color.YELLOW, (Font) null, "name"); tsGroup.getOptions().put(TextSymbolizer.GROUP_KEY, "true");