rrenkert@61: package de.intevation.mxd.reader;
rrenkert@61: 
rrenkert@61: import java.awt.Color;
rrenkert@61: 
rrenkert@61: import org.apache.log4j.Logger;
rrenkert@61: 
rrenkert@61: import com.esri.arcgis.display.ISymbol;
rrenkert@67: import com.esri.arcgis.display.ILineSymbol;
rrenkert@61: import com.esri.arcgis.display.SimpleLineSymbol;
rrenkert@61: import com.esri.arcgis.display.esriSimpleLineStyle;
rrenkert@61: import com.esri.arcgis.display.IRgbColor;
rrenkert@61: import com.esri.arcgis.display.RgbColor;
rrenkert@61: 
rrenkert@61: import org.w3c.dom.Element;
rrenkert@61: 
rrenkert@61: /**
rrenkert@61:  * Reads simple line symbol information.
rrenkert@61:  *
rrenkert@61:  * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
rrenkert@61:  */
rrenkert@80: public class SimpleLineSymbolReader
rrenkert@80: extends AbstractSymbolReader {
rrenkert@61: 
rrenkert@61:     /**
rrenkert@61:      * The logger.
rrenkert@61:      */
rrenkert@61:     private static final Logger logger =
rrenkert@61:         Logger.getLogger(SimpleLineSymbolReader.class);
rrenkert@61: 
rrenkert@61:     /**
rrenkert@61:      * Private member.
rrenkert@61:      */
rrenkert@61:     private SimpleLineSymbol symbol;
rrenkert@61: 
rrenkert@61:     public SimpleLineSymbolReader(ISymbol symbol)
rrenkert@61:     throws Exception {
rrenkert@61:         logger.debug("contructor()");
rrenkert@61:         if(symbol instanceof SimpleLineSymbol) {
rrenkert@61:             this.symbol = (SimpleLineSymbol)symbol;
rrenkert@61:         }
rrenkert@61:         else {
rrenkert@61:             throw new Exception("Not a SimpleLineSymbol!");
rrenkert@61:         }
rrenkert@61:     }
rrenkert@61: 
rrenkert@67:     public SimpleLineSymbolReader(ILineSymbol symbol)
rrenkert@67:     throws Exception {
rrenkert@67:         logger.debug("contructor()");
rrenkert@67:         if(symbol instanceof SimpleLineSymbol) {
rrenkert@67:             this.symbol = (SimpleLineSymbol)symbol;
rrenkert@67:         }
rrenkert@67:         else {
rrenkert@67:             throw new Exception("Not a SimpleLineSymbol!");
rrenkert@67:         }
rrenkert@67:     }
rrenkert@67: 
rrenkert@61:     /**
rrenkert@61:      * Reads the symbol attributes.
rrenkert@61:      *
rrenkert@61:      * @return The XML node.
rrenkert@61:      */
rrenkert@61:     public Element read()
rrenkert@74:     throws Exception {
rrenkert@61:         logger.debug("read()");
rrenkert@80:         Element symbolElement = util.addSymbol(parent);
rrenkert@61: 
rrenkert@61:         symbolElement.setAttribute("name", symbol.getNameString());
rrenkert@62:         symbolElement.setAttribute("style", "line");
rrenkert@61:         symbolElement.setAttribute("type", "simple");
rrenkert@61:         if(symbol.getColor() instanceof IRgbColor) {
rrenkert@61:             IRgbColor color = (IRgbColor)symbol.getColor();
rrenkert@61:             Color c = new Color (
rrenkert@61:                 color.getRed(),
rrenkert@61:                 color.getGreen(),
rrenkert@61:                 color.getBlue());
rrenkert@61:             symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
rrenkert@61:         }
rrenkert@61:         else {
rrenkert@61:             RgbColor col = new RgbColor();
rrenkert@61:             col.setRGB(symbol.getColor().getRGB());
rrenkert@61:             Color c = new Color (
rrenkert@61:                 col.getRed(),
rrenkert@61:                 col.getGreen(),
rrenkert@61:                 col.getBlue());
rrenkert@61:             symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
rrenkert@61:         }
rrenkert@61: 
rrenkert@61:         symbolElement.setAttribute("width", String.valueOf(symbol.getWidth()));
rrenkert@61: 
rrenkert@61:         int style = symbol.getStyle();
rrenkert@61:         switch(style) {
rrenkert@61:             case esriSimpleLineStyle.esriSLSSolid:
rrenkert@62:                     symbolElement.setAttribute("linestyle", "solid"); break;
rrenkert@61:             case esriSimpleLineStyle.esriSLSDash:
rrenkert@62:                     symbolElement.setAttribute("linestyle", "dash"); break;
rrenkert@61:             case esriSimpleLineStyle.esriSLSDot:
rrenkert@62:                     symbolElement.setAttribute("linestyle", "dot"); break;
rrenkert@61:             case esriSimpleLineStyle.esriSLSDashDot:
rrenkert@62:                     symbolElement.setAttribute("linestyle", "dashdot"); break;
rrenkert@61:             case esriSimpleLineStyle.esriSLSDashDotDot:
rrenkert@62:                     symbolElement.setAttribute("linestyle", "dashdotdot"); break;
rrenkert@62:             default: symbolElement.setAttribute ("linestyle", "none");
rrenkert@61:         }
rrenkert@61:         return symbolElement;
rrenkert@61:     }
rrenkert@61: }
rrenkert@61: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :