aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/apache
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache')
-rw-r--r--src/org/apache/fop/datatypes/CondLength.java91
-rw-r--r--src/org/apache/fop/datatypes/LengthBase.java58
-rw-r--r--src/org/apache/fop/datatypes/LengthRange.java126
-rw-r--r--src/org/apache/fop/datatypes/MixedLength.java94
-rw-r--r--src/org/apache/fop/datatypes/PercentBase.java57
-rw-r--r--src/org/apache/fop/datatypes/PercentLength.java102
-rw-r--r--src/org/apache/fop/datatypes/Space.java99
-rw-r--r--src/org/apache/fop/datatypes/TableColLength.java100
8 files changed, 727 insertions, 0 deletions
diff --git a/src/org/apache/fop/datatypes/CondLength.java b/src/org/apache/fop/datatypes/CondLength.java
new file mode 100644
index 000000000..04a7bff60
--- /dev/null
+++ b/src/org/apache/fop/datatypes/CondLength.java
@@ -0,0 +1,91 @@
+/*-- $Id$ --
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Fop" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+ */
+package org.apache.fop.datatypes;
+
+/**
+ * a space quantity in XSL (space-before, space-after)
+ */
+public class CondLength extends Length {
+
+ /** Values for conditionality. Specified as a string value. */
+ public static final int DISCARD = 0;
+ public static final int RETAIN = 1;
+
+ private int conditionality=DISCARD ;
+
+ public CondLength (Length l) {
+ super(l.mvalue());
+ }
+
+ public void setLength(Length l) {
+ setValue(l.mvalue());
+ }
+
+ public void setConditionality(String conditionality) {
+ if (conditionality.equals("retain"))
+ this.conditionality = Space.RETAIN;
+ else if (conditionality.equals("discard"))
+ this.conditionality = Space.DISCARD;
+ // else unrecognized value
+ }
+
+ public String getConditionality() {
+ return ((this.conditionality == DISCARD)? "discard" : "retain");
+ }
+
+ public Length getLength() {
+ return this;
+ }
+
+ public boolean isDiscard() {
+ return (conditionality==DISCARD);
+ }
+}
diff --git a/src/org/apache/fop/datatypes/LengthBase.java b/src/org/apache/fop/datatypes/LengthBase.java
new file mode 100644
index 000000000..301b60542
--- /dev/null
+++ b/src/org/apache/fop/datatypes/LengthBase.java
@@ -0,0 +1,58 @@
+/*-- $Id$ --
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+ */
+package org.apache.fop.datatypes;
+
+public abstract class LengthBase implements PercentBase {
+ public int getDimension() { return 1; }
+ public double getBaseValue() { return 1.0; }
+ abstract public int getBaseLength();
+}
+
diff --git a/src/org/apache/fop/datatypes/LengthRange.java b/src/org/apache/fop/datatypes/LengthRange.java
new file mode 100644
index 000000000..b47d74ba0
--- /dev/null
+++ b/src/org/apache/fop/datatypes/LengthRange.java
@@ -0,0 +1,126 @@
+/*-- $Id$ --
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Fop" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+ */
+package org.apache.fop.datatypes;
+
+/**
+ * a "progression-dimension" quantity
+ * ex. block-progression-dimension, inline-progression-dimension
+ * corresponds to the triplet min-height, height, max-height (or width)
+ */
+public class LengthRange {
+
+ private Length minimum;
+ private Length optimum;
+ private Length maximum;
+ private static final int MINSET=1;
+ private static final int OPTSET=2;
+ private static final int MAXSET=4;
+ private int bfSet = 0; // bit field
+
+ /**
+ * set the space values, and make sure that min <= opt <= max
+ */
+ public LengthRange (Length l) {
+ this.minimum = l;
+ this.optimum = l;
+ this.maximum = l;
+ }
+
+ /** Set minimum value to min if it is <= optimum or optimum isn't set
+ */
+ public void setMinimum(Length min) {
+ if ((bfSet&OPTSET)==0) {
+ if ((bfSet&MAXSET)!=0 && (min.mvalue() > maximum.mvalue()))
+ min = maximum;
+ }
+ else if (min.mvalue() > optimum.mvalue())
+ min = optimum;
+ minimum = min;
+ bfSet |= MINSET;
+ }
+
+ /** Set maximum value to max if it is >= optimum or optimum isn't set
+ */
+ public void setMaximum(Length max) {
+ if ((bfSet&OPTSET)==0) {
+ if ((bfSet&MINSET) != 0 && (max.mvalue() < minimum.mvalue()))
+ max = minimum;
+ }
+ else if (max.mvalue() < optimum.mvalue())
+ max = optimum;
+ maximum = max;
+ bfSet |= MAXSET;
+ }
+
+
+ /**
+ * Set the optimum value.
+ */
+ public void setOptimum(Length opt) {
+ if (((bfSet&MINSET)==0 || opt.mvalue() >= minimum.mvalue()) &&
+ ((bfSet&MAXSET)==0 || opt.mvalue() <= maximum.mvalue())) {
+ optimum = opt;
+ bfSet |= OPTSET;
+ }
+ }
+
+ public Length getMinimum() {
+ return this.minimum;
+ }
+
+ public Length getMaximum() {
+ return this.maximum;
+ }
+
+ public Length getOptimum() {
+ return this.optimum;
+ }
+}
diff --git a/src/org/apache/fop/datatypes/MixedLength.java b/src/org/apache/fop/datatypes/MixedLength.java
new file mode 100644
index 000000000..e97af90cf
--- /dev/null
+++ b/src/org/apache/fop/datatypes/MixedLength.java
@@ -0,0 +1,94 @@
+/*-- $Id$ --
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Fop" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+ */
+package org.apache.fop.datatypes;
+
+import org.apache.fop.messaging.MessageHandler;
+
+/**
+ * A length quantity in XSL which is specified with a mixture
+ * of absolute and relative and/or percent components.
+ * The actual value may not be computable before layout is done.
+ */
+public class MixedLength extends Length {
+
+ private PercentLength pcPart;
+
+ /**
+ * 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 MixedLength (int absPart, PercentLength pcPart) {
+ super(absPart);
+ this.pcPart = pcPart;
+ super.setIsComputed(false);
+ }
+
+ protected int computeValue() {
+ int rslt = super.computeValue(); // absolute part
+ if (pcPart != null) {
+ rslt += pcPart.computeValue();
+ }
+ return rslt;
+ }
+
+ public String toString() {
+ // return the factor as a percent
+ // What about the base value?
+ StringBuffer rslt = new StringBuffer(super.toString());
+
+ if (pcPart != null) {
+ rslt.append("+" + pcPart.toString());
+ }
+ return rslt.toString();
+ }
+
+}
diff --git a/src/org/apache/fop/datatypes/PercentBase.java b/src/org/apache/fop/datatypes/PercentBase.java
new file mode 100644
index 000000000..75f5b4beb
--- /dev/null
+++ b/src/org/apache/fop/datatypes/PercentBase.java
@@ -0,0 +1,57 @@
+/*-- $Id$ --
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+ */
+package org.apache.fop.datatypes;
+
+public interface PercentBase {
+ public int getDimension();
+ public double getBaseValue();
+ public int getBaseLength();
+}
diff --git a/src/org/apache/fop/datatypes/PercentLength.java b/src/org/apache/fop/datatypes/PercentLength.java
new file mode 100644
index 000000000..f85b96931
--- /dev/null
+++ b/src/org/apache/fop/datatypes/PercentLength.java
@@ -0,0 +1,102 @@
+/*-- $Id$ --
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Fop" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+ */
+package org.apache.fop.datatypes;
+
+import org.apache.fop.messaging.MessageHandler;
+
+/**
+ * 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) {
+ super(0);
+ this.factor = factor;
+ this.lbase = lbase;
+ super.setIsComputed(false);
+ }
+
+ 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 int computeValue() {
+ return (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()) + "%";
+ }
+}
diff --git a/src/org/apache/fop/datatypes/Space.java b/src/org/apache/fop/datatypes/Space.java
new file mode 100644
index 000000000..71481af79
--- /dev/null
+++ b/src/org/apache/fop/datatypes/Space.java
@@ -0,0 +1,99 @@
+/*-- $Id$ --
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Fop" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+ */
+package org.apache.fop.datatypes;
+
+/**
+ * a space quantity in XSL (space-before, space-after)
+ */
+public class Space extends LengthRange {
+
+ /** Values for conditionality. Specified as a string value. */
+ public static final int DISCARD = 0;
+ public static final int RETAIN = 1;
+
+ //private Precedence precedence;
+ private int precedence=0;
+ private int conditionality=DISCARD ;
+
+ /**
+ * set the space values, and make sure that min <= opt <= max
+ */
+ public Space (Length l) {
+ super(l);
+ }
+
+
+ // public void setPrecedence(Precedence precedence) {
+ public void setPrecedence(Number precedence) {
+ this.precedence = precedence.intValue();
+ }
+
+ public void setConditionality(String conditionality) {
+ if (conditionality.equals("retain"))
+ this.conditionality = Space.RETAIN;
+ else if (conditionality.equals("discard"))
+ this.conditionality = Space.DISCARD;
+ // else unrecognized value
+ }
+
+ // public Precedence getPrecedence() {
+ public int getPrecedence() {
+ return this.precedence ;
+ }
+
+ public boolean isDiscard() {
+ return (this.conditionality == DISCARD);
+ }
+
+ public String getConditionality() {
+ return ((this.conditionality == DISCARD)? "discard" : "retain");
+ }
+}
diff --git a/src/org/apache/fop/datatypes/TableColLength.java b/src/org/apache/fop/datatypes/TableColLength.java
new file mode 100644
index 000000000..e395e4f27
--- /dev/null
+++ b/src/org/apache/fop/datatypes/TableColLength.java
@@ -0,0 +1,100 @@
+/*-- $Id$ --
+
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Fop" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+
+ */
+package org.apache.fop.datatypes;
+
+import org.apache.fop.messaging.MessageHandler;
+
+/**
+ * A table-column width specification, possibly including some
+ * number of proportional "column-units". The absolute size of a
+ * column-unit depends on the fixed and proportional sizes of all
+ * columns in the table, and on the overall size of the table.
+ * It can't be calculated until all columns have been specified and until
+ * the actual width of the table is known. Since this can be specified
+ * as a percent of its parent containing width, the calculation is done
+ * during layout.
+ * NOTE: this is only supposed to be allowed if table-layout=fixed.
+ */
+public class TableColLength extends MixedLength {
+
+ /** Number of table-column proportional units */
+ double tcolUnits;
+
+ /**
+ * Construct an object with tcolUnits of proportional measure.
+ */
+ public TableColLength (double tcolUnits) {
+ super(0, null);
+ this.tcolUnits = tcolUnits;
+ }
+
+ public TableColLength (int absUnits,
+ PercentLength pcUnits, double tcolUnits) {
+ super(absUnits, pcUnits);
+ this.tcolUnits = tcolUnits;
+ }
+
+
+ /**
+ * Override the method in Length to return the number of specified
+ * proportional table-column units.
+ */
+ public double getTableUnits() {
+ return tcolUnits;
+ }
+
+ // Set tcolUnits too when resolved?
+
+ public String toString() {
+ return (super.toString() + "+" +
+ (new Double(tcolUnits).toString()) + "table-column-units");
+ }
+}