import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.fop.traits.BorderProps;
// If the area appears more than once in the output
// or if the area has external data it is cached
public static final int CLASS_MAX = CLASS_SIDE_FLOAT + 1;
private int areaClass = CLASS_NORMAL;
- private int ipd;
+ protected int ipd;
+ protected int bpd;
/**
* Traits for this area stored in a HashMap
}
/**
- * Set the inline progression dimension of this area.
+ * Set the inline progression dimension of content rectangle
+ * for this area.
*
* @param i the new inline progression dimension
+ * @see http://www.w3.org/TR/xsl/slice4.html#area-common
*/
public void setIPD(int i) {
ipd = i;
}
/**
- * Get the inline progression dimension of this area.
- *
+ * Get the inline progression dimension of the content rectangle
+ * for this area.
+ *
* @return the inline progression dimension
+ * @see http://www.w3.org/TR/xsl/slice4.html#area-common
*/
public int getIPD() {
return ipd;
}
+ /**
+ * Set the block progression dimension of the content rectangle
+ * for this area.
+ *
+ * @param b the new block progression dimension
+ * @see http://www.w3.org/TR/xsl/slice4.html#area-common
+ */
+ public void setBPD(int b) {
+ bpd = b;
+ }
+
+ /**
+ * Get the block progression dimension of the content rectangle
+ * for this area.
+ *
+ * @return the block progression dimension
+ * @see http://www.w3.org/TR/xsl/slice4.html#area-common
+ */
+ public int getBPD() {
+ return bpd;
+ }
+
+ /**
+ * Get the allocation inline progression dimension of this area.
+ * This adds the content, borders and the padding to find the
+ * total allocated IPD.
+ *
+ * @return the total IPD allocation for this area
+ */
+ public int getAllocIPD() {
+ return getBorderAndPaddingWidthStart() + getIPD() + getBorderAndPaddingWidthEnd();
+ }
+
+ /**
+ * Get the allocation block progression dimension of this area.
+ * This adds the content, borders and the padding to find the
+ * total allocated BPD.
+ *
+ * @return the total IPD allocation for this area
+ */
+ public int getAllocBPD() {
+ return getBorderAndPaddingWidthBefore() + getBPD() + getBorderAndPaddingWidthAfter();
+ }
+
+ /**
+ * Return the sum of region border- and padding-before
+ *
+ * @return width in millipoints
+ */
+ public int getBorderAndPaddingWidthBefore() {
+ int margin = 0;
+ BorderProps bps = (BorderProps) getTrait(Trait.BORDER_BEFORE);
+ if (bps != null) {
+ margin = bps.width;
+ }
+
+ Integer padWidth = (Integer) getTrait(Trait.PADDING_BEFORE);
+ if (padWidth != null) {
+ margin += padWidth.intValue();
+ }
+
+ return margin;
+ }
+
+ /**
+ * Return the sum of region border- and padding-after
+ *
+ * @return width in millipoints
+ */
+ public int getBorderAndPaddingWidthAfter() {
+ int margin = 0;
+
+ BorderProps bps = (BorderProps) getTrait(Trait.BORDER_AFTER);
+ if (bps != null) {
+ margin = bps.width;
+ }
+
+ Integer padWidth = (Integer) getTrait(Trait.PADDING_AFTER);
+ if (padWidth != null) {
+ margin += padWidth.intValue();
+ }
+
+ return margin;
+ }
+
+ /**
+ * Return the sum of region border- and padding-start
+ *
+ * @return width in millipoints
+ */
+ public int getBorderAndPaddingWidthStart() {
+ int margin = 0;
+ BorderProps bps = (BorderProps) getTrait(Trait.BORDER_START);
+ if (bps != null) {
+ margin = bps.width;
+ }
+
+ Integer padWidth = (Integer) getTrait(Trait.PADDING_START);
+ if (padWidth != null) {
+ margin += padWidth.intValue();
+ }
+
+ return margin;
+ }
+
+ /**
+ * Return the sum of region border- and padding-end
+ *
+ * @return width in millipoints
+ */
+ public int getBorderAndPaddingWidthEnd() {
+ int margin = 0;
+ BorderProps bps = (BorderProps) getTrait(Trait.BORDER_END);
+ if (bps != null) {
+ margin = bps.width;
+ }
+
+ Integer padWidth = (Integer) getTrait(Trait.PADDING_END);
+ if (padWidth != null) {
+ margin += padWidth.intValue();
+ }
+
+ return margin;
+ }
/**
* Add a child to this area.
* The default is to do nothing. Subclasses must override