vmote 2003/08/26 15:11:18 Modified: src/java/org/apache/fop/fo/pagination Region.java SimplePageMaster.java src/java/org/apache/fop/layoutmgr PageLayoutManager.java Log: move logic from fo/pagination/SimplePageMaster.end() to layoutmgr/PageLayoutManager.createSimplePageMasterAreas() Revision Changes Path 1.7 +1 -1 xml-fop/src/java/org/apache/fop/fo/pagination/Region.java Index: Region.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/pagination/Region.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Region.java 24 Aug 2003 18:04:06 -0000 1.6 +++ Region.java 26 Aug 2003 22:11:17 -0000 1.7 @@ -204,7 +204,7 @@ * Area tree. * @return the region area class */ - protected abstract int getRegionAreaClass(); + public abstract int getRegionAreaClass(); /** * Returns the default region name (xsl-region-before, xsl-region-start, 1.7 +5 -67 xml-fop/src/java/org/apache/fop/fo/pagination/SimplePageMaster.java Index: SimplePageMaster.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/pagination/SimplePageMaster.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- SimplePageMaster.java 24 Aug 2003 18:04:06 -0000 1.6 +++ SimplePageMaster.java 26 Aug 2003 22:11:17 -0000 1.7 @@ -51,7 +51,6 @@ package org.apache.fop.fo.pagination; // Java -import java.awt.Rectangle; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -60,16 +59,12 @@ import org.xml.sax.Attributes; // FOP -import org.apache.fop.area.CTM; -import org.apache.fop.datatypes.FODimension; import org.apache.fop.fo.FONode; import org.apache.fop.fo.FObj; import org.apache.fop.fo.FOTreeVisitor; import org.apache.fop.area.PageViewport; import org.apache.fop.area.Page; -import org.apache.fop.area.RegionViewport; import org.apache.fop.area.RegionReference; -import org.apache.fop.fo.properties.CommonMarginBlock; import org.apache.fop.layout.PageMaster; import org.apache.fop.apps.FOPException; @@ -119,67 +114,6 @@ } /** - * At the end of this element read all the information and create - * the page master. - */ - protected void end() { - int pageWidth = - this.properties.get("page-width").getLength().getValue(); - int pageHeight = - this.properties.get("page-height").getLength().getValue(); - // this.properties.get("reference-orientation"); - // this.properties.get("writing-mode"); - - // Get absolute margin properties (top, left, bottom, right) - CommonMarginBlock mProps = propMgr.getMarginProps(); - - /* Create the page reference area rectangle (0,0 is at top left - * of the "page media" and y increases - * when moving towards the bottom of the page. - * The media rectangle itself is (0,0,pageWidth,pageHeight). - */ - Rectangle pageRefRect = - new Rectangle(mProps.marginLeft, mProps.marginTop, - pageWidth - mProps.marginLeft - mProps.marginRight, - pageHeight - mProps.marginTop - mProps.marginBottom); - - // ??? KL shouldn't this take the viewport too??? - Page page = new Page(); // page reference area - - // Set up the CTM on the page reference area based on writing-mode - // and reference-orientation - FODimension reldims = new FODimension(0, 0); - CTM pageCTM = CTM.getCTMandRelDims(propMgr.getAbsRefOrient(), - propMgr.getWritingMode(), pageRefRect, reldims); - - // Create a RegionViewport/ reference area pair for each page region - - boolean bHasBody = false; - - for (Iterator regenum = regions.values().iterator(); - regenum.hasNext();) { - Region r = (Region)regenum.next(); - RegionViewport rvp = r.makeRegionViewport(reldims, pageCTM); - rvp.setRegion(r.makeRegionReferenceArea(rvp.getViewArea())); - page.setRegion(r.getRegionAreaClass(), rvp); - if (r.getRegionAreaClass() == RegionReference.BODY) { - bHasBody = true; - } - } - - if (!bHasBody) { - getLogger().error("simple-page-master has no region-body"); - } - - this.pageMaster = new PageMaster(new PageViewport(page, - new Rectangle(0, 0, pageWidth, pageHeight))); - - // regions = null; // PageSequence access SimplePageMaster.... - children = null; - properties = null; - } - - /** * @see org.apache.fop.fo.FObj#generatesReferenceAreas() */ public boolean generatesReferenceAreas() { @@ -194,6 +128,10 @@ return this.pageMaster; } + public void setPageMaster(PageMaster pageMaster) { + this.pageMaster = pageMaster; + } + /** * Returns the next page master. For simple-page-master this is always the * same as the previous. @@ -251,7 +189,7 @@ * Returns a Map of regions associated with this simple-page-master * @return the regions */ - protected Map getRegions() { + public Map getRegions() { return regions; } 1.5 +71 -3 xml-fop/src/java/org/apache/fop/layoutmgr/PageLayoutManager.java Index: PageLayoutManager.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/PageLayoutManager.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- PageLayoutManager.java 26 Aug 2003 20:32:26 -0000 1.4 +++ PageLayoutManager.java 26 Aug 2003 22:11:17 -0000 1.5 @@ -51,11 +51,14 @@ package org.apache.fop.layoutmgr; import org.apache.fop.apps.FOPException; + +import org.apache.fop.area.CTM; import org.apache.fop.area.AreaTree; import org.apache.fop.area.AreaTreeModel; import org.apache.fop.area.Area; import org.apache.fop.area.PageViewport; import org.apache.fop.area.Flow; +import org.apache.fop.area.Page; import org.apache.fop.area.RegionViewport; import org.apache.fop.area.RegionReference; import org.apache.fop.area.BodyRegion; @@ -64,20 +67,28 @@ import org.apache.fop.area.BeforeFloat; import org.apache.fop.area.Footnote; import org.apache.fop.area.Resolveable; + +import org.apache.fop.datatypes.FODimension; + import org.apache.fop.fo.flow.Marker; -import org.apache.fop.fo.properties.Constants; + import org.apache.fop.fo.pagination.PageNumberGenerator; import org.apache.fop.fo.pagination.PageSequence; import org.apache.fop.fo.pagination.Region; import org.apache.fop.fo.properties.RetrieveBoundary; import org.apache.fop.fo.pagination.SimplePageMaster; import org.apache.fop.fo.pagination.StaticContent; + +import org.apache.fop.fo.properties.CommonMarginBlock; +import org.apache.fop.fo.properties.Constants; + import org.apache.fop.layout.PageMaster; import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.apache.fop.apps.*; +import java.awt.Rectangle; +import java.util.Iterator; /** * LayoutManager for a PageSequence and its flow. @@ -715,7 +726,12 @@ + "' does not map to the region-body in page-master '" + pageSequence.getCurrentSimplePageMaster().getMasterName() + "'"); } - PageMaster pageMaster = pageSequence.getCurrentSimplePageMaster().getPageMaster(); + SimplePageMaster currentSimplePageMaster = pageSequence.getCurrentSimplePageMaster(); + PageMaster pageMaster = currentSimplePageMaster.getPageMaster(); + if (pageMaster == null) { + createSimplePageMasterAreas(currentSimplePageMaster); + } + pageMaster = pageSequence.getCurrentSimplePageMaster().getPageMaster(); PageViewport p = pageMaster.makePage(); return p; // The page will have a viewport/reference area pair defined @@ -728,6 +744,58 @@ // handle the 'force-page-count' //forcePage(areaTree, firstAvailPageNumber); + } + + public void createSimplePageMasterAreas(SimplePageMaster node) { + int pageWidth = + node.properties.get("page-width").getLength().getValue(); + int pageHeight = + node.properties.get("page-height").getLength().getValue(); + // Get absolute margin properties (top, left, bottom, right) + CommonMarginBlock mProps = node.getPropertyManager().getMarginProps(); + + /* Create the page reference area rectangle (0,0 is at top left + * of the "page media" and y increases + * when moving towards the bottom of the page. + * The media rectangle itself is (0,0,pageWidth,pageHeight). + */ + Rectangle pageRefRect = + new Rectangle(mProps.marginLeft, mProps.marginTop, + pageWidth - mProps.marginLeft - mProps.marginRight, + pageHeight - mProps.marginTop - mProps.marginBottom); + + // ??? KL shouldn't this take the viewport too??? + Page page = new Page(); // page reference area + + // Set up the CTM on the page reference area based on writing-mode + // and reference-orientation + FODimension reldims = new FODimension(0, 0); + CTM pageCTM = CTM.getCTMandRelDims(node.getPropertyManager().getAbsRefOrient(), + node.getPropertyManager().getWritingMode(), pageRefRect, reldims); + + // Create a RegionViewport/ reference area pair for each page region + + boolean bHasBody = false; + + for (Iterator regenum = node.getRegions().values().iterator(); + regenum.hasNext();) { + Region r = (Region)regenum.next(); + RegionViewport rvp = r.makeRegionViewport(reldims, pageCTM); + rvp.setRegion(r.makeRegionReferenceArea(rvp.getViewArea())); + page.setRegion(r.getRegionAreaClass(), rvp); + if (r.getRegionAreaClass() == RegionReference.BODY) { + bHasBody = true; + } + } + + if (!bHasBody) { + node.getLogger().error("simple-page-master has no region-body"); + } + + node.setPageMaster(new PageMaster(new PageViewport(page, + new Rectangle(0, 0, pageWidth, pageHeight)))); + + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]