keiron 2003/02/27 15:30:51
Modified: src/org/apache/fop/area PageViewport.java
src/org/apache/fop/layoutmgr AbstractLayoutManager.java
LayoutManager.java BlockLayoutManager.java
BlockContainerLayoutManager.java
StaticContentLayoutManager.java
PageLayoutManager.java ContentLayoutManager.java
Log:
improvement on markers, don't know if it is correct
Revision Changes Path
1.15 +68 -43 xml-fop/src/org/apache/fop/area/PageViewport.java
Index: PageViewport.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/area/PageViewport.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- PageViewport.java 20 Feb 2003 02:47:44 -0000 1.14
+++ PageViewport.java 27 Feb 2003 23:30:47 -0000 1.15
@@ -47,8 +47,9 @@
// start and end are added by the fo that contains the markers
private Map markerFirstStart = null;
private Map markerLastStart = null;
- private Map markerFirstEnd = null;
+ private Map markerFirstAny = null;
private Map markerLastEnd = null;
+ private Map markerLastAny = null;
/**
* Create a page viewport.
@@ -185,8 +186,8 @@
* For "first-starting-within-page" it adds the markers
* that are starting only if the marker class name is not
* already added.
- * For "first-including-carryover" it adds any marker if
- * the marker class name is not already added.
+ * For "first-including-carryover" it adds any starting marker
+ * if the marker class name is not already added.
* For "last-starting-within-page" it adds all marks that
* are starting, replacing earlier markers.
* For "last-ending-within-page" it adds all markers that
@@ -196,44 +197,58 @@
*
* @param marks the map of markers to add
* @param start if the area being added is starting or ending
+ * @param isfirst isfirst or islast flag
*/
- public void addMarkers(Map marks, boolean start) {
+ public void addMarkers(Map marks, boolean start, boolean isfirst) {
if (start) {
- if (markerFirstStart == null) {
- markerFirstStart = new HashMap();
- }
- if (markerLastStart == null) {
- markerLastStart = new HashMap();
- }
- if (markerFirstEnd == null) {
- markerFirstEnd = new HashMap();
- }
- // only put in new values, leave current
- for (Iterator iter = marks.keySet().iterator(); iter.hasNext();) {
- Object key = iter.next();
- if (!markerFirstStart.containsKey(key)) {
- markerFirstStart.put(key, marks.get(key));
+ if (isfirst) {
+ if (markerFirstStart == null) {
+ markerFirstStart = new HashMap();
}
- if (!markerFirstEnd.containsKey(key)) {
- markerFirstEnd.put(key, marks.get(key));
+ if (markerFirstAny == null) {
+ markerFirstAny = new HashMap();
+ }
+ // only put in new values, leave current
+ for (Iterator iter = marks.keySet().iterator(); iter.hasNext();) {
+ Object key = iter.next();
+ if (!markerFirstStart.containsKey(key)) {
+ markerFirstStart.put(key, marks.get(key));
+ }
+ if (!markerFirstAny.containsKey(key)) {
+ markerFirstAny.put(key, marks.get(key));
+ }
+ }
+ if (markerLastStart == null) {
+ markerLastStart = new HashMap();
+ }
+ // replace all
+ markerLastStart.putAll(marks);
+
+ } else {
+ if (markerFirstAny == null) {
+ markerFirstAny = new HashMap();
+ }
+ // only put in new values, leave current
+ for (Iterator iter = marks.keySet().iterator(); iter.hasNext();) {
+ Object key = iter.next();
+ if (!markerFirstAny.containsKey(key)) {
+ markerFirstAny.put(key, marks.get(key));
+ }
}
}
- markerLastStart.putAll(marks);
} else {
- if (markerFirstEnd == null) {
- markerFirstEnd = new HashMap();
- }
- if (markerLastEnd == null) {
- markerLastEnd = new HashMap();
- }
- // only put in new values, leave current
- for (Iterator iter = marks.keySet().iterator(); iter.hasNext();) {
- Object key = iter.next();
- if (!markerFirstEnd.containsKey(key)) {
- markerFirstEnd.put(key, marks.get(key));
+ if (!isfirst) {
+ if (markerLastEnd == null) {
+ markerLastEnd = new HashMap();
}
+ // replace all
+ markerLastEnd.putAll(marks);
+ }
+ if (markerLastAny == null) {
+ markerLastAny = new HashMap();
}
- markerLastEnd.putAll(marks);
+ // replace all
+ markerLastAny.putAll(marks);
}
}
@@ -247,29 +262,39 @@
* @return Object the marker found or null
*/
public Object getMarker(String name, int pos) {
+ Object mark = null;
switch (pos) {
case RetrievePosition.FSWP:
if (markerFirstStart != null) {
- return markerFirstStart.get(name);
+ mark = markerFirstStart.get(name);
+ }
+ if (mark == null && markerFirstAny != null) {
+ mark = markerFirstAny.get(name);
}
break;
case RetrievePosition.FIC:
- if (markerFirstStart != null) {
- return markerFirstEnd.get(name);
+ if (markerFirstAny != null) {
+ mark = markerFirstAny.get(name);
}
break;
case RetrievePosition.LSWP:
- if (markerFirstStart != null) {
- return markerLastStart.get(name);
+ if (markerLastStart != null) {
+ mark = markerLastStart.get(name);
+ }
+ if (mark == null && markerLastAny != null) {
+ mark = markerLastAny.get(name);
}
break;
case RetrievePosition.LEWP:
- if (markerFirstStart != null) {
- return markerLastEnd.get(name);
+ if (markerLastEnd != null) {
+ mark = markerLastEnd.get(name);
+ }
+ if (mark == null && markerLastAny != null) {
+ mark = markerLastAny.get(name);
}
break;
}
- return null;
+ return mark;
}
/**
@@ -321,7 +346,7 @@
/**
* Clear the page contents to save memory.
* This object is kept for the life of the area tree since
- * it holds id information and is used as a key.
+ * it holds id and marker information and is used as a key.
*/
public void clear() {
page = null;
1.22 +7 -6 xml-fop/src/org/apache/fop/layoutmgr/AbstractLayoutManager.java
Index: AbstractLayoutManager.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/AbstractLayoutManager.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- AbstractLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.21
+++ AbstractLayoutManager.java 27 Feb 2003 23:30:48 -0000 1.22
@@ -174,7 +174,8 @@
curChildLM.resetPosition(null);
curChildLM = (LayoutManager) childLMiter.previous();
}
- childLMiter.next(); // Otherwise next returns same object
+ // Otherwise next returns same object
+ childLMiter.next();
}
if(curChildLM != null) {
curChildLM.resetPosition(pos);
@@ -324,10 +325,10 @@
/**
* Add the markers when adding an area.
*/
- protected void addMarkers(boolean start) {
+ protected void addMarkers(boolean start, boolean isfirst) {
// add markers
if (markers != null) {
- addMarkerMap(markers, start);
+ addMarkerMap(markers, start, isfirst);
}
}
@@ -336,8 +337,8 @@
*
* @see org.apache.fop.layoutmgr.LayoutManager
*/
- public void addMarkerMap(Map marks, boolean start) {
- parentLM.addMarkerMap(marks, start);
+ public void addMarkerMap(Map marks, boolean start, boolean isfirst) {
+ parentLM.addMarkerMap(marks, start, isfirst);
}
/**
1.16 +4 -4 xml-fop/src/org/apache/fop/layoutmgr/LayoutManager.java
Index: LayoutManager.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/LayoutManager.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- LayoutManager.java 19 Feb 2003 05:49:28 -0000 1.15
+++ LayoutManager.java 27 Feb 2003 23:30:48 -0000 1.16
@@ -9,6 +9,7 @@
import org.apache.fop.fo.FOUserAgent;
import org.apache.fop.fo.FObj;
+
import org.apache.fop.fo.flow.Marker;
import org.apache.fop.area.Area;
@@ -193,10 +194,10 @@
* method is used to add those markers to the page.
*
* @param name the marker class name
- * @param lm the layout manager of the marker child
* @param start true if the formatting object is starting false is finishing
+ * @param isfirst a flag for is first
*/
- public void addMarkerMap(Map marks, boolean start);
+ public void addMarkerMap(Map marks, boolean start, boolean isfirst);
/**
* Retrieve a marker.
@@ -208,5 +209,4 @@
* @return the layout manaager of the retrieved marker if any
*/
public Marker retrieveMarker(String name, int pos, int boundary);
-
}
1.30 +3 -3 xml-fop/src/org/apache/fop/layoutmgr/BlockLayoutManager.java
Index: BlockLayoutManager.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/BlockLayoutManager.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- BlockLayoutManager.java 20 Feb 2003 02:47:45 -0000 1.29
+++ BlockLayoutManager.java 27 Feb 2003 23:30:49 -0000 1.30
@@ -220,7 +220,7 @@
addBlockSpacing(adjust, layoutProps.spaceBefore.space);
addID();
- addMarkers(true);
+ addMarkers(true, true);
LayoutManager childLM ;
LayoutContext lc = new LayoutContext(0);
@@ -242,7 +242,7 @@
}
- addMarkers(false);
+ addMarkers(false, true);
flush();
1.11 +3 -7
xml-fop/src/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
Index: BlockContainerLayoutManager.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- BlockContainerLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.10
+++ BlockContainerLayoutManager.java 27 Feb 2003 23:30:49 -0000 1.11
@@ -20,7 +20,6 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.awt.geom.Rectangle2D;
@@ -203,7 +202,7 @@
getParentArea(null);
addID();
- addMarkers(true);
+ addMarkers(true, true);
LayoutManager childLM ;
int iStartPos = 0;
@@ -221,6 +220,7 @@
}
flush();
+ addMarkers(true, true);
childBreaks.clear();
viewportBlockArea = null;
@@ -296,10 +296,6 @@
if (resetPos == null) {
reset(null);
}
- }
-
- public void addMarkerMap(Map marks, boolean start) {
- parentLM.addMarkerMap(marks, start);
}
}
1.11 +3 -2
xml-fop/src/org/apache/fop/layoutmgr/StaticContentLayoutManager.java
Index: StaticContentLayoutManager.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/org/apache/fop/layoutmgr/StaticContentLayoutManager.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- StaticContentLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.10
+++ StaticContentLayoutManager.java 27 Feb 2003 23:30:50 -0000 1.11
@@ -13,6 +13,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
/**
* LayoutManager for an fo:flow object.
@@ -102,7 +103,7 @@
*
* @see org.apache.fop.layoutmgr.LayoutManager
*/
- public void addMarker(String name, LayoutManager lm, boolean start) {
+ public void addMarker(Map marks, boolean start, boolean isfirst) {
// error markers not allowed in static
getLogger().error("Cannot add marker to static areas");
}
1.31 +3 -3 xml-fop/src/org/apache/fop/layoutmgr/PageLayoutManager.java
Index: PageLayoutManager.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/PageLayoutManager.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- PageLayoutManager.java 20 Feb 2003 02:47:45 -0000 1.30
+++ PageLayoutManager.java 27 Feb 2003 23:30:50 -0000 1.31
@@ -268,10 +268,10 @@
* @param lm the layout manager for the marker contents
* @param start true if starting marker area, false for ending
*/
- public void addMarkerMap(Map marks, boolean start) {
+ public void addMarkerMap(Map marks, boolean start, boolean isfirst) {
//getLogger().debug("adding markers: " + marks + ":" + start);
// add markers to page on area tree
- curPage.addMarkers(marks, start);
+ curPage.addMarkers(marks, start, isfirst);
}
/**
1.15 +3 -3 xml-fop/src/org/apache/fop/layoutmgr/ContentLayoutManager.java
Index: ContentLayoutManager.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/ContentLayoutManager.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ContentLayoutManager.java 19 Feb 2003 05:49:28 -0000 1.14
+++ ContentLayoutManager.java 27 Feb 2003 23:30:51 -0000 1.15
@@ -214,8 +214,8 @@
}
/** @see org.apache.fop.layoutmgr.LayoutManager */
- public void addMarkerMap(Map marks, boolean start) {
- parentLM.addMarkerMap(marks, start);
+ public void addMarkerMap(Map marks, boolean start, boolean isfirst) {
+ parentLM.addMarkerMap(marks, start, isfirst);
}
/** @see org.apache.fop.layoutmgr.LayoutManager */
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]