pietsch 2003/02/16 16:09:44
Modified: src/org/apache/fop/apps Tag: fop-0_20_2-maintain
StreamRenderer.java
src/org/apache/fop/fo Tag: fop-0_20_2-maintain FONode.java
FObj.java
src/org/apache/fop/fo/flow Tag: fop-0_20_2-maintain
AbstractTableBody.java Block.java ListBlock.java
ListItem.java Marker.java RetrieveMarker.java
Table.java
src/org/apache/fop/layout Tag: fop-0_20_2-maintain Area.java
AreaTree.java Page.java
src/org/apache/fop/render/xml Tag: fop-0_20_2-maintain
XMLRenderer.java
src/org/apache/fop/svg Tag: fop-0_20_2-maintain
PDFGraphics2D.java
Log:
Revamped marker handling. Retrieving markers works now always for
all retrieve boundaries. Long markers should also work now.
First-including-carryover does not work yet. Last-ending-within-page
probably doesn't work yet either.
Submitted by: Based on patch submitted by Marc C. Allman
Revision Changes Path
No revision
No revision
1.6.2.9 +63 -75 xml-fop/src/org/apache/fop/apps/Attic/StreamRenderer.java
Index: StreamRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/Attic/StreamRenderer.java,v
retrieving revision 1.6.2.8
retrieving revision 1.6.2.9
diff -u -r1.6.2.8 -r1.6.2.9
--- StreamRenderer.java 19 Nov 2002 01:03:57 -0000 1.6.2.8
+++ StreamRenderer.java 17 Feb 2003 00:09:42 -0000 1.6.2.9
@@ -13,13 +13,14 @@
import org.xml.sax.SAXException;
-import org.apache.fop.layout.FontInfo;
-import org.apache.fop.layout.Page;
-import org.apache.fop.render.Renderer;
-import org.apache.fop.layout.AreaTree;
import org.apache.fop.datatypes.IDReferences;
import org.apache.fop.extensions.ExtensionObj;
+import org.apache.fop.fo.flow.Marker;
import org.apache.fop.fo.pagination.PageSequence;
+import org.apache.fop.layout.AreaTree;
+import org.apache.fop.layout.FontInfo;
+import org.apache.fop.layout.Page;
+import org.apache.fop.render.Renderer;
import org.apache.avalon.framework.logger.Logger;
@@ -98,6 +99,13 @@
*/
private ArrayList extensions = new ArrayList();
+ /**
+ * The list of markers.
+ */
+ private ArrayList documentMarkers;
+ private ArrayList currentPageSequenceMarkers;
+ private PageSequence currentPageSequence;
+
private Logger log;
public StreamRenderer(OutputStream outputStream, Renderer renderer) {
@@ -126,7 +134,7 @@
pageCount = 0;
if (MEM_PROFILE_WITH_GC)
- System.gc(); // This takes time but gives better results
+ System.gc(); // This takes time but gives better results
initialMemory = runtime.totalMemory() - runtime.freeMemory();
startTime = System.currentTimeMillis();
@@ -158,7 +166,7 @@
}
if (MEM_PROFILE_WITH_GC)
- System.gc(); // This takes time but gives better results
+ System.gc(); // This takes time but gives better results
long memoryNow = runtime.totalMemory() - runtime.freeMemory();
long memoryUsed = (memoryNow - initialMemory) / 1024L;
@@ -217,33 +225,50 @@
public synchronized void queuePage(Page page)
throws FOPException, IOException {
+
+ // process markers
+ PageSequence pageSequence = page.getPageSequence();
+ if (pageSequence != currentPageSequence) {
+ currentPageSequence = pageSequence;
+ currentPageSequenceMarkers = null;
+ }
+ ArrayList markers = page.getMarkers();
+ if (markers != null) {
+ if (documentMarkers == null) {
+ documentMarkers = new ArrayList();
+ }
+ if (currentPageSequenceMarkers == null) {
+ currentPageSequenceMarkers = new ArrayList();
+ }
+ for (int i=0;i<markers.size();i++) {
+ Marker marker = (Marker)markers.get(i);
+ marker.releaseRegistryArea();
+ currentPageSequenceMarkers.add(marker);
+ documentMarkers.add(marker);
+ }
+ }
+
/*
Try to optimise on the common case that there are
no pages pending and that all ID references are
valid on the current pages. This short-cuts the
pipeline and renders the area immediately.
*/
- if ((renderQueue.size() == 0) && idReferences.isEveryIdValid())
+ if ((renderQueue.size() == 0) && idReferences.isEveryIdValid()) {
renderer.render(page, outputStream);
- else
- addToRenderQueue(page);
-
+ } else {
+ RenderQueueEntry entry = new RenderQueueEntry(page);
+ renderQueue.add(entry);
+ /*
+ The just-added entry could (possibly) resolve the
+ waiting entries, so we try to process the queue
+ now to see.
+ */
+ processQueue(false);
+ }
pageCount++;
}
- private synchronized void addToRenderQueue(Page page)
- throws FOPException, IOException {
- RenderQueueEntry entry = new RenderQueueEntry(page);
- renderQueue.add(entry);
-
- /*
- The just-added entry could (possibly) resolve the
- waiting entries, so we try to process the queue
- now to see.
- */
- processQueue(false);
- }
-
/**
Try to process the queue from the first entry forward.
If an entry can't be processed, then the queue can't
@@ -266,7 +291,7 @@
plus a list of outstanding ID references that need to be
resolved before the Page can be renderered.<P>
*/
- class RenderQueueEntry extends Object {
+ class RenderQueueEntry {
/*
The Page that has outstanding ID references.
*/
@@ -309,55 +334,18 @@
}
}
- // unused and broken
-// public Page getNextPage(Page current, boolean isWithinPageSequence,
-// boolean isFirstCall) {
-// Page nextPage = null;
-// int pageIndex = 0;
-// if (isFirstCall)
-// pageIndex = renderQueue.size();
-// else
-// pageIndex = renderQueue.indexOf(current);
-// if ((pageIndex + 1) < renderQueue.size()) {
-// nextPage = ((RenderQueueEntry)renderQueue
-// .get(pageIndex + 1)).getPage();
-// if (isWithinPageSequence
-//
&&!nextPage.getPageSequence().equals(current.getPageSequence())) {
-// nextPage = null;
-// }
-// }
-// return nextPage;
-// }
-
- public Page getPreviousPage(Page current, boolean isWithinPageSequence,
- boolean isFirstCall) {
- if (isFirstCall) {
- int pageIndex = renderQueue.size();
- if (pageIndex > 0) {
- Page previousPage = ((RenderQueueEntry)renderQueue
- .get(pageIndex - 1)).getPage();
- PageSequence currentPS = current.getPageSequence();
- PageSequence previousPS = previousPage.getPageSequence();
- if (!isWithinPageSequence || previousPS.equals(currentPS)) {
- return previousPage;
- }
- }
- } else {
- for (int pageIndex=renderQueue.size()-1;pageIndex>0;pageIndex--) {
- Page page = ((RenderQueueEntry)renderQueue
- .get(pageIndex)).getPage();
- if (current.equals(page)) {
- Page previousPage = ((RenderQueueEntry)renderQueue
- .get(pageIndex - 1)).getPage();
- PageSequence currentPS = current.getPageSequence();
- PageSequence previousPS = previousPage.getPageSequence();
- if (!isWithinPageSequence || previousPS.equals(currentPS)) {
- return previousPage;
- }
- return null;
- }
- }
- }
- return null;
+ // Auxillary function for retrieving markers.
+ public ArrayList getDocumentMarkers() {
+ return documentMarkers;
+ }
+
+ // Auxillary function for retrieving markers.
+ public PageSequence getCurrentPageSequence() {
+ return currentPageSequence;
+ }
+
+ // Auxillary function for retrieving markers.
+ public ArrayList getCurrentPageSequenceMarkers() {
+ return currentPageSequenceMarkers;
}
}
No revision
No revision
1.21.2.9 +2 -1 xml-fop/src/org/apache/fop/fo/FONode.java
Index: FONode.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/FONode.java,v
retrieving revision 1.21.2.8
retrieving revision 1.21.2.9
diff -u -r1.21.2.8 -r1.21.2.9
--- FONode.java 22 Nov 2002 15:10:44 -0000 1.21.2.8
+++ FONode.java 17 Feb 2003 00:09:42 -0000 1.21.2.9
@@ -109,6 +109,7 @@
public void resetMarker() {
this.marker = START;
+ this.areasGenerated=0;
int numChildren = this.children.size();
for (int i = 0; i < numChildren; i++) {
((FONode)children.get(i)).resetMarker();
1.20.2.7 +38 -38 xml-fop/src/org/apache/fop/fo/FObj.java
Index: FObj.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/FObj.java,v
retrieving revision 1.20.2.6
retrieving revision 1.20.2.7
diff -u -r1.20.2.6 -r1.20.2.7
--- FObj.java 22 Nov 2002 15:10:44 -0000 1.20.2.6
+++ FObj.java 17 Feb 2003 00:09:42 -0000 1.20.2.7
@@ -14,7 +14,7 @@
import org.apache.fop.fo.flow.Marker;
// Java
-import java.util.HashMap;
+import java.util.HashSet;
import java.util.ArrayList;
/**
@@ -32,7 +32,7 @@
protected PropertyManager propMgr;
// markers
- private HashMap markers;
+ private HashSet markerClassNames;
protected FObj(FObj parent, PropertyList propertyList) {
super(parent);
@@ -151,40 +151,40 @@
}
- public void addMarker(Marker marker) throws FOPException {
- String mcname = marker.getMarkerClassName();
- if (children != null) {
- for (int i = 0; i < children.size(); i++) {
- FONode child = (FONode)children.get(i);
- if (!child.mayPrecedeMarker()) {
- throw new FOPException("A fo:marker must be an initial child of '"
- + getName()+"'");
- }
- }
- }
- if (markers==null) {
- markers = new HashMap();
- markers.put(mcname, marker);
- } else if (!markers.containsKey(mcname) ) {
- markers.put(mcname, marker);
- } else {
- throw new FOPException("marker-class-name '"
- + mcname
- + "' already exists for this parent");
- }
- }
-
- public boolean hasMarkers() {
- return markers!=null;
- }
-
- public ArrayList getMarkers() {
- if (markers==null) {
- log.debug("GetMarkers failed (no markers). Should not happen.");
- return null;
- } else {
- return new ArrayList(markers.values());
- }
- }
+ public void addMarker(String markerClassName) throws FOPException {
+// String mcname = marker.getMarkerClassName();
+ if (children != null) {
+ for (int i = 0; i < children.size(); i++) {
+ FONode child = (FONode)children.get(i);
+ if (!child.mayPrecedeMarker()) {
+ throw new FOPException("A fo:marker must be an initial child of
'"
+ + getName()+"'");
+ }
+ }
+ }
+ if (markerClassNames==null) {
+ markerClassNames = new HashSet();
+ markerClassNames.add(markerClassName);
+ } else if (!markerClassNames.contains(markerClassName) ) {
+ markerClassNames.add(markerClassName);
+ } else {
+ throw new FOPException("marker-class-name '"
+ + markerClassName
+ + "' already exists for this parent");
+ }
+ }
+
+// public boolean hasMarkers() {
+// return markers!=null;
+// }
+
+// public ArrayList getMarkers() {
+// if (markers==null) {
+// log.debug("GetMarkers failed (no markers). Should not happen.");
+// return null;
+// } else {
+// return new ArrayList(markers.values());
+// }
+// }
}
No revision
No revision
1.1.2.7 +5 -1 xml-fop/src/org/apache/fop/fo/flow/Attic/AbstractTableBody.java
Index: AbstractTableBody.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/Attic/AbstractTableBody.java,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- AbstractTableBody.java 1 Dec 2002 11:55:57 -0000 1.1.2.6
+++ AbstractTableBody.java 17 Feb 2003 00:09:42 -0000 1.1.2.7
@@ -138,6 +138,10 @@
boolean endKeepGroup = true;
for (int i = this.marker; i < numChildren; i++) {
Object child = children.get(i);
+ if (child instanceof Marker) {
+ ((Marker)child).layout(area);
+ continue;
+ }
if (!(child instanceof TableRow)) {
throw new FOPException("Currently only Table Rows are supported in
table body, header and footer");
}
1.41.2.14 +4 -4 xml-fop/src/org/apache/fop/fo/flow/Block.java
Index: Block.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/Block.java,v
retrieving revision 1.41.2.13
retrieving revision 1.41.2.14
diff -u -r1.41.2.13 -r1.41.2.14
--- Block.java 30 Nov 2002 22:50:14 -0000 1.41.2.13
+++ Block.java 17 Feb 2003 00:09:42 -0000 1.41.2.14
@@ -181,11 +181,11 @@
if (this.areasGenerated == 1)
blockArea.isFirst(true);
// for normal areas this should be the only pair
- blockArea.addLineagePair(this, this.areasGenerated);
+// blockArea.addLineagePair(this, this.areasGenerated);
// markers
- if (this.hasMarkers())
- blockArea.addMarkers(this.getMarkers());
+// if (this.hasMarkers())
+// blockArea.addMarkers(this.getMarkers());
blockArea.setParent(area); // BasicLink needs it
blockArea.setPage(area.getPage());
1.21.2.7 +4 -4 xml-fop/src/org/apache/fop/fo/flow/ListBlock.java
Index: ListBlock.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/ListBlock.java,v
retrieving revision 1.21.2.6
retrieving revision 1.21.2.7
diff -u -r1.21.2.6 -r1.21.2.7
--- ListBlock.java 22 Nov 2002 15:10:46 -0000 1.21.2.6
+++ ListBlock.java 17 Feb 2003 00:09:42 -0000 1.21.2.7
@@ -124,11 +124,11 @@
if (this.areasGenerated == 1)
blockArea.isFirst(true);
// for normal areas this should be the only pair
- blockArea.addLineagePair(this, this.areasGenerated);
+// blockArea.addLineagePair(this, this.areasGenerated);
// markers
- if (this.hasMarkers())
- blockArea.addMarkers(this.getMarkers());
+// if (this.hasMarkers())
+// blockArea.addMarkers(this.getMarkers());
blockArea.setParent(area);
1.16.2.6 +4 -4 xml-fop/src/org/apache/fop/fo/flow/ListItem.java
Index: ListItem.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/ListItem.java,v
retrieving revision 1.16.2.5
retrieving revision 1.16.2.6
diff -u -r1.16.2.5 -r1.16.2.6
--- ListItem.java 22 Nov 2002 15:10:46 -0000 1.16.2.5
+++ ListItem.java 17 Feb 2003 00:09:42 -0000 1.16.2.6
@@ -113,11 +113,11 @@
if (this.areasGenerated == 1)
this.blockArea.isFirst(true);
// for normal areas this should be the only pair
- this.blockArea.addLineagePair(this, this.areasGenerated);
+// this.blockArea.addLineagePair(this, this.areasGenerated);
// markers
- if (this.hasMarkers())
- this.blockArea.addMarkers(this.getMarkers());
+// if (this.hasMarkers())
+// this.blockArea.addMarkers(this.getMarkers());
blockArea.setParent(area);
blockArea.setPage(area.getPage());
1.6.2.6 +33 -4 xml-fop/src/org/apache/fop/fo/flow/Marker.java
Index: Marker.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/Marker.java,v
retrieving revision 1.6.2.5
retrieving revision 1.6.2.6
diff -u -r1.6.2.5 -r1.6.2.6
--- Marker.java 22 Nov 2002 15:10:46 -0000 1.6.2.5
+++ Marker.java 17 Feb 2003 00:09:43 -0000 1.6.2.6
@@ -18,6 +18,8 @@
private String markerClassName;
private Area registryArea;
+ private boolean isFirst;
+ private boolean isLast;
public static class Maker extends FObj.Maker {
public FObj make(FObj parent,
@@ -42,7 +44,7 @@
// check to ensure that no other marker with same parent
// has this 'marker-class-name' is in addMarker() method
- parent.addMarker(this);
+ parent.addMarker(this.markerClassName);
}
public String getName() {
@@ -52,9 +54,7 @@
public int layout(Area area) throws FOPException {
// no layout action desired
this.registryArea = area;
- area.addMarker(this);
area.getPage().registerMarker(this);
- // System.out.println("Marker being registered in area '" + area + "'");
return Status.OK;
}
@@ -87,4 +87,33 @@
public boolean mayPrecedeMarker() {
return true;
}
+
+ // The page the marker was registered is put into the renderer
+ // queue. The marker is transferred to it's own marker list,
+ // release the area for GC. We also know now whether the area is
+ // first/last.
+ public void releaseRegistryArea() {
+ isFirst = registryArea.isFirst();
+ isLast = registryArea.isLast();
+ registryArea = null;
+ }
+
+ // This has actually nothing to do with resseting this marker,
+ // but the 'marker' from FONode, marking layout status.
+ // Called in case layout is to be rolled back. Unregister this
+ // marker from the page, it isn't laid aout anyway.
+ public void resetMarker() {
+ if (registryArea != null ) {
+ Page page=registryArea.getPage();
+ if (page != null) {
+ page.unregisterMarker(this);
+ }
+ }
+ }
+
+ // More hackery: reset layout status marker. Called before the
+ // content is laid out from RetrieveMarker.
+ public void resetMarkerContent() {
+ super.resetMarker();
+ }
}
1.6.2.7 +58 -67 xml-fop/src/org/apache/fop/fo/flow/RetrieveMarker.java
Index: RetrieveMarker.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/RetrieveMarker.java,v
retrieving revision 1.6.2.6
retrieving revision 1.6.2.7
diff -u -r1.6.2.6 -r1.6.2.7
--- RetrieveMarker.java 22 Nov 2002 15:10:46 -0000 1.6.2.6
+++ RetrieveMarker.java 17 Feb 2003 00:09:43 -0000 1.6.2.7
@@ -8,10 +8,15 @@
package org.apache.fop.fo.flow;
// FOP
-import org.apache.fop.fo.*;
-import org.apache.fop.fo.properties.*;
-import org.apache.fop.layout.*;
-import org.apache.fop.datatypes.*;
+import org.apache.fop.fo.FObj;
+import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.Status;
+import org.apache.fop.fo.pagination.PageSequence;
+import org.apache.fop.fo.properties.RetrieveBoundary;
+import org.apache.fop.fo.properties.RetrievePosition;
+import org.apache.fop.layout.Area;
+import org.apache.fop.layout.AreaTree;
+import org.apache.fop.layout.Page;
import org.apache.fop.apps.FOPException;
// Java
@@ -22,6 +27,7 @@
private String retrieveClassName;
private int retrievePosition;
private int retrieveBoundary;
+ private Marker bestMarker;
public static class Maker extends FObj.Maker {
public FObj make(FObj parent,
@@ -51,69 +57,63 @@
}
public int layout(Area area) throws FOPException {
- // locate qualifying areas by 'marker-class-name' and
- // 'retrieve-boundary'. Initially we will always check
- // the containing page
- Page containingPage = area.getPage();
- Marker bestMarker = searchPage(containingPage, true);
-
- // if marker not yet found, and 'retrieve-boundary' permits,
- // search backward by Page
- if (bestMarker == null) {
- if (retrieveBoundary != RetrieveBoundary.PAGE) {
-// System.out.println("Null bestMarker and searching...");
- Page currentPage = containingPage;
- boolean isFirstCall = true;
- while (bestMarker == null) {
- Page previousPage = locatePreviousPage(currentPage,
- retrieveBoundary,
- isFirstCall);
- isFirstCall = false;
- if (previousPage!=null) {
- bestMarker = searchPage(previousPage, false);
- currentPage = previousPage;
- } else {
- return Status.OK;
- }
+ if (marker == START) {
+ marker = 0;
+ // locate qualifying areas by 'marker-class-name' and
+ // 'retrieve-boundary'. Initially we will always check
+ // the containing page
+ Page containingPage = area.getPage();
+ bestMarker = searchPage(containingPage);
+
+ if (bestMarker != null) {
+ bestMarker.resetMarkerContent();
+ return bestMarker.layoutMarker(area);
+ }
+ // If marker not yet found, and 'retrieve-boundary' permits,
+ // search backward.
+ AreaTree areaTree = containingPage.getAreaTree();
+ if (retrieveBoundary == RetrieveBoundary.PAGE_SEQUENCE) {
+ PageSequence pageSequence = areaTree.getCurrentPageSequence();
+ if (pageSequence == containingPage.getPageSequence() ) {
+ return
layoutBestMarker(areaTree.getCurrentPageSequenceMarkers(),area);
}
+ } else if (retrieveBoundary == RetrieveBoundary.DOCUMENT) {
+ return layoutBestMarker(areaTree.getDocumentMarkers(),area);
} else {
- return Status.OK;
+ throw new FOPException("Illegal 'retrieve-boundary' value");
}
+ } else if (bestMarker != null) {
+ return bestMarker.layoutMarker(area);
}
-
- int status = Status.OK;
- // System.out.println("Laying out marker '" + bestMarker + "' in area '" +
area + "'");
- // the 'markers' referred to in this method are internal; they have
- // nothing to do with fo:marker
- bestMarker.resetMarker();
- status = bestMarker.layoutMarker(area);
- return status;
+ return Status.OK;
}
- private Marker searchPage(Page page,
- boolean isContainingPage) throws FOPException {
- ArrayList pageMarkers = page.getMarkers();
- if (pageMarkers.isEmpty()) {
- // System.out.println("No markers on page");
- return null;
- }
-
- // if no longer the containing page (fo:retrieve-marker, or the page
- // being processed), grab the last qualifying marker on this one
- if (!isContainingPage) {
- for (int c = pageMarkers.size(); c > 0; c--) {
- Marker currentMarker = (Marker)pageMarkers.get(c - 1);
+ private int layoutBestMarker(ArrayList markers, Area area)
+ throws FOPException {
+ if (markers!=null) {
+ for (int i = markers.size() - 1; i >= 0; i--) {
+ Marker currentMarker = (Marker)markers.get(i);
if (currentMarker.getMarkerClassName().equals(retrieveClassName)) {
- return currentMarker;
+ bestMarker = currentMarker;
+ bestMarker.resetMarkerContent();
+ return bestMarker.layoutMarker(area);
}
}
}
+ return Status.OK;
+ }
+
+ private Marker searchPage(Page page) throws FOPException {
+ ArrayList pageMarkers = page.getMarkers();
+ if (pageMarkers.isEmpty()) {
+ return null;
+ }
// search forward if 'first-starting-within-page' or
// 'first-including-carryover'
if (retrievePosition == RetrievePosition.FIC) {
- for (int c = 0; c < pageMarkers.size(); c++) {
- Marker currentMarker = (Marker)pageMarkers.get(c);
+ for (int i = 0; i < pageMarkers.size(); i++) {
+ Marker currentMarker = (Marker)pageMarkers.get(i);
if (currentMarker.getMarkerClassName().equals(retrieveClassName)) {
return currentMarker;
}
@@ -128,8 +128,8 @@
}
}
} else if (retrievePosition == RetrievePosition.LSWP) {
- for (int i = pageMarkers.size(); i > 0; i--) {
- Marker currentMarker = (Marker)pageMarkers.get(i - 1);
+ for (int i = pageMarkers.size() - 1; i >= 0; i--) {
+ Marker currentMarker = (Marker)pageMarkers.get(i);
if (currentMarker.getMarkerClassName().equals(retrieveClassName)) {
if (currentMarker.getRegistryArea().isFirst()) {
return currentMarker;
@@ -138,8 +138,8 @@
}
} else if (retrievePosition == RetrievePosition.LEWP) {
- for (int c = pageMarkers.size(); c > 0; c--) {
- Marker currentMarker = (Marker)pageMarkers.get(c - 1);
+ for (int i = pageMarkers.size() - 1; i >= 0; i--) {
+ Marker currentMarker = (Marker)pageMarkers.get(i);
if (currentMarker.getMarkerClassName().equals(retrieveClassName)) {
if (currentMarker.getRegistryArea().isLast()) {
return currentMarker;
@@ -151,15 +151,6 @@
throw new FOPException("Illegal 'retrieve-position' value");
}
return null;
- }
-
- private Page locatePreviousPage(Page page, int retrieveBoundary,
- boolean isFirstCall) {
- boolean pageWithinSequence = true;
- if (retrieveBoundary == RetrieveBoundary.DOCUMENT)
- pageWithinSequence = false;
- return page.getAreaTree().getPreviousPage(page, pageWithinSequence,
- isFirstCall);
}
}
1.39.2.9 +5 -6 xml-fop/src/org/apache/fop/fo/flow/Table.java
Index: Table.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/Table.java,v
retrieving revision 1.39.2.8
retrieving revision 1.39.2.9
diff -u -r1.39.2.8 -r1.39.2.9
--- Table.java 24 Nov 2002 21:27:46 -0000 1.39.2.8
+++ Table.java 17 Feb 2003 00:09:43 -0000 1.39.2.9
@@ -200,6 +200,10 @@
for (int i = this.marker; i < numChildren; i++) {
FONode fo = (FONode)children.get(i);
+ if (fo instanceof Marker) {
+ ((Marker)fo).layout(area);
+ continue;
+ }
if (fo instanceof TableHeader) {
if (columns.size() == 0) {
log.warn("current implementation of tables requires a
table-column for each column, indicating column-width");
@@ -342,11 +346,6 @@
}
return Status.OK;
- }
-
- public void resetMarker() {
- this.areasGenerated=0;
- super.resetMarker();
}
protected void setupColumnHeights() {
No revision
No revision
1.24.2.6 +23 -23 xml-fop/src/org/apache/fop/layout/Attic/Area.java
Index: Area.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layout/Attic/Area.java,v
retrieving revision 1.24.2.5
retrieving revision 1.24.2.6
diff -u -r1.24.2.5 -r1.24.2.6
--- Area.java 1 Dec 2002 11:54:19 -0000 1.24.2.5
+++ Area.java 17 Feb 2003 00:09:43 -0000 1.24.2.6
@@ -9,7 +9,7 @@
// FOP
import org.apache.fop.datatypes.*;
-import org.apache.fop.fo.flow.Marker;
+//import org.apache.fop.fo.flow.Marker;
import org.apache.fop.layout.inline.InlineSpace;
// Java
@@ -55,11 +55,11 @@
private IDReferences idReferences;
- protected ArrayList markers;
+// protected ArrayList markers;
// as defined in Section 6.1.1
protected org.apache.fop.fo.FObj generatedBy; // corresponds to
'generated-by' trait
- protected HashMap returnedBy;
+// protected HashMap returnedBy;
// as defined in Section 6.1.1
protected String areaClass;
@@ -78,8 +78,8 @@
public Area(FontState fontState) {
setFontState(fontState);
- this.markers = new ArrayList();
- this.returnedBy = new HashMap();
+// this.markers = new ArrayList();
+// this.returnedBy = new HashMap();
}
/**
@@ -96,8 +96,8 @@
this.allocationWidth = allocationWidth;
this.contentRectangleWidth = allocationWidth;
this.maxHeight = maxHeight;
- this.markers = new ArrayList();
- this.returnedBy = new HashMap();
+// this.markers = new ArrayList();
+// this.returnedBy = new HashMap();
}
private void setFontState(FontState fontState) {
@@ -399,21 +399,21 @@
return bp;
}
- public void addMarker(Marker marker) {
- markers.add(marker);
- }
-
- public void addMarkers(ArrayList markers) {
- markers.addAll(markers);
- }
-
- public void addLineagePair(org.apache.fop.fo.FObj fo, int areaPosition) {
- returnedBy.put(fo, new Integer(areaPosition));
- }
-
- public ArrayList getMarkers() {
- return markers;
- }
+// public void addMarker(Marker marker) {
+// markers.add(marker);
+// }
+
+// public void addMarkers(ArrayList markers) {
+// markers.addAll(markers);
+// }
+
+// public ArrayList getMarkers() {
+// return markers;
+// }
+
+// public void addLineagePair(org.apache.fop.fo.FObj fo, int areaPosition) {
+// returnedBy.put(fo, new Integer(areaPosition));
+// }
public void setGeneratedBy(org.apache.fop.fo.FObj generatedBy) {
this.generatedBy = generatedBy;
1.13.2.4 +15 -11 xml-fop/src/org/apache/fop/layout/Attic/AreaTree.java
Index: AreaTree.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layout/Attic/AreaTree.java,v
retrieving revision 1.13.2.3
retrieving revision 1.13.2.4
diff -u -r1.13.2.3 -r1.13.2.4
--- AreaTree.java 19 Nov 2002 01:04:08 -0000 1.13.2.3
+++ AreaTree.java 17 Feb 2003 00:09:43 -0000 1.13.2.4
@@ -60,16 +60,6 @@
return this.fontInfo;
}
-// public Page getNextPage(Page current, boolean isWithinPageSequence,
-// boolean isFirstCall) {
-// return streamRenderer.getNextPage(current,
isWithinPageSequence,isFirstCall);
-// }
-
- public Page getPreviousPage(Page current, boolean isWithinPageSequence,
- boolean isFirstCall) {
- return
streamRenderer.getPreviousPage(current,isWithinPageSequence,isFirstCall);
- }
-
public void addPage(Page page)
throws FOPException {
try {
@@ -92,4 +82,18 @@
rootExtensions.add(obj);
}
+ // Auxillary function for retrieving markers.
+ public ArrayList getDocumentMarkers() {
+ return streamRenderer.getDocumentMarkers();
+ }
+
+ // Auxillary function for retrieving markers.
+ public PageSequence getCurrentPageSequence() {
+ return streamRenderer.getCurrentPageSequence();
+ }
+
+ // Auxillary function for retrieving markers.
+ public ArrayList getCurrentPageSequenceMarkers() {
+ return streamRenderer.getCurrentPageSequenceMarkers();
+ }
}
1.17.2.3 +5 -1 xml-fop/src/org/apache/fop/layout/Attic/Page.java
Index: Page.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layout/Attic/Page.java,v
retrieving revision 1.17.2.2
retrieving revision 1.17.2.3
diff -u -r1.17.2.2 -r1.17.2.3
--- Page.java 19 Nov 2002 01:04:08 -0000 1.17.2.2
+++ Page.java 17 Feb 2003 00:09:43 -0000 1.17.2.3
@@ -216,6 +216,10 @@
markers.add(marker);
}
+ public void unregisterMarker(Marker marker) {
+ markers.remove(marker);
+ }
+
public ArrayList getMarkers() {
return this.markers;
}
No revision
No revision
1.27.2.10 +33 -33 xml-fop/src/org/apache/fop/render/xml/XMLRenderer.java
Index: XMLRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/xml/XMLRenderer.java,v
retrieving revision 1.27.2.9
retrieving revision 1.27.2.10
diff -u -r1.27.2.9 -r1.27.2.10
--- XMLRenderer.java 13 Feb 2003 15:59:20 -0000 1.27.2.9
+++ XMLRenderer.java 17 Feb 2003 00:09:43 -0000 1.27.2.10
@@ -273,22 +273,22 @@
writeStartTag(baText.toString());
// write out marker info
- List markers = area.getMarkers();
- if (!markers.isEmpty()) {
- writeStartTag("<Markers>");
- for (int i = 0; i < markers.size(); i++) {
- org.apache.fop.fo.flow.Marker marker =
- (org.apache.fop.fo.flow.Marker)markers.get(i);
- StringBuffer maText = new StringBuffer();
- maText.append("<Marker marker-class-name=\""
- + marker.getMarkerClassName() + "\"");
- maText.append(" RegisteredArea=\"" + marker.getRegistryArea()
- + "\"");
- maText.append("/>");
- writeEmptyElementTag(maText.toString());
- }
- writeEndTag("</Markers>");
- }
+// List markers = area.getMarkers();
+// if (!markers.isEmpty()) {
+// writeStartTag("<Markers>");
+// for (int i = 0; i < markers.size(); i++) {
+// org.apache.fop.fo.flow.Marker marker =
+// (org.apache.fop.fo.flow.Marker)markers.get(i);
+// StringBuffer maText = new StringBuffer();
+// maText.append("<Marker marker-class-name=\""
+// + marker.getMarkerClassName() + "\"");
+// maText.append(" RegisteredArea=\"" + marker.getRegistryArea()
+// + "\"");
+// maText.append("/>");
+// writeEmptyElementTag(maText.toString());
+// }
+// writeEndTag("</Markers>");
+// }
List children = area.getChildren();
for (int i = 0; i < children.size(); i++) {
@@ -311,22 +311,22 @@
writeStartTag(iaText.toString());
// write out marker info
- List markers = area.getMarkers();
- if (!markers.isEmpty()) {
- writeStartTag("<Markers>");
- for (int i = 0; i < markers.size(); i++) {
- org.apache.fop.fo.flow.Marker marker =
- (org.apache.fop.fo.flow.Marker)markers.get(i);
- StringBuffer maText = new StringBuffer();
- maText.append("<Marker marker-class-name=\""
- + marker.getMarkerClassName() + "\"");
- maText.append(" RegisteredArea=\"" + marker.getRegistryArea()
- + "\"");
- maText.append("/>");
- writeEmptyElementTag(maText.toString());
- }
- writeEndTag("</Markers>");
- }
+// List markers = area.getMarkers();
+// if (!markers.isEmpty()) {
+// writeStartTag("<Markers>");
+// for (int i = 0; i < markers.size(); i++) {
+// org.apache.fop.fo.flow.Marker marker =
+// (org.apache.fop.fo.flow.Marker)markers.get(i);
+// StringBuffer maText = new StringBuffer();
+// maText.append("<Marker marker-class-name=\""
+// + marker.getMarkerClassName() + "\"");
+// maText.append(" RegisteredArea=\"" + marker.getRegistryArea()
+// + "\"");
+// maText.append("/>");
+// writeEmptyElementTag(maText.toString());
+// }
+// writeEndTag("</Markers>");
+// }
List children = area.getChildren();
for (int i = 0; i < children.size(); i++) {
No revision
No revision
1.20.2.11 +4 -2 xml-fop/src/org/apache/fop/svg/PDFGraphics2D.java
Index: PDFGraphics2D.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/svg/PDFGraphics2D.java,v
retrieving revision 1.20.2.10
retrieving revision 1.20.2.11
diff -u -r1.20.2.10 -r1.20.2.11
--- PDFGraphics2D.java 16 Feb 2003 12:41:57 -0000 1.20.2.10
+++ PDFGraphics2D.java 17 Feb 2003 00:09:43 -0000 1.20.2.11
@@ -1285,9 +1285,11 @@
}
// needed for compiling under jdk1.4
+ @jdk14codestart@
public java.awt.image.VolatileImage createCompatibleVolatileImage(int
width, int height) {
return null;
}
+ @jdk14codeend@
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]