Mercurial > mxd2map
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 :