public void visit(ColorMapEntry colorEntry) { if (colorEntry != null) { AttributesImpl atts = new AttributesImpl(); atts.addAttribute( "", "color", "color", "", colorEntry.getColor().evaluate(null, String.class)); if (colorEntry.getOpacity() != null) { atts.addAttribute( "", "opacity", "opacity", "", colorEntry.getOpacity().toString()); } if (colorEntry.getQuantity() != null) { atts.addAttribute( "", "quantity", "quantity", "", colorEntry.getQuantity().toString()); } if (colorEntry.getLabel() != null) { atts.addAttribute("", "label", "label", "", colorEntry.getLabel()); } element("ColorMapEntry", (String) null, atts); } }
@Override public ColorMapEntryBuilder reset(ColorMapEntry original) { if (original == null) { return unset(); } label = original.getLabel(); color = original.getColor(); opacity = original.getOpacity(); quantity = original.getQuantity(); unset = false; return this; }
public void visit(ColorMapEntry colorMapEntry) { ColorMapEntry copy = sf.createColorMapEntry(); copy.setColor(copy(colorMapEntry.getColor())); copy.setLabel(colorMapEntry.getLabel()); copy.setOpacity(copy(colorMapEntry.getOpacity())); copy.setQuantity(copy(colorMapEntry.getQuantity())); if (STRICT && !copy.equals(colorMapEntry)) { throw new IllegalStateException( "Was unable to duplicate provided ColorMapEntry:" + colorMapEntry); } pages.push(copy); }
@Override public Tuple next() { ColorMapEntry entry = entries.next(); return Tuple.of( toColorOrNull(entry.getColor()), toObjOrNull(entry.getOpacity()), toObjOrNull(entry.getQuantity()), entry.getLabel()); }
public void visit(ColorMapEntry colorMapEntry) { ColorMapEntry copy = sf.createColorMapEntry(); copy.setColor(copyCqlExpression(colorMapEntry.getColor())); copy.setLabel(colorMapEntry.getLabel()); copy.setOpacity(copyCqlExpression(colorMapEntry.getOpacity())); copy.setQuantity(copyCqlExpression(colorMapEntry.getQuantity())); if (STRICT && !copy.equals(colorMapEntry)) { throw new IllegalStateException( "Was unable to duplicate provided ColorMapEntry:" + colorMapEntry); } pages.push(copy); } }
/** * @param entry * @return */ private static double getQuantity(ColorMapEntry entry) { ColorMapUtilities.ensureNonNull("ColorMapEntry", entry); Expression quantity = entry.getQuantity(); ColorMapUtilities.ensureNonNull("quantity", quantity); Double quantityString = (Double) quantity.evaluate(null, Double.class); if (quantityString == null && quantity instanceof Literal) { String quantityExp = quantity.evaluate(null, String.class); quantity = ExpressionExtractor.extractCqlExpressions(quantityExp); quantityString = quantity.evaluate(null, Double.class); } ColorMapUtilities.ensureNonNull("quantityString", quantityString); double q = quantityString.doubleValue(); return q; }
private void testBlueAcquaYellowRed(GradientColorMapGenerator colorMapGenerator) { ColorMap colorMap = colorMapGenerator.generateColorMap(10, 100); assertNotNull(colorMap); ColorMapEntry[] colorEntries = colorMap.getColorMapEntries(); assertNotNull(colorEntries); assertEquals(6, colorEntries.length); // First and last color entry are transparent assertEquals(0, colorEntries[0].getOpacity().evaluate(null, Double.class), 0d); assertEquals(0, colorEntries[5].getOpacity().evaluate(null, Double.class), 0d); assertEquals("#0000FF", colorEntries[1].getColor().toString()); assertEquals("#00FFFF", colorEntries[2].getColor().toString()); assertEquals("#FFFF00", colorEntries[3].getColor().toString()); assertEquals("#FF0000", colorEntries[4].getColor().toString()); assertEquals("10.0", colorEntries[1].getQuantity().toString()); assertEquals("40.0", colorEntries[2].getQuantity().toString()); assertEquals("70.0", colorEntries[3].getQuantity().toString()); assertEquals("100.0", colorEntries[4].getQuantity().toString()); }
@Test public void testSVG() throws FileNotFoundException, IOException, SAXException, ParserConfigurationException { final File svgFile = TestData.file(this, "sample.svg"); GradientColorMapGenerator colorMapGenerator = GradientColorMapGenerator.getColorMapGenerator(svgFile); ColorMap colorMap = colorMapGenerator.generateColorMap(10, 80); assertNotNull(colorMap); ColorMapEntry[] colorEntries = colorMap.getColorMapEntries(); assertNotNull(colorEntries); assertEquals(6, colorEntries.length); // First and last color entry are transparent assertEquals(0, colorEntries[0].getOpacity().evaluate(null, Double.class), 0d); assertEquals(0, colorEntries[5].getOpacity().evaluate(null, Double.class), 0d); assertEquals("#0000FF", colorEntries[1].getColor().toString()); assertEquals("#00FFFF", colorEntries[2].getColor().toString()); assertEquals("#FFFF00", colorEntries[3].getColor().toString()); assertEquals("#FF0000", colorEntries[4].getColor().toString()); assertEquals("17.0", colorEntries[1].getQuantity().toString()); assertEquals("38.0", colorEntries[2].getQuantity().toString()); assertEquals("66.0", colorEntries[3].getQuantity().toString()); assertEquals("80.0", colorEntries[4].getQuantity().toString()); }
private void assertEntry(ColorMapEntry entry, double quantity, Color color, float opacity) { assertEquals(quantity, entry.getQuantity().evaluate(null, Double.class), 0d); assertEquals(color, entry.getColor().evaluate(null, Color.class)); assertEquals(opacity, entry.getOpacity().evaluate(null, Double.class), 0.01f); } }
@Test public void testRasterWithTwoColorGradient() throws Exception { // <UserStyle> // <Title>SLD Cook Book: Two color gradient</Title> // <FeatureTypeStyle> // <Rule> // <RasterSymbolizer> // <ColorMap> // <ColorMapEntry color="#008000" quantity="70" /> // <ColorMapEntry color="#663333" quantity="256" /> // </ColorMap> // </RasterSymbolizer> // </Rule> // </FeatureTypeStyle> // </UserStyle> Style style = parse("raster", "two-color-gradient.sld"); RasterSymbolizer raster = SLD.rasterSymbolizer(style); ColorMapEntry e = raster.getColorMap().getColorMapEntry(0); assertEquals("#008000", Filters.asString(e.getColor())); assertEquals(70, Filters.asInt(e.getQuantity())); e = raster.getColorMap().getColorMapEntry(1); assertEquals("#663333", Filters.asString(e.getColor())); assertEquals(256, Filters.asInt(e.getQuantity())); }
@Test public void testRasterWithDiscreteColors() throws Exception { // <UserStyle> // <Title>SLD Cook Book: Discrete colors</Title> // <FeatureTypeStyle> // <Rule> // <RasterSymbolizer> // <ColorMap type="intervals"> // <ColorMapEntry color="#008000" quantity="150" /> // <ColorMapEntry color="#663333" quantity="256" /> // </ColorMap> // </RasterSymbolizer> // </Rule> // </FeatureTypeStyle> // </UserStyle> Style style = parse("raster", "discrete-colors.sld"); RasterSymbolizer raster = SLD.rasterSymbolizer(style); ColorMapEntry e = raster.getColorMap().getColorMapEntry(0); assertEquals("#008000", Filters.asString(e.getColor())); assertEquals(150, Filters.asInt(e.getQuantity())); e = raster.getColorMap().getColorMapEntry(1); assertEquals("#663333", Filters.asString(e.getColor())); assertEquals(256, Filters.asInt(e.getQuantity())); }
@Test public void testRasterWithThreeColorGradient() throws Exception { // <UserStyle> // <Title>SLD Cook Book: Three color gradient</Title> // <FeatureTypeStyle> // <Rule> // <RasterSymbolizer> // <ColorMap> // <ColorMapEntry color="#0000FF" quantity="150" /> // <ColorMapEntry color="#FFFF00" quantity="200" /> // <ColorMapEntry color="#FF0000" quantity="250" /> // </ColorMap> // </RasterSymbolizer> // </Rule> // </FeatureTypeStyle> // </UserStyle> Style style = parse("raster", "three-color-gradient.sld"); RasterSymbolizer raster = SLD.rasterSymbolizer(style); ColorMapEntry e = raster.getColorMap().getColorMapEntry(0); assertEquals("#0000FF", Filters.asString(e.getColor())); assertEquals(150, Filters.asInt(e.getQuantity())); e = raster.getColorMap().getColorMapEntry(1); assertEquals("#FFFF00", Filters.asString(e.getColor())); assertEquals(200, Filters.asInt(e.getQuantity())); e = raster.getColorMap().getColorMapEntry(2); assertEquals("#FF0000", Filters.asString(e.getColor())); assertEquals(250, Filters.asInt(e.getQuantity())); }
assertEquals(95, Filters.asInt(e.getQuantity())); assertEquals(110, Filters.asInt(e.getQuantity())); assertEquals(135, Filters.asInt(e.getQuantity())); assertEquals(160, Filters.asInt(e.getQuantity())); assertEquals(185, Filters.asInt(e.getQuantity())); assertEquals(210, Filters.asInt(e.getQuantity())); assertEquals(235, Filters.asInt(e.getQuantity())); assertEquals(256, Filters.asInt(e.getQuantity()));
@Test public void testRasterWithAlphaChannel() throws Exception { // <UserStyle> // <Title>SLD Cook Book: Alpha channel</Title> // <FeatureTypeStyle> // <Rule> // <RasterSymbolizer> // <ColorMap> // <ColorMapEntry color="#008000" quantity="70" /> // <ColorMapEntry color="#008000" quantity="256" opacity="0"/> // </ColorMap> // </RasterSymbolizer> // </Rule> // </FeatureTypeStyle> // </UserStyle> Style style = parse("raster", "alpha-channel.sld"); RasterSymbolizer raster = SLD.rasterSymbolizer(style); ColorMapEntry e = raster.getColorMap().getColorMapEntry(0); assertEquals("#008000", Filters.asString(e.getColor())); assertEquals(70, Filters.asInt(e.getQuantity())); e = raster.getColorMap().getColorMapEntry(1); assertEquals("#008000", Filters.asString(e.getColor())); assertEquals(256, Filters.asInt(e.getQuantity())); assertEquals(0, Filters.asInt(e.getOpacity())); }
public void testColorMapEntryDuplication() throws Exception { ColorMapEntry cme = sf.createColorMapEntry(); cme.setColor(sb.colorExpression(Color.YELLOW)); cme.setLabel("thelabel"); cme.setQuantity(sb.literalExpression(66.66)); cme.setOpacity(sb.literalExpression(0.77)); cme.accept(visitor); ColorMapEntry cme2 = (ColorMapEntry) visitor.getCopy(); assertEquals( "Colormaps LABEL must be equal after duplication ", cme.getLabel(), cme2.getLabel()); assertEquals( "Colormaps QUANTITY must be equal after duplication ", cme.getQuantity(), cme2.getQuantity()); assertEquals( "Colormaps COLOR must be equal after duplication ", cme.getColor(), cme2.getColor()); assertEquals( "Colormaps OPACITY must be equal after duplication ", cme.getOpacity(), cme2.getOpacity()); }
@Test public void testRasterWithTransparentGradient() throws Exception { // <UserStyle> // <Title>SLD Cook Book: Transparent gradient</Title> // <FeatureTypeStyle> // <Rule> // <RasterSymbolizer> // <Opacity>0.3</Opacity> // <ColorMap> // <ColorMapEntry color="#008000" quantity="70" /> // <ColorMapEntry color="#663333" quantity="256" /> // </ColorMap> // </RasterSymbolizer> // </Rule> // </FeatureTypeStyle> // </UserStyle> Style style = parse("raster", "transparent-gradient.sld"); RasterSymbolizer raster = SLD.rasterSymbolizer(style); assertEquals(0.3, Filters.asDouble(raster.getOpacity()), 0.1); ColorMapEntry e = raster.getColorMap().getColorMapEntry(0); assertEquals("#008000", Filters.asString(e.getColor())); assertEquals(70, Filters.asInt(e.getQuantity())); e = raster.getColorMap().getColorMapEntry(1); assertEquals("#663333", Filters.asString(e.getColor())); assertEquals(256, Filters.asInt(e.getQuantity())); }
@Override public void visit(ColorMapEntry colorMapEntry) { if (colorMapEntry.getColor() != null) { //colorMapEntry.getColor().accept(visitor, extraData) } if (colorMapEntry.getOpacity() != null) { //colorMapEntry.getOpacity().accept(visitor, extraData) } if (colorMapEntry.getQuantity() != null) { //colorMapEntry.getQuantity().accept(visitor, extraData) } }
assertEquals(70, Filters.asInt(e.getQuantity())); assertEquals(256, Filters.asInt(e.getQuantity()));
public void visit(ColorMapEntry colorMapEntry) { ColorMapEntry copy = sf.createColorMapEntry(); copy.setColor(copy(colorMapEntry.getColor())); copy.setLabel(colorMapEntry.getLabel()); copy.setOpacity(copy(colorMapEntry.getOpacity())); copy.setQuantity(colorMapEntry.getQuantity()); if (STRICT && !copy.equals(colorMapEntry)) { throw new IllegalStateException("Was unable to duplicate provided ColorMapEntry:" + colorMapEntry); } pages.push(copy); }
@Override public Tuple next() { ColorMapEntry entry = entries.next(); return Tuple.of( toColorOrNull(entry.getColor()), toObjOrNull(entry.getOpacity()), toObjOrNull(entry.getQuantity()), entry.getLabel()); }