]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Providing the region FO to RegionReference, so it is no longer
authorGlen Mazza <gmazza@apache.org>
Sat, 14 May 2005 05:22:16 +0000 (05:22 +0000)
committerGlen Mazza <gmazza@apache.org>
Sat, 14 May 2005 05:22:16 +0000 (05:22 +0000)
necessary for PSLM to separately supply it to SCLM.
Some simplification of SCLM's Breaker class.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198628 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/area/BodyRegion.java
src/java/org/apache/fop/area/Page.java
src/java/org/apache/fop/area/RegionReference.java
src/java/org/apache/fop/layoutmgr/PageSequenceLayoutManager.java
src/java/org/apache/fop/layoutmgr/StaticContentLayoutManager.java

index 6283305409acb88a6bd8c8e77344f4f4ba24593f..672b6b66d2d50e84636cca89680605850103a7ab 100644 (file)
@@ -18,7 +18,7 @@
 
 package org.apache.fop.area;
 
-import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.pagination.RegionBody;
 
 /**
  * This class is a container for the areas that may be generated by
@@ -37,22 +37,13 @@ public class BodyRegion extends RegionReference {
      * Constructor which can read traits directly
      * from an fo:region-body formatting object.
      */
-    public BodyRegion(int columnCount, int columnGap, RegionViewport parent) {
-        super(Constants.FO_REGION_BODY, parent);
-        this.columnCount = columnCount;
-        this.columnGap = columnGap;
+    public BodyRegion(RegionBody rb, RegionViewport parent) {
+        super(rb, parent);
+        this.columnCount = rb.getColumnCount();
+        this.columnGap = rb.getColumnGap();
         mainReference = new MainReference(this);
     }
 
-    /**
-     * Set the number of columns for blocks when not spanning
-     *
-     * @param colCount the number of columns
-     */
-    public void setColumnCount(int colCount) {
-        this.columnCount = colCount;
-    }
-
     /**
      * Get the number of columns when not spanning
      *
@@ -62,16 +53,6 @@ public class BodyRegion extends RegionReference {
         return this.columnCount;
     }
 
-    /**
-     * Set the column gap between columns
-     * The length is in millipoints.
-     *
-     * @param colGap the column gap in millipoints
-     */
-    public void setColumnGap(int colGap) {
-        this.columnGap = colGap;
-    }
-
     /** @return the column-gap value */
     public int getColumnGap() {
         return this.columnGap;
@@ -126,7 +107,7 @@ public class BodyRegion extends RegionReference {
      * @return a shallow copy of this object
      */
     public Object clone() {
-        BodyRegion br = new BodyRegion(columnCount, columnGap, regionViewport);
+        BodyRegion br = new BodyRegion((RegionBody) regionFO, regionViewport);
         br.setCTM(getCTM());
         br.setIPD(getIPD());
         br.beforeFloat = beforeFloat;
index 858c0722d7e87d6d0d1a415b4c2899ddf85fbdb7..1733f48791c6b6c38e644dd7c8332e8c6d166237 100644 (file)
@@ -99,11 +99,9 @@ public class Page implements Serializable, Cloneable {
             r.setLayoutDimension(PercentBase.BLOCK_IPD, rvp.getIPD());
             r.setLayoutDimension(PercentBase.BLOCK_BPD, rvp.getBPD());
             if (r.getNameId() == Constants.FO_REGION_BODY) {
-                RegionBody rb = (RegionBody) r;
-                rr = new BodyRegion(rb.getColumnCount(), rb.getColumnGap(),
-                       rvp);
+                rr = new BodyRegion((RegionBody) r, rvp);
             } else {
-                rr = new RegionReference(r.getNameId(), rvp);
+                rr = new RegionReference(r, rvp);
             }
             setRegionReferencePosition(rr, r, rvp.getViewArea());
             rvp.setRegionReference(rr);
index 6f671e96f3bde86e131454120cdd1d6d27c913d8..b9f256517df002d8b8e70cc6a9842a44272e5a11 100644 (file)
@@ -21,7 +21,7 @@ package org.apache.fop.area;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.pagination.Region;
 
 /**
  * This is a region reference area for a page regions.
@@ -29,8 +29,9 @@ import org.apache.fop.fo.Constants;
  * so the page master can make copies from the original page and regions.
  */
 public class RegionReference extends Area implements Cloneable {
-    private int regionClass = Constants.FO_REGION_BEFORE;
+    protected Region regionFO;
     private CTM ctm;
+    
 
     // the list of block areas from the static flow
     private List blocks = new ArrayList();
@@ -43,8 +44,8 @@ public class RegionReference extends Area implements Cloneable {
      *
      * @param type the region class type
      */
-    public RegionReference(int type, RegionViewport parent) {
-        regionClass = type;
+    public RegionReference(Region regionFO, RegionViewport parent) {
+        this.regionFO = regionFO;
         addTrait(Trait.IS_REFERENCE_AREA, Boolean.TRUE);
         regionViewport = parent;
     }
@@ -93,7 +94,17 @@ public class RegionReference extends Area implements Cloneable {
      * @return the region class
      */
     public int getRegionClass() {
-        return regionClass;
+        return regionFO.getNameId();
+    }
+
+    /**
+     * Return the Region FO which provides the
+     * traits for this region.
+     *
+     * @return the region formatting object
+     */
+    public Region getRegionFO() {
+        return regionFO;
     }
 
     /**
@@ -113,7 +124,7 @@ public class RegionReference extends Area implements Cloneable {
      * @return a copy of this region reference area
      */
     public Object clone() {
-        RegionReference rr = new RegionReference(regionClass, regionViewport);
+        RegionReference rr = new RegionReference(regionFO, regionViewport);
         rr.ctm = ctm;
         rr.setIPD(getIPD());
         return rr;
index bd7cac98a2e2b582c7f2f7e8859f35c4fd8d937a..cde2e909745c06bc580f98325a6d7f2f414c0bef 100644 (file)
@@ -442,7 +442,7 @@ public class PageSequenceLayoutManager extends AbstractLayoutManager {
             areaTreeHandler.getLayoutManagerMaker().makeLayoutManager(sc);
         lm.setTargetRegion(rv.getRegionReference());
         lm.setParent(this);       
-        lm.doLayout(reg);
+        lm.doLayout();
         lm.reset(null);
     }
 
index aaed403d4cb7f34a685018d590cfffa8abbeda46..8129473d0845364d9ea975446f460b66151d2b18 100644 (file)
@@ -228,9 +228,10 @@ public class StaticContentLayoutManager extends BlockStackingLayoutManager {
         return targetRegion;
     }
 
-    public void doLayout(SideRegion region) {
-        MinOptMax range = new MinOptMax(targetRegion.getIPD());
-        StaticContentBreaker breaker = new StaticContentBreaker(region, this, range);
+    public void doLayout() {
+        Region region = targetRegion.getRegionFO();
+        StaticContentBreaker breaker = new StaticContentBreaker(
+                this, targetRegion.getIPD(), region.getDisplayAlign());
         breaker.doLayout(targetRegion.getBPD());
         if (breaker.isOverflow()) {
             if (region.getOverflow() == EN_ERROR_IF_OVERFLOW) {
@@ -240,17 +241,17 @@ public class StaticContentLayoutManager extends BlockStackingLayoutManager {
         }
     }
     
-    private class StaticContentBreaker extends AbstractBreaker {
-        
-        private Region region;
+    private class StaticContentBreaker extends AbstractBreaker {       
         private StaticContentLayoutManager lm;
-        private MinOptMax ipd;
+        private int displayAlign;
+        private int ipd;
         boolean overflow = false;
         
-        public StaticContentBreaker(Region region, StaticContentLayoutManager lm, MinOptMax ipd) {
-            this.region = region;
+        public StaticContentBreaker(StaticContentLayoutManager lm, int ipd, 
+                int displayAlign) {
             this.lm = lm;
             this.ipd = ipd;
+            this.displayAlign = displayAlign;
         }
 
         public boolean isOverflow() {
@@ -263,7 +264,7 @@ public class StaticContentLayoutManager extends BlockStackingLayoutManager {
 
         protected LayoutContext createLayoutContext() {
             LayoutContext lc = super.createLayoutContext();
-            lc.setRefIPD(ipd.opt);
+            lc.setRefIPD(ipd);
             return lc;
         }
         
@@ -290,7 +291,7 @@ public class StaticContentLayoutManager extends BlockStackingLayoutManager {
         }
 
         protected int getCurrentDisplayAlign() {
-            return region.getDisplayAlign();
+            return displayAlign;
         }
         
         protected boolean hasMoreContent() {
@@ -317,7 +318,6 @@ public class StaticContentLayoutManager extends BlockStackingLayoutManager {
         protected LayoutManager getCurrentChildLM() {
             return null; //TODO NYI
         }
-        
     }    
 }