package org.geotools.styling.builder; import org.geotools.Builder; import org.geotools.factory.CommonFactoryFinder; import org.geotools.filter.expression.ChildExpressionBuilder; import org.geotools.styling.ContrastEnhancement; import org.geotools.styling.StyleFactory; import org.opengis.style.ContrastMethod; public class ContrastEnhancementBuilder<P> implements Builder<ContrastEnhancement> { private StyleFactory sf = CommonFactoryFinder.getStyleFactory(null); private P parent; boolean unset = true; // current value is null private ChildExpressionBuilder<ContrastEnhancementBuilder<P>> gamma = new ChildExpressionBuilder<ContrastEnhancementBuilder<P>>(this); private ContrastMethod method; public ContrastEnhancementBuilder(){ this(null); } public ContrastEnhancementBuilder(P parent){ this.parent = parent; reset(); } public ContrastEnhancement build() { if( unset ){ return null; } ContrastEnhancement contrastEnhancement = sf.contrastEnhancement(gamma.build(), method); return contrastEnhancement; } public P end(){ return parent; } public ContrastEnhancementBuilder<P> reset() { gamma.reset(); unset = false; return this; } public ContrastEnhancementBuilder<P> reset(ContrastEnhancement contrastEnhancement) { if( contrastEnhancement == null ){ return reset(); } gamma.reset( contrastEnhancement.getGammaValue() ); method = contrastEnhancement.getMethod(); unset = false; return this; } public ContrastEnhancementBuilder<P> unset() { gamma.unset(); method = ContrastMethod.NONE; unset = true; return this; } }