cvs commit: xml-fop/src/java/org/apache/fop/layoutmgr LayoutManagerMaker.java LayoutManagerMapping.java AbstractLayoutManager.java ContentLayoutManager.java LayoutManager.java PageSequenceLayoutManager.java
spepping2004/12/24 04:06:26 Modified:src/java/org/apache/fop/apps FOUserAgent.java src/java/org/apache/fop/area AreaTreeHandler.java src/java/org/apache/fop/fo FONode.java FOText.java FObjMixed.java src/java/org/apache/fop/fo/flow BasicLink.java BidiOverride.java Block.java BlockContainer.java Character.java ExternalGraphic.java Footnote.java Inline.java InlineContainer.java InlineLevel.java InstreamForeignObject.java Leader.java ListBlock.java ListItem.java Marker.java PageNumber.java PageNumberCitation.java RetrieveMarker.java Table.java TableBody.java TableCell.java TableRow.java Wrapper.java src/java/org/apache/fop/fo/pagination Flow.java src/java/org/apache/fop/layoutmgr AbstractLayoutManager.java ContentLayoutManager.java LayoutManager.java PageSequenceLayoutManager.java Added: src/java/org/apache/fop/layoutmgr LayoutManagerMaker.java LayoutManagerMapping.java Log: This patch implements a pluggable LayoutManagers system, according to the ideas of Finn Bock and his patch in bug 30500. Created a LayoutManagerMaker interface, with method makeLayoutManagers(FONode, List), and two convenience methods on top of it. Created an implementation: LayoutManagerMapping. This is along the pattern of FOElementMapping. It creates a Map from FObj class to Maker objects. There are many static inner classes which are subclasses of Maker. Each subclass implements its own version of the make method. FOUserAgent has a setter and getter for LayoutManagerMakerOverride. AreaTreeHandler creates a LayoutManagerMaker, taking the user's override into account, using LayoutManagerMapping as the default. It has a get method for it. The LayoutManager interface has a get method for the AreaTreeHandler object, a reference to which is held in PageSequenceLM, the top of the LM tree. Revision ChangesPath 1.20 +20 -1 xml-fop/src/java/org/apache/fop/apps/FOUserAgent.java Index: FOUserAgent.java === RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/FOUserAgent.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- FOUserAgent.java 24 Oct 2004 00:03:49 - 1.19 +++ FOUserAgent.java 24 Dec 2004 12:06:25 - 1.20 @@ -37,6 +37,7 @@ // FOP import org.apache.fop.fo.ElementMapping; import org.apache.fop.fo.FOEventHandler; +import org.apache.fop.layoutmgr.LayoutManagerMaker; import org.apache.fop.pdf.PDFEncryptionParams; import org.apache.fop.render.Renderer; @@ -74,6 +75,7 @@ private InputHandler inputHandler = null; private Renderer rendererOverride = null; private FOEventHandler foEventHandlerOverride = null; +private LayoutManagerMaker lmMakerOverride = null; /* user configuration */ private Configuration userConfig = null; private Log log = LogFactory.getLog(FOP); @@ -164,6 +166,23 @@ */ public FOEventHandler getFOEventHandlerOverride() { return this.foEventHandlerOverride; +} + +/** + * Sets an explicit LayoutManagerMaker instance which overrides the one + * defined by the AreaTreeHandler. + * @param lmMaker the LayoutManagerMaker instance + */ +public void setLayoutManagerMakerOverride(LayoutManagerMaker lmMaker) { +this.lmMakerOverride = lmMaker; +} + +/** + * Returns the overriding LayoutManagerMaker instance, if any. + * @return the overriding LayoutManagerMaker or null + */ +public LayoutManagerMaker getLayoutManagerMakerOverride() { +return this.lmMakerOverride; } /** 1.28 +24 -3 xml-fop/src/java/org/apache/fop/area/AreaTreeHandler.java Index: AreaTreeHandler.java === RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/AreaTreeHandler.java,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- AreaTreeHandler.java 17 Dec 2004 00:19:10 - 1.27 +++ AreaTreeHandler.java 24 Dec 2004 12:06:25 - 1.28 @@ -40,6 +40,8 @@ import org.apache.fop.fo.pagination.PageSequence; import org.apache.fop.fo.pagination.Root; import org.apache.fop.layoutmgr.PageSequenceLayoutManager; +import org.apache.fop.layoutmgr.LayoutManagerMaker; +import org.apache.fop.layoutmgr.LayoutManagerMapping; /** * Area tree handler for formatting objects. @@ -72,6 +74,9 @@ // time used in rendering
cvs commit: xml-fop/src/java/org/apache/fop/render/pdf PDFRenderer.java
gmazza 2004/12/24 17:08:11 Modified:src/java/org/apache/fop/layoutmgr LayoutManagerMapping.java src/java/org/apache/fop/render/pdf PDFRenderer.java Log: More XSL 1.1-like terms for PDF bookmarks used, minor bug in TableLayoutManagerMaker fixed. Revision ChangesPath 1.2 +14 -14 xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java Index: LayoutManagerMapping.java === RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- LayoutManagerMapping.java 24 Dec 2004 12:06:26 - 1.1 +++ LayoutManagerMapping.java 25 Dec 2004 01:08:10 - 1.2 @@ -128,7 +128,7 @@ makers.put(Wrapper.class, new WrapperLayoutManagerMaker()); makers.put(Title.class, new InlineLayoutManagerMaker()); } - + public void makeLayoutManagers(FONode node, List lms) { Maker maker = (Maker) makers.get(node.getClass()); if (maker == null) { @@ -162,7 +162,7 @@ return; } } - + public static class FOTextLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { FOText foText = (FOText) node; @@ -171,7 +171,7 @@ } } } - + /* public static class FObjMixedLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { @@ -209,7 +209,7 @@ } } } - + public static class InlineLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { if (node.getChildNodes() != null) { @@ -217,36 +217,36 @@ } } } - + public static class FootnodeLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { Inline citation = ((Footnote) node).getInlineFO(); if (citation != null) { lms.add(new InlineLayoutManager(citation)); } - } + } } - + public static class InlineContainerLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { ArrayList childList = new ArrayList(); super.make(node, childList); lms.add(new ICLayoutManager((InlineContainer) node, childList)); - } + } } - + public static class BasicLinkLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { lms.add(new BasicLinkLayoutManager((BasicLink) node)); } } - + public static class BlockLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { lms.add(new BlockLayoutManager((Block) node)); } } - + public static class LeaderLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { lms.add(new LeaderLayoutManager((Leader) node)); @@ -295,7 +295,7 @@ public static class PageNumberLayoutManagerMaker extends Maker { public void make(FONode node, List lms) { lms.add(new PageNumberLayoutManager((PageNumber) node)); - } + } } public static class PageNumberCitationLayoutManagerMaker extends Maker { @@ -319,7 +319,7 @@ ArrayList columnLMs = new ArrayList(); ListIterator iter = columns.listIterator(); while (iter.hasNext()) { -columnLMs.add(new Column((TableColumn) node)); +columnLMs.add(new Column((TableColumn) iter.next())); } tlm.setColumns(columnLMs); } 1.63 +17 -16 xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.62 retrieving revision 1.63 diff -u -r1.62 -r1.63 --- PDFRenderer.java 23 Dec 2004 01:36:01 - 1.62 +++ PDFRenderer.java 25 Dec 2004 01:08:11 - 1.63 @@ -281,44 +281,45 @@ /** * @see org.apache.fop.render.Renderer#processOffDocumentItem(OffDocumentItem) */ -public void processOffDocumentItem(OffDocumentItem ext) { -// render bookmark extension -if (ext instanceof BookmarkData) { -