rrenkert@76: package de.intevation.mxd.reader; rrenkert@76: rrenkert@76: import java.io.IOException; rrenkert@76: rrenkert@76: import java.awt.Color; rrenkert@76: rrenkert@76: import org.apache.log4j.Logger; rrenkert@76: rrenkert@76: import com.esri.arcgis.display.ISymbol; rrenkert@76: import com.esri.arcgis.display.IFillSymbol; rrenkert@76: import com.esri.arcgis.display.ILineSymbol; rrenkert@76: import com.esri.arcgis.display.LineFillSymbol; rrenkert@76: import com.esri.arcgis.display.esriSimpleFillStyle; rrenkert@76: import com.esri.arcgis.display.MultiLayerMarkerSymbol; rrenkert@76: import com.esri.arcgis.display.IRgbColor; rrenkert@76: import com.esri.arcgis.display.RgbColor; rrenkert@76: rrenkert@76: import org.w3c.dom.Element; rrenkert@76: import de.intevation.mxd.utils.MapToXMLUtils; rrenkert@76: rrenkert@76: /** rrenkert@76: * Reads marker line symbol information. rrenkert@76: * rrenkert@76: * @author Raimund Renkert rrenkert@76: */ rrenkert@76: public class LineFillSymbolReader rrenkert@76: extends AbstractSymbolReader{ rrenkert@76: rrenkert@76: /** rrenkert@76: * The logger. rrenkert@76: */ rrenkert@76: private static final Logger logger = rrenkert@76: Logger.getLogger(LineFillSymbolReader.class); rrenkert@76: rrenkert@76: /** rrenkert@76: * Private member. rrenkert@76: */ rrenkert@76: private LineFillSymbol symbol; rrenkert@76: rrenkert@76: rrenkert@76: public LineFillSymbolReader(ISymbol symbol) rrenkert@76: throws Exception { rrenkert@76: logger.debug("contructor()"); rrenkert@76: if(symbol instanceof LineFillSymbol) { rrenkert@76: this.symbol = (LineFillSymbol)symbol; rrenkert@76: } rrenkert@76: else { rrenkert@76: throw new Exception("Not a LineFillSymbol!"); rrenkert@76: } rrenkert@76: } rrenkert@76: rrenkert@76: rrenkert@76: public LineFillSymbolReader(IFillSymbol symbol) rrenkert@76: throws Exception { rrenkert@76: logger.debug("contructor()"); rrenkert@76: if(symbol instanceof LineFillSymbol) { rrenkert@76: this.symbol = (LineFillSymbol)symbol; rrenkert@76: } rrenkert@76: else { rrenkert@76: throw new Exception("Not a LineFillSymbol!"); rrenkert@76: } rrenkert@76: } rrenkert@76: rrenkert@76: /** rrenkert@76: * Reads the symbol attributes. rrenkert@76: * rrenkert@76: * @return The XML node. rrenkert@76: */ rrenkert@76: public Element read() rrenkert@76: throws Exception { rrenkert@76: logger.debug("read()"); rrenkert@76: rrenkert@76: Element symbolElement = util.addSymbol(parent); rrenkert@76: rrenkert@76: symbolElement.setAttribute("name", symbol.getNameString()); rrenkert@76: symbolElement.setAttribute("style", "fill"); rrenkert@76: symbolElement.setAttribute( rrenkert@76: "offset", rrenkert@76: String.valueOf(symbol.getOffset())); rrenkert@76: symbolElement.setAttribute( rrenkert@76: "separation", rrenkert@76: String.valueOf(symbol.getSeparation())); rrenkert@76: rrenkert@76: if(symbol.getColor() instanceof IRgbColor) { rrenkert@76: IRgbColor color = (IRgbColor)symbol.getColor(); rrenkert@76: Color c = new Color ( rrenkert@76: color.getRed(), rrenkert@76: color.getGreen(), rrenkert@76: color.getBlue()); rrenkert@76: symbolElement.setAttribute("color", String.valueOf(c.getRGB())); rrenkert@76: symbolElement.setAttribute("transparency", rrenkert@76: String.valueOf(color.getTransparency())); rrenkert@76: } rrenkert@76: else { rrenkert@76: RgbColor col = new RgbColor(); rrenkert@76: col.setRGB(symbol.getColor().getRGB()); rrenkert@76: Color c = new Color ( rrenkert@76: col.getRed(), rrenkert@76: col.getGreen(), rrenkert@76: col.getBlue()); rrenkert@76: symbolElement.setAttribute("color", String.valueOf(c.getRGB())); rrenkert@76: symbolElement.setAttribute("transparency", rrenkert@76: String.valueOf(col.getTransparency())); rrenkert@76: } rrenkert@76: rrenkert@76: ILineSymbol ols = symbol.getOutline(); rrenkert@76: LineSymbolReader olsr = new LineSymbolReader(); rrenkert@76: if(olsr.canRead(ols)) { rrenkert@76: olsr.setSymbol(ols); rrenkert@76: olsr.setUtil(util); rrenkert@76: olsr.setParent(symbolElement); rrenkert@76: olsr.read(); rrenkert@76: } rrenkert@76: else { rrenkert@76: logger.debug("The type of " + ols.getClass().toString() + rrenkert@76: " is not implemented!"); rrenkert@76: } rrenkert@76: ILineSymbol ls = symbol.getLineSymbol(); rrenkert@76: LineSymbolReader lsr = new LineSymbolReader(); rrenkert@76: if(lsr.canRead(ls)) { rrenkert@76: lsr.setSymbol(ls); rrenkert@76: lsr.setUtil(util); rrenkert@76: lsr.setParent(symbolElement); rrenkert@76: lsr.read(); rrenkert@76: } rrenkert@76: else { rrenkert@76: logger.debug("The type of " + ls.getClass().toString() + rrenkert@76: " is not implemented!"); rrenkert@76: } rrenkert@76: return parent; rrenkert@76: } rrenkert@76: } rrenkert@76: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :