package org.apache.fop.fo.expr;
+import java.util.Vector;
import org.apache.fop.fo.Property;
import org.apache.fop.datatypes.Length;
+import org.apache.fop.datatypes.FixedLength;
import org.apache.fop.datatypes.PercentLength;
import org.apache.fop.datatypes.LinearCombinationLength;
import org.apache.fop.datatypes.MixedLength;
* Construct a Numeric object from a Length.
* @param l The Length.
*/
- public Numeric(Length l) {
+ public Numeric(FixedLength l) {
this(ABS_LENGTH, (double)l.mvalue(), 0.0, 0.0, 1, null);
}
*/
public Length asLength() {
if (dim == 1) {
- if (valType == ABS_LENGTH) {
- return new Length((int)absValue);
+ Vector len = new Vector(3);
+ if ((valType & ABS_LENGTH) != 0) {
+ len.add(new FixedLength((int)absValue));
}
- PercentLength pclen = null;
if ((valType & PC_LENGTH) != 0) {
- pclen = new PercentLength(pcValue, pcBase);
- if (valType == PC_LENGTH)
- return pclen;
+ len.add(new PercentLength(pcValue, pcBase));
}
if ((valType & TCOL_LENGTH) != 0) {
- return new TableColLength((int)absValue, pclen, tcolValue);
+ len.add(new TableColLength(tcolValue));
}
- return new MixedLength((int)absValue, pclen);
+ if (len.size() == 1) {
+ return (Length)len.elementAt(0);
+ }
+ else {
+ return new MixedLength(len);
+ }
} else {
// or throw exception???
// can't make Length if dimension != 1
numLen));
Length length = null;
if (unitPart.equals(RELUNIT)) {
- length = new Length(numPart.doubleValue(),
+ length = new FixedLength(numPart.doubleValue(),
propInfo.currentFontSize());
} else
- length = new Length(numPart.doubleValue(), unitPart);
+ length = new FixedLength(numPart.doubleValue(), unitPart);
if (length == null) {
throw new PropertyException("unrecognized unit name: "
+ currentTokenValue);