package org.geotools.styling.builder;
import org.geotools.Builder;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.styling.ImageOutline;
import org.geotools.styling.LineSymbolizer;
import org.geotools.styling.PolygonSymbolizer;
import org.geotools.styling.StyleFactory;
import org.geotools.styling.Symbolizer;
public class ImageOutlineBuilder<P> implements Builder<ImageOutline> {
private StyleFactory sf = CommonFactoryFinder.getStyleFactory(null);
private P parent;
private Builder<Symbolizer> symbolizer;
public ImageOutlineBuilder() {
parent = null;
reset();
}
public ImageOutlineBuilder(P parent) {
this.parent = parent;
reset();
}
public ImageOutline build() {
if (symbolizer == null) {
return null;
}
ImageOutline outline = sf.createImageOutline(symbolizer.build());
return outline;
}
public P end() {
return parent;
}
public ImageOutlineBuilder<P> reset() {
symbolizer = new LineSymbolizerBuilder(this);
return this;
}
@SuppressWarnings("unchecked")
public ImageOutlineBuilder<P> reset(ImageOutline outline) {
if (outline == null) {
return reset();
}
symbolizer = null;
if (outline.getSymbolizer() instanceof LineSymbolizer) {
LineSymbolizer lineSymbolizer = (LineSymbolizer) outline.getSymbolizer();
symbolizer = new LineSymbolizerBuilder(this).reset(lineSymbolizer);
}
if (outline.getSymbolizer() instanceof PolygonSymbolizer) {
PolygonSymbolizer polySymbolizer = (PolygonSymbolizer) outline.getSymbolizer();
symbolizer = new PolygonSymbolizerBuilder(this).reset(polySymbolizer);
}
return this;
}
public ImageOutlineBuilder<P> unset() {
symbolizer = null;
return this;
}
}