diff src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java @ 68:686a88eb531d

Added multi layer fill symbol reader.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 26 May 2011 12:30:07 +0200
parents ef7ca23c4233
children b41fcf268827
line wrap: on
line diff
--- a/src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java	Wed May 25 15:48:55 2011 +0200
+++ b/src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java	Thu May 26 12:30:07 2011 +0200
@@ -1,12 +1,21 @@
 package de.intevation.mxd.reader;
 
 import java.io.IOException;
+import java.awt.Color;
 
 import org.apache.log4j.Logger;
 
 import com.esri.arcgis.display.ISymbol;
+import com.esri.arcgis.display.ILineSymbol;
 import com.esri.arcgis.display.SimpleFillSymbol;
-import com.esri.arcgis.display.esriSimpleMarkerStyle;
+import com.esri.arcgis.display.MultiLayerLineSymbol;
+import com.esri.arcgis.display.SimpleLineSymbol;
+import com.esri.arcgis.display.MarkerLineSymbol;
+import com.esri.arcgis.display.PictureLineSymbol;
+import com.esri.arcgis.display.CartographicLineSymbol;
+import com.esri.arcgis.display.HashLineSymbol;
+import com.esri.arcgis.display.MultiLayerFillSymbol;
+import com.esri.arcgis.display.esriSimpleFillStyle;
 import com.esri.arcgis.display.IRgbColor;
 import com.esri.arcgis.display.RgbColor;
 
@@ -82,28 +91,98 @@
         }
 
         symbolElement.setAttribute("name", symbol.getNameString());
-        if(symbol.getStyle() == esriSimpleMarkerStyle.esriSMSCircle) {
-            symbolElement.setAttribute("style", "point");
+        symbolElement.setAttribute("style", "fill");
+        int style = symbol.getStyle();
+        switch(style) {
+            case esriSimpleFillStyle.esriSFSCross:
+                symbolElement.setAttribute("fillstyle", "cross"); break;
+            case esriSimpleFillStyle.esriSFSSolid:
+                symbolElement.setAttribute("fillstyle", "solid"); break;
+            case esriSimpleFillStyle.esriSFSVertical:
+                symbolElement.setAttribute("fillstyle", "vertical"); break;
+            case esriSimpleFillStyle.esriSFSHorizontal:
+                symbolElement.setAttribute("fillstyle", "horizontal"); break;
+            case esriSimpleFillStyle.esriSFSForwardDiagonal:
+                symbolElement.setAttribute("fillstyle", "fwdiagonal"); break;
+            case esriSimpleFillStyle.esriSFSBackwardDiagonal:
+                symbolElement.setAttribute("fillstyle", "bwdiagonal"); break;
+            case esriSimpleFillStyle.esriSFSDiagonalCross:
+                symbolElement.setAttribute("fillstyle", "diagonalcross");
+                break;
+            default: symbolElement.setAttribute("fillstyle", "empty");
         }
 
         if(symbol.getColor() instanceof IRgbColor) {
             IRgbColor color = (IRgbColor)symbol.getColor();
-            symbolElement.setAttribute("color",  "(" + color.getRed() +
-                "," + color.getGreen() +
-                "," + color.getBlue() + ")");
+            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());
-            symbolElement.setAttribute("color",  "(" + col.getRed() +
-                "," + col.getGreen() +
-                "," + col.getBlue() + ")");
+            Color c = new Color (
+                col.getRed(),
+                col.getGreen(),
+                col.getBlue());
+            symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
             symbolElement.setAttribute("transparency",
                 String.valueOf(col.getTransparency()));
         }
-//TODO read further attributes.
+
+        try {
+            ILineSymbol ls = symbol.getOutline();
+            if(ls instanceof MultiLayerLineSymbol) {
+                ISymbolReader sreader = new MultiLayerLineSymbolReader(ls);
+                sreader.setParent(symbolElement);
+                sreader.setUtil(util);
+                sreader.read();
+            }
+            else if(ls instanceof SimpleLineSymbol) {
+                ISymbolReader sreader = new SimpleLineSymbolReader(ls);
+                sreader.setParent(symbolElement);
+                sreader.setUtil(util);
+                sreader.read();
+            }
+            else if(ls instanceof MarkerLineSymbol) {
+                ISymbolReader sreader = new MarkerLineSymbolReader(ls);
+                sreader.setParent(symbolElement);
+                sreader.setUtil(util);
+                sreader.read();
+            }
+            else if(ls instanceof PictureLineSymbol) {
+                ISymbolReader sreader = new PictureLineSymbolReader(ls);
+                sreader.setParent(symbolElement);
+                sreader.setUtil(util);
+                sreader.read();
+            }
+            else if(ls instanceof CartographicLineSymbol) {
+                ISymbolReader sreader = new CartoLineSymbolReader(ls);
+                sreader.setParent(symbolElement);
+                sreader.setUtil(util);
+                sreader.read();
+            }
+            else if(ls instanceof HashLineSymbol) {
+                ISymbolReader sreader = new HashLineSymbolReader(ls);
+                sreader.setParent(symbolElement);
+                sreader.setUtil(util);
+                sreader.read();
+            }
+            else {
+                logger.debug("The type of " + ls.getClass().toString() +
+                             " is not implemented!");
+                System.out.println(
+                        "No known instance: " + ls.getClass().toString());
+            }
+        }
+        catch(Exception e) {
+            e.printStackTrace();
+        }
+
         return symbolElement;
     }
 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)