You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by bc...@apache.org on 2004/02/10 20:25:15 UTC
cvs commit: xml-fop/src/java/org/apache/fop/layoutmgr BlockContainerLayoutManager.java
bckfnn 2004/02/10 11:25:15
Modified: src/java/org/apache/fop/layoutmgr
BlockContainerLayoutManager.java
Log:
Set correct ipd/bpd of both the viewport and reference area.
Revision Changes Path
1.13 +35 -11 xml-fop/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
Index: BlockContainerLayoutManager.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- BlockContainerLayoutManager.java 29 Jan 2004 19:43:04 -0000 1.12
+++ BlockContainerLayoutManager.java 10 Feb 2004 19:25:15 -0000 1.13
@@ -87,6 +87,9 @@
private Length width;
private Length height;
+ // When viewport should grow with the content.
+ private boolean autoHeight = true;
+
/**
* Create a new block container layout manager.
*/
@@ -111,8 +114,8 @@
}
marginProps = pm.getMarginProps();
borderProps = pm.getBorderAndPadding();
- height = pm.getPropertyList().get(PR_HEIGHT).getLength();
- width = pm.getPropertyList().get(PR_WIDTH).getLength();
+ height = pm.getPropertyList().get(PR_BLOCK_PROGRESSION_DIMENSION | CP_OPTIMUM).getLength();
+ width = pm.getPropertyList().get(PR_INLINE_PROGRESSION_DIMENSION | CP_OPTIMUM).getLength();
}
protected int getRotatedIPD() {
@@ -152,8 +155,13 @@
boolean rotated = vals[0] == 0.0;
if (rotated) {
// rotated 90 degrees
- stackLimit = new MinOptMax(1000000);
- ipd = getRotatedIPD();
+ if (relDims.ipd > context.getRefIPD()) {
+ relDims.ipd = context.getRefIPD();
+ }
+ stackLimit = new MinOptMax(relDims.ipd);
+ if (width.isAuto()) {
+ relDims.bpd = context.getStackLimit().opt;
+ }
absoluteCTM = new CTM(vals[0], vals[1], vals[2], vals[3], 0, 0);
} else {
if (vals[0] == -1.0) {
@@ -324,25 +332,31 @@
viewportBlockArea.setCTM(absoluteCTM);
viewportBlockArea.setClip(clip);
+ autoHeight = false;
} else {
double[] vals = absoluteCTM.toArray();
boolean rotated = vals[0] == 0.0;
if (rotated) {
- viewportBlockArea.setWidth(relDims.bpd);
- viewportBlockArea.setHeight(getRotatedIPD());
+ viewportBlockArea.setWidth(relDims.ipd);
+ viewportBlockArea.setHeight(relDims.bpd);
viewportBlockArea.setCTM(absoluteCTM);
viewportBlockArea.setClip(clip);
+ autoHeight = false;
} else if (vals[0] == -1.0) {
// need to set bpd to actual size for rotation
// and stacking
viewportBlockArea.setWidth(relDims.ipd);
- viewportBlockArea.setWidth(relDims.bpd);
+ if (!height.isAuto()) {
+ viewportBlockArea.setHeight(relDims.bpd);
+ autoHeight = false;
+ }
viewportBlockArea.setCTM(absoluteCTM);
viewportBlockArea.setClip(clip);
} else {
viewportBlockArea.setWidth(relDims.ipd);
if (!height.isAuto()) {
viewportBlockArea.setHeight(relDims.bpd);
+ autoHeight = false;
}
}
}
@@ -356,8 +370,8 @@
// Set up dimensions
// Must get dimensions from parent area
Area parentArea = parentLM.getParentArea(curBlockArea);
- int referenceIPD = parentArea.getIPD();
- curBlockArea.setIPD(referenceIPD);
+ //int referenceIPD = parentArea.getIPD();
+ curBlockArea.setIPD(relDims.ipd);
// Get reference IPD from parentArea
setCurrentArea(viewportBlockArea); // ??? for generic operations
}
@@ -371,7 +385,7 @@
*/
public void addChild(Area childArea) {
if (curBlockArea != null) {
- curBlockArea.addBlock((Block) childArea, height.isAuto());
+ curBlockArea.addBlock((Block) childArea);
}
}
@@ -385,8 +399,18 @@
* Force current area to be added to parent area.
*/
protected void flush() {
+ viewportBlockArea.addBlock(curBlockArea, autoHeight);
+
+ // Fake a 0 height for absolute positioned blocks.
+ int height = viewportBlockArea.getHeight();
+ if (viewportBlockArea.getPositioning() == Block.ABSOLUTE) {
+ viewportBlockArea.setHeight(0);
+ }
super.flush();
- viewportBlockArea.addBlock(curBlockArea);
+ // Restore the right height.
+ if (viewportBlockArea.getPositioning() == Block.ABSOLUTE) {
+ viewportBlockArea.setHeight(height);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org