aboutsummaryrefslogtreecommitdiffstats
path: root/src/java
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2008-07-28 15:23:09 +0000
committerJeremias Maerki <jeremias@apache.org>2008-07-28 15:23:09 +0000
commitd8d3756c6addd413c63600817e726a148af39ce6 (patch)
tree3f595ec716a609bf8b15c4873e5b5e2938ad8dc8 /src/java
parentf138ee9f28320816517d68e662fd5b92b73e6e60 (diff)
parente016f209941db98ef58fd4e2efa12caeb4875ce6 (diff)
downloadxmlgraphics-fop-d8d3756c6addd413c63600817e726a148af39ce6.tar.gz
xmlgraphics-fop-d8d3756c6addd413c63600817e726a148af39ce6.zip
Merge from Trunk revisions 679735 to 680380.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign@680381 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java')
-rw-r--r--src/java/org/apache/fop/fo/FONode.java23
-rw-r--r--src/java/org/apache/fop/fo/FOText.java2
-rw-r--r--src/java/org/apache/fop/fo/FOTreeBuilder.java2
-rw-r--r--src/java/org/apache/fop/fo/FObjMixed.java4
-rw-r--r--src/java/org/apache/fop/fo/UnknownXMLObj.java16
-rw-r--r--src/java/org/apache/fop/fo/XMLObj.java23
-rw-r--r--src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTitle.java5
-rw-r--r--src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java76
-rw-r--r--src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java9
-rw-r--r--src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java16
-rw-r--r--src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java4
11 files changed, 97 insertions, 83 deletions
diff --git a/src/java/org/apache/fop/fo/FONode.java b/src/java/org/apache/fop/fo/FONode.java
index 087bcf96c..07d8f472c 100644
--- a/src/java/org/apache/fop/fo/FONode.java
+++ b/src/java/org/apache/fop/fo/FONode.java
@@ -274,18 +274,37 @@ public abstract class FONode implements Cloneable {
*
* @param data array of characters containing text to be added
* @param start starting array element to add
- * @param length number of elements to add
+ * @param end ending array element to add
* @param pList currently applicable PropertyList
* @param locator location in the XSL-FO source file.
* @throws FOPException if there's a problem during processing
+ * @deprecated Please override {@code #characters(char[], int, int, PropertyList, Locator)}
+ * instead!
*/
- protected void addCharacters(char[] data, int start, int length,
+ protected void addCharacters(char[] data, int start, int end,
PropertyList pList,
Locator locator) throws FOPException {
// ignore
}
/**
+ * Adds characters. Does nothing by default. To be overridden in subclasses
+ * that allow <code>#PCDATA</code> content.
+ *
+ * @param data array of characters containing text to be added
+ * @param start starting array element to add
+ * @param length number of elements to add
+ * @param pList currently applicable PropertyList
+ * @param locator location in the XSL-FO source file.
+ * @throws FOPException if there's a problem during processing
+ */
+ protected void characters(char[] data, int start, int length,
+ PropertyList pList,
+ Locator locator) throws FOPException {
+ addCharacters(data, start, start + length, pList, locator);
+ }
+
+ /**
* Called after processNode() is called. Subclasses can do additional processing.
*
* @throws FOPException if there's a problem during processing
diff --git a/src/java/org/apache/fop/fo/FOText.java b/src/java/org/apache/fop/fo/FOText.java
index eb0627b4b..08ffa40a3 100644
--- a/src/java/org/apache/fop/fo/FOText.java
+++ b/src/java/org/apache/fop/fo/FOText.java
@@ -93,7 +93,7 @@ public class FOText extends FONode implements CharSequence {
}
/** {@inheritDoc} */
- protected void addCharacters(char[] data, int start, int length,
+ protected void characters(char[] data, int start, int length,
PropertyList list, Locator locator) throws FOPException {
if (this.charBuffer == null) {
diff --git a/src/java/org/apache/fop/fo/FOTreeBuilder.java b/src/java/org/apache/fop/fo/FOTreeBuilder.java
index 762cd0d46..7c77f0697 100644
--- a/src/java/org/apache/fop/fo/FOTreeBuilder.java
+++ b/src/java/org/apache/fop/fo/FOTreeBuilder.java
@@ -371,7 +371,7 @@ public class FOTreeBuilder extends DefaultHandler {
public void characters(char[] data, int start, int length)
throws FOPException {
if (currentFObj != null) {
- currentFObj.addCharacters(data, start, length,
+ currentFObj.characters(data, start, length,
currentPropertyList, getEffectiveLocator());
}
}
diff --git a/src/java/org/apache/fop/fo/FObjMixed.java b/src/java/org/apache/fop/fo/FObjMixed.java
index 64faa3253..5dc5dd49d 100644
--- a/src/java/org/apache/fop/fo/FObjMixed.java
+++ b/src/java/org/apache/fop/fo/FObjMixed.java
@@ -50,7 +50,7 @@ public abstract class FObjMixed extends FObj {
}
/** {@inheritDoc} */
- protected void addCharacters(char[] data, int start, int length,
+ protected void characters(char[] data, int start, int length,
PropertyList pList,
Locator locator) throws FOPException {
if (ft == null) {
@@ -60,7 +60,7 @@ public abstract class FObjMixed extends FObj {
ft.bind(pList);
}
}
- ft.addCharacters(data, start, length, null, null);
+ ft.characters(data, start, length, null, null);
}
/** {@inheritDoc} */
diff --git a/src/java/org/apache/fop/fo/UnknownXMLObj.java b/src/java/org/apache/fop/fo/UnknownXMLObj.java
index 4db2cf0fe..ac6676427 100644
--- a/src/java/org/apache/fop/fo/UnknownXMLObj.java
+++ b/src/java/org/apache/fop/fo/UnknownXMLObj.java
@@ -21,6 +21,8 @@ package org.apache.fop.fo;
import org.xml.sax.Locator;
+import org.apache.fop.apps.FOPException;
+
/**
* Class for handling generic XML from a namespace not recognized by FOP
*/
@@ -72,9 +74,7 @@ public class UnknownXMLObj extends XMLObj {
return null; //We don't know that in this case.
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
protected void addChildNode(FONode child) {
if (doc == null) {
createBasicDocument();
@@ -82,15 +82,13 @@ public class UnknownXMLObj extends XMLObj {
super.addChildNode(child);
}
- /**
- * {@inheritDoc}
- */
- protected void addCharacters(char data[], int start, int length,
- PropertyList pList, Locator locator) {
+ /** {@inheritDoc} */
+ protected void characters(char[] data, int start, int length,
+ PropertyList pList, Locator locator) throws FOPException {
if (doc == null) {
createBasicDocument();
}
- super.addCharacters(data, start, length, pList, locator);
+ super.characters(data, start, length, pList, locator);
}
}
diff --git a/src/java/org/apache/fop/fo/XMLObj.java b/src/java/org/apache/fop/fo/XMLObj.java
index 97aa435e7..3330f41a5 100644
--- a/src/java/org/apache/fop/fo/XMLObj.java
+++ b/src/java/org/apache/fop/fo/XMLObj.java
@@ -25,14 +25,16 @@ import java.util.HashMap;
import javax.xml.parsers.DocumentBuilderFactory;
-import org.apache.fop.apps.FOPException;
-import org.apache.fop.datatypes.Length;
-import org.apache.fop.util.ContentHandlerFactory.ObjectBuiltListener;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
+import org.apache.fop.apps.FOPException;
+import org.apache.fop.datatypes.Length;
+import org.apache.fop.util.ContentHandlerFactory.ObjectBuiltListener;
+
/**
* Abstract class modelling generic, non-XSL-FO XML objects. Such objects are
* stored in a DOM.
@@ -203,17 +205,10 @@ public abstract class XMLObj extends FONode implements ObjectBuiltListener {
}
}
- /**
- * Add parsed characters to this object
- *
- * @param data array of characters contaning the text to add
- * @param start starting array element to add
- * @param length number of characters from the array to add
- * @param pList the currently applicable property list
- * @param locator location in fo source file.
- */
- protected void addCharacters(char[] data, int start, int length,
- PropertyList pList, Locator locator) {
+ /** {@inheritDoc} */
+ protected void characters(char[] data, int start, int length,
+ PropertyList pList, Locator locator) throws FOPException {
+ super.characters(data, start, length, pList, locator);
String str = new String(data, start, length);
org.w3c.dom.Text text = doc.createTextNode(str);
element.appendChild(text);
diff --git a/src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTitle.java b/src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTitle.java
index fc508dc96..028cdc7df 100644
--- a/src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTitle.java
+++ b/src/java/org/apache/fop/fo/pagination/bookmarks/BookmarkTitle.java
@@ -21,8 +21,8 @@ package org.apache.fop.fo.pagination.bookmarks;
import org.xml.sax.Locator;
-import org.apache.fop.fo.FObj;
import org.apache.fop.fo.FONode;
+import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
import org.apache.fop.fo.ValidationException;
@@ -52,9 +52,10 @@ public class BookmarkTitle extends FObj {
* @param data the character data
* @param start the start position in the data array
* @param length the length of the character array
+ * @param pList currently applicable PropertyList
* @param locator location in fo source file.
*/
- protected void addCharacters(char[] data, int start, int length,
+ protected void characters(char[] data, int start, int length,
PropertyList pList,
Locator locator) {
title += new String(data, start, length);
diff --git a/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java b/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java
index 26933ee4c..cab2dd0ba 100644
--- a/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java
+++ b/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java
@@ -20,14 +20,15 @@
package org.apache.fop.layoutmgr;
import java.util.ArrayList;
-import java.util.Map;
import java.util.HashMap;
-import java.util.List;
import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.fop.area.AreaTreeHandler;
import org.apache.fop.fo.FOElementMapping;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FOText;
@@ -65,8 +66,6 @@ import org.apache.fop.fo.pagination.PageSequence;
import org.apache.fop.fo.pagination.SideRegion;
import org.apache.fop.fo.pagination.StaticContent;
import org.apache.fop.fo.pagination.Title;
-import org.apache.fop.area.AreaTreeHandler;
-
import org.apache.fop.layoutmgr.inline.BasicLinkLayoutManager;
import org.apache.fop.layoutmgr.inline.BidiLayoutManager;
import org.apache.fop.layoutmgr.inline.CharacterLayoutManager;
@@ -78,8 +77,8 @@ import org.apache.fop.layoutmgr.inline.InlineLayoutManager;
import org.apache.fop.layoutmgr.inline.InlineLevelLayoutManager;
import org.apache.fop.layoutmgr.inline.InstreamForeignObjectLM;
import org.apache.fop.layoutmgr.inline.LeaderLayoutManager;
-import org.apache.fop.layoutmgr.inline.PageNumberCitationLayoutManager;
import org.apache.fop.layoutmgr.inline.PageNumberCitationLastLayoutManager;
+import org.apache.fop.layoutmgr.inline.PageNumberCitationLayoutManager;
import org.apache.fop.layoutmgr.inline.PageNumberLayoutManager;
import org.apache.fop.layoutmgr.inline.TextLayoutManager;
import org.apache.fop.layoutmgr.inline.WrapperLayoutManager;
@@ -107,41 +106,50 @@ public class LayoutManagerMapping implements LayoutManagerMaker {
* Initializes the set of maker objects associated with this LayoutManagerMapping
*/
protected void initialize() {
- makers.put(FOText.class, new FOTextLayoutManagerMaker());
- makers.put(FObjMixed.class, new Maker());
- makers.put(BidiOverride.class, new BidiOverrideLayoutManagerMaker());
- makers.put(Inline.class, new InlineLayoutManagerMaker());
- makers.put(Footnote.class, new FootnodeLayoutManagerMaker());
- makers.put(InlineContainer.class,
+ registerMaker(FOText.class, new FOTextLayoutManagerMaker());
+ registerMaker(FObjMixed.class, new Maker());
+ registerMaker(BidiOverride.class, new BidiOverrideLayoutManagerMaker());
+ registerMaker(Inline.class, new InlineLayoutManagerMaker());
+ registerMaker(Footnote.class, new FootnodeLayoutManagerMaker());
+ registerMaker(InlineContainer.class,
new InlineContainerLayoutManagerMaker());
- makers.put(BasicLink.class, new BasicLinkLayoutManagerMaker());
- makers.put(Block.class, new BlockLayoutManagerMaker());
- makers.put(Leader.class, new LeaderLayoutManagerMaker());
- makers.put(RetrieveMarker.class, new RetrieveMarkerLayoutManagerMaker());
- makers.put(RetrieveTableMarker.class, new Maker());
- makers.put(Character.class, new CharacterLayoutManagerMaker());
- makers.put(ExternalGraphic.class,
+ registerMaker(BasicLink.class, new BasicLinkLayoutManagerMaker());
+ registerMaker(Block.class, new BlockLayoutManagerMaker());
+ registerMaker(Leader.class, new LeaderLayoutManagerMaker());
+ registerMaker(RetrieveMarker.class, new RetrieveMarkerLayoutManagerMaker());
+ registerMaker(RetrieveTableMarker.class, new Maker());
+ registerMaker(Character.class, new CharacterLayoutManagerMaker());
+ registerMaker(ExternalGraphic.class,
new ExternalGraphicLayoutManagerMaker());
- makers.put(BlockContainer.class,
+ registerMaker(BlockContainer.class,
new BlockContainerLayoutManagerMaker());
- makers.put(ListItem.class, new ListItemLayoutManagerMaker());
- makers.put(ListBlock.class, new ListBlockLayoutManagerMaker());
- makers.put(InstreamForeignObject.class,
+ registerMaker(ListItem.class, new ListItemLayoutManagerMaker());
+ registerMaker(ListBlock.class, new ListBlockLayoutManagerMaker());
+ registerMaker(InstreamForeignObject.class,
new InstreamForeignObjectLayoutManagerMaker());
- makers.put(PageNumber.class, new PageNumberLayoutManagerMaker());
- makers.put(PageNumberCitation.class,
+ registerMaker(PageNumber.class, new PageNumberLayoutManagerMaker());
+ registerMaker(PageNumberCitation.class,
new PageNumberCitationLayoutManagerMaker());
- makers.put(PageNumberCitationLast.class,
+ registerMaker(PageNumberCitationLast.class,
new PageNumberCitationLastLayoutManagerMaker());
- makers.put(Table.class, new TableLayoutManagerMaker());
- makers.put(TableBody.class, new Maker());
- makers.put(TableColumn.class, new Maker());
- makers.put(TableRow.class, new Maker());
- makers.put(TableCell.class, new Maker());
- makers.put(TableFooter.class, new Maker());
- makers.put(TableHeader.class, new Maker());
- makers.put(Wrapper.class, new WrapperLayoutManagerMaker());
- makers.put(Title.class, new InlineLayoutManagerMaker());
+ registerMaker(Table.class, new TableLayoutManagerMaker());
+ registerMaker(TableBody.class, new Maker());
+ registerMaker(TableColumn.class, new Maker());
+ registerMaker(TableRow.class, new Maker());
+ registerMaker(TableCell.class, new Maker());
+ registerMaker(TableFooter.class, new Maker());
+ registerMaker(TableHeader.class, new Maker());
+ registerMaker(Wrapper.class, new WrapperLayoutManagerMaker());
+ registerMaker(Title.class, new InlineLayoutManagerMaker());
+ }
+
+ /**
+ * Registers a Maker class for a specific formatting object.
+ * @param clazz the formatting object class
+ * @param maker the maker for the layout manager
+ */
+ protected void registerMaker(Class clazz, Maker maker) {
+ makers.put(clazz, maker);
}
/**
diff --git a/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java b/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java
index 364889b29..a92687aab 100644
--- a/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java
+++ b/src/java/org/apache/fop/render/afp/extensions/AbstractAFPExtensionObject.java
@@ -20,13 +20,14 @@
package org.apache.fop.render.afp.extensions;
// FOP
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.PropertyList;
import org.apache.fop.fo.ValidationException;
import org.apache.fop.fo.extensions.ExtensionAttachment;
-import org.xml.sax.Attributes;
-import org.xml.sax.Locator;
/**
* Base class for the AFP-specific extension elements.
@@ -60,9 +61,9 @@ public abstract class AbstractAFPExtensionObject extends FONode {
}
/** {@inheritDoc} */
- protected void addCharacters(char[] data, int start, int end,
+ protected void characters(char[] data, int start, int length,
PropertyList pList, Locator locator) {
- setupCode.setContent(new String(data, start, end - start));
+ setupCode.setContent(new String(data, start, length));
}
/** {@inheritDoc} */
diff --git a/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java b/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java
index 14865a8c9..3f534af7e 100644
--- a/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java
+++ b/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionElement.java
@@ -64,24 +64,16 @@ public abstract class AbstractPSExtensionElement extends FONode {
}
}
- /**
- * Adds characters (does nothing here)
- * @param data array of characters containing text to be added
- * @param start starting array element to add
- * @param length of data array to add
- * @param pList currently applicable PropertyList
- * @param locator location in fo source file.
- * @see org.apache.fop.fo.FONode#addCharacters(char[], int, int, PropertyList, Locator)
- */
- protected void addCharacters(char[] data, int start, int length,
+ /** {@inheritDoc} */
+ protected void characters(char[] data, int start, int length,
PropertyList pList, Locator locator) {
PSExtensionAttachment a = (PSExtensionAttachment)getExtensionAttachment();
if (a.getContent() != null) {
StringBuffer sb = new StringBuffer(a.getContent());
- sb.append(data, start, length - start);
+ sb.append(data, start, length);
a.setContent(sb.toString());
} else {
- a.setContent(new String(data, start, length - start));
+ a.setContent(new String(data, start, length));
}
}
diff --git a/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java b/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java
index 92108b551..ec90a3afd 100644
--- a/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java
+++ b/src/java/org/apache/fop/render/ps/extensions/AbstractPSExtensionObject.java
@@ -54,14 +54,14 @@ public abstract class AbstractPSExtensionObject extends FONode {
}
/** {@inheritDoc} */
- protected void addCharacters(char[] data, int start, int length,
+ protected void characters(char[] data, int start, int length,
PropertyList pList, Locator locator) {
if (setupCode.getContent() != null) {
StringBuffer sb = new StringBuffer(setupCode.getContent());
sb.append(data, start, length - start);
setupCode.setContent(sb.toString());
} else {
- setupCode.setContent(new String(data, start, length - start));
+ setupCode.setContent(new String(data, start, length));
}
}