]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
AHS: support for XMLRenderer
authorarved <arved@unknown>
Sun, 20 May 2001 23:56:49 +0000 (23:56 +0000)
committerarved <arved@unknown>
Sun, 20 May 2001 23:56:49 +0000 (23:56 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194258 13f79535-47bb-0310-9956-ffa450edef68

src/org/apache/fop/apps/CommandLineOptions.java
src/org/apache/fop/apps/CommandLineStarter.java
src/org/apache/fop/apps/Driver.java
src/org/apache/fop/render/Renderer.java
src/org/apache/fop/render/awt/AWTRenderer.java
src/org/apache/fop/render/mif/MIFRenderer.java
src/org/apache/fop/render/pcl/PCLRenderer.java
src/org/apache/fop/render/pdf/PDFRenderer.java
src/org/apache/fop/render/txt/TXTRenderer.java
src/org/apache/fop/render/xml/XMLRenderer.java

index a05c0ffdcfef3bb05ecb37a15657149d06c507c3..4358109570604abc632fed5569f380caebdfc9db 100644 (file)
@@ -45,12 +45,17 @@ public class CommandLineOptions {
        /* System buffers */
        private static final int BUFFER_FILE = 7;
        
+       /* System buffers */
+       private static final int AREA_OUTPUT = 8;
+       
     /* use debug mode*/
     Boolean errorDump = new Boolean(false);
     /* show configuration information */
     Boolean dumpConfiguration = new Boolean(false);
     /*suppress any progress information */
     Boolean quiet = new Boolean(false);
+       /* for area tree XML output, only down to block area level */
+       Boolean suppressLowLevelAreas = new Boolean(false);
     /* name of user configuration file*/
     File userConfigFile = null;
     /* name of input fo file  */
@@ -72,11 +77,13 @@ public class CommandLineOptions {
     /* language for user information */
     String language = null;
 
-
+       private java.util.Hashtable rendererOptions;
+       
     public CommandLineOptions (String [] args) 
        throws FOPException, FileNotFoundException
     {
        boolean optionsParsed = true;
+       rendererOptions = new java.util.Hashtable();
        try {
            optionsParsed = parseOptions(args);
            if (optionsParsed) {
@@ -129,7 +136,9 @@ public class CommandLineOptions {
                     language = args[i + 1];
                     i++;
                 }
-            } else if (args[i].equals("-fo")) {
+            } else if (args[i].equals("-s")) {
+                suppressLowLevelAreas = new Boolean(true);
+            }  else if (args[i].equals("-fo")) {
                 inputmode = FO_INPUT;
                 if ((i + 1 == args.length) ||
                         (args[i + 1].charAt(0) == '-')) {
@@ -228,6 +237,15 @@ public class CommandLineOptions {
                     bufferFile = new File (args[i + 1]);
                     i++;
                 }
+            } else if (args[i].equals("-at")) {
+               setOutputMode(AREA_OUTPUT);
+                if ((i + 1 == args.length) ||
+                        (args[i + 1].charAt(0) == '-')) {
+                    throw new FOPException("you must specify the area-tree output file");
+                } else {
+                    outfile = new File (args[i + 1]);
+                    i++;
+                }
             } else {
                 printUsage();
                return false;
@@ -322,6 +340,9 @@ public class CommandLineOptions {
                 return Driver.RENDER_PCL;
             case TXT_OUTPUT:
                 return Driver.RENDER_TXT;
+                       case AREA_OUTPUT:
+                               rendererOptions.put("fineDetail", isCoarseAreaXml());
+                               return Driver.RENDER_XML;
             default:
                 throw new FOPException("Invalid Renderer setting!");
         }
@@ -341,7 +362,10 @@ public class CommandLineOptions {
         }
     }
 
-
+       public java.util.Hashtable getRendererOptions() {
+               return rendererOptions;
+       }
+       
     public Starter getStarter() 
        throws FOPException
     {
@@ -377,6 +401,8 @@ public class CommandLineOptions {
                    throw new FOPException("PrintStarter could not be loaded.",e);
                 }
 
+            case AREA_OUTPUT:
+                return new CommandLineStarter(this);
             default:
                 return new CommandLineStarter(this);
         }
@@ -430,7 +456,10 @@ public class CommandLineOptions {
         return errorDump;
     }
 
-
+       public Boolean isCoarseAreaXml() {
+               return suppressLowLevelAreas;
+       }
+       
     /**
        * return either the fofile or the xmlfile
        */
@@ -451,12 +480,13 @@ public class CommandLineOptions {
        */
     public static void printUsage() {
         MessageHandler.errorln(
-          "\nUSAGE\nFop [options] [-fo|-xml] infile [-xsl file] [-awt|-pdf|-mif|-pcl|-txt|-print] <outfile>\n" +
+          "\nUSAGE\nFop [options] [-fo|-xml] infile [-xsl file] [-awt|-pdf|-mif|-pcl|-txt|-at|-print] <outfile>\n" +
           " [OPTIONS]  \n" + "  -d          debug mode   \n" +
           "  -x          dump configuration settings  \n" +
           "  -q          quiet mode  \n" +
           "  -c cfg.xml  use additional configuration file cfg.xml\n" +
-          "  -l lang     the language to use for user information \n\n" +
+          "  -l lang     the language to use for user information \n" +
+                 "  -s          for area tree XML, down to block areas only\n\n" +
           " [INPUT]  \n" +
           "  infile            xsl:fo input file (the same as the next) \n" +
           "  -fo  infile       xsl:fo input file  \n" +
@@ -469,6 +499,7 @@ public class CommandLineOptions {
           "  -mif outfile      input will be rendered as mif file (outfile req'd)\n" +
           "  -pcl outfile      input will be rendered as pcl file (outfile req'd) \n" +
           "  -txt outfile      input will be rendered as text file (outfile req'd) \n" +
+          "  -at outfile       representation of area tree as XML (outfile req'd) \n" +
           "  -print            input file will be rendered and sent to the printer \n" +
           "                    see options with \"-print help\" \n\n" +
           " [Examples]\n" + "  Fop foo.fo foo.pdf \n" +
index bf25dd07d4949413a2794a2496efe10642395815..72f4804cf9f5d0ce557ad3a0d88a17c90dcb8f41 100644 (file)
@@ -55,7 +55,7 @@ public class CommandLineStarter extends Starter {
                        
         try {
             driver.setRenderer(commandLineOptions.getRenderer());
-
+                       driver.getRenderer().setOptions(commandLineOptions.getRendererOptions());
             driver.buildFOTree(parser, inputHandler.getInputSource());
             driver.format();
             driver.setOutputStream(new FileOutputStream(commandLineOptions.getOutputFile()));
index 0880dc1d466822a7233507a7a656118de9946b08..c9a48a2429d69a023303cd7182ce9880ba8ea1c7 100644 (file)
@@ -269,6 +269,10 @@ public class Driver {
         _renderer = renderer;
     }
 
+    public Renderer getRenderer() {
+        return _renderer;
+    }
+
     /**
      * @deprecated use renderer.setProducer(version) + setRenderer(renderer) or just setRenderer(renderer_type) which will use the default producer string.
      * @see #setRenderer(int)
index adc268a9a64c73fb8fb6198d4b04b4972cd2976d..fc1c354b46e602257f4012aa4fe189bd4ae863f4 100644 (file)
@@ -72,6 +72,9 @@ public interface Renderer {
     /** set up the given FontInfo */
     public void setupFontInfo(FontInfo fontInfo);
 
+       /** set up renderer options */
+       public void setOptions(java.util.Hashtable options);
+       
     /** set the producer of the rendering */
     public void setProducer(String producer);
 
index f17e4db4fb9e56f7dc1ee8fa66a6550bc93e7407..f4739e10fa1fe63f6a2b22fb25781238baf162a9 100644 (file)
@@ -110,7 +110,14 @@ public class AWTRenderer implements Renderer, Printable, Pageable {
      */
     private int currentAreaContainerXPosition = 0;
 
-
+       /** options */
+       protected Hashtable options;
+       
+       /** set up renderer options */
+       public void setOptions(Hashtable options) {
+               this.options = options;
+       }
+       
     public AWTRenderer(Translator aRes) {
         res = aRes;
     }
index 07fa3e12a13c69ae087e7e18ad8470f6767763be..c871a9bccdb1506802ade07c005e3bc99e031972 100644 (file)
@@ -111,16 +111,21 @@ public class MIFRenderer implements Renderer {
        /* is a table currently open? */
        private boolean inTable=false;
 
-
-
+       /** options */
+       protected Hashtable options;
+       
        /**
         * create the MIF renderer
         */
        public MIFRenderer() {
-       this.mifDoc = new MIFDocument();
+               this.mifDoc = new MIFDocument();
        }
        
-       
+       /** set up renderer options */
+       public void setOptions(Hashtable options) {
+               this.options = options;
+       }
+               
        /**
         * render the areas into MIF
         *
index 59edf404c937961ca7393ae47d8102eecc24c3e5..88d45c05f99600040444fc401fc0332d8d60f32a 100755 (executable)
@@ -56,6 +56,8 @@ public class PCLRenderer extends PrintRenderer
 
        private int xoffset = -180;     // X Offset to allow for PCL implicit 1/4" left margin.
 
+       private java.util.Hashtable options;
+       
        /**
         * Create the PCL renderer
         */
@@ -63,6 +65,11 @@ public class PCLRenderer extends PrintRenderer
        {
        }
 
+       /** set up renderer options */
+       public void setOptions(java.util.Hashtable options) {
+               this.options = options;
+       }
+       
     /**
        * set the PCL document's producer
        *
index 5087bbc84de4ed19b31dc8f9bae6baeee44bb45e..cf808b8e4a2ca1797886597985654af26acfa186 100644 (file)
@@ -89,6 +89,9 @@ public class PDFRenderer extends PrintRenderer {
     /** reusable word area string buffer to reduce memory usage */
     private StringBuffer _wordAreaPDF = new StringBuffer();
 
+       /** options */
+       protected Hashtable options;
+
     /**
      * create the PDF renderer
      */
@@ -96,6 +99,11 @@ public class PDFRenderer extends PrintRenderer {
         this.pdfDoc = new PDFDocument();
     }
 
+       /** set up renderer options */
+       public void setOptions(Hashtable options) {
+               this.options = options;
+       }
+       
     /**
      * set the PDF document's producer
      *
index 61d2b4a4ca5c66a3ba8acf7172d0f6e0005bde18..f971800d0d36113d926f12bff4f1060be3105940 100755 (executable)
@@ -30,6 +30,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Enumeration;
 import java.util.Vector;
+import java.util.Hashtable;
 
 /**
  * Renderer that renders areas to plain text
@@ -64,13 +65,17 @@ public class TXTRenderer extends PrintRenderer
        public String pageEnding = "\f"; // Every page except the last one will end with this string.
        public boolean suppressGraphics = false; // If true then graphics/decorations will not be rendered - text only.
 
-    /**
-     * create the TXT renderer
-     */
-    public TXTRenderer()
-    {
-    }
+       /** options */
+       protected Hashtable options;
+       
+       public TXTRenderer() {
+       }
 
+       /** set up renderer options */
+       public void setOptions(Hashtable options) {
+               this.options = options;
+       }
+       
     /**
      * set the TXT document's producer
      *
index d0044ebf1915c2be113eade7b7b74270c22a23d1..9a06c2d2e149c9f3a3748756182d9ad7978823ad 100644 (file)
@@ -65,6 +65,7 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.OutputStream;
 import java.util.Enumeration;
+import java.util.Hashtable;
 
 /**
  * Renderer that renders areas to XML for debugging purposes.
@@ -80,6 +81,17 @@ public class XMLRenderer implements Renderer {
     /** the writer used to output the XML */
     protected PrintWriter writer;
 
+       /** options */
+       protected Hashtable options;
+       
+       public XMLRenderer() {
+       }
+
+       /** set up renderer options */
+       public void setOptions(Hashtable options) {
+               this.options = options;
+       }
+       
     /**
      * set the document's producer
      *
@@ -244,7 +256,8 @@ public class XMLRenderer implements Renderer {
      * @param space the space to render
      */
     public void renderDisplaySpace(DisplaySpace space) {
-       writeEmptyElementTag("<DisplaySpace size=\""
+               if (!isCoarseXml())
+                       writeEmptyElementTag("<DisplaySpace size=\""
                             + space.getSize() +"\"/>");
     }
 
@@ -290,13 +303,17 @@ public class XMLRenderer implements Renderer {
            else
                sb = sb.append(ch);
        }
-       writeElement("<InlineArea font-weight=\""
+       if (!isCoarseXml()) {
+       writeElement("<WordArea font-weight=\""
                     + fontWeight + "\" red=\""
                     + area.getRed() + "\" green=\""
                     + area.getGreen() + "\" blue = \""
                     + area.getBlue() + "\" width = \""
                     + area.getContentWidth() + "\">" + sb.toString()
-                    + "</InlineArea>");
+                    + "</WordArea>");
+       } else {
+               this.writer.write(sb.toString());
+       }
     }
 
     /**
@@ -305,8 +322,11 @@ public class XMLRenderer implements Renderer {
      * @param space the space to render
      */
     public void renderInlineSpace(InlineSpace space) {
-       writeEmptyElementTag("<InlineSpace size=\""
+               if (!isCoarseXml())
+                       writeEmptyElementTag("<InlineSpace size=\""
                             + space.getSize() +"\"/>");
+               else
+                       this.writer.write(" ");
     }
 
     /**
@@ -315,15 +335,20 @@ public class XMLRenderer implements Renderer {
      * @param area the area to render
      */
     public void renderLineArea(LineArea area) {
-       String fontWeight = area.getFontState().getFontWeight();
-       writeStartTag("<LineArea font-weight=\""
+               if (!isCoarseXml()) {
+                       String fontWeight = area.getFontState().getFontWeight();
+                       writeStartTag("<LineArea font-weight=\""
                      + fontWeight + "\">");
-       Enumeration e = area.getChildren().elements();
-       while (e.hasMoreElements()) {
-           Box b = (Box)e.nextElement();
-           b.render(this);
-       }
-       writeEndTag("</LineArea>");
+               }
+               Enumeration e = area.getChildren().elements();
+               while (e.hasMoreElements()) {
+                       Box b = (Box)e.nextElement();
+                       b.render(this);
+               }
+               if (!isCoarseXml())
+                       writeEndTag("</LineArea>");
+               else
+                       this.writer.write("\n");
     }
 
     /**
@@ -334,7 +359,7 @@ public class XMLRenderer implements Renderer {
     public void renderPage(Page page) {
        BodyAreaContainer body;
        AreaContainer before, after;
-       writeStartTag("<Page>");
+       writeStartTag("<Page number=\"" + page.getNumber() + "\">");
        body = page.getBody();
        before = page.getBefore();
        after = page.getAfter();
@@ -354,6 +379,7 @@ public class XMLRenderer implements Renderer {
       * @param area the area to render
       */
     public void renderLeaderArea(LeaderArea area) {
+               if (isCoarseXml()) return;
       String leaderPattern = "";
       switch (area.getLeaderPattern()) {
       case LeaderPattern.SPACE:
@@ -377,4 +403,8 @@ public class XMLRenderer implements Renderer {
                              "\" red=\"" + area.getRed() + "\" green=\"" + area.getGreen() +
                              "\" blue = \"" + area.getBlue() + "\"/>");
     }
+       
+       private boolean isCoarseXml() {
+               return ((Boolean)options.get("fineDetail")).booleanValue();
+       }
 }