use of org.opengis.style.Font in project geotoolkit by Geomatys.
the class SE100toGTTransformer method visit.
/**
* Transform a SLD v1.0 text symbolizer in GT text symbolizer.
*/
public TextSymbolizer visit(final org.geotoolkit.sld.xml.v100.TextSymbolizer tst) {
if (tst == null)
return null;
final Expression label = visitExpression(tst.getLabel());
final Font font = (tst.getFont() == null) ? styleFactory.font() : visit(tst.getFont());
final LabelPlacement placement = (tst.getLabelPlacement() == null) ? styleFactory.pointPlacement() : visit(tst.getLabelPlacement());
final Halo halo = visit(tst.getHalo());
final Fill fill = visit(tst.getFill());
final Unit uom = Units.POINT;
final String geom = visitGeom(tst.getGeometry());
final String name = null;
final Description desc = StyleConstants.DEFAULT_DESCRIPTION;
if (label == null)
return null;
return styleFactory.textSymbolizer(name, geom, desc, uom, label, font, placement, halo, fill);
}
use of org.opengis.style.Font in project geotoolkit by Geomatys.
the class MapfileToSLDProcess method createTextSymbolizer.
private List<Symbolizer> createTextSymbolizer(final Expression label, final Feature lblStyle) {
Expression expLabelColor = (Expression) lblStyle.getPropertyValue(LABEL_COLOR.toString());
Expression expLabelSize = (Expression) lblStyle.getPropertyValue(LABEL_SIZE.toString());
Expression expHaloColor = (Expression) lblStyle.getPropertyValue(LABEL_OUTLINECOLOR.toString());
Integer valHaloWidth = (Integer) lblStyle.getPropertyValue(LABEL_OUTLINEWIDTH.toString());
String valAngle = (String) lblStyle.getPropertyValue(LABEL_ANGLE.toString());
if (expLabelColor == null) {
expLabelColor = SF.literal(Color.BLACK);
}
if (expLabelSize == null) {
expLabelSize = DEFAULT_FONT_SIZE;
}
if (expHaloColor == null) {
expHaloColor = SF.literal(Color.WHITE);
}
if (valHaloWidth == null) {
valHaloWidth = 0;
}
Expression expHaloWidth = FF.literal(valHaloWidth);
final List<Symbolizer> symbolizers = new ArrayList<Symbolizer>();
LabelPlacement placement = SF.pointPlacement();
if (valAngle != null) {
if ("FOLLOW".equalsIgnoreCase(valAngle) || "AUTO".equalsIgnoreCase(valAngle)) {
final Expression offset = FF.divide(expLabelSize, FF.literal(-2));
final Expression initial = FF.literal(20);
Expression gap = LITERAL_ZERO_FLOAT;
boolean repeated = false;
final boolean aligned = false;
final boolean generalize = false;
Integer minDistance = (Integer) lblStyle.getPropertyValue(LABEL_MINDISTANCE.toString());
if (minDistance != null) {
repeated = true;
gap = FF.literal(minDistance);
}
placement = SF.linePlacement(offset, initial, gap, repeated, aligned, generalize);
} else {
Expression rotation = LITERAL_ZERO_FLOAT;
// try if it's a number
try {
double d = Double.valueOf(valAngle);
rotation = FF.literal(d);
} catch (Exception ex) {
}
placement = SF.pointPlacement(DEFAULT_ANCHOR_POINT, DEFAULT_DISPLACEMENT, rotation);
}
}
// general informations
final String name = "";
final Description desc = DEFAULT_DESCRIPTION;
// use the default geometry of the feature
final String geometry = null;
final Unit unit = Units.POINT;
final Font font = SF.font(FF.literal("Arial"), FONT_STYLE_NORMAL, FONT_WEIGHT_NORMAL, expLabelSize);
final Halo halo = SF.halo(SF.fill(expHaloColor), expHaloWidth);
final Fill fill = SF.fill(expLabelColor);
final TextSymbolizer symbol = SF.textSymbolizer(name, geometry, desc, unit, label, font, placement, halo, fill);
symbolizers.add(symbol);
return symbolizers;
}
use of org.opengis.style.Font in project geotoolkit by Geomatys.
the class Styles method linedText.
public static MutableStyle linedText() {
// general informations
final String name = "mySymbol";
final Description desc = DEFAULT_DESCRIPTION;
// use the default geometry of the feature
final String geometry = null;
final Unit unit = Units.POINT;
final Expression label = FF.property("CNTRY_NAME");
final Font font = SF.font(FF.literal("Arial"), FONT_STYLE_ITALIC, FONT_WEIGHT_BOLD, FF.literal(14));
final LabelPlacement placement = SF.linePlacement(FF.literal(0));
final Halo halo = SF.halo(Color.WHITE, 1);
final Fill fill = SF.fill(Color.BLUE);
final TextSymbolizer symbol = SF.textSymbolizer(name, geometry, desc, unit, label, font, placement, halo, fill);
final MutableStyle style = SF.style(DEFAULT_POLYGON_SYMBOLIZER, symbol);
return style;
}
use of org.opengis.style.Font in project geotoolkit by Geomatys.
the class CachedFont method getJ2dFont.
public java.awt.Font getJ2dFont(final Object candidate, final float coeff) {
evaluate();
if (cache != null && coeff == 1) {
return cache;
}
final Font font = styleElement;
final int j2dSize;
if (fontSize != Integer.MIN_VALUE) {
j2dSize = fontSize;
} else {
// size is dynamic
j2dSize = GO2Utilities.evaluate(font.getSize(), candidate, Integer.class, 10);
}
final int j2dStyle;
if (fontStyle != Integer.MIN_VALUE) {
j2dStyle = fontStyle;
} else {
// style is dynamic
String style = GO2Utilities.evaluate(font.getStyle(), candidate, String.class, FONT_STYLE_NORMAL_STRING);
String weight = GO2Utilities.evaluate(font.getWeight(), candidate, String.class, FONT_WEIGHT_NORMAL_STRING);
if (FONT_WEIGHT_BOLD_STRING.equalsIgnoreCase(weight)) {
if (FONT_STYLE_ITALIC_STRING.equalsIgnoreCase(style)) {
j2dStyle = java.awt.Font.BOLD | java.awt.Font.ITALIC;
} else if (FONT_STYLE_OBLIQUE_STRING.equalsIgnoreCase(style)) {
j2dStyle = java.awt.Font.BOLD | java.awt.Font.ITALIC;
} else {
j2dStyle = java.awt.Font.BOLD;
}
} else {
if (FONT_STYLE_ITALIC_STRING.equalsIgnoreCase(style)) {
j2dStyle = java.awt.Font.ITALIC;
} else if (FONT_STYLE_OBLIQUE_STRING.equalsIgnoreCase(style)) {
j2dStyle = java.awt.Font.ITALIC;
} else {
j2dStyle = java.awt.Font.PLAIN;
}
}
}
final String name;
if (fontFamily != null) {
name = fontFamily;
} else {
final List<Expression> families = font.getFamily();
if (families != null && !families.isEmpty()) {
name = GO2Utilities.evaluate(font.getStyle(), candidate, String.class, "arial");
} else {
name = "Dialog";
}
}
return new java.awt.Font(name, j2dStyle, (int) (j2dSize * coeff));
}
use of org.opengis.style.Font in project geotoolkit by Geomatys.
the class DefaultStyleVisitor method visit.
@Override
public Object visit(final TextSymbolizer textSymbolizer, Object data) {
final Fill fill = textSymbolizer.getFill();
if (fill != null) {
data = fill.accept(this, data);
}
final Font font = textSymbolizer.getFont();
if (font != null) {
data = font.accept(this, data);
}
final Halo halo = textSymbolizer.getHalo();
if (halo != null) {
data = halo.accept(this, data);
}
final Expression label = textSymbolizer.getLabel();
if (label != null) {
visit(label, data);
}
final LabelPlacement place = textSymbolizer.getLabelPlacement();
if (place != null) {
data = place.accept(this, data);
}
return data;
}
Aggregations