blob: 779115bb326e289c2ced6867b3e2cd44ff286a97 [file] [log] [blame]
/*
* $Id$
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources.
*/
package org.apache.fop.datatypes;
import org.apache.fop.fo.expr.Numeric;
/**
* a percent specified length quantity in XSL
*/
public class PercentLength extends Length {
private double factor;
private PercentBase lbase = null;
/**
* construct an object based on a factor (the percent, as a
* a factor) and an object which has a method to return the
* Length which provides the "base" for this calculation.
*/
public PercentLength(double factor) {
this(factor, null);
}
public PercentLength(double factor, PercentBase lbase) {
this.factor = factor;
this.lbase = lbase;
}
public void setBaseLength(PercentBase lbase) {
this.lbase = lbase;
}
public PercentBase getBaseLength() {
return this.lbase;
}
/**
* Return the computed value in millipoints. This assumes that the
* base length has been resolved to an absolute length value.
*/
protected void computeValue() {
setComputedValue((int)(factor * (double)lbase.getBaseLength()));
}
public double value() {
return factor;
}
public String toString() {
// return the factor as a percent
// What about the base value?
return (new Double(factor * 100.0).toString()) + "%";
}
public Numeric asNumeric() {
return new Numeric(this);
}
}