aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWilliam Victor Mote <vmote@apache.org>2003-08-19 05:19:21 +0000
committerWilliam Victor Mote <vmote@apache.org>2003-08-19 05:19:21 +0000
commitf57272a7c47e82a4ba3131c2d7a730c9529ff272 (patch)
tree6b5de48ee08cdd8d8b011a690336605fef7745d4 /src
parenteeaa58076beb48b96bfc0e98ae80a0d4e2ddbc03 (diff)
downloadxmlgraphics-fop-f57272a7c47e82a4ba3131c2d7a730c9529ff272.tar.gz
xmlgraphics-fop-f57272a7c47e82a4ba3131c2d7a730c9529ff272.zip
create fo/FOTreeControl interface, and make control/Document implement it, to further encapsulate the FO Tree
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196811 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/fop/apps/Driver.java2
-rw-r--r--src/java/org/apache/fop/control/Document.java3
-rw-r--r--src/java/org/apache/fop/fo/FONode.java6
-rw-r--r--src/java/org/apache/fop/fo/FOTreeBuilder.java6
-rw-r--r--src/java/org/apache/fop/fo/FOTreeControl.java72
-rw-r--r--src/java/org/apache/fop/fo/FObjMixed.java8
-rw-r--r--src/java/org/apache/fop/fo/PropertyManager.java26
-rw-r--r--src/java/org/apache/fop/fo/pagination/Root.java23
-rw-r--r--src/java/org/apache/fop/layoutmgr/AddLMVisitor.java2
9 files changed, 111 insertions, 37 deletions
diff --git a/src/java/org/apache/fop/apps/Driver.java b/src/java/org/apache/fop/apps/Driver.java
index dcd012206..6345b7fbe 100644
--- a/src/java/org/apache/fop/apps/Driver.java
+++ b/src/java/org/apache/fop/apps/Driver.java
@@ -601,7 +601,7 @@ public class Driver implements LogEnabled, FOTreeListener {
if (foInputHandler instanceof FOTreeHandler) {
currentDocument.setLayoutStrategy(new LayoutManagerLS());
}
- treeBuilder.document = currentDocument;
+ treeBuilder.foTreeControl = currentDocument;
try {
if (foInputHandler instanceof FOTreeHandler) {
FOTreeHandler foTreeHandler = (FOTreeHandler)foInputHandler;
diff --git a/src/java/org/apache/fop/control/Document.java b/src/java/org/apache/fop/control/Document.java
index a72de0b45..8096541a8 100644
--- a/src/java/org/apache/fop/control/Document.java
+++ b/src/java/org/apache/fop/control/Document.java
@@ -55,6 +55,7 @@ import java.util.Map;
// FOP
import org.apache.fop.apps.Driver;
+import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fonts.Font;
import org.apache.fop.fonts.FontMetrics;
import org.apache.fop.layout.LayoutStrategy;
@@ -63,7 +64,7 @@ import org.apache.fop.layout.LayoutStrategy;
* Class storing information for the FOP Document being processed, and managing
* the processing of it.
*/
-public class Document {
+public class Document implements FOTreeControl {
/** The parent Driver object */
private Driver driver;
diff --git a/src/java/org/apache/fop/fo/FONode.java b/src/java/org/apache/fop/fo/FONode.java
index 0b20e6752..732be0af9 100644
--- a/src/java/org/apache/fop/fo/FONode.java
+++ b/src/java/org/apache/fop/fo/FONode.java
@@ -61,7 +61,7 @@ import org.apache.avalon.framework.logger.Logger;
// FOP
import org.apache.fop.apps.FOPException;
-import org.apache.fop.control.Document;
+import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.util.CharUtilities;
/**
@@ -216,8 +216,8 @@ public abstract class FONode {
* which returns the parent Document.
* @return the Document object that is the parent of this node.
*/
- public Document getDocument() {
- return parent.getDocument();
+ public FOTreeControl getFOTreeControl() {
+ return parent.getFOTreeControl();
}
/**
diff --git a/src/java/org/apache/fop/fo/FOTreeBuilder.java b/src/java/org/apache/fop/fo/FOTreeBuilder.java
index 1af4d795f..7f07bfc4a 100644
--- a/src/java/org/apache/fop/fo/FOTreeBuilder.java
+++ b/src/java/org/apache/fop/fo/FOTreeBuilder.java
@@ -54,7 +54,7 @@ package org.apache.fop.fo;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-import org.apache.fop.control.Document;
+import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fo.pagination.Root;
// SAX
@@ -122,7 +122,7 @@ public class FOTreeBuilder extends DefaultHandler {
private FOUserAgent userAgent;
- public Document document;
+ public FOTreeControl foTreeControl;
/**
* Default constructor
@@ -295,7 +295,7 @@ public class FOTreeBuilder extends DefaultHandler {
+ fobj.getName()));
}
rootFObj = (Root)fobj;
- rootFObj.setDocument(document);
+ rootFObj.setFOTreeControl(foTreeControl);
} else {
currentFObj.addChild(fobj);
}
diff --git a/src/java/org/apache/fop/fo/FOTreeControl.java b/src/java/org/apache/fop/fo/FOTreeControl.java
new file mode 100644
index 000000000..81871df65
--- /dev/null
+++ b/src/java/org/apache/fop/fo/FOTreeControl.java
@@ -0,0 +1,72 @@
+/*
+ * $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.fo;
+
+import org.apache.fop.fonts.FontMetrics;
+
+/**
+ * An interface for classes that are conceptually the parent class of the
+ * fo.pagination.Root object. The purpose of the interface is to maintain
+ * encapsulation of the FO Tree classes, but to acknowledge that a higher-level
+ * object is needed to control the building of the FO Tree, to provide it
+ * with information about the environment, and to keep track of meta-type
+ * information.
+ */
+
+public interface FOTreeControl {
+
+ public String fontLookup(String family, String style,
+ int weight);
+
+ public FontMetrics getMetricsFor(String fontName);
+
+}
diff --git a/src/java/org/apache/fop/fo/FObjMixed.java b/src/java/org/apache/fop/fo/FObjMixed.java
index d0320b6cc..f7a4921a3 100644
--- a/src/java/org/apache/fop/fo/FObjMixed.java
+++ b/src/java/org/apache/fop/fo/FObjMixed.java
@@ -50,7 +50,7 @@
*/
package org.apache.fop.fo;
-import org.apache.fop.control.Document;
+import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.layoutmgr.InlineStackingLayoutManager;
import org.apache.fop.layoutmgr.LMiter;
@@ -64,7 +64,7 @@ public class FObjMixed extends FObj {
/** TextInfo for this object */
protected TextInfo textInfo = null;
/** FontInfo for this object */
- protected Document fontInfo = null;
+ protected FOTreeControl fontInfo = null;
/**
* @param parent FONode that is the parent of this object
@@ -90,8 +90,8 @@ public class FObjMixed extends FObj {
if (textInfo == null) {
// Really only need one of these, but need to get fontInfo
// stored in propMgr for later use.
- propMgr.setFontInfo(getDocument());
- textInfo = propMgr.getTextLayoutProps(getDocument());
+ propMgr.setFontInfo(getFOTreeControl());
+ textInfo = propMgr.getTextLayoutProps(getFOTreeControl());
}
FOText ft = new FOText(data, start, length, textInfo, this);
diff --git a/src/java/org/apache/fop/fo/PropertyManager.java b/src/java/org/apache/fop/fo/PropertyManager.java
index 42cc30876..ac0099a58 100644
--- a/src/java/org/apache/fop/fo/PropertyManager.java
+++ b/src/java/org/apache/fop/fo/PropertyManager.java
@@ -58,7 +58,7 @@ import java.awt.geom.Rectangle2D;
import org.apache.fop.area.CTM;
import org.apache.fop.datatypes.FODimension;
import org.apache.fop.fonts.Font;
-import org.apache.fop.control.Document;
+import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fo.properties.CommonBorderAndPadding;
import org.apache.fop.fo.properties.CommonMarginBlock;
import org.apache.fop.fo.properties.CommonMarginInline;
@@ -83,7 +83,7 @@ import org.apache.fop.fo.properties.CommonHyphenation;
public class PropertyManager {
private PropertyList properties;
- private Document doc = null;
+ private FOTreeControl foTreeControl = null;
private Font fontState = null;
private CommonBorderAndPadding borderAndPadding = null;
private CommonHyphenation hyphProps = null;
@@ -122,8 +122,8 @@ public class PropertyManager {
* available.
* @param doc Document containing font information
*/
- public void setFontInfo(Document doc) {
- this.doc = doc;
+ public void setFontInfo(FOTreeControl foTreeControl) {
+ this.foTreeControl = foTreeControl;
}
@@ -133,12 +133,12 @@ public class PropertyManager {
* @param doc Document containing the font information
* @return a FontState object
*/
- public Font getFontState(Document doc) {
+ public Font getFontState(FOTreeControl foTreeControl) {
if (fontState == null) {
- if (doc == null) {
- doc = this.doc;
- } else if (this.doc == null) {
- this.doc = doc;
+ if (foTreeControl == null) {
+ foTreeControl = this.foTreeControl;
+ } else if (this.foTreeControl == null) {
+ this.foTreeControl = foTreeControl;
}
/**@todo this is ugly. need to improve. */
@@ -167,9 +167,9 @@ public class PropertyManager {
// various kinds of keywords too
int fontSize = properties.get("font-size").getLength().getValue();
//int fontVariant = properties.get("font-variant").getEnum();
- String fname = doc.fontLookup(fontFamily, fontStyle,
+ String fname = foTreeControl.fontLookup(fontFamily, fontStyle,
fontWeight);
- FontMetrics metrics = doc.getMetricsFor(fname);
+ FontMetrics metrics = foTreeControl.getMetricsFor(fname);
fontState = new Font(fname, metrics, fontSize);
}
return fontState;
@@ -479,10 +479,10 @@ public class PropertyManager {
* @param doc Document containing list of available fonts
* @return a TextInfo object
*/
- public TextInfo getTextLayoutProps(Document doc) {
+ public TextInfo getTextLayoutProps(FOTreeControl foTreeControl) {
if (textInfo == null) {
textInfo = new TextInfo();
- textInfo.fs = getFontState(doc);
+ textInfo.fs = getFontState(foTreeControl);
textInfo.color = properties.get("color").getColorType();
textInfo.verticalAlign =
diff --git a/src/java/org/apache/fop/fo/pagination/Root.java b/src/java/org/apache/fop/fo/pagination/Root.java
index 75654ad76..139cbd414 100644
--- a/src/java/org/apache/fop/fo/pagination/Root.java
+++ b/src/java/org/apache/fop/fo/pagination/Root.java
@@ -54,7 +54,7 @@ package org.apache.fop.fo.pagination;
import java.util.List;
// FOP
-import org.apache.fop.control.Document;
+import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.FOTreeVisitor;
@@ -71,7 +71,7 @@ public class Root extends FObj {
*/
private int runningPageNumberCounter = 0;
- private Document document = null;
+ private FOTreeControl foTreeControl = null;
/**
* @see org.apache.fop.fo.FONode#FONode(FONode)
@@ -144,22 +144,23 @@ public class Root extends FObj {
}
/**
- * Sets the Document that this Root is attached to
- * @param document the Document that this Root is attached to
+ * Sets the FOTreeControl that this Root is attached to
+ * @param foTreeControl the FOTreeControl implementation to which this Root
+ * is attached
*/
- public void setDocument(Document document) {
- this.document = document;
+ public void setFOTreeControl(FOTreeControl foTreeControl) {
+ this.foTreeControl = foTreeControl;
}
/**
* This method overrides the FONode version. The FONode version calls the
* method by the same name for the parent object. Since Root is at the top
- * of the tree, it returns the actual Document object. Thus, any FONode can
- * use this chain to find which Document it is being built for.
- * @return the Document that this Root is attached to
+ * of the tree, it returns the actual foTreeControl object. Thus, any FONode
+ * can use this chain to find which foTreeControl it is being built for.
+ * @return the FOTreeControl implementation that this Root is attached to
*/
- public Document getDocument() {
- return document;
+ public FOTreeControl getFOTreeControl() {
+ return foTreeControl;
}
public void acceptVisitor(FOTreeVisitor fotv) {
diff --git a/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java b/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java
index 8afca744f..7b0a9b718 100644
--- a/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java
+++ b/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java
@@ -251,7 +251,7 @@ public class AddLMVisitor extends FOTreeVisitor {
BlockLayoutManager blm = new BlockLayoutManager();
blm.setUserAgent(node.getUserAgent());
blm.setFObj(node);
- TextInfo ti = node.getPropertyManager().getTextLayoutProps(node.getDocument());
+ TextInfo ti = node.getPropertyManager().getTextLayoutProps(node.getFOTreeControl());
blm.setBlockTextInfo(ti);
currentLMList.add(blm);
}