package org.geotools.styling.builder;
import java.util.ArrayList;
import java.util.List;
import org.geotools.styling.Font;
import org.opengis.filter.expression.Expression;
/**
*
*
* @source $URL$
*/
public class FontBuilder extends AbstractStyleBuilder<Font> {
private List<Expression> families = new ArrayList<Expression>();
private Expression style;
private Expression weight;
private Expression size;
public FontBuilder() {
this(null);
}
public FontBuilder(TextSymbolizerBuilder parent) {
super(parent);
reset();
}
public Font build() {
if (unset) {
return null;
}
Font font = sf.font(families, style, weight, size);
if (parent == null) {
reset();
}
return font;
}
public FontBuilder family(Expression family) {
this.families.add(family);
return this;
}
public FontBuilder familyName(String family) {
return family(literal(family));
}
public FontBuilder family(String cqlExpression) {
return family(cqlExpression(cqlExpression));
}
public FontBuilder style(Expression style) {
this.style = style;
return this;
}
public FontBuilder styleName(String style) {
return style(literal(style));
}
public FontBuilder style(String cqlExpression) {
return style(cqlExpression(cqlExpression));
}
public FontBuilder weight(Expression weight) {
this.weight = weight;
return this;
}
public FontBuilder weightName(String weight) {
return weight(literal(weight));
}
public FontBuilder weight(String cqlExpression) {
return weight(cqlExpression(cqlExpression));
}
public FontBuilder size(Expression size) {
this.size = size;
return this;
}
public FontBuilder size(double size) {
return size(literal(size));
}
public FontBuilder size(String cqlExpression) {
return size(cqlExpression(cqlExpression));
}
public FontBuilder reset() {
unset = false;
return this;
}
public FontBuilder reset(Font font) {
if (font == null) {
return reset();
}
this.families = font.getFamily() != null ? font.getFamily() : new ArrayList<Expression>();
this.size = font.getSize();
this.style = font.getStyle();
this.weight = font.getWeight();
unset = false;
return this;
}
public FontBuilder unset() {
return (FontBuilder) super.unset();
}
@Override
protected void buildStyleInternal(StyleBuilder sb) {
sb.featureTypeStyle().rule().text().labelText("label").newFont().init(this);
}
}