aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/fop/render/intermediate/IFSerializer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/org/apache/fop/render/intermediate/IFSerializer.java')
-rw-r--r--src/java/org/apache/fop/render/intermediate/IFSerializer.java42
1 files changed, 41 insertions, 1 deletions
diff --git a/src/java/org/apache/fop/render/intermediate/IFSerializer.java b/src/java/org/apache/fop/render/intermediate/IFSerializer.java
index 661a2fddd..c4fb0cb0d 100644
--- a/src/java/org/apache/fop/render/intermediate/IFSerializer.java
+++ b/src/java/org/apache/fop/render/intermediate/IFSerializer.java
@@ -38,6 +38,10 @@ import org.apache.xmlgraphics.util.XMLizable;
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.render.RenderingContext;
+import org.apache.fop.render.intermediate.extensions.AbstractAction;
+import org.apache.fop.render.intermediate.extensions.BookmarkTree;
+import org.apache.fop.render.intermediate.extensions.Link;
+import org.apache.fop.render.intermediate.extensions.NamedDestination;
import org.apache.fop.traits.BorderProps;
import org.apache.fop.traits.RuleStyle;
import org.apache.fop.util.ColorUtil;
@@ -47,7 +51,8 @@ import org.apache.fop.util.XMLUtil;
/**
* IFPainter implementation that serializes the intermediate format to XML.
*/
-public class IFSerializer extends AbstractXMLWritingIFDocumentHandler implements IFConstants, IFPainter {
+public class IFSerializer extends AbstractXMLWritingIFDocumentHandler
+ implements IFConstants, IFPainter, IFDocumentNavigationHandler {
private IFDocumentHandler mimicHandler;
@@ -83,6 +88,11 @@ public class IFSerializer extends AbstractXMLWritingIFDocumentHandler implements
}
}
+ /** {@inheritDoc} */
+ public IFDocumentNavigationHandler getDocumentNavigationHandler() {
+ return this;
+ }
+
public void mimicDocumentHandler(IFDocumentHandler targetHandler) {
this.mimicHandler = targetHandler;
}
@@ -553,4 +563,34 @@ public class IFSerializer extends AbstractXMLWritingIFDocumentHandler implements
XMLUtil.addAttribute(atts, localName, value);
}
+ // ---=== IFDocumentNavigationHandler ===---
+
+ /** {@inheritDoc} */
+ public void renderNamedDestination(NamedDestination destination) throws IFException {
+ renderXMLizable(destination);
+ }
+
+ /** {@inheritDoc} */
+ public void renderBookmarkTree(BookmarkTree tree) throws IFException {
+ renderXMLizable(tree);
+ }
+
+ /** {@inheritDoc} */
+ public void addResolvedAction(AbstractAction action) throws IFException {
+ renderXMLizable(action);
+ }
+
+ /** {@inheritDoc} */
+ public void renderLink(Link link) throws IFException {
+ renderXMLizable(link);
+ }
+
+ private void renderXMLizable(XMLizable object) throws IFException {
+ try {
+ object.toSAX(handler);
+ } catch (SAXException e) {
+ throw new IFException("SAX error serializing object", e);
+ }
+ }
+
}