package org.geotools.styling.builder; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.geotools.styling.ColorMap; import org.geotools.styling.ColorMapEntry; /** * * * @source $URL$ */ public class ColorMapBuilder extends AbstractStyleBuilder<ColorMap> { int type = ColorMap.TYPE_RAMP; boolean extended = false; List<ColorMapEntry> entries = new ArrayList<ColorMapEntry>(); ColorMapEntryBuilder colorMapEntryBuilder = null; public ColorMapBuilder() { this(null); } public ColorMapBuilder(AbstractStyleBuilder<?> parent) { super(parent); reset(); } public ColorMapBuilder type(int type) { this.type = type; unset = false; return this; } public ColorMapBuilder extended(boolean extended) { this.extended = extended; unset = false; return this; } public ColorMapEntryBuilder entry() { if (colorMapEntryBuilder != null && !colorMapEntryBuilder.isUnset()) { entries.add(colorMapEntryBuilder.build()); unset = false; } colorMapEntryBuilder = new ColorMapEntryBuilder(); return colorMapEntryBuilder; } public ColorMap build() { // force the dump of the last entry builder entry(); if (unset) { return null; } ColorMap colorMap = sf.createColorMap(); colorMap.setType(type); colorMap.setExtendedColors(extended); for (ColorMapEntry entry : entries) { colorMap.addColorMapEntry(entry); } if (parent == null) { reset(); } return colorMap; } public ColorMapBuilder reset() { type = ColorMap.TYPE_RAMP; extended = false; entries = new ArrayList<ColorMapEntry>(); unset = false; return this; } public ColorMapBuilder reset(ColorMap original) { if (original == null) { return reset(); } type = original.getType(); extended = original.getExtendedColors(); entries = new ArrayList<ColorMapEntry>(Arrays.asList(original.getColorMapEntries())); unset = false; return this; } public ColorMapBuilder unset() { return (ColorMapBuilder) super.unset(); } @Override protected void buildStyleInternal(StyleBuilder sb) { sb.featureTypeStyle().rule().raster().colorMap().init(this); } }