package org.geotools.styling.builder; import org.geotools.styling.Halo; import org.opengis.filter.expression.Expression; /** * * * @source $URL$ */ public class HaloBuilder extends AbstractStyleBuilder<org.opengis.style.Halo> { Expression radius; FillBuilder fill = new FillBuilder(this); public HaloBuilder() { this(null); } public HaloBuilder(AbstractStyleBuilder<?> parent) { super(parent); reset(); } /** * Set the HaloBuilder to produce <code>node</code> * * @return current HaloBuilder for chaining operations */ public HaloBuilder unset() { return (HaloBuilder) super.unset(); } /** * Set the HaloBuilder * <P> * to produce a default Halo. * * @return current HaloBuilder * <P> * for chaining operations */ public HaloBuilder reset() { unset = false; // radius = literal(0); fill.reset(); return this; } /** * Set the HaloBuilder to produce the provided Halo. * * @param halo Halo under construction; if null HaloBuilder will be unset() * @return current HaloBuilder for chaining operations */ public HaloBuilder reset(org.opengis.style.Halo halo) { if (halo == null) { return unset(); } fill = new FillBuilder(this).reset(halo.getFill()); radius = halo.getRadius(); return this; } public HaloBuilder radius(Expression radius) { unset = false; this.radius = radius; return this; } public HaloBuilder radius(double radius) { return radius(literal(radius)); } public HaloBuilder radius(String cqlExpression) { return radius(cqlExpression(cqlExpression)); } public FillBuilder fill() { unset = false; return fill; } public Halo build() { if (unset) return null; Halo halo = sf.createHalo(fill.build(), radius); if (parent == null) reset(); return halo; } protected void buildStyleInternal(StyleBuilder sb) { sb.featureTypeStyle().rule().text().halo().init(this); } }