From f5ae0387fda5c83b7cbcc4c637ceaa696eb1e328 Mon Sep 17 00:00:00 2001 From: Karen Lease Date: Fri, 10 Nov 2000 22:31:00 +0000 Subject: [PATCH] New types for properties git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@193774 13f79535-47bb-0310-9956-ffa450edef68 --- src/org/apache/fop/datatypes/CondLength.java | 91 +++++++++++++ src/org/apache/fop/datatypes/LengthBase.java | 58 ++++++++ src/org/apache/fop/datatypes/LengthRange.java | 126 ++++++++++++++++++ src/org/apache/fop/datatypes/MixedLength.java | 94 +++++++++++++ src/org/apache/fop/datatypes/PercentBase.java | 57 ++++++++ .../apache/fop/datatypes/PercentLength.java | 102 ++++++++++++++ src/org/apache/fop/datatypes/Space.java | 99 ++++++++++++++ .../apache/fop/datatypes/TableColLength.java | 100 ++++++++++++++ 8 files changed, 727 insertions(+) create mode 100644 src/org/apache/fop/datatypes/CondLength.java create mode 100644 src/org/apache/fop/datatypes/LengthBase.java create mode 100644 src/org/apache/fop/datatypes/LengthRange.java create mode 100644 src/org/apache/fop/datatypes/MixedLength.java create mode 100644 src/org/apache/fop/datatypes/PercentBase.java create mode 100644 src/org/apache/fop/datatypes/PercentLength.java create mode 100644 src/org/apache/fop/datatypes/Space.java create mode 100644 src/org/apache/fop/datatypes/TableColLength.java 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 . For more information on the Apache + Software Foundation, please see . + + */ +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 . For more information on the Apache + Software Foundation, please see . + + */ +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 . For more information on the Apache + Software Foundation, please see . + + */ +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 . For more information on the Apache + Software Foundation, please see . + + */ +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 . For more information on the Apache + Software Foundation, please see . + + */ +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 . For more information on the Apache + Software Foundation, please see . + + */ +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 . For more information on the Apache + Software Foundation, please see . + + */ +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 . For more information on the Apache + Software Foundation, please see . + + */ +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"); + } +} -- 2.39.5