]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
add InlineAreaVisitor interface to make Area Tree more independent of Rendering
authorWilliam Victor Mote <vmote@apache.org>
Wed, 10 Sep 2003 18:42:22 +0000 (18:42 +0000)
committerWilliam Victor Mote <vmote@apache.org>
Wed, 10 Sep 2003 18:42:22 +0000 (18:42 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196900 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/area/inline/Character.java
src/java/org/apache/fop/area/inline/InlineArea.java
src/java/org/apache/fop/area/inline/InlineAreaVisitor.java [new file with mode: 0644]
src/java/org/apache/fop/area/inline/InlineParent.java
src/java/org/apache/fop/area/inline/Leader.java
src/java/org/apache/fop/area/inline/Space.java
src/java/org/apache/fop/area/inline/Viewport.java
src/java/org/apache/fop/area/inline/Word.java
src/java/org/apache/fop/render/AbstractRenderer.java
src/java/org/apache/fop/render/xml/XMLRenderer.java

index 2135162e655e35b0e76d5416e87891c373bbc2c7..e1eacd682c79ce4ce22633f6b2ae5521c4d87f3a 100644 (file)
@@ -3,34 +3,34 @@
  * ============================================================================
  *                    The Apache Software License, Version 1.1
  * ============================================================================
- * 
+ *
  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without modifica-
  * tion, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
- * 
+ *
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * 3. The end-user documentation included with the redistribution, if any, must
  *    include the following acknowledgment: "This product includes software
  *    developed by the Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself, if
  *    and wherever such third-party acknowledgments normally appear.
- * 
+ *
  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
  *    endorse or promote products derived from this software without prior
  *    written permission. For written permission, please contact
  *    apache@apache.org.
- * 
+ *
  * 5. Products derived from this software may not be called "Apache", nor may
  *    "Apache" appear in their name, without prior written permission of the
  *    Apache Software Foundation.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * ============================================================================
- * 
+ *
  * This software consists of voluntary contributions made by many individuals
  * on behalf of the Apache Software Foundation and was originally created by
  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
  * Software Foundation, please see <http://www.apache.org/>.
- */ 
+ */
 package org.apache.fop.area.inline;
 
-import org.apache.fop.render.Renderer;
-
 /**
  * Single character inline area.
  * This inline area holds a single character.
@@ -69,12 +67,13 @@ public class Character extends InlineArea {
     }
 
     /**
-     * Render this inline area.
+     * Handle InlineAreaVisitor request by passing this back to it.
      *
-     * @param renderer the renderer to render this character area
+     * @param visitor the InlineAreaVisitor wishing to process this.
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
      */
-    public void render(Renderer renderer) {
-        renderer.renderCharacter(this);
+    public void acceptVisitor(InlineAreaVisitor visitor) {
+        visitor.serveVisitor(this);
     }
 
     /**
index 572f69b3cf5281198d123e3dbceafc832421e828..87e4207ff1622d1da937a031d1e8a507506c5180 100644 (file)
@@ -3,34 +3,34 @@
  * ============================================================================
  *                    The Apache Software License, Version 1.1
  * ============================================================================
- * 
+ *
  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without modifica-
  * tion, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
- * 
+ *
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * 3. The end-user documentation included with the redistribution, if any, must
  *    include the following acknowledgment: "This product includes software
  *    developed by the Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself, if
  *    and wherever such third-party acknowledgments normally appear.
- * 
+ *
  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
  *    endorse or promote products derived from this software without prior
  *    written permission. For written permission, please contact
  *    apache@apache.org.
- * 
+ *
  * 5. Products derived from this software may not be called "Apache", nor may
  *    "Apache" appear in their name, without prior written permission of the
  *    Apache Software Foundation.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * ============================================================================
- * 
+ *
  * This software consists of voluntary contributions made by many individuals
  * on behalf of the Apache Software Foundation and was originally created by
  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
  * Software Foundation, please see <http://www.apache.org/>.
- */ 
+ */
 package org.apache.fop.area.inline;
 
 import org.apache.fop.area.Area;
 import org.apache.fop.area.Trait;
-import org.apache.fop.render.Renderer;
 import org.apache.fop.traits.BorderProps;
 
 /**
@@ -76,14 +75,14 @@ public class InlineArea extends Area {
     protected int verticalPosition = 0;
 
     /**
-     * Render this inline area.
+     * Handle a visitor (usually a renderer) for this inline area.
      * Inline areas that extend this class are expected
-     * to implement this method to render themselves in
-     * the renderer.
+     * to pass themselves back to the visitor so that the visitor can process
+     * them, usually by rendering them.
      *
-     * @param renderer the renderer to render this inline area
+     * @param visitor the InlineAreaVisitor that will process this
      */
-    public void render(Renderer renderer) {
+    public void acceptVisitor(InlineAreaVisitor visitor) {
     }
 
     /**
diff --git a/src/java/org/apache/fop/area/inline/InlineAreaVisitor.java b/src/java/org/apache/fop/area/inline/InlineAreaVisitor.java
new file mode 100644 (file)
index 0000000..35e7a4a
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * $Id$
+ * ============================================================================
+ *                    The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ *    include the following acknowledgment: "This product includes software
+ *    developed by the Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself, if
+ *    and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ *    endorse or promote products derived from this software without prior
+ *    written permission. For written permission, please contact
+ *    apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ *    "Apache" appear in their name, without prior written permission of the
+ *    Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ============================================================================
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation and was originally created by
+ * James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ * Software Foundation, please see <http://www.apache.org/>.
+ */
+package org.apache.fop.area.inline;
+
+/**
+ * <p>Implements the GoF Visitor design pattern to allow access to inline areas
+ * without knowing what subclass of InlineArea is being accessed. This is used
+ * primarily to keep the area tree classes isolated from any classes (typically
+ * renderers) that might need access to them.</p>
+ */
+public interface InlineAreaVisitor {
+
+    /**
+     * Handle a visitor request to process an inline viewport.
+     *
+     * @param viewport  The viewport area
+     */
+    void serveVisitor(Viewport viewport);
+
+    /**
+     * Handle a visitor request to process an inline word.
+     *
+     * @param area  The word area
+     */
+    void serveVisitor(Word area);
+
+    /**
+     * Handle a visitor request to process an inline parent area.
+     *
+     * @param ip  The inline parent area
+     */
+    void serveVisitor(InlineParent ip);
+
+    /**
+     * Handle a visitor request to process an inline character.
+     *
+     * @param ch  The inline character
+     */
+    void serveVisitor(org.apache.fop.area.inline.Character ch);
+
+    /**
+     * Handle a visitor request to process an inline space.
+     *
+     * @param space  The inline space
+     */
+    void serveVisitor(Space space);
+
+    /**
+     * Handle a visitor request to process an inline leader area.
+     *
+     * @param area  The inline leader area.
+     */
+    void serveVisitor(Leader area);
+
+}
index 8b79f15cbdd45edbb3f90e72ebde52e59812b0b4..e8f93c3f87d1b7c99c249d6889fd89fee1752d5c 100644 (file)
@@ -3,34 +3,34 @@
  * ============================================================================
  *                    The Apache Software License, Version 1.1
  * ============================================================================
- * 
+ *
  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without modifica-
  * tion, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
- * 
+ *
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * 3. The end-user documentation included with the redistribution, if any, must
  *    include the following acknowledgment: "This product includes software
  *    developed by the Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself, if
  *    and wherever such third-party acknowledgments normally appear.
- * 
+ *
  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
  *    endorse or promote products derived from this software without prior
  *    written permission. For written permission, please contact
  *    apache@apache.org.
- * 
+ *
  * 5. Products derived from this software may not be called "Apache", nor may
  *    "Apache" appear in their name, without prior written permission of the
  *    Apache Software Foundation.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * ============================================================================
- * 
+ *
  * This software consists of voluntary contributions made by many individuals
  * on behalf of the Apache Software Foundation and was originally created by
  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
  * Software Foundation, please see <http://www.apache.org/>.
- */ 
+ */
 package org.apache.fop.area.inline;
 
 import org.apache.fop.area.Area;
-import org.apache.fop.render.Renderer;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -78,12 +77,13 @@ public class InlineParent extends InlineArea {
     }
 
     /**
-     * Render this area.
+     * Handle InlineAreaVisitor request by passing this back to it.
      *
-     * @param renderer the renderer to render this area in
+     * @param visitor the InlineAreaVisitor wishing to process this.
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
      */
-    public void render(Renderer renderer) {
-        renderer.renderInlineParent(this);
+    public void acceptVisitor(InlineAreaVisitor visitor) {
+        visitor.serveVisitor(this);
     }
 
     /**
index 6f045510b5fff426ec816f05000be2fe2c006ee3..dd503bcd8c67b7bfb5dfbed46c03267d7b9ceda1 100644 (file)
@@ -3,34 +3,34 @@
  * ============================================================================
  *                    The Apache Software License, Version 1.1
  * ============================================================================
- * 
+ *
  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without modifica-
  * tion, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
- * 
+ *
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * 3. The end-user documentation included with the redistribution, if any, must
  *    include the following acknowledgment: "This product includes software
  *    developed by the Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself, if
  *    and wherever such third-party acknowledgments normally appear.
- * 
+ *
  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
  *    endorse or promote products derived from this software without prior
  *    written permission. For written permission, please contact
  *    apache@apache.org.
- * 
+ *
  * 5. Products derived from this software may not be called "Apache", nor may
  *    "Apache" appear in their name, without prior written permission of the
  *    Apache Software Foundation.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * ============================================================================
- * 
+ *
  * This software consists of voluntary contributions made by many individuals
  * on behalf of the Apache Software Foundation and was originally created by
  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
  * Software Foundation, please see <http://www.apache.org/>.
- */ 
+ */
 package org.apache.fop.area.inline;
 
-import org.apache.fop.render.Renderer;
 import org.apache.fop.fo.properties.RuleStyle;
 
 /**
@@ -110,12 +109,14 @@ public class Leader extends InlineArea {
     }
 
     /**
-     * Render this leader in the current renderer.
+     * Handle InlineAreaVisitor request by passing this back to it.
      *
-     * @param renderer the renderer to render this inline area
+     * @param visitor the InlineAreaVisitor wishing to process this.
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
      */
-    public void render(Renderer renderer) {
-        renderer.renderLeader(this);
+    public void acceptVisitor(InlineAreaVisitor visitor) {
+        visitor.serveVisitor(this);
     }
+
 }
 
index a4391d6afd3e768a272f0adf9cb04dbb6ffb1ccc..92095eb82ffd41174d7e5cda781025842ecb18ca 100644 (file)
@@ -3,34 +3,34 @@
  * ============================================================================
  *                    The Apache Software License, Version 1.1
  * ============================================================================
- * 
+ *
  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without modifica-
  * tion, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
- * 
+ *
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * 3. The end-user documentation included with the redistribution, if any, must
  *    include the following acknowledgment: "This product includes software
  *    developed by the Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself, if
  *    and wherever such third-party acknowledgments normally appear.
- * 
+ *
  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
  *    endorse or promote products derived from this software without prior
  *    written permission. For written permission, please contact
  *    apache@apache.org.
- * 
+ *
  * 5. Products derived from this software may not be called "Apache", nor may
  *    "Apache" appear in their name, without prior written permission of the
  *    Apache Software Foundation.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * ============================================================================
- * 
+ *
  * This software consists of voluntary contributions made by many individuals
  * on behalf of the Apache Software Foundation and was originally created by
  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
  * Software Foundation, please see <http://www.apache.org/>.
- */ 
+ */
 package org.apache.fop.area.inline;
 
-import org.apache.fop.render.Renderer;
-
 /**
  * Inline space area.
  * This is used for adding a inline space to the output.
@@ -59,11 +57,13 @@ import org.apache.fop.render.Renderer;
 public class Space extends InlineArea {
 
     /**
-     * Render this inlien space area.
+     * Handle InlineAreaVisitor request by passing this back to it.
      *
-     * @param renderer the renderer to render this inline area
+     * @param visitor the InlineAreaVisitor wishing to process this.
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
      */
-    public void render(Renderer renderer) {
-        renderer.renderInlineSpace(this);
+    public void acceptVisitor(InlineAreaVisitor visitor) {
+        visitor.serveVisitor(this);
     }
+
 }
index e9a736d4b8415b304414c1fbf9ccb88e40327b4b..6c01afb3f3b86ced3eebde82a838b6a1769d95b2 100644 (file)
@@ -3,34 +3,34 @@
  * ============================================================================
  *                    The Apache Software License, Version 1.1
  * ============================================================================
- * 
+ *
  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without modifica-
  * tion, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
- * 
+ *
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * 3. The end-user documentation included with the redistribution, if any, must
  *    include the following acknowledgment: "This product includes software
  *    developed by the Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself, if
  *    and wherever such third-party acknowledgments normally appear.
- * 
+ *
  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
  *    endorse or promote products derived from this software without prior
  *    written permission. For written permission, please contact
  *    apache@apache.org.
- * 
+ *
  * 5. Products derived from this software may not be called "Apache", nor may
  *    "Apache" appear in their name, without prior written permission of the
  *    Apache Software Foundation.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * ============================================================================
- * 
+ *
  * This software consists of voluntary contributions made by many individuals
  * on behalf of the Apache Software Foundation and was originally created by
  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
  * Software Foundation, please see <http://www.apache.org/>.
- */ 
+ */
 package org.apache.fop.area.inline;
 
 import org.apache.fop.area.Area;
-import org.apache.fop.render.Renderer;
 
 import java.io.IOException;
 import java.awt.geom.Rectangle2D;
@@ -126,12 +125,13 @@ public class Viewport extends InlineArea {
     }
 
     /**
-     * Render this inline area.
+     * Handle InlineAreaVisitor request by passing this back to it.
      *
-     * @param renderer the renderer to render this inline area
+     * @param visitor the InlineAreaVisitor wishing to process this.
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
      */
-    public void render(Renderer renderer) {
-        renderer.renderViewport(this);
+    public void acceptVisitor(InlineAreaVisitor visitor) {
+        visitor.serveVisitor(this);
     }
 
     private void writeObject(java.io.ObjectOutputStream out)
index 2977c331034a0a3e3300f8b84dae97f67981c254..462cf0bc3f5a4bd92e1c93461df102b06e61d1be 100644 (file)
@@ -3,34 +3,34 @@
  * ============================================================================
  *                    The Apache Software License, Version 1.1
  * ============================================================================
- * 
+ *
  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
- * 
+ *
  * Redistribution and use in source and binary forms, with or without modifica-
  * tion, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
- * 
+ *
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * 3. The end-user documentation included with the redistribution, if any, must
  *    include the following acknowledgment: "This product includes software
  *    developed by the Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself, if
  *    and wherever such third-party acknowledgments normally appear.
- * 
+ *
  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
  *    endorse or promote products derived from this software without prior
  *    written permission. For written permission, please contact
  *    apache@apache.org.
- * 
+ *
  * 5. Products derived from this software may not be called "Apache", nor may
  *    "Apache" appear in their name, without prior written permission of the
  *    Apache Software Foundation.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * ============================================================================
- * 
+ *
  * This software consists of voluntary contributions made by many individuals
  * on behalf of the Apache Software Foundation and was originally created by
  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
  * Software Foundation, please see <http://www.apache.org/>.
- */ 
+ */
 package org.apache.fop.area.inline;
 
-import org.apache.fop.render.Renderer;
-
 /**
  * A word inline area.
  * This is really a collection character inline areas collected together
@@ -71,12 +69,13 @@ public class Word extends InlineArea {
     }
 
     /**
-     * Render the word to the renderer.
+     * Handle InlineAreaVisitor request by passing this back to it.
      *
-     * @param renderer the renderer to render this word
+     * @param visitor the InlineAreaVisitor wishing to process this.
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
      */
-    public void render(Renderer renderer) {
-        renderer.renderWord(this);
+    public void acceptVisitor(InlineAreaVisitor visitor) {
+        visitor.serveVisitor(this);
     }
 
     /**
index aa7874a1cbe7b75bffd4bf235d4b23096a7f41f9..3609fbeebedf351af1386dea00a4b855e570c6ef 100644 (file)
@@ -84,6 +84,7 @@ import org.apache.fop.area.inline.Container;
 import org.apache.fop.area.inline.ForeignObject;
 import org.apache.fop.area.inline.Image;
 import org.apache.fop.area.inline.InlineArea;
+import org.apache.fop.area.inline.InlineAreaVisitor;
 import org.apache.fop.area.inline.InlineParent;
 import org.apache.fop.area.inline.Leader;
 import org.apache.fop.area.inline.Space;
@@ -106,7 +107,7 @@ import org.apache.avalon.framework.configuration.ConfigurationException;
  * handle viewports. This keeps track of the current block and inline position.
  */
 public abstract class AbstractRenderer extends AbstractLogEnabled
-         implements Renderer, Configurable {
+         implements Renderer, Configurable, InlineAreaVisitor {
 
     /**
      * user agent
@@ -552,7 +553,7 @@ public abstract class AbstractRenderer extends AbstractLogEnabled
 
         for (int count = 0; count < children.size(); count++) {
             InlineArea inline = (InlineArea) children.get(count);
-            inline.render(this);
+            inline.acceptVisitor(this);
         }
     }
 
@@ -640,7 +641,7 @@ public abstract class AbstractRenderer extends AbstractLogEnabled
         int saveIP = currentBlockIPPosition;
         Iterator iter = ip.getChildAreas().iterator();
         while (iter.hasNext()) {
-            ((InlineArea) iter.next()).render(this);
+            ((InlineArea) iter.next()).acceptVisitor(this);
         }
         currentBlockIPPosition = saveIP + ip.getWidth();
     }
@@ -738,5 +739,77 @@ public abstract class AbstractRenderer extends AbstractLogEnabled
         }
     }
 
+    /**
+     * Render the specified Viewport.
+     * Required by InlineAreaVisitor interface, which is used to determine which
+     * InlineArea subclass should be rendered.
+     *
+     * @param viewport  The Viewport area to be rendered
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
+     */
+    public void serveVisitor(Viewport viewport) {
+        renderViewport(viewport);
+    }
+
+    /**
+     * Render the specified Word.
+     * Required by InlineAreaVisitor interface, which is used to determine which
+     * InlineArea subclass should be rendered.
+     *
+     * @param area  The Word area to be rendered
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
+     */
+    public void serveVisitor(Word area) {
+        renderWord(area);
+    }
+
+    /**
+     * Render the specified InlineParent.
+     * Required by InlineAreaVisitor interface, which is used to determine which
+     * InlineArea subclass should be rendered.
+     *
+     * @param ip  The InlineParent area to be rendered
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
+     */
+    public void serveVisitor(InlineParent ip) {
+        renderInlineParent(ip);
+    }
+
+    /**
+     * Render the specified Character.
+     * Required by InlineAreaVisitor interface, which is used to determine which
+     * InlineArea subclass should be rendered.
+     *
+     * @param ch  The Character area to be rendered
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
+     */
+    public void serveVisitor(org.apache.fop.area.inline.Character ch) {
+        renderCharacter(ch);
+    }
+
+    /**
+     * Render the specified Space.
+     * Required by InlineAreaVisitor interface, which is used to determine which
+     * InlineArea subclass should be rendered.
+     *
+     * @param space  The Space area to be rendered
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
+     */
+    public void serveVisitor(Space space) {
+        renderInlineSpace(space);
+    }
+
+    /**
+     * Render the specified Leader.
+     * Required by InlineAreaVisitor interface, which is used to determine which
+     * InlineArea subclass should be rendered.
+     *
+     * @param area  The Leader area to be rendered
+     * @see org.apache.fop.area.inline.InlineAreaVisitor
+     */
+    public void serveVisitor(Leader area) {
+        renderLeader(area);
+    }
+
 }
 
index 43f065cf98544800baee13195983c6efe8600d63..1fc28848872a9fb07629fd01411eb806e7193bbe 100644 (file)
@@ -274,7 +274,7 @@ public class XMLRenderer extends AbstractRenderer {
 
             for (int count = 0; count < children.size(); count++) {
                 InlineArea inline = (InlineArea) children.get(count);
-                inline.render(this);
+                inline.acceptVisitor(this);
             }
 
             writeEndTag("</title>");