aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Victor Mote <vmote@apache.org>2003-09-02 01:31:36 +0000
committerWilliam Victor Mote <vmote@apache.org>2003-09-02 01:31:36 +0000
commitb35e94b1df6972593ec2b0ac2fabb560feaddb35 (patch)
treea981385617fcb6fd8a34106b6fbbbb49525400c9
parent29741488f060797401a577e9537ff34ec6534151 (diff)
downloadxmlgraphics-fop-b35e94b1df6972593ec2b0ac2fabb560feaddb35.tar.gz
xmlgraphics-fop-b35e94b1df6972593ec2b0ac2fabb560feaddb35.zip
Remove all storage of fo/FOInputHandler from within the FO Tree itself, in favor of storing it one time in apps/Document and getting it from there when needed. Makes everything cleaner, and uses less memory, at the probable expense of some processing time (to go up the tree to get to Document).
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196887 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/java/org/apache/fop/apps/Document.java15
-rw-r--r--src/java/org/apache/fop/apps/Driver.java1
-rw-r--r--src/java/org/apache/fop/fo/FONode.java7
-rw-r--r--src/java/org/apache/fop/fo/FOText.java7
-rw-r--r--src/java/org/apache/fop/fo/FOTreeBuilder.java1
-rw-r--r--src/java/org/apache/fop/fo/FOTreeControl.java4
-rw-r--r--src/java/org/apache/fop/fo/FObj.java19
-rw-r--r--src/java/org/apache/fop/fo/FObjMixed.java12
-rw-r--r--src/java/org/apache/fop/fo/flow/Block.java4
-rw-r--r--src/java/org/apache/fop/fo/flow/Leader.java13
-rw-r--r--src/java/org/apache/fop/fo/flow/PageNumber.java12
-rw-r--r--src/java/org/apache/fop/fo/flow/PageNumberCitation.java12
-rw-r--r--src/java/org/apache/fop/fo/pagination/Flow.java4
-rw-r--r--src/java/org/apache/fop/fo/pagination/PageSequence.java4
-rw-r--r--src/java/org/apache/fop/fo/pagination/Title.java2
15 files changed, 31 insertions, 86 deletions
diff --git a/src/java/org/apache/fop/apps/Document.java b/src/java/org/apache/fop/apps/Document.java
index caaeee71a..5d985bb16 100644
--- a/src/java/org/apache/fop/apps/Document.java
+++ b/src/java/org/apache/fop/apps/Document.java
@@ -62,6 +62,7 @@ import org.apache.fop.area.AreaTree;
import org.apache.fop.area.AreaTreeModel;
import org.apache.fop.fo.extensions.Bookmarks;
+import org.apache.fop.fo.FOInputHandler;
import org.apache.fop.fo.FOTreeControl;
import org.apache.fop.fo.FOTreeEvent;
import org.apache.fop.fo.FOTreeListener;
@@ -112,6 +113,12 @@ public class Document implements FOTreeControl, FOTreeListener {
private Set idReferences = new HashSet();
/**
+ * Structure handler used to notify structure events
+ * such as start end element.
+ */
+ public FOInputHandler foInputHandler;
+
+ /**
* Main constructor
* @param driver the Driver object that is the "parent" of this Document
*/
@@ -383,5 +390,11 @@ public class Document implements FOTreeControl, FOTreeListener {
return idReferences;
}
-}
+ /**
+ * @return the FOInputHandler for parsing this FO Tree
+ */
+ public FOInputHandler getFOInputHandler() {
+ return foInputHandler;
+ }
+}
diff --git a/src/java/org/apache/fop/apps/Driver.java b/src/java/org/apache/fop/apps/Driver.java
index cd16f4d3f..94f5cd93f 100644
--- a/src/java/org/apache/fop/apps/Driver.java
+++ b/src/java/org/apache/fop/apps/Driver.java
@@ -576,6 +576,7 @@ public class Driver implements LogEnabled {
currentDocument = new Document(this);
}
parser.setContentHandler(getContentHandler());
+ currentDocument.foInputHandler = foInputHandler;
/** LayoutStrategy is hard-wired for now, but needs to be made
accessible through the API and/or configuration */
if (foInputHandler instanceof FOTreeHandler) {
diff --git a/src/java/org/apache/fop/fo/FONode.java b/src/java/org/apache/fop/fo/FONode.java
index 5ba62bd24..079ee5d9c 100644
--- a/src/java/org/apache/fop/fo/FONode.java
+++ b/src/java/org/apache/fop/fo/FONode.java
@@ -118,13 +118,6 @@ public abstract class FONode {
}
/**
- * Sets the structure handler to send events to.
- * @param foih FOInputHandler instance
- */
- public void setFOInputHandler(FOInputHandler foih) {
- }
-
- /**
* Do something with the attributes for this element
* @param attlist Collection of attributes passed to us from the parser.
* @throws FOPException for errors or inconsistencies in the attributes
diff --git a/src/java/org/apache/fop/fo/FOText.java b/src/java/org/apache/fop/fo/FOText.java
index dc7a5829b..20c03b476 100644
--- a/src/java/org/apache/fop/fo/FOText.java
+++ b/src/java/org/apache/fop/fo/FOText.java
@@ -76,7 +76,7 @@ public class FOText extends FObj {
* the character array containing the text
*/
public char[] ca;
- private int start;
+ public int start;
/**
* the length of the character array containing the text
@@ -139,11 +139,6 @@ public class FOText extends FObj {
textTransform();
}
- public void setFOInputHandler(FOInputHandler foih) {
- super.setFOInputHandler(foih);
- foInputHandler.characters(ca, start, length);
- }
-
/**
* Check if this text node will create an area.
* This means either there is non-whitespace or it is
diff --git a/src/java/org/apache/fop/fo/FOTreeBuilder.java b/src/java/org/apache/fop/fo/FOTreeBuilder.java
index 64c5832ce..a8b56cb76 100644
--- a/src/java/org/apache/fop/fo/FOTreeBuilder.java
+++ b/src/java/org/apache/fop/fo/FOTreeBuilder.java
@@ -282,7 +282,6 @@ public class FOTreeBuilder extends DefaultHandler {
fobj.setUserAgent(userAgent);
// set the structure handler so that appropriate
// elements can signal structure events
- fobj.setFOInputHandler(foInputHandler);
fobj.handleAttrs(attlist);
} catch (FOPException e) {
diff --git a/src/java/org/apache/fop/fo/FOTreeControl.java b/src/java/org/apache/fop/fo/FOTreeControl.java
index a77b6b2a8..79621ffa3 100644
--- a/src/java/org/apache/fop/fo/FOTreeControl.java
+++ b/src/java/org/apache/fop/fo/FOTreeControl.java
@@ -114,4 +114,8 @@ public interface FOTreeControl {
*/
Set getIDReferences();
+ /**
+ * @return the FOInputHandler for parsing this FO Tree
+ */
+ FOInputHandler getFOInputHandler();
}
diff --git a/src/java/org/apache/fop/fo/FObj.java b/src/java/org/apache/fop/fo/FObj.java
index b1510f269..84ff3b8b3 100644
--- a/src/java/org/apache/fop/fo/FObj.java
+++ b/src/java/org/apache/fop/fo/FObj.java
@@ -79,12 +79,6 @@ public class FObj extends FONode {
protected static PropertyListBuilder plb = null;
/**
- * Structure handler used to notify structure events
- * such as start end element.
- */
- protected FOInputHandler foInputHandler;
-
- /**
* Formatting properties for this fo element.
*/
public PropertyList properties;
@@ -252,19 +246,6 @@ public class FObj extends FONode {
}
/**
- * Set the structure handler for handling structure events.
- *
- * @param st the structure handler
- */
- public void setFOInputHandler(FOInputHandler foih) {
- foInputHandler = foih;
- }
-
- public FOInputHandler getFOInputHandler() {
- return foInputHandler;
- }
-
- /**
* lets outside sources access the property list
* first used by PageNumberCitation to find the "id" property
* @param name - the name of the desired property to obtain
diff --git a/src/java/org/apache/fop/fo/FObjMixed.java b/src/java/org/apache/fop/fo/FObjMixed.java
index 179f2fe91..8d1096173 100644
--- a/src/java/org/apache/fop/fo/FObjMixed.java
+++ b/src/java/org/apache/fop/fo/FObjMixed.java
@@ -57,8 +57,6 @@ package org.apache.fop.fo;
public class FObjMixed extends FObj {
/** TextInfo for this object */
protected TextInfo textInfo = null;
- /** FontInfo for this object */
- protected FOTreeControl fontInfo = null;
/**
* @param parent FONode that is the parent of this object
@@ -68,14 +66,6 @@ public class FObjMixed extends FObj {
}
/**
- * @param foih FOInputHandler to set
- */
- public void setFOInputHandler(FOInputHandler foih) {
- super.setFOInputHandler(foih);
- fontInfo = foih.getFontInfo();
- }
-
- /**
* @param data array of characters containing text to be added
* @param start starting array element to add
* @param length number of characters to add
@@ -90,7 +80,7 @@ public class FObjMixed extends FObj {
FOText ft = new FOText(data, start, length, textInfo, this);
ft.setUserAgent(userAgent);
- ft.setFOInputHandler(foInputHandler);
+ getFOTreeControl().getFOInputHandler().characters(ft.ca, ft.start, ft.length);
addChild(ft);
}
diff --git a/src/java/org/apache/fop/fo/flow/Block.java b/src/java/org/apache/fop/fo/flow/Block.java
index 994da7ccb..b40bda32a 100644
--- a/src/java/org/apache/fop/fo/flow/Block.java
+++ b/src/java/org/apache/fop/fo/flow/Block.java
@@ -143,7 +143,7 @@ public class Block extends FObjMixed {
setupID();
- foInputHandler.startBlock(this);
+ getFOTreeControl().getFOInputHandler().startBlock(this);
}
private void setup() {
@@ -270,7 +270,7 @@ public class Block extends FObjMixed {
*/
public void end() {
handleWhiteSpace();
- foInputHandler.endBlock(this);
+ getFOTreeControl().getFOInputHandler().endBlock(this);
}
private void handleWhiteSpace() {
diff --git a/src/java/org/apache/fop/fo/flow/Leader.java b/src/java/org/apache/fop/fo/flow/Leader.java
index df1e96af5..6d9c65333 100644
--- a/src/java/org/apache/fop/fo/flow/Leader.java
+++ b/src/java/org/apache/fop/fo/flow/Leader.java
@@ -79,8 +79,6 @@ public class Leader extends FObjMixed {
private int ruleThickness;
private int leaderPattern;
private int patternWidth;
- /** FontInfo for this object */
- protected FOTreeControl fontInfo = null;
/** FontState for this object */
protected Font fontState;
@@ -91,15 +89,6 @@ public class Leader extends FObjMixed {
super(parent);
}
-
- /**
- * @param foih FOInputHandler to set
- */
- public void setFOInputHandler(FOInputHandler foih) {
- super.setFOInputHandler(foih);
- fontInfo = foih.getFontInfo();
- }
-
public void setup() {
// Common Accessibility Properties
@@ -113,7 +102,7 @@ public class Leader extends FObjMixed {
CommonBackground bProps = propMgr.getBackgroundProps();
// Common Font Properties
- this.fontState = propMgr.getFontState(fontInfo);
+ this.fontState = propMgr.getFontState(getFOTreeControl());
// Common Margin Properties-Inline
CommonMarginInline mProps = propMgr.getMarginInlineProps();
diff --git a/src/java/org/apache/fop/fo/flow/PageNumber.java b/src/java/org/apache/fop/fo/flow/PageNumber.java
index abb0b6959..bd7bd05bb 100644
--- a/src/java/org/apache/fop/fo/flow/PageNumber.java
+++ b/src/java/org/apache/fop/fo/flow/PageNumber.java
@@ -71,8 +71,6 @@ import org.apache.fop.fo.FOInputHandler;
* Standard.
*/
public class PageNumber extends FObj {
- /** FontInfo for this object */
- protected FOTreeControl fontInfo = null;
/** FontState for this object */
protected Font fontState;
@@ -88,14 +86,6 @@ public class PageNumber extends FObj {
super(parent);
}
- /**
- * @param foih FOInputHandler to be set
- */
- public void setFOInputHandler(FOInputHandler foih) {
- super.setFOInputHandler(foih);
- fontInfo = foih.getFontInfo();
- }
-
public void setup() {
// Common Accessibility Properties
@@ -109,7 +99,7 @@ public class PageNumber extends FObj {
CommonBackground bProps = propMgr.getBackgroundProps();
// Common Font Properties
- this.fontState = propMgr.getFontState(fontInfo);
+ this.fontState = propMgr.getFontState(getFOTreeControl());
// Common Margin Properties-Inline
CommonMarginInline mProps = propMgr.getMarginInlineProps();
diff --git a/src/java/org/apache/fop/fo/flow/PageNumberCitation.java b/src/java/org/apache/fop/fo/flow/PageNumberCitation.java
index 621e898ce..ec72a4e40 100644
--- a/src/java/org/apache/fop/fo/flow/PageNumberCitation.java
+++ b/src/java/org/apache/fop/fo/flow/PageNumberCitation.java
@@ -74,8 +74,6 @@ import org.apache.fop.util.CharUtilities;
* block referenced with the ref-id attribute.
*/
public class PageNumberCitation extends FObj {
- /** FontInfo for this object **/
- protected FOTreeControl fontInfo = null;
/** Fontstate for this object **/
protected Font fontState;
@@ -95,14 +93,6 @@ public class PageNumberCitation extends FObj {
}
/**
- * @param foih the FOInputHandler object to set
- */
- public void setFOInputHandler(FOInputHandler foih) {
- super.setFOInputHandler(foih);
- fontInfo = foih.getFontInfo();
- }
-
- /**
* @param str string to be measured
* @return width (in millipoints ??) of the string
*/
@@ -128,7 +118,7 @@ public class PageNumberCitation extends FObj {
CommonBackground bProps = propMgr.getBackgroundProps();
// Common Font Properties
- this.fontState = propMgr.getFontState(fontInfo);
+ this.fontState = propMgr.getFontState(getFOTreeControl());
// Common Margin Properties-Inline
CommonMarginInline mProps = propMgr.getMarginInlineProps();
diff --git a/src/java/org/apache/fop/fo/pagination/Flow.java b/src/java/org/apache/fop/fo/pagination/Flow.java
index 15b156e87..5a6e2ee8d 100644
--- a/src/java/org/apache/fop/fo/pagination/Flow.java
+++ b/src/java/org/apache/fop/fo/pagination/Flow.java
@@ -126,14 +126,14 @@ public class Flow extends FObj {
// Now done in addChild of page-sequence
//pageSequence.addFlow(this);
- foInputHandler.startFlow(this);
+ getFOTreeControl().getFOInputHandler().startFlow(this);
}
/**
* Tell the StructureRenderer that we are at the end of the flow.
*/
public void end() {
- foInputHandler.endFlow(this);
+ getFOTreeControl().getFOInputHandler().endFlow(this);
}
/**
diff --git a/src/java/org/apache/fop/fo/pagination/PageSequence.java b/src/java/org/apache/fop/fo/pagination/PageSequence.java
index 77198e21b..d783b6510 100644
--- a/src/java/org/apache/fop/fo/pagination/PageSequence.java
+++ b/src/java/org/apache/fop/fo/pagination/PageSequence.java
@@ -331,7 +331,7 @@ public class PageSequence extends FObj {
*/
private void startStructuredPageSequence() {
if (!sequenceStarted) {
- foInputHandler.startPageSequence(this);
+ getFOTreeControl().getFOInputHandler().startPageSequence(this);
sequenceStarted = true;
}
}
@@ -343,7 +343,7 @@ public class PageSequence extends FObj {
*/
public void end() {
try {
- this.foInputHandler.endPageSequence(this);
+ this.getFOTreeControl().getFOInputHandler().endPageSequence(this);
} catch (FOPException fopex) {
getLogger().error("Error in PageSequence.end(): "
+ fopex.getMessage(), fopex);
diff --git a/src/java/org/apache/fop/fo/pagination/Title.java b/src/java/org/apache/fop/fo/pagination/Title.java
index a944e05ec..a2b758404 100644
--- a/src/java/org/apache/fop/fo/pagination/Title.java
+++ b/src/java/org/apache/fop/fo/pagination/Title.java
@@ -91,7 +91,7 @@ public class Title extends FObjMixed {
CommonBackground bProps = propMgr.getBackgroundProps();
// Common Font Properties
- Font fontState = propMgr.getFontState(foInputHandler.getFontInfo());
+ Font fontState = propMgr.getFontState(getFOTreeControl().getFOInputHandler().getFontInfo());
// Common Margin Properties-Inline
CommonMarginInline mProps = propMgr.getMarginInlineProps();