From: Peter Bernard West Date: Sat, 8 May 2004 13:01:40 +0000 (+0000) Subject: Methods in FObjects made static X-Git-Tag: Defoe_export~188 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b3d039f1167d35a57e76823ba15c8e168fdd91dc;p=xmlgraphics-fop.git Methods in FObjects made static git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/FOP_0-20-0_Alt-Design@197566 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/fo/flow/FoBasicLink.java b/src/java/org/apache/fop/fo/flow/FoBasicLink.java index 3ffc9e49d..bd6cc732b 100644 --- a/src/java/org/apache/fop/fo/flow/FoBasicLink.java +++ b/src/java/org/apache/fop/fo/flow/FoBasicLink.java @@ -136,7 +136,7 @@ public class FoBasicLink extends FOPageSeqNode { ev = xmlevents.expectOutOfLinePcdataOrInlineOrBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, ev, stateFlags); if (ev.getType() != XmlEvent.CHARACTERS) ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoBidiOverride.java b/src/java/org/apache/fop/fo/flow/FoBidiOverride.java index 92d0fda33..54399b840 100644 --- a/src/java/org/apache/fop/fo/flow/FoBidiOverride.java +++ b/src/java/org/apache/fop/fo/flow/FoBidiOverride.java @@ -123,7 +123,7 @@ public class FoBidiOverride extends FOPageSeqNode { ev = xmlevents.expectOutOfLinePcdataOrInlineOrBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, ev, stateFlags); if (ev.getType() != XmlEvent.CHARACTERS) ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoBlock.java b/src/java/org/apache/fop/fo/flow/FoBlock.java index 12aa3d465..770615f0e 100644 --- a/src/java/org/apache/fop/fo/flow/FoBlock.java +++ b/src/java/org/apache/fop/fo/flow/FoBlock.java @@ -147,7 +147,7 @@ public class FoBlock extends FOPageSeqNode { ev = xmlevents.expectOutOfLinePcdataOrInlineOrBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, ev, stateFlags); if (ev.getType() != XmlEvent.CHARACTERS) { ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoBlockContainer.java b/src/java/org/apache/fop/fo/flow/FoBlockContainer.java index a262254bd..a3073492b 100644 --- a/src/java/org/apache/fop/fo/flow/FoBlockContainer.java +++ b/src/java/org/apache/fop/fo/flow/FoBlockContainer.java @@ -142,7 +142,7 @@ public class FoBlockContainer extends FOPageSeqNode { throw new FOPException ("%block; not found in fo:block-container"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); // Clear the blockage ev = xmlevents.getEndElement(XmlEventReader.DISCARD_EV, ev); @@ -155,7 +155,7 @@ public class FoBlockContainer extends FOPageSeqNode { ev = xmlevents.expectOutOfLineBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoFloat.java b/src/java/org/apache/fop/fo/flow/FoFloat.java index 9d830c660..38d423df6 100644 --- a/src/java/org/apache/fop/fo/flow/FoFloat.java +++ b/src/java/org/apache/fop/fo/flow/FoFloat.java @@ -117,7 +117,7 @@ public class FoFloat extends FOPageSeqNode { throw new FOPException ("%block; not found in fo:float"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags | FONode.MC_FLOAT); // Clear the blockage @@ -131,7 +131,7 @@ public class FoFloat extends FOPageSeqNode { ev = xmlevents.expectOutOfLineBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags | FONode.MC_FLOAT); ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoFlow.java b/src/java/org/apache/fop/fo/flow/FoFlow.java index 68ba788bb..947a1131e 100644 --- a/src/java/org/apache/fop/fo/flow/FoFlow.java +++ b/src/java/org/apache/fop/fo/flow/FoFlow.java @@ -28,6 +28,7 @@ import java.util.Arrays; import java.util.BitSet; import org.apache.fop.apps.FOPException; +import org.apache.fop.area.Area; import org.apache.fop.datastructs.TreeException; import org.apache.fop.fo.FONode; import org.apache.fop.fo.FOPageSeqNode; @@ -98,7 +99,7 @@ public class FoFlow extends FOPageSeqNode { if ((ev = xmlevents.expectBlock()) == null) throw new FOPException("%block; not found in fo:flow"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, FONode.FLOW_SET); // Clear the blockage @@ -109,7 +110,7 @@ public class FoFlow extends FOPageSeqNode { ev = xmlevents.expectBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, parent, this, (FoXmlEvent)ev, FONode.FLOW_SET); ev = xmlevents.getEndElement( @@ -124,4 +125,19 @@ public class FoFlow extends FOPageSeqNode { makeSparsePropsSet(); } + public Area getReferenceRectangle() throws FOPException { + // TODO Reference rectangle is assumed to be the content rectangle of + // the first region into which the content is flowed. For region-body + // it is normal-flow reference-area; for other regions it is the + // region-reference-area. See + // 7.3 Reference Rectangle for Percentage Computations + throw new FOPException("Called from FoFlow"); + } + + public Area getLayoutContext() { + // The layout context for fo:flow is is the region-body-reference-area. + // TODO - the real version + Area context = null; + return context; + } } diff --git a/src/java/org/apache/fop/fo/flow/FoFootnoteBody.java b/src/java/org/apache/fop/fo/flow/FoFootnoteBody.java index 0c6eb18c0..bb17f6817 100644 --- a/src/java/org/apache/fop/fo/flow/FoFootnoteBody.java +++ b/src/java/org/apache/fop/fo/flow/FoFootnoteBody.java @@ -115,7 +115,7 @@ public class FoFootnoteBody extends FOPageSeqNode { throw new FOPException ("%block; not found in fo:footnote-body"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); // Clear the blockage ev = xmlevents.getEndElement(XmlEventReader.DISCARD_EV, ev); @@ -128,7 +128,7 @@ public class FoFootnoteBody extends FOPageSeqNode { ev = xmlevents.expectOutOfLineBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoInline.java b/src/java/org/apache/fop/fo/flow/FoInline.java index 1bbf50969..4d386bf33 100644 --- a/src/java/org/apache/fop/fo/flow/FoInline.java +++ b/src/java/org/apache/fop/fo/flow/FoInline.java @@ -138,7 +138,7 @@ public class FoInline extends FOPageSeqNode { if (ev != null) { // Generate the flow object //System.out.println("Generating flow object for " + ev); - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, ev, stateFlags); if (ev.getType() != XmlEvent.CHARACTERS) { ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoInlineContainer.java b/src/java/org/apache/fop/fo/flow/FoInlineContainer.java index e17363a0d..9d7861132 100644 --- a/src/java/org/apache/fop/fo/flow/FoInlineContainer.java +++ b/src/java/org/apache/fop/fo/flow/FoInlineContainer.java @@ -138,7 +138,7 @@ public class FoInlineContainer extends FOPageSeqNode { throw new FOPException ("%block; not found in fo:inline-container"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); // Clear the blockage ev = xmlevents.getEndElement( @@ -152,7 +152,7 @@ public class FoInlineContainer extends FOPageSeqNode { ev = xmlevents.expectOutOfLineBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoLeader.java b/src/java/org/apache/fop/fo/flow/FoLeader.java index 4f303d6d9..adc96af2e 100644 --- a/src/java/org/apache/fop/fo/flow/FoLeader.java +++ b/src/java/org/apache/fop/fo/flow/FoLeader.java @@ -147,7 +147,7 @@ public class FoLeader extends FOPageSeqNode { ev = xmlevents.expectOutOfLinePcdataOrInline(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, ev, stateFlags | FONode.MC_LEADER); if (ev.getType() != XmlEvent.CHARACTERS) { diff --git a/src/java/org/apache/fop/fo/flow/FoListItemBody.java b/src/java/org/apache/fop/fo/flow/FoListItemBody.java index e3cae3baf..d4161936f 100644 --- a/src/java/org/apache/fop/fo/flow/FoListItemBody.java +++ b/src/java/org/apache/fop/fo/flow/FoListItemBody.java @@ -118,7 +118,7 @@ public class FoListItemBody extends FOPageSeqNode { throw new FOPException ("%block; not found in fo:list-item-body"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); // Clear the blockage ev = xmlevents.getEndElement(XmlEventReader.DISCARD_EV, ev); @@ -131,7 +131,7 @@ public class FoListItemBody extends FOPageSeqNode { ev = xmlevents.expectOutOfLineBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); ev = xmlevents.getEndElement(XmlEventReader.DISCARD_EV, ev); diff --git a/src/java/org/apache/fop/fo/flow/FoListItemLabel.java b/src/java/org/apache/fop/fo/flow/FoListItemLabel.java index cbc20ea3e..d700e9ae3 100644 --- a/src/java/org/apache/fop/fo/flow/FoListItemLabel.java +++ b/src/java/org/apache/fop/fo/flow/FoListItemLabel.java @@ -117,7 +117,7 @@ public class FoListItemLabel extends FOPageSeqNode { throw new FOPException ("%block; not found in fo:list-item-label"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); // Clear the blockage ev = xmlevents.getEndElement(XmlEventReader.DISCARD_EV, ev); @@ -130,7 +130,7 @@ public class FoListItemLabel extends FOPageSeqNode { ev = xmlevents.expectOutOfLineBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); ev = xmlevents.getEndElement(XmlEventReader.DISCARD_EV, ev); namespaces.relinquishEvent(ev); diff --git a/src/java/org/apache/fop/fo/flow/FoMultiCase.java b/src/java/org/apache/fop/fo/flow/FoMultiCase.java index 152920661..8fb08fe9e 100644 --- a/src/java/org/apache/fop/fo/flow/FoMultiCase.java +++ b/src/java/org/apache/fop/fo/flow/FoMultiCase.java @@ -124,7 +124,7 @@ public class FoMultiCase extends FOPageSeqNode { if (ev != null) { // Generate the flow object //System.out.println("Generating flow object for " + ev); - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, ev, stateFlags); if (ev.getType() != XmlEvent.CHARACTERS) { ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoMultiToggle.java b/src/java/org/apache/fop/fo/flow/FoMultiToggle.java index 8333f76d9..9a34e610f 100644 --- a/src/java/org/apache/fop/fo/flow/FoMultiToggle.java +++ b/src/java/org/apache/fop/fo/flow/FoMultiToggle.java @@ -116,7 +116,7 @@ public class FoMultiToggle extends FOPageSeqNode { ev = xmlevents.expectOutOfLinePcdataOrInlineOrBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, ev, stateFlags); if (ev.getType() != XmlEvent.CHARACTERS) { ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoPageSequence.java b/src/java/org/apache/fop/fo/flow/FoPageSequence.java index 86069b60d..a7c75fb6e 100644 --- a/src/java/org/apache/fop/fo/flow/FoPageSequence.java +++ b/src/java/org/apache/fop/fo/flow/FoPageSequence.java @@ -33,6 +33,7 @@ import java.util.NoSuchElementException; import java.util.Set; import org.apache.fop.apps.FOPException; +import org.apache.fop.area.Area; import org.apache.fop.area.Page; import org.apache.fop.datastructs.TreeException; import org.apache.fop.fo.FONode; @@ -121,6 +122,15 @@ public class FoPageSequence extends FONode { public Map staticContents = null; /** Child index of fo:flow child. */ private int flowChild = -1; + /** The page currently being processed by this page-sequence */ + private Page page = null; + /** + * Gets the current page of this page-sequence + * @return the page + */ + public Page getPage() { + return page; + } /** * @param foTree the FO tree being built @@ -137,6 +147,7 @@ public class FoPageSequence extends FONode { FONode.PAGESEQ_SET, sparsePropsMap, sparseIndices); XmlEvent ev; // Look for optional title + log.finer("page-sequence title"); String nowProcessing = "title"; try { ev = xmlevents.expectStartElement @@ -150,6 +161,7 @@ public class FoPageSequence extends FONode { } // else ignore // Look for zero or more static-content subtrees + log.finer("static-content"); nowProcessing = "static-content"; while ((ev = xmlevents.expectStartElement (FObjectNames.STATIC_CONTENT, XmlEvent.DISCARD_W_SPACE)) @@ -192,12 +204,13 @@ public class FoPageSequence extends FONode { staticContents = Collections.unmodifiableMap(staticSubtrees); } // Generate a null page for the flow(s) - Page page = Page.setupNullPage(this, foTree.getNextPageId()); + page = Page.setupNullPage(this, foTree.getNextPageId()); // Look for one or more fo:flow // must have at least one: N.B. in 1.0, only one is allowed, // but in 1.1. multiple flows are allowed with different // flow maps + log.finer("flow"); nowProcessing = "flow"; ev = xmlevents.expectStartElement (FObjectNames.FLOW, XmlEvent.DISCARD_W_SPACE); @@ -227,4 +240,15 @@ public class FoPageSequence extends FONode { makeSparsePropsSet(); } + public Area getReferenceRectangle() throws FOPException { + // TODO Reference rectangle is assumed to be equivalent to the + // "auto" value on "page-height" and "page-width". The + // inline-progression-dimension and block-progression-dimension are + // calculated according to the computed values of the + // reference-orientation and writing-mode of the FO for which the + // percentage is calculated. See + // 7.3 Reference Rectangle for Percentage Computations + throw new FOPException("Called from FoPageSequence"); + } + } diff --git a/src/java/org/apache/fop/fo/flow/FoStaticContent.java b/src/java/org/apache/fop/fo/flow/FoStaticContent.java index f51fa5d65..03145876e 100644 --- a/src/java/org/apache/fop/fo/flow/FoStaticContent.java +++ b/src/java/org/apache/fop/fo/flow/FoStaticContent.java @@ -28,6 +28,7 @@ import java.util.Arrays; import java.util.BitSet; import org.apache.fop.apps.FOPException; +import org.apache.fop.area.Area; import org.apache.fop.datastructs.TreeException; import org.apache.fop.datatypes.NCName; import org.apache.fop.fo.FONode; @@ -151,5 +152,14 @@ public class FoStaticContent extends FOPageSeqNode { public String getFlowName() { return flowName; } + + public Area getReferenceRectangle() throws FOPException { + // TODO Reference rectangle is assumed to be the content rectangle of + // the first region into which the content is flowed. For region-body + // it is normal-flow reference-area; for other regions it is the + // region-reference-area. See + // 7.3 Reference Rectangle for Percentage Computations + throw new FOPException("Called from FoStaticContent"); + } } diff --git a/src/java/org/apache/fop/fo/flow/FoTableCaption.java b/src/java/org/apache/fop/fo/flow/FoTableCaption.java index 0e3d9858d..e3f687a82 100644 --- a/src/java/org/apache/fop/fo/flow/FoTableCaption.java +++ b/src/java/org/apache/fop/fo/flow/FoTableCaption.java @@ -128,7 +128,7 @@ public class FoTableCaption extends FOPageSeqNode { throw new FOPException ("%block; not found in fo:table-caption"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); // Clear the blockage ev = xmlevents.getEndElement(XmlEventReader.DISCARD_EV, ev); @@ -141,7 +141,7 @@ public class FoTableCaption extends FOPageSeqNode { ev = xmlevents.expectOutOfLineBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); ev = xmlevents.getEndElement( diff --git a/src/java/org/apache/fop/fo/flow/FoTableCell.java b/src/java/org/apache/fop/fo/flow/FoTableCell.java index fe3e4badd..8a8f9c27a 100644 --- a/src/java/org/apache/fop/fo/flow/FoTableCell.java +++ b/src/java/org/apache/fop/fo/flow/FoTableCell.java @@ -137,7 +137,7 @@ public class FoTableCell extends FOPageSeqNode { throw new FOPException ("%block; not found in fo:table-cell"); // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); // Clear the blockage @@ -151,7 +151,7 @@ public class FoTableCell extends FOPageSeqNode { ev = xmlevents.expectOutOfLineBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, (FoXmlEvent)ev, stateFlags); ev = xmlevents.getEndElement(XmlEventReader.DISCARD_EV, ev); diff --git a/src/java/org/apache/fop/fo/flow/FoTitle.java b/src/java/org/apache/fop/fo/flow/FoTitle.java index 518374b65..0ae99af36 100644 --- a/src/java/org/apache/fop/fo/flow/FoTitle.java +++ b/src/java/org/apache/fop/fo/flow/FoTitle.java @@ -27,6 +27,7 @@ package org.apache.fop.fo.flow; import java.util.Arrays; import java.util.BitSet; import org.apache.fop.apps.FOPException; +import org.apache.fop.area.Area; import org.apache.fop.datastructs.TreeException; import org.apache.fop.fo.FONode; import org.apache.fop.fo.FOPageSeqNode; @@ -119,7 +120,7 @@ public class FoTitle extends FOPageSeqNode { ev = xmlevents.expectOutOfLinePcdataOrInline(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, parent, this, ev, FONode.TITLE_SET); if (ev.getType() != XmlEvent.CHARACTERS) ev = xmlevents.getEndElement( @@ -140,4 +141,18 @@ public class FoTitle extends FOPageSeqNode { makeSparsePropsSet(); } + public Area getReferenceRectangle() throws FOPException { + // TODO Reference rectangle is assumed to be equivalent to the + // "auto" value on "page-height" and "page-width". The + // inline-progression-dimension and block-progression-dimension are + // calculated according to the computed values of the + // reference-orientation and writing-mode of the FO for which the + // percentage is calculated. See + // 7.3 Reference Rectangle for Percentage Computations + // This applies to all descendants of fo:title, except that for + // descendants, the relevant reference-orientation and writing-mode are + // those applying to fo:title. + throw new FOPException("Called from FoTitle"); + } + } diff --git a/src/java/org/apache/fop/fo/flow/FoWrapper.java b/src/java/org/apache/fop/fo/flow/FoWrapper.java index 23054b586..924742a27 100644 --- a/src/java/org/apache/fop/fo/flow/FoWrapper.java +++ b/src/java/org/apache/fop/fo/flow/FoWrapper.java @@ -102,7 +102,7 @@ public class FoWrapper extends FOPageSeqNode { ev = xmlevents.expectOutOfLinePcdataOrInlineOrBlock(); if (ev != null) { // Generate the flow object - FObjects.fobjects.makePageSeqFOChild( + FObjects.makePageSeqFOChild( foTree, pageSequence, this, ev, stateFlags); if (ev.getType() != XmlEvent.CHARACTERS) ev = xmlevents.getEndElement(