use of org.geotools.styling.Font in project sldeditor by robward-scisys.
the class TextSymbolizerDetails method populate.
/**
* Populate.
*
* @param selectedSymbol the selected symbol
*/
/*
* (non-Javadoc)
*
* @see com.sldeditor.ui.iface.PopulateDetailsInterface#populate(com.sldeditor.ui.detail.selectedsymbol.SelectedSymbol)
*/
@Override
public void populate(SelectedSymbol selectedSymbol) {
if (selectedSymbol != null) {
TextSymbolizer textSymbolizer = (TextSymbolizer) selectedSymbol.getSymbolizer();
if (textSymbolizer != null) {
populateStandardData(textSymbolizer);
//
// Geometry
//
fieldConfigVisitor.populateField(FieldIdEnum.GEOMETRY, textSymbolizer.getGeometry());
//
// Label
//
fieldConfigVisitor.populateField(FieldIdEnum.LABEL, textSymbolizer.getLabel());
// Font
Font font = textSymbolizer.getFont();
GroupConfigInterface group = getGroup(GroupIdEnum.FONT);
group.enable(font != null);
if (font != null) {
fieldConfigVisitor.populateFontField(FieldIdEnum.FONT_FAMILY, font);
fieldConfigVisitor.populateField(FieldIdEnum.FONT_WEIGHT, font.getWeight());
fieldConfigVisitor.populateField(FieldIdEnum.FONT_STYLE, font.getStyle());
fieldConfigVisitor.populateField(FieldIdEnum.FONT_SIZE, font.getSize());
}
fieldConfigVisitor.populateFontField(FieldIdEnum.FONT_PREVIEW, font);
// Fill
Fill fill = (FillImpl) textSymbolizer.getFill();
if (fill != null) {
fieldConfigVisitor.populateField(FieldIdEnum.FILL_COLOUR, fill.getColor());
fieldConfigVisitor.populateField(FieldIdEnum.TEXT_OPACITY, fill.getOpacity());
}
// Halo
Halo halo = textSymbolizer.getHalo();
group = getGroup(GroupIdEnum.HALO);
group.enable(halo != null);
if (halo != null) {
Fill haloFill = halo.getFill();
fieldConfigVisitor.populateField(FieldIdEnum.HALO_COLOUR, haloFill.getColor());
fieldConfigVisitor.populateField(FieldIdEnum.HALO_RADIUS, halo.getRadius());
} else {
fieldConfigVisitor.populateField(FieldIdEnum.HALO_COLOUR, (Expression) null);
fieldConfigVisitor.populateField(FieldIdEnum.HALO_RADIUS, (Expression) null);
}
group = getGroup(GroupIdEnum.PLACEMENT);
if (group != null) {
MultiOptionGroup labelPlacementGroup = (MultiOptionGroup) group;
LabelPlacement placement = textSymbolizer.getLabelPlacement();
if (placement instanceof PointPlacementImpl) {
PointPlacementImpl pointPlacement = (PointPlacementImpl) placement;
labelPlacementGroup.setOption(GroupIdEnum.POINTPLACEMENT);
Expression anchorPointX = null;
Expression anchorPointY = null;
AnchorPoint anchorPoint = pointPlacement.getAnchorPoint();
if (anchorPoint != null) {
anchorPointX = anchorPoint.getAnchorPointX();
anchorPointY = anchorPoint.getAnchorPointY();
} else {
// Use the defaults as non specified
anchorPointX = defaultPointPlacementAnchorPointX;
anchorPointY = defaultPointPlacementAnchorPointY;
}
fieldConfigVisitor.populateField(FieldIdEnum.ANCHOR_POINT_H, anchorPointX);
fieldConfigVisitor.populateField(FieldIdEnum.ANCHOR_POINT_V, anchorPointY);
Displacement displacement = pointPlacement.getDisplacement();
if (displacement == null) {
displacement = DisplacementImpl.DEFAULT;
}
fieldConfigVisitor.populateField(FieldIdEnum.DISPLACEMENT_X, displacement.getDisplacementX());
fieldConfigVisitor.populateField(FieldIdEnum.DISPLACEMENT_Y, displacement.getDisplacementY());
fieldConfigVisitor.populateField(FieldIdEnum.ANGLE, pointPlacement.getRotation());
} else if (placement instanceof LinePlacementImpl) {
LinePlacementImpl linePlacement = (LinePlacementImpl) placement;
labelPlacementGroup.setOption(GroupIdEnum.LINEPLACEMENT);
fieldConfigVisitor.populateField(FieldIdEnum.GAP, linePlacement.getGap());
fieldConfigVisitor.populateField(FieldIdEnum.INITIAL_GAP, linePlacement.getInitialGap());
fieldConfigVisitor.populateField(FieldIdEnum.PERPENDICULAR_OFFSET, linePlacement.getPerpendicularOffset());
fieldConfigVisitor.populateBooleanField(FieldIdEnum.GENERALISED_LINE, linePlacement.isGeneralizeLine());
fieldConfigVisitor.populateBooleanField(FieldIdEnum.ALIGN, linePlacement.isAligned());
fieldConfigVisitor.populateBooleanField(FieldIdEnum.REPEATED, linePlacement.isRepeated());
}
}
if (vendorOptionTextFactory != null) {
vendorOptionTextFactory.populate(textSymbolizer);
}
}
}
}
use of org.geotools.styling.Font in project sldeditor by robward-scisys.
the class BatchUpdateFontModelTest method testLoadData.
/**
* Test method for {@link com.sldeditor.tool.batchupdatefont.BatchUpdateFontModel#loadData(java.util.List)}.
*/
@Test
public void testLoadData() {
StyledLayerDescriptor sld = DefaultSymbols.createNewSLD();
NamedLayer namedLayer = DefaultSymbols.createNewNamedLayer();
sld.layers().add(namedLayer);
String expectedNamedLayer = "namedLayer";
namedLayer.setName(expectedNamedLayer);
Style style = DefaultSymbols.createNewStyle();
String expectedStyleLayer = "style";
style.setName(expectedStyleLayer);
namedLayer.addStyle(style);
FeatureTypeStyle fts = DefaultSymbols.createNewFeatureTypeStyle();
String expectedFeatureTypeStyleLayer = "feature type style";
fts.setName(expectedFeatureTypeStyleLayer);
style.featureTypeStyles().add(fts);
Rule rule = DefaultSymbols.createNewRule();
fts.rules().add(rule);
String expectedRule = "rule";
rule.setName(expectedRule);
String expectedSymbolizer = "text symbolizer";
TextSymbolizer symbolizer = DefaultSymbols.createDefaultTextSymbolizer();
symbolizer.setName(expectedSymbolizer);
rule.symbolizers().add(symbolizer);
StyleFactoryImpl styleFactory = (StyleFactoryImpl) CommonFactoryFinder.getStyleFactory();
FilterFactory ff = CommonFactoryFinder.getFilterFactory();
Font font = styleFactory.createFont(ff.literal("abc"), ff.literal("normal"), ff.literal("normal"), ff.literal(10));
symbolizer.setFont(font);
SLDWriterInterface sldWriter = SLDWriterFactory.createWriter(null);
String sldContents = sldWriter.encodeSLD(null, sld);
String expectedWorkspace = "workspace";
String expectedStyle = "layer.sld";
StyleWrapper styleWrapper = new StyleWrapper(expectedWorkspace, expectedStyle);
SLDData data = new SLDData(styleWrapper, sldContents);
File testFile = new File("test.sld");
data.setSLDFile(testFile);
SLDEditorFile.getInstance().setSldFile(testFile);
SLDEditorFile.getInstance().setSLDData(data);
BatchUpdateFontData testObj = new BatchUpdateFontData(sld, data);
SelectedSymbol.getInstance().setSld(sld);
testObj.setNamedLayer(expectedNamedLayer);
testObj.setStyle(expectedStyleLayer);
testObj.setFeatureTypeStyle(expectedFeatureTypeStyleLayer);
testObj.setRule(rule);
testObj.setSymbolizer(symbolizer);
testObj.setFont(font);
List<BatchUpdateFontData> dataList = new ArrayList<BatchUpdateFontData>();
dataList.add(testObj);
BatchUpdateFontModel model = new BatchUpdateFontModel();
model.loadData(dataList);
for (int col = 0; col < model.getColumnCount(); col++) {
assertFalse(model.hasValueBeenUpdated(0, col));
}
assertFalse(model.anyChanges());
assertFalse(model.saveData(null));
List<Font> actualFontlist = model.getFontEntries(new int[] { 0 });
assertEquals(1, actualFontlist.size());
assertEquals(1, model.getRowCount());
// Update font
String originalFontname = "New Font";
String originalFontStyle = "italic";
String originalFontWeight = "bold";
int originalFontSize = 16;
font = styleFactory.createFont(ff.literal(originalFontname), ff.literal(originalFontStyle), ff.literal(originalFontWeight), ff.literal(originalFontSize));
model.applyData(new int[] { 0 }, font);
assertTrue(model.hasValueBeenUpdated(0, 7));
assertTrue(model.hasValueBeenUpdated(0, 8));
assertTrue(model.hasValueBeenUpdated(0, 9));
assertTrue(model.hasValueBeenUpdated(0, 10));
assertTrue(model.anyChanges());
assertEquals(originalFontname, model.getValueAt(0, 7));
assertEquals(originalFontStyle, model.getValueAt(0, 8));
assertEquals(originalFontWeight, model.getValueAt(0, 9));
assertEquals(String.valueOf(originalFontSize), model.getValueAt(0, 10));
model.revertData();
assertFalse(model.anyChanges());
int expectedFontSize = 99;
model.applyData(new int[] { 0 }, expectedFontSize);
// Font size
assertTrue(model.hasValueBeenUpdated(0, 10));
assertEquals(expectedWorkspace, model.getValueAt(0, 0));
assertEquals(expectedStyle, model.getValueAt(0, 1));
assertEquals(expectedNamedLayer, model.getValueAt(0, 2));
assertEquals(expectedStyleLayer, model.getValueAt(0, 3));
assertEquals(expectedFeatureTypeStyleLayer, model.getValueAt(0, 4));
assertEquals(expectedRule, model.getValueAt(0, 5));
assertEquals(expectedSymbolizer, model.getValueAt(0, 6));
assertEquals("abc", model.getValueAt(0, 7));
assertEquals("normal", model.getValueAt(0, 8));
assertEquals("normal", model.getValueAt(0, 9));
assertEquals(String.valueOf(10 + expectedFontSize), model.getValueAt(0, 10));
assertNull(model.getValueAt(0, 42));
assertTrue(model.saveData(null));
SelectedSymbol.destroyInstance();
SLDEditorFile.destroyInstance();
model.setColumnRenderer(null);
JTable table = new JTable();
table.setModel(model);
model.setColumnRenderer(table.getColumnModel());
assertFalse(model.isCellEditable(0, 0));
assertEquals(Localisation.getString(BatchUpdateFontModel.class, "BatchUpdateFontModel.workspace"), model.getColumnName(0));
}
use of org.geotools.styling.Font in project sldeditor by robward-scisys.
the class SLDUtilsTest method testFindRule.
@Test
public void testFindRule() {
StyledLayerDescriptor sld = DefaultSymbols.createNewSLD();
NamedLayer namedLayer = DefaultSymbols.createNewNamedLayer();
sld.layers().add(DefaultSymbols.createNewNamedLayer());
sld.layers().add(namedLayer);
String expectedNamedLayer = "namedLayer";
namedLayer.setName(expectedNamedLayer);
Style style = DefaultSymbols.createNewStyle();
String expectedStyleLayer = "style";
style.setName(expectedStyleLayer);
namedLayer.addStyle(DefaultSymbols.createNewStyle());
namedLayer.addStyle(style);
FeatureTypeStyle fts = DefaultSymbols.createNewFeatureTypeStyle();
String expectedFeatureTypeStyleLayer = "feature type style";
fts.setName(expectedFeatureTypeStyleLayer);
style.featureTypeStyles().add(DefaultSymbols.createNewFeatureTypeStyle());
style.featureTypeStyles().add(fts);
Rule rule = DefaultSymbols.createNewRule();
fts.rules().add(DefaultSymbols.createNewRule());
fts.rules().add(rule);
String expectedRule = "rule";
rule.setName(expectedRule);
String expectedSymbolizer = "text symbolizer";
TextSymbolizer symbolizer = DefaultSymbols.createDefaultTextSymbolizer();
symbolizer.setName(expectedSymbolizer);
rule.symbolizers().add(DefaultSymbols.createDefaultPolygonSymbolizer());
rule.symbolizers().add(symbolizer);
StyleFactoryImpl styleFactory = (StyleFactoryImpl) CommonFactoryFinder.getStyleFactory();
FilterFactory ff = CommonFactoryFinder.getFilterFactory();
Font font = styleFactory.createFont(ff.literal("abc"), ff.literal("normal"), ff.literal("normal"), ff.literal(10));
symbolizer.setFont(font);
DuplicatingStyleVisitor duplicate = new DuplicatingStyleVisitor();
duplicate.visit(sld);
StyledLayerDescriptor sldCopy = (StyledLayerDescriptor) duplicate.getCopy();
Rule actualRule = SLDUtils.findRule(sld, rule, sldCopy);
assertNotNull(actualRule);
assertEquals(rule.getName(), actualRule.getName());
actualRule = SLDUtils.findRule(sld, null, sldCopy);
assertNull(actualRule);
actualRule = SLDUtils.findRule(sld, rule, null);
assertNull(actualRule);
}
use of org.geotools.styling.Font in project sldeditor by robward-scisys.
the class SLDUtilsTest method testFindSymbolizer.
@Test
public void testFindSymbolizer() {
StyledLayerDescriptor sld = DefaultSymbols.createNewSLD();
NamedLayer namedLayer = DefaultSymbols.createNewNamedLayer();
sld.layers().add(DefaultSymbols.createNewNamedLayer());
sld.layers().add(namedLayer);
String expectedNamedLayer = "namedLayer";
namedLayer.setName(expectedNamedLayer);
Style style = DefaultSymbols.createNewStyle();
String expectedStyleLayer = "style";
style.setName(expectedStyleLayer);
namedLayer.addStyle(DefaultSymbols.createNewStyle());
namedLayer.addStyle(style);
FeatureTypeStyle fts = DefaultSymbols.createNewFeatureTypeStyle();
String expectedFeatureTypeStyleLayer = "feature type style";
fts.setName(expectedFeatureTypeStyleLayer);
style.featureTypeStyles().add(DefaultSymbols.createNewFeatureTypeStyle());
style.featureTypeStyles().add(fts);
Rule rule = DefaultSymbols.createNewRule();
fts.rules().add(DefaultSymbols.createNewRule());
fts.rules().add(rule);
String expectedRule = "rule";
rule.setName(expectedRule);
String expectedSymbolizer = "text symbolizer";
TextSymbolizer symbolizer = DefaultSymbols.createDefaultTextSymbolizer();
symbolizer.setName(expectedSymbolizer);
rule.symbolizers().add(DefaultSymbols.createDefaultPolygonSymbolizer());
rule.symbolizers().add(symbolizer);
StyleFactoryImpl styleFactory = (StyleFactoryImpl) CommonFactoryFinder.getStyleFactory();
FilterFactory ff = CommonFactoryFinder.getFilterFactory();
Font font = styleFactory.createFont(ff.literal("abc"), ff.literal("normal"), ff.literal("normal"), ff.literal(10));
symbolizer.setFont(font);
DuplicatingStyleVisitor duplicate = new DuplicatingStyleVisitor();
duplicate.visit(sld);
StyledLayerDescriptor sldCopy = (StyledLayerDescriptor) duplicate.getCopy();
Symbolizer actualSymbolizer = SLDUtils.findSymbolizer(sld, symbolizer, sldCopy);
assertNotNull(actualSymbolizer);
assertEquals(symbolizer.getLabel().toString(), ((TextSymbolizer) actualSymbolizer).getLabel().toString());
actualSymbolizer = SLDUtils.findSymbolizer(sld, null, sldCopy);
assertNull(actualSymbolizer);
actualSymbolizer = SLDUtils.findSymbolizer(sld, symbolizer, null);
assertNull(actualSymbolizer);
}
use of org.geotools.styling.Font in project sldeditor by robward-scisys.
the class TextSymbol method convert.
/* (non-Javadoc)
* @see com.sldeditor.convert.esri.symbols.EsriTextSymbolInterface#convert(org.geotools.styling.TextSymbolizer, com.google.gson.JsonElement, int)
*/
@SuppressWarnings("unused")
@Override
public void convert(TextSymbolizer textSymbolizer, JsonElement element, int transparency) {
if ((element != null) && (textSymbolizer != null)) {
JsonObject obj = element.getAsJsonObject();
double angle = getDouble(obj, CommonSymbolKeys.ANGLE);
int breakCharacter = getInt(obj, TextSymbolKeys.BREAK_CHARACTER);
int textCase = getInt(obj, TextSymbolKeys.CASE);
double characterSpacing = getDouble(obj, TextSymbolKeys.CHARACTER_SPACING);
double characterWidth = getDouble(obj, TextSymbolKeys.CHARACTER_WIDTH);
double size = getDouble(obj, CommonSymbolKeys.SIZE);
size += MXDOptions.getInstance().getFontSizeFactor();
int direction = getInt(obj, TextSymbolKeys.DIRECTION);
double flipAngle = getDouble(obj, TextSymbolKeys.FLIP_ANGLE);
int horizontalAlignment = getInt(obj, TextSymbolKeys.HORIZONTAL_ALIGNMENT);
int verticalAlignment = getInt(obj, TextSymbolKeys.VERTICAL_ALIGNMENT);
double leading = getDouble(obj, TextSymbolKeys.LEADING);
double margin = getDouble(obj, TextSymbolKeys.MARGIN);
double maskSize = getDouble(obj, TextSymbolKeys.MASK_SIZE);
int maskStyle = getInt(obj, TextSymbolKeys.MASK_STYLE);
int position = getInt(obj, TextSymbolKeys.POSITION);
double xOffset = getDouble(obj, CommonSymbolKeys.X_OFFSET);
double yOffset = getDouble(obj, CommonSymbolKeys.Y_OFFSET);
double shadowXOffset = getDouble(obj, TextSymbolKeys.SHADOW_X_OFFSET);
double shadowYOffset = getDouble(obj, TextSymbolKeys.SHADOW_Y_OFFSET);
double wordSpacing = getDouble(obj, TextSymbolKeys.WORD_SPACING);
boolean CJKCharactersRotation = getBoolean(obj, TextSymbolKeys.CJK_CHARACTERS_ROTATION);
boolean clip = getBoolean(obj, TextSymbolKeys.CLIP);
boolean kerning = getBoolean(obj, TextSymbolKeys.KERNING);
boolean rightToLeft = getBoolean(obj, TextSymbolKeys.RIGHT_TO_LEFT);
boolean rotateWithTransform = getBoolean(obj, TextSymbolKeys.ROTATE_WITH_TRANSFORM);
boolean typeSetting = getBoolean(obj, TextSymbolKeys.TYPE_SETTING);
//
// Point placement
//
AnchorPoint anchorPoint = styleFactory.anchorPoint(ff.literal(0), ff.literal(0));
Displacement displacement = styleFactory.displacement(ff.literal(xOffset), ff.literal(yOffset));
Expression rotationExpression = ff.literal(angle);
styleFactory.pointPlacement(anchorPoint, displacement, rotationExpression);
//
// Font
//
JsonElement fontElement = obj.get(TextSymbolKeys.FONT);
if (fontElement != null) {
JsonObject fontObj = fontElement.getAsJsonObject();
String fontName = getString(fontObj, FontSymbolKeys.FONT_NAME);
boolean bold = getBoolean(fontObj, FontSymbolKeys.BOLD);
boolean italic = getBoolean(fontObj, FontSymbolKeys.ITALIC);
boolean strikeThrough = getBoolean(fontObj, FontSymbolKeys.STRIKE_THROUGH);
boolean underline = getBoolean(fontObj, FontSymbolKeys.UNDERLINE);
int weight = getInt(fontObj, FontSymbolKeys.FONT_WEIGHT);
int charset = getInt(fontObj, FontSymbolKeys.CHARSET);
int fontSize = getInt(obj, FontSymbolKeys.FONT_SIZE);
Expression fontFamilyExpression = ff.literal(fontName);
Expression fontSizeExpression = ff.literal(size);
String fontStyle = "normal";
if (italic) {
fontStyle = "italic";
}
Expression fontStyleExpression = ff.literal(fontStyle);
String fontWeight = "normal";
if (bold) {
fontWeight = "bold";
}
Expression fontWeightExpression = ff.literal(fontWeight);
Font font = styleFactory.createFont(fontFamilyExpression, fontStyleExpression, fontWeightExpression, fontSizeExpression);
textSymbolizer.setFont(font);
}
GraphicFill graphicFill = null;
Expression textColour = getColour(obj.get(CommonSymbolKeys.COLOUR));
Expression opacity = null;
if (transparency != 0) {
opacity = ff.literal(transparency / 255);
}
Fill fill = styleFactory.fill(graphicFill, textColour, opacity);
textSymbolizer.setFill(fill);
String geometryPropertyName = null;
textSymbolizer.setGeometryPropertyName(geometryPropertyName);
Expression shadowColour = getColour(obj.get(TextSymbolKeys.SHADOW_COLOUR));
}
}
Aggregations