package org.geotools.styling.builder;
import org.geotools.styling.ContrastEnhancement;
import org.opengis.filter.expression.Expression;
import org.opengis.style.ContrastMethod;
/**
*
*
* @source $URL$
*/
public class ContrastEnhancementBuilder extends AbstractStyleBuilder<ContrastEnhancement> {
private Expression gamma = null;
private ContrastMethod method;
public ContrastEnhancementBuilder() {
this(null);
}
public ContrastEnhancementBuilder(AbstractStyleBuilder<?> parent) {
super(parent);
reset();
}
public ContrastEnhancementBuilder gamma(Expression gamma) {
this.gamma = gamma;
this.unset = false;
return this;
}
public ContrastEnhancementBuilder gamma(double gamma) {
return gamma(literal(gamma));
}
public ContrastEnhancementBuilder normalize() {
this.method = ContrastMethod.NORMALIZE;
this.unset = false;
return this;
}
public ContrastEnhancementBuilder histogram() {
this.method = ContrastMethod.HISTOGRAM;
this.unset = false;
return this;
}
public ContrastEnhancementBuilder gamma(String cqlExpression) {
return gamma(cqlExpression(cqlExpression));
}
public ContrastEnhancement build() {
if (unset) {
return null;
}
ContrastEnhancement contrastEnhancement = sf.contrastEnhancement(gamma, method);
return contrastEnhancement;
}
public ContrastEnhancementBuilder reset() {
gamma = null;
method = ContrastMethod.NONE;
unset = false;
return this;
}
public ContrastEnhancementBuilder reset(ContrastEnhancement contrastEnhancement) {
if (contrastEnhancement == null) {
return reset();
}
gamma = contrastEnhancement.getGammaValue();
method = contrastEnhancement.getMethod();
unset = false;
return this;
}
public ContrastEnhancementBuilder unset() {
return (ContrastEnhancementBuilder) super.unset();
}
@Override
protected void buildStyleInternal(StyleBuilder sb) {
throw new UnsupportedOperationException(
"Cannot build a meaningful style out of a contrast enhancement alone");
}
}