]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
1. move fo/pagination/Region.makeRegionReferenceArea() to layoutmgr/PageLayoutManager...
authorWilliam Victor Mote <vmote@apache.org>
Wed, 27 Aug 2003 15:33:59 +0000 (15:33 +0000)
committerWilliam Victor Mote <vmote@apache.org>
Wed, 27 Aug 2003 15:33:59 +0000 (15:33 +0000)
2. move fo/pagination/RegionBody.makeRegionReferenceArea() layoutmgr/PageLayoutManager.makeRegionBodyReferenceArea()

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

src/java/org/apache/fop/fo/pagination/Region.java
src/java/org/apache/fop/fo/pagination/RegionBody.java
src/java/org/apache/fop/layoutmgr/PageLayoutManager.java

index 3ae25fdd41e7dde14a3ad7639df1ff19eb558415..47327d26c9f4d66f4206577ed9b057d9fa7644ea 100644 (file)
@@ -88,7 +88,7 @@ public abstract class Region extends FObj {
     private String regionName;
 
     /** Holds the overflow attribute */
-    protected int overflow;
+    public int overflow;
     /** Holds the writing mode */
     protected int wm;
 
@@ -137,19 +137,6 @@ public abstract class Region extends FObj {
 
     public abstract Rectangle getViewportRectangle(FODimension pageRefRect);
 
-    /**
-     * Create the region reference area for this region master.
-     * @param absRegVPRect The region viewport rectangle is "absolute" coordinates
-     * where x=distance from left, y=distance from bottom, width=right-left
-     * height=top-bottom
-     * @return a new region reference area
-     */
-    public RegionReference makeRegionReferenceArea(Rectangle2D absRegVPRect) {
-        RegionReference r = new RegionReference(getRegionAreaClass());
-        setRegionPosition(r, absRegVPRect);
-        return r;
-    }
-
     /**
      * Set the region position inside the region viewport.
      * This sets the trasnform that is used to place the contents of
@@ -158,7 +145,7 @@ public abstract class Region extends FObj {
      * @param r the region reference area
      * @param absRegVPRect the rectangle to place the region contents
      */
-    protected void setRegionPosition(RegionReference r, Rectangle2D absRegVPRect) {
+    public void setRegionPosition(RegionReference r, Rectangle2D absRegVPRect) {
         FODimension reldims = new FODimension(0, 0);
         r.setCTM(CTM.getCTMandRelDims(propMgr.getAbsRefOrient(),
                 propMgr.getWritingMode(), absRegVPRect, reldims));
index b03098b32071ece62cdf684b38e3ad3482e89542..e717a3722aceda3ddd639225f474bf95bb9b5475 100644 (file)
@@ -60,7 +60,6 @@ import org.apache.fop.fo.FObj;
 import org.apache.fop.fo.FOTreeVisitor;
 import org.apache.fop.fo.PropertyList;
 import org.apache.fop.fo.Property;
-import org.apache.fop.fo.properties.Overflow;
 import org.apache.fop.fo.properties.WritingMode;
 import org.apache.fop.datatypes.ColorType;
 import org.apache.fop.datatypes.FODimension;
@@ -146,31 +145,6 @@ public class RegionBody extends Region {
         return RegionReference.BODY;
     }
 
-    /**
-     * Override the inherited method.
-     * @see org.apache.fop.fo.pagination.Region#makeRegionReferenceArea(Rectangle2D)
-     */
-    public RegionReference makeRegionReferenceArea(Rectangle2D absRegVPRect) {
-        // Should set some column stuff here I think, or put it elsewhere
-        BodyRegion body = new BodyRegion();
-        setRegionPosition(body, absRegVPRect);
-        int columnCount =
-                this.properties.get("column-count").getNumber().intValue();
-        if ((columnCount > 1) && (overflow == Overflow.SCROLL)) {
-            // recover by setting 'column-count' to 1. This is allowed but
-            // not required by the spec.
-            getLogger().error("Setting 'column-count' to 1 because "
-                    + "'overflow' is set to 'scroll'");
-            columnCount = 1;
-        }
-        body.setColumnCount(columnCount);
-
-        int columnGap =
-                this.properties.get("column-gap").getLength().getValue();
-        body.setColumnGap(columnGap);
-        return body;
-    }
-
     /**
      * This is a hook for an FOTreeVisitor subclass to be able to access
      * this object.
index 732187728098696f29e20b9fa5d7bc7e15dc5487..c839ada3463e6b70cc6a22f2804e1ffed609cb87 100644 (file)
@@ -83,6 +83,7 @@ import org.apache.fop.fo.properties.CommonBackground;
 import org.apache.fop.fo.properties.CommonBorderAndPadding;
 import org.apache.fop.fo.properties.CommonMarginBlock;
 import org.apache.fop.fo.properties.Constants;
+import org.apache.fop.fo.properties.Overflow;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -785,7 +786,11 @@ public class PageLayoutManager extends AbstractLayoutManager implements Runnable
             regenum.hasNext();) {
            Region r = (Region)regenum.next();
            RegionViewport rvp = makeRegionViewport(r, reldims, pageCTM);
-           rvp.setRegion(r.makeRegionReferenceArea(rvp.getViewArea()));
+           if (r.getRegionAreaClass() == RegionReference.BODY) {
+               rvp.setRegion(makeRegionBodyReferenceArea(r, rvp.getViewArea()));
+           } else {
+               rvp.setRegion(makeRegionReferenceArea(r, rvp.getViewArea()));
+           }
            page.setRegion(r.getRegionAreaClass(), rvp);
            if (r.getRegionAreaClass() == RegionReference.BODY) {
                bHasBody = true;
@@ -831,5 +836,44 @@ public class PageLayoutManager extends AbstractLayoutManager implements Runnable
         TraitSetter.addBackground(rv, bProps);
     }
 
-}
+    /**
+     * Override the inherited method.
+     * @see org.apache.fop.fo.pagination.Region#makeRegionReferenceArea(Rectangle2D)
+     */
+    public RegionReference makeRegionBodyReferenceArea(Region r,
+            Rectangle2D absRegVPRect) {
+        // Should set some column stuff here I think, or put it elsewhere
+        BodyRegion body = new BodyRegion();
+        r.setRegionPosition(body, absRegVPRect);
+        int columnCount =
+                r.properties.get("column-count").getNumber().intValue();
+        if ((columnCount > 1) && (r.overflow == Overflow.SCROLL)) {
+            // recover by setting 'column-count' to 1. This is allowed but
+            // not required by the spec.
+            getLogger().error("Setting 'column-count' to 1 because "
+                    + "'overflow' is set to 'scroll'");
+            columnCount = 1;
+        }
+        body.setColumnCount(columnCount);
 
+        int columnGap =
+                r.properties.get("column-gap").getLength().getValue();
+        body.setColumnGap(columnGap);
+        return body;
+    }
+
+    /**
+     * Create the region reference area for this region master.
+     * @param absRegVPRect The region viewport rectangle is "absolute" coordinates
+     * where x=distance from left, y=distance from bottom, width=right-left
+     * height=top-bottom
+     * @return a new region reference area
+     */
+    public RegionReference makeRegionReferenceArea(Region r,
+            Rectangle2D absRegVPRect) {
+        RegionReference rr = new RegionReference(r.getRegionAreaClass());
+        r.setRegionPosition(rr, absRegVPRect);
+        return rr;
+    }
+
+}