klease 02/02/23 08:50:58
Modified: src/org/apache/fop/layout MarginProps.java
src/org/apache/fop/fo/pagination RegionBody.java
SimplePageMaster.java
Log:
Correct margin handling on body region for writing-mode
Revision Changes Path
1.3 +2 -2 xml-fop/src/org/apache/fop/layout/MarginProps.java
Index: MarginProps.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layout/MarginProps.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MarginProps.java 30 Jul 2001 20:29:27 -0000 1.2
+++ MarginProps.java 23 Feb 2002 16:50:58 -0000 1.3
@@ -1,5 +1,5 @@
/*
- * $Id: MarginProps.java,v 1.2 2001/07/30 20:29:27 tore Exp $
+ * $Id: MarginProps.java,v 1.3 2002/02/23 16:50:58 klease Exp $
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources.
@@ -8,7 +8,7 @@
package org.apache.fop.layout;
/**
- * Store all hyphenation related properties on an FO.
+ * Store all block-level margin related properties on an FO.
* Public "structure" allows direct member access.
*/
public class MarginProps {
1.17 +31 -16 xml-fop/src/org/apache/fop/fo/pagination/RegionBody.java
Index: RegionBody.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/pagination/RegionBody.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- RegionBody.java 18 Feb 2002 22:49:22 -0000 1.16
+++ RegionBody.java 23 Feb 2002 16:50:58 -0000 1.17
@@ -1,5 +1,5 @@
/*
- * $Id: RegionBody.java,v 1.16 2002/02/18 22:49:22 klease Exp $
+ * $Id: RegionBody.java,v 1.17 2002/02/23 16:50:58 klease Exp $
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources.
@@ -13,7 +13,9 @@
// FOP
import org.apache.fop.fo.FONode;
+import org.apache.fop.fo.FObj;
import org.apache.fop.fo.PropertyList;
+import org.apache.fop.fo.Property;
import org.apache.fop.fo.properties.Overflow;
import org.apache.fop.datatypes.ColorType;
import org.apache.fop.datatypes.FODimension;
@@ -32,22 +34,35 @@
protected Rectangle getViewportRectangle (FODimension reldims)
{
- // Common Margin Properties-Block
- // Need these in writing-mode relative coordinates
- // Or shall we get absolute and transform to relative using writing mode?
+ /*
+ * Use space-before and space-after which will use corresponding
+ * absolute margin properties if specified. For indents:
+ * try to get corresponding absolute margin property using the
+ * writing-mode on the page (not on the region-body!). If that's not
+ * set but indent is explicitly set, it will return that.
+ */
MarginProps mProps = propMgr.getMarginProps();
- /**
- System.err.println("BodyRegion margin props=" + mProps.startIndent + ","
- + mProps.spaceBefore + "," + mProps.endIndent + ","
- + mProps.spaceAfter);
-
- return new Rectangle( mProps.startIndent, mProps.spaceBefore,
- reldims.ipd - mProps.startIndent - mProps.endIndent,
- reldims.bpd - mProps.spaceBefore - mProps.spaceAfter);
- **/
- return new Rectangle( mProps.marginLeft, mProps.marginTop,
- reldims.ipd - mProps.marginLeft - mProps.marginRight,
- reldims.bpd - mProps.marginTop - mProps.marginBottom);
+ int start = getRelMargin(PropertyList.START, "start-indent");
+ return new Rectangle( start, mProps.spaceBefore,
+ reldims.ipd - start -
+ getRelMargin(PropertyList.END, "end-indent"),
+ reldims.bpd - mProps.spaceBefore -
+ mProps.spaceAfter);
+ }
+
+ /**
+ * Get the relative margin using parent's writing mode, not own
+ * writing mode.
+ */
+ private int getRelMargin(int reldir, String sRelPropName) {
+ FObj parent = (FObj) getParent();
+ String sPropName = "margin-" +
+ parent.properties.wmRelToAbs(reldir);
+ Property prop = properties.getExplicitBaseProp(sPropName);
+ if (prop == null) {
+ prop = properties.getExplicitBaseProp(sRelPropName);
+ }
+ return ((prop != null)? prop.getLength().mvalue() : 0);
}
protected void setRegionTraits(RegionReference r, Rectangle2D absRegVPRect) {
1.24 +5 -1 xml-fop/src/org/apache/fop/fo/pagination/SimplePageMaster.java
Index: SimplePageMaster.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/pagination/SimplePageMaster.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- SimplePageMaster.java 18 Feb 2002 22:49:22 -0000 1.23
+++ SimplePageMaster.java 23 Feb 2002 16:50:58 -0000 1.24
@@ -1,5 +1,5 @@
/*
- * $Id: SimplePageMaster.java,v 1.23 2002/02/18 22:49:22 klease Exp $
+ * $Id: SimplePageMaster.java,v 1.24 2002/02/23 16:50:58 klease Exp $
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources.
@@ -123,6 +123,10 @@
// _regions = null; // PageSequence access SimplePageMaster....
children = null;
properties = null;
+ }
+
+ public boolean generatesReferenceAreas() {
+ return true;
}
public PageMaster getPageMaster() {
Advertising
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]