pbwest 2004/07/07 15:18:29
Modified: src/java/org/apache/fop/area Tag: FOP_0-20-0_Alt-Design
PaddingRectangle.java Area.java DimensionDbl.java
AbstractReferenceArea.java AreaFrame.java
Log:
W.I.P.
Revision Changes Path
No revision
No revision
1.1.2.6 +6 -2 xml-fop/src/java/org/apache/fop/area/Attic/PaddingRectangle.java
Index: PaddingRectangle.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/area/Attic/PaddingRectangle.java,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -r1.1.2.5 -r1.1.2.6
--- PaddingRectangle.java 14 Jun 2004 08:53:46 -0000 1.1.2.5
+++ PaddingRectangle.java 7 Jul 2004 22:18:29 -0000 1.1.2.6
@@ -28,6 +28,10 @@
*/
public class PaddingRectangle extends AreaFrame {
+ private static final String tag = "$Name$";
+ private static final String revision = "$Revision$";
+
+
public PaddingRectangle(Area area, Area.AreaGeometry content) {
super(area, content);
borders = new BorderRectangle(area, this);
1.1.2.24 +94 -2 xml-fop/src/java/org/apache/fop/area/Area.java
Index: Area.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/Area.java,v
retrieving revision 1.1.2.23
retrieving revision 1.1.2.24
diff -u -r1.1.2.23 -r1.1.2.24
--- Area.java 6 Jul 2004 14:16:25 -0000 1.1.2.23
+++ Area.java 7 Jul 2004 22:18:29 -0000 1.1.2.24
@@ -19,6 +19,7 @@
package org.apache.fop.area;
import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
@@ -255,6 +256,97 @@
}
/**
+ * Returns a <code>Rectangle2D</code> constructed from the normailized
+ * values of offset and dimensions expressed in terms of
+ * <i>inline-progression-direction</i> and
+ * <i>block-progression-direction</i>
+ * @param ipOffset
+ * @param bpOffset
+ * @param ipDim the <i>inline-progression-dimension</i>
+ * @param bpDim the <i>block-progression-dimension</i>
+ * @param wMode
+ * @return
+ * @throws PropertyException
+ */
+ public static Rectangle2D.Double rectRelToAbs(
+ double ipOffset, double bpOffset, double ipDim, double bpDim,
+ int wMode) throws PropertyException {
+ if (WritingMode.isHorizontal(wMode)) {
+ return new Rectangle2D.Double(ipOffset, bpOffset, ipDim, bpDim);
+ }
+ return new Rectangle2D.Double(bpOffset, ipOffset, bpDim, ipDim);
+ }
+
+ /**
+ * Normalizes a pair of values representing an
+ * <i>inline-progression-dimension</i> and a
+ * <i>block-progression-dimension</i> by converting them to a
+ * <i>Point2D</i> representing the corresponding X and Y values in
+ * Java 2D user co-ordinates.
+ * @param ipDim the <i>inline-progression-dimension</i>
+ * @param bpDim the <i>block-progression-dimension</i>
+ * @param writingMode
+ * @return the corresponding x, y values
+ * @throws PropertyException
+ */
+ public static DimensionDbl dimsRelToAbs (
+ double ipDim, double bpDim, int writingMode)
+ throws PropertyException {
+ if (WritingMode.isHorizontal(writingMode)) {
+ return new DimensionDbl(ipDim, bpDim);
+ }
+ return new DimensionDbl(bpDim, ipDim);
+ }
+
+ /**
+ * Normalizes a <code>DimensonDbl</code> representing an
+ * <i>inline-progression-dimension</i> (<i>width</i>) and a
+ * <i>block-progression-dimension</i> (<i>height</i>) by converting them to
+ * a <code>DimensonDbl</code> representing the corresponding width and
+ * height values in Java 2D user co-ordinates.
+ * @param in the dimensions expressed as <i>inline-progression-dimension</i>
+ * and <i>block-progression-dimension</i>
+ * @param writingMode
+ * @return the corresponding Java2D width, height values
+ * @throws PropertyException
+ */
+ public static DimensionDbl dimsRelToAbs (DimensionDbl in, int writingMode)
+ throws PropertyException {
+ if (WritingMode.isHorizontal(writingMode)) {
+ return in;
+ }
+ double width, height;
+ width = in.getHeight();
+ height = in.getWidth();
+ in.setSize(width, height);
+ return in;
+ }
+
+ /**
+ * Returns a <code>Rectangle2D</code> constructed from the normailized
+ * values of offset and dimensions expressed in terms of
+ * <i>inline-progression-direction</i> and
+ * <i>block-progression-direction</i>
+ * @param offset
+ * @param wideHigh
+ * @param writingMode
+ * @return
+ * @throws PropertyException
+ */
+ public static Rectangle2D dimsRelToAbs (
+ Point2D offset, DimensionDbl wideHigh, int writingMode)
+ throws PropertyException {
+ if (WritingMode.isHorizontal(writingMode)) {
+ return new Rectangle2D.Double(
+ offset.getX(), offset.getY(),
+ wideHigh.getWidth(), wideHigh.getHeight());
+ }
+ return new Rectangle2D.Double(
+ offset.getY(), offset.getX(),
+ wideHigh.getHeight(), wideHigh.getWidth());
+ }
+
+ /**
* A nested class of Area, representing the geometry of one of the frames
* associated with this area. These include the content-rectangle,
* border-rectangle, padding-rectangle, spaces-rectangle and
@@ -308,7 +400,7 @@
try {
// TODO move rectRelToAbs from WritingMode to a more suitable
// place
- setRect(WritingMode.rectRelToAbs(
+ setRect(rectRelToAbs(
ipOrigin, bpOrigin, ipDim, bpDim, writingMode));
} catch (PropertyException e) {
throw new RuntimeException(e);
@@ -349,7 +441,7 @@
double ipOrigin, double bpOrigin, double ipDim, double bpDim) {
// Now work out what belongs where
try {
- setRect(WritingMode.rectRelToAbs(
+ setRect(rectRelToAbs(
ipOrigin, bpOrigin, ipDim, bpDim, writingMode));
} catch (PropertyException e) {
throw new RuntimeException(e);
1.1.2.2 +5 -2 xml-fop/src/java/org/apache/fop/area/Attic/DimensionDbl.java
Index: DimensionDbl.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/Attic/DimensionDbl.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- DimensionDbl.java 6 Jul 2004 14:26:45 -0000 1.1.2.1
+++ DimensionDbl.java 7 Jul 2004 22:18:29 -0000 1.1.2.2
@@ -28,6 +28,9 @@
*/
public class DimensionDbl extends Dimension2D {
+ private static final String tag = "$Name$";
+ private static final String revision = "$Revision$";
+
private double width = 0.0;
private double height = 0.0;
1.1.2.7 +5 -2
xml-fop/src/java/org/apache/fop/area/Attic/AbstractReferenceArea.java
Index: AbstractReferenceArea.java
===================================================================
RCS file:
/home/cvs/xml-fop/src/java/org/apache/fop/area/Attic/AbstractReferenceArea.java,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- AbstractReferenceArea.java 17 Jun 2004 11:33:06 -0000 1.1.2.6
+++ AbstractReferenceArea.java 7 Jul 2004 22:18:29 -0000 1.1.2.7
@@ -34,6 +34,9 @@
extends Area
implements ReferenceArea {
+ private static final String tag = "$Name$";
+ private static final String revision = "$Revision$";
+
// Set up as identity matrix
protected AffineTransform transformer = new AffineTransform();
1.1.2.10 +57 -32 xml-fop/src/java/org/apache/fop/area/Attic/AreaFrame.java
Index: AreaFrame.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/Attic/AreaFrame.java,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -r1.1.2.9 -r1.1.2.10
--- AreaFrame.java 6 Jul 2004 14:19:26 -0000 1.1.2.9
+++ AreaFrame.java 7 Jul 2004 22:18:29 -0000 1.1.2.10
@@ -35,30 +35,41 @@
*/
public class AreaFrame extends AreaGeometry {
+ private static final String tag = "$Name$";
+ private static final String revision = "$Revision$";
+
+
/** The framed rectangle */
- protected AreaGeometry contents = null;
+ protected AreaGeometry contents;
/** The offset from <code>this</code> origin to the origin of the framed
* rectangle */
- protected Point2D contentOffset = null;
-
- /**
- * Instantiates an <code>AreaFrame</code> with zero dimensions and offset,
- * whose contents and contentOffset are null
- * @param area the <code>Area</code> on which this <code>AreaFrame</code>
- * is being defined
- */
- public AreaFrame(Area area) {
- area.super(area.frameWritingMode);
- // contents and contentOffset remain null
- }
-
- /**
- * Contents and offset remain null
- */
- public AreaFrame(Area area,
- double ipOrigin, double bpOrigin, double ipDim, double bpDim) {
- area.super(area.frameWritingMode, ipOrigin, bpOrigin, ipDim, bpDim);
- }
+ protected Point2D contentOffset = new Point2D.Double();
+//
+// /**
+// * Instantiates an <code>AreaFrame</code> with zero dimensions and offset,
+// * with <code>contents</code> of zero dimensions and contentOffsets of
+// * zero. The <i>writing-mode</i> and <i>reference-orientation</i> are
+// * assumed to be the same as the containing frame.
+// * @param area the <code>Area</code> on which this <code>AreaFrame</code>
+// * is being defined
+// */
+// public AreaFrame(Area area) {
+// area.super(area.frameWritingMode);
+// contents = area.new AreaGeometry(area.frameWritingMode);
+// contentOffset = new Point2D.Double();
+// }
+
+// /**
+// * Instantiates an <code>AreaFrame</code> with the given relative
+// * origin and dimensions, with
+// * Contents and offset remain null
+// */
+// public AreaFrame(Area area,
+// double ipOrigin, double bpOrigin, double ipDim, double bpDim) {
+// area.super(area.frameWritingMode, ipOrigin, bpOrigin, ipDim, bpDim);
+// contents = area.new AreaGeometry(area.frameWritingMode);
+// contentOffset = new Point2D.Double();
+// }
/**
* Instantiates a frame with 0-width edges around the given
@@ -67,8 +78,9 @@
*/
public AreaFrame(Area area, AreaGeometry contents) {
area.super(area.frameWritingMode);
- setRect(contents);
- this.contents = contents;
+ // TODO - check that this can be eliminated
+ //setRect(contents);
+ setContents(contents);
this.contentOffset = new Point2D.Double();
}
@@ -91,7 +103,9 @@
double ipOrigin, double bpOrigin, double ipDim, double bpDim,
AreaGeometry contents, Point2D contentOffset) {
area.super(area.frameWritingMode, ipOrigin, bpOrigin, ipDim, bpDim);
- this.contents = contents;
+ // TODO check this against the handling of the contents rectangle
+ // Should this initialize with the contents and then set the edges?
+ setContents(contents);
this.contentOffset = contentOffset;
}
@@ -110,21 +124,31 @@
Rectangle2D rect, AreaGeometry contents,
Point2D contentOffset) {
area.super(area.frameWritingMode, rect);
- this.contents = contents;
+ setContents(contents);
this.contentOffset = contentOffset;
}
/**
- * Sets the contents rectangle. The dimensions of <code>this</code> are
+ * Sets the contents rectangle to the given <code>AreaFrame</code>.
+ * The dimensions of <code>this</code> are
* adjusted to the difference between the current framed contents and
* the new framed contents. The offset is not affected.
* @param contents the new framed contents
*/
public void setContents(AreaGeometry contents) {
+ if (this.contents == null) {
+ setRect(getX(), getY(),
+ getWidth() + contents.getFrameRelativeWidth(),
+ getHeight() + contents.getFrameRelativeHeight());
+ }
setRect(getX(), getY(),
- getWidth() + (contents.getWidth() - this.contents.getWidth()),
- getHeight() + (contents.getWidth() - this.contents.getWidth()));
- contents = this.contents;
+ getWidth() + (
+ contents.getFrameRelativeWidth() -
+ this.contents.getFrameRelativeWidth()),
+ getHeight() + (
+ contents.getFrameRelativeHeight() -
+ this.contents.getFrameRelativeHeight()));
+ this.contents = contents;
}
public Rectangle2D getContents() {
@@ -136,7 +160,8 @@
* the framed contents rectangle. The dimensions of the framed contents
* are not affected, but the dimensions of <code>this</code> are changed
* by the difference between the current offset and the new offset in the
- * X and Y axes.
+ * X and Y axes. Note that this is a frame-centric view. The offset is
+ * expressed in the frame's frame-of-reference.
* @param offset the new offset to the framed rectangle
*/
public void setContentOffset(Point2D offset) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]