diff src/java/de/intevation/mxd/reader/TextSymbolReader.java @ 179:f3a91cd7440b

Added a first version of feature labeling.
author raimund renkert <raimund.renkert@intevation.de>
date Fri, 08 Jul 2011 16:32:05 +0200
parents
children f4eb506499f5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java/de/intevation/mxd/reader/TextSymbolReader.java	Fri Jul 08 16:32:05 2011 +0200
@@ -0,0 +1,141 @@
+package de.intevation.mxd.reader;
+
+import java.awt.Color;
+
+import org.apache.log4j.Logger;
+
+import com.esri.arcgis.display.ISymbol;
+import com.esri.arcgis.display.ITextSymbol;
+import com.esri.arcgis.display.TextSymbol;
+import com.esri.arcgis.display.IRgbColor;
+import com.esri.arcgis.display.RgbColor;
+import com.esri.arcgis.support.ms.stdole.Font;
+
+import org.w3c.dom.Element;
+import java.io.IOException;
+
+/**
+ * Reads text symbol information.
+ *
+ * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
+ */
+public class TextSymbolReader
+extends AbstractSymbolReader {
+
+    /**
+     * The logger.
+     */
+    private static final Logger logger =
+        Logger.getLogger(TextSymbolReader.class);
+
+    /**
+     * Private member.
+     */
+    private TextSymbol symbol;
+
+    public TextSymbolReader(ITextSymbol symbol)
+    throws Exception {
+        logger.debug("contructor()");
+        if(symbol instanceof TextSymbol) {
+            this.symbol = (TextSymbol)symbol;
+        }
+        else {
+            throw new Exception("Not a TextSymbol!");
+        }
+    }
+
+    /**
+     * Reads the symbol attributes.
+     *
+     * @return The XML node.
+     */
+    public Element read() {
+        logger.debug("read()");
+        Element symbolElement = util.addSymbol(parent);
+
+        try {
+            symbolElement.setAttribute("name", symbol.getNameString());
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read name. Setting name to \"default\".");
+            symbolElement.setAttribute("name", "default");
+        }
+
+        symbolElement.setAttribute("style", "text");
+
+        try {
+            if(symbol.getColor() instanceof IRgbColor) {
+                IRgbColor color = (IRgbColor)symbol.getColor();
+                Color c = new Color (
+                    color.getRed(),
+                    color.getGreen(),
+                    color.getBlue());
+                symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
+                symbolElement.setAttribute("transparency",
+                    String.valueOf(color.getTransparency()));
+            }
+            else {
+                RgbColor col = new RgbColor();
+                col.setRGB(symbol.getColor().getRGB());
+                Color c = new Color (
+                    col.getRed(),
+                    col.getGreen(),
+                    col.getBlue());
+                symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
+                symbolElement.setAttribute("transparency",
+                    String.valueOf(col.getTransparency()));
+            }
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read color.");
+        }
+
+        try {
+            symbolElement.setAttribute(
+                "size",
+                String.valueOf(symbol.getSize()));
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read size. Setting size to 1.");
+            symbolElement.setAttribute("size", "1");
+        }
+
+        try {
+           symbolElement.setAttribute(
+                "angle",
+                String.valueOf(symbol.getAngle()));
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read angle.");
+        }
+
+        try {
+            symbolElement.setAttribute(
+                "offset",
+                symbol.getXOffset() + "," + symbol.getYOffset());
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read offset.");
+        }
+
+	try {
+            Font f = symbol.getFont();
+            symbolElement.setAttribute("font", f.getName());
+            symbolElement.setAttribute("char_set", String.valueOf(f.getCharset()));
+            symbolElement.setAttribute("bold", String.valueOf(f.getBold()));
+            symbolElement.setAttribute("italic", String.valueOf(f.getItalic()));
+            symbolElement.setAttribute("font_size", String.valueOf(f.getSize()));
+            symbolElement.setAttribute(
+                "strike_through",
+                String.valueOf(f.getStrikethrough()));
+            symbolElement.setAttribute("weight", String.valueOf(f.getWeight()));
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read font. Setting font to \"FreeSans\".");
+            symbolElement.setAttribute("font", "FreeSans");
+        }
+        symbolElement.setAttribute("type", "text");
+        return symbolElement;
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)