rrenkert@87: package de.intevation.mxd.writer; rrenkert@87: rrenkert@87: import java.awt.Color; rrenkert@87: rrenkert@87: import org.apache.log4j.Logger; rrenkert@87: rrenkert@87: import org.w3c.dom.Element; rrenkert@87: rrenkert@87: import edu.umn.gis.mapscript.mapObj; rrenkert@87: import edu.umn.gis.mapscript.classObj; rrenkert@87: import edu.umn.gis.mapscript.styleObj; rrenkert@87: import edu.umn.gis.mapscript.colorObj; rrenkert@87: import edu.umn.gis.mapscript.symbolSetObj; rrenkert@87: rrenkert@87: rrenkert@87: /** rrenkert@87: * The interface to the mapfile writer. rrenkert@87: * rrenkert@87: * @author Raimund Renkert rrenkert@87: */ rrenkert@87: public class MarkerStyleWriter { rrenkert@87: rrenkert@87: /** rrenkert@87: * The Logger. rrenkert@87: */ rrenkert@87: private static final Logger logger = Logger.getLogger(MarkerStyleWriter.class); rrenkert@87: rrenkert@87: private mapObj map; rrenkert@87: private classObj cl; rrenkert@87: private styleObj style; rrenkert@87: rrenkert@87: public MarkerStyleWriter (mapObj map, classObj cl) { rrenkert@87: this.map = map; rrenkert@87: this.cl = cl; rrenkert@87: this.style = new styleObj(cl); rrenkert@87: } rrenkert@87: rrenkert@87: /** rrenkert@87: * Write the content. rrenkert@87: */ rrenkert@120: public boolean write(Element symbolElement) { rrenkert@87: logger.debug("write(Element)"); rrenkert@87: symbolSetObj symbolSet = map.getSymbolset(); rrenkert@87: rrenkert@87: if (symbolElement.hasAttribute("angle")) { rrenkert@145: try { rrenkert@145: style.setAngle( rrenkert@145: Double.parseDouble(symbolElement.getAttribute("angle"))); rrenkert@145: } rrenkert@145: catch(NumberFormatException nfe) { rrenkert@145: logger.warn("Error setting angle."); rrenkert@145: style.setAngle(0.0); rrenkert@145: } rrenkert@87: } rrenkert@87: if(symbolElement.hasAttribute("color")) { rrenkert@87: String c = symbolElement.getAttribute("color"); rrenkert@87: Color col = Color.decode(c); rrenkert@87: colorObj color = new colorObj( rrenkert@87: col.getRed(), rrenkert@87: col.getGreen(), rrenkert@87: col.getBlue(), rrenkert@87: -4); rrenkert@87: style.setColor(color); rrenkert@87: } rrenkert@87: if (symbolElement.hasAttribute ("size")) { rrenkert@145: try { rrenkert@145: style.setSize(Double.parseDouble( rrenkert@145: symbolElement.getAttribute("size"))); rrenkert@145: } rrenkert@145: catch(NumberFormatException nfe) { rrenkert@145: logger.warn("Error setting size. Setting to deafult: 1."); rrenkert@145: style.setSize(1); rrenkert@145: } rrenkert@87: } rrenkert@87: if(symbolElement.hasAttribute("outline_color")) { rrenkert@87: Color oCol = Color.decode( rrenkert@87: symbolElement.getAttribute("outline_color")); rrenkert@87: colorObj outlineColor = new colorObj( rrenkert@87: oCol.getRed(), rrenkert@87: oCol.getGreen(), rrenkert@87: oCol.getBlue(), rrenkert@87: -4); rrenkert@87: style.setOutlinecolor(outlineColor); rrenkert@145: try { rrenkert@145: style.setOutlinewidth(Double.parseDouble( rrenkert@145: symbolElement.getAttribute("outline_size"))); rrenkert@145: } rrenkert@145: catch(NumberFormatException nfe) { rrenkert@145: logger.warn("Error setting outline width."); rrenkert@145: } rrenkert@87: } rrenkert@87: String symType = symbolElement.getAttribute("style"); rrenkert@87: if(symType.equals("point") || rrenkert@87: symType.equals("arrow") || rrenkert@87: symType.equals("char")) { rrenkert@87: SymbolWriter sw = new SymbolWriter(this.map, this.cl); rrenkert@87: sw.write(symbolElement); rrenkert@87: } rrenkert@87: else { rrenkert@87: return false; rrenkert@87: } vc11884admin@141: String name = symbolElement.getAttribute("name"); vc11884admin@141: style.setSymbolByName(map, name); vc11884admin@141: rrenkert@87: return true; rrenkert@87: } rrenkert@87: } rrenkert@87: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :