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 kl...@apache.org on 2002/09/26 23:07:49 UTC
cvs commit: xml-fop/src/org/apache/fop/layout/inline ForeignObjectArea.java
klease 2002/09/26 14:07:48
Modified: src/org/apache/fop/layout Tag: fop-0_20_2-maintain Area.java
LineArea.java
src/org/apache/fop/layout/inline Tag: fop-0_20_2-maintain
ForeignObjectArea.java
Log:
Improve link hotspot positioning
Revision Changes Path
No revision
No revision
1.24.2.3 +25 -15 xml-fop/src/org/apache/fop/layout/Attic/Area.java
Index: Area.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layout/Attic/Area.java,v
retrieving revision 1.24.2.2
retrieving revision 1.24.2.3
diff -u -r1.24.2.2 -r1.24.2.3
--- Area.java 2 Aug 2002 20:28:52 -0000 1.24.2.2
+++ Area.java 26 Sep 2002 21:07:48 -0000 1.24.2.3
@@ -38,8 +38,10 @@
// used to keep track of the current x position within a table. Required for drawing rectangle links.
protected int tableCellXOffset = 0;
- // used to keep track of the absolute height on the page. Required for drawing rectangle links.
- private int absoluteHeight = 0;
+ /** Stores position of top of this area relative to page column Ypos.
+ * Used to set the position of link hotspot rectangles.
+ */
+ private int absoluteYtop = 0;
protected int contentRectangleWidth;
@@ -114,7 +116,6 @@
public void addDisplaySpace(int size) {
this.addChild(new DisplaySpace(size));
- this.absoluteHeight += size;
this.currentHeight += size;
}
@@ -253,33 +254,43 @@
tableCellXOffset = offset;
}
+ /**
+ * Return absolute Y position of the current bottom of this area,
+ * not counting any bottom padding or border. This is used
+ * to set positions for link hotspots.
+ * In fact, the position is not really absolute, but is relative
+ * to the Ypos of the column-level AreaContainer, even when the
+ * area is in a page header or footer!
+ */
public int getAbsoluteHeight() {
- return absoluteHeight;
+ return absoluteYtop + getPaddingTop() + getBorderTopWidth() +
+ currentHeight;
}
+ /**
+ * Set "absolute" Y position of the top of this area. In fact, the
+ * position is not really absolute, but relative to the Ypos of
+ * the column-level AreaContainer, even when the area is in a
+ * page header or footer!
+ * It is set from the value of getAbsoluteHeight() on the parent
+ * area, just before adding this area.
+ */
public void setAbsoluteHeight(int value) {
- absoluteHeight = value;
- }
-
- public void increaseAbsoluteHeight(int value) {
- absoluteHeight += value;
+ absoluteYtop = value;
}
public void increaseHeight(int amount) {
this.currentHeight += amount;
- this.absoluteHeight += amount;
}
// Remove allocation height of child
public void removeChild(Area area) {
this.currentHeight -= area.getHeight();
- this.absoluteHeight -= area.getHeight();
this.children.remove(area);
}
public void removeChild(DisplaySpace spacer) {
this.currentHeight -= spacer.getSize();
- this.absoluteHeight -= spacer.getSize();
this.children.remove(spacer);
}
@@ -329,7 +340,6 @@
if (currentHeight > getMaxHeight()) {
currentHeight = getMaxHeight();
}
- absoluteHeight += (currentHeight - prevHeight);
}
public void setMaxHeight(int height) {
@@ -361,7 +371,7 @@
public AreaContainer getNearestAncestorAreaContainer() {
Area area = this.getParent();
- while (!(area instanceof AreaContainer)) {
+ while (area != null && !(area instanceof AreaContainer)) {
area = area.getParent();
}
return (AreaContainer)area;
1.53.2.10 +9 -3 xml-fop/src/org/apache/fop/layout/Attic/LineArea.java
Index: LineArea.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layout/Attic/LineArea.java,v
retrieving revision 1.53.2.9
retrieving revision 1.53.2.10
diff -u -r1.53.2.9 -r1.53.2.10
--- LineArea.java 9 Aug 2002 21:28:56 -0000 1.53.2.9
+++ LineArea.java 26 Sep 2002 21:07:48 -0000 1.53.2.10
@@ -551,7 +551,7 @@
}
addSpacedWord(new String(data, wordStart, wordLength), ls,
- finalWidth + spaceWidth + embeddedLinkStart,
+ finalWidth + pendingWidth,
spaceWidth, textState, true);
embeddedLinkStart += wordWidth;
@@ -1051,9 +1051,14 @@
public void setLinkSet(LinkSet ls) {}
- public void addInlineArea(Area box) {
+ public void addInlineArea(InlineArea box, LinkSet ls) {
addPending();
addChild(box);
+ if (ls != null) {
+ Rectangle lr=new Rectangle(finalWidth, 0,box.getContentWidth(),
+ box.getContentHeight());
+ ls.addRect(lr, this, box);
+ }
prev = TEXT;
finalWidth += box.getContentWidth();
}
@@ -1405,4 +1410,5 @@
}
}
+
No revision
No revision
1.5.2.2 +5 -1 xml-fop/src/org/apache/fop/layout/inline/Attic/ForeignObjectArea.java
Index: ForeignObjectArea.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layout/inline/Attic/ForeignObjectArea.java,v
retrieving revision 1.5.2.1
retrieving revision 1.5.2.2
diff -u -r1.5.2.1 -r1.5.2.2
--- ForeignObjectArea.java 2 Aug 2002 20:28:53 -0000 1.5.2.1
+++ ForeignObjectArea.java 26 Sep 2002 21:07:48 -0000 1.5.2.2
@@ -62,6 +62,10 @@
return getEffectiveHeight();
}
+ public int getContentHeight() {
+ return getEffectiveHeight();
+ }
+
public int getXOffset() {
return this.xOffset;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org