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]