]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
added external image handler
authorKeiron Liddle <keiron@apache.org>
Fri, 8 Mar 2002 10:12:30 +0000 (10:12 +0000)
committerKeiron Liddle <keiron@apache.org>
Fri, 8 Mar 2002 10:12:30 +0000 (10:12 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194695 13f79535-47bb-0310-9956-ffa450edef68

contrib/plan/build.sh
contrib/plan/build.xml
contrib/plan/docs/plan.fo
contrib/plan/src/org/apache/fop/plan/Main.java
contrib/plan/src/org/apache/fop/plan/PlanElement.java
contrib/plan/src/org/apache/fop/plan/PlanElementMapping.java

index ad6ab48541406f48543251238206196181f74d67..e8f0cae7eac13d63b62cff34e42db44910efc592 100755 (executable)
@@ -12,7 +12,7 @@ if [ "$JAVA_HOME" = "" ] ; then
   exit 1
 fi
 LIBDIR=../../lib
-LOCALCLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/classes.zip:$LIBDIR/ant.jar:$LIBDIR/batik.jar:$LIBDIR/buildtools.jar:$LIBDIR/xerces-1.4.3.jar:$LIBDIR/xalan-2.2D11.jar:../../build/fop.jar
+LOCALCLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/classes.zip:$LIBDIR/ant.jar:$LIBDIR/batik.jar:$LIBDIR/buildtools.jar:$LIBDIR/xerces-1.4.3.jar:$LIBDIR/xalan-2.2D11.jar:../../build/fop.jar:$LIBDIR/logkit-1.0.jar
 ANT_HOME=$LIBDIR
 
 echo
index 367df26ed360b956faecff71c5ceaa6e2b47b4cf..656732c60f9a94b69f4c4080cdf4c1799b1fe5ee 100644 (file)
@@ -15,7 +15,7 @@
     <property name="name" value="plan"/>
     <property name="version" value="0.1-CVS"/>
     <filter  token="version" value="${version}"/>
-    <property name="year" value="2001"/>
+    <property name="year" value="2002"/>
 
     <echo message="------------------- ${Name} ${version} [${year}] ----------------"/>
 
index 77f12737b02a51fc0a0c3379584f928bc483a3c7..7a8cd1c50dc070e27d8e6a8d7dd17b5afc987d03 100644 (file)
@@ -101,6 +101,13 @@ All other options are set in the style attribute.
 
       </fo:block>
 
+      <fo:block>
+A plan as an external graphic.
+      </fo:block>
+
+      <fo:block>
+<fo:external-graphic src="june.xml"/>
+      </fo:block>
     </fo:flow>
   </fo:page-sequence>
 </fo:root>
index bfc60c41854c0d3b3391fbf83f314e7edb765edb..965a4cc5ea06fe74660fc19055bfe19103f1d022 100644 (file)
@@ -48,15 +48,12 @@ public class Main {
     public Document createSVGDocument(InputStream is) {
         Document doc = null;
 
-        Element svgRoot = null;
+        Element root = null;
         try {
-            //        DOMImplementation impl = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
-            //        String ns = GraphElementMapping.URI;
-            //        doc = impl.createDocument(ns, "graph", null);
             doc = javax.xml.parsers.DocumentBuilderFactory.newInstance().
                   newDocumentBuilder().parse(is);
 
-            svgRoot = doc.getDocumentElement();
+            root = doc.getDocumentElement();
 
         } catch (Exception e) {
             e.printStackTrace();
index 3cfe450acccd34aa134a6db77637cb332db668a3..f3e2f97b6dd97c368a6f3d3e0b90aeff49e18129 100644 (file)
@@ -23,6 +23,7 @@ public class PlanElement extends PlanObj {
     Document svgDoc = null;
     float width;
     float height;
+    boolean converted;
 
     public PlanElement(FONode parent) {
         super(parent);
@@ -34,7 +35,9 @@ public class PlanElement extends PlanObj {
     }
 
     public void convertToSVG() {
-        if(svgDoc == null && doc != null) {
+        try {
+        if(!converted) {
+            converted = true;
             PlanRenderer pr = new PlanRenderer();
             pr.setFontInfo("Helvetica", 12);
             svgDoc = pr.createSVGDocument(doc);
@@ -43,6 +46,11 @@ public class PlanElement extends PlanObj {
 
             doc = svgDoc;
         }
+        } catch(Throwable t) {
+            log.error("Could not convert Plan to SVG", t);
+            width = 0;
+            height = 0;
+        }
 
     }
 
@@ -52,6 +60,9 @@ public class PlanElement extends PlanObj {
     }
 
     public String getDocumentNamespace() {
+        if(svgDoc == null) {
+            return PlanElementMapping.URI;
+        }
         return "http://www.w3.org/2000/svg";
     }
 
index b12569c046c8eefcd8f8862b1d06043d89e87f7b..91c5e5b994199b96db0c7e2c28cfa7de3573610f 100644 (file)
@@ -7,6 +7,9 @@
 package org.apache.fop.plan;
 
 import org.apache.fop.fo.*;
+import org.apache.fop.image.analyser.XMLReader;
+import org.apache.fop.image.FopImage;
+import org.w3c.dom.Document;
 
 import java.util.HashMap;
 
@@ -21,6 +24,8 @@ public class PlanElementMapping implements ElementMapping {
             foObjs = new HashMap();
             foObjs.put("plan", new PE());
             foObjs.put(DEFAULT, new PlanMaker());
+
+            XMLReader.setConverter(URI, new PlanConverter());
         }
     }
 
@@ -41,4 +46,24 @@ public class PlanElementMapping implements ElementMapping {
         }
     }
 
+    static class PlanConverter implements XMLReader.Converter {
+        public FopImage.ImageInfo convert(Document doc) {
+            try {
+            PlanRenderer pr = new PlanRenderer();
+            pr.setFontInfo("Helvetica", 12);
+            FopImage.ImageInfo info = new FopImage.ImageInfo();
+            info.data = pr.createSVGDocument(doc);
+            info.width = (int)pr.getWidth();
+            info.height = (int)pr.getHeight();
+            info.mimeType = "image/svg+xml";
+            info.str = "http://www.w3.org/2000/svg";
+
+            return info;
+            } catch(Throwable t) {
+            }
+            return null;
+
+        }
+    }
+
 }