From 99d6c358578ef29ecdc64ba53777a33c3822448f Mon Sep 17 00:00:00 2001 From: William Victor Mote Date: Thu, 28 Aug 2003 19:08:59 +0000 Subject: move layoutmgr/MinOptMax to traits/MinOptMax git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196870 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/fop/layoutmgr/AddLMVisitor.java | 1 + .../fop/layoutmgr/BlockContainerLayoutManager.java | 1 + .../apache/fop/layoutmgr/BlockLayoutManager.java | 1 + .../fop/layoutmgr/BlockStackingLayoutManager.java | 1 + src/java/org/apache/fop/layoutmgr/BreakPoss.java | 1 + .../apache/fop/layoutmgr/ContentLayoutManager.java | 1 + .../apache/fop/layoutmgr/FlowLayoutManager.java | 1 + .../fop/layoutmgr/InlineStackingLayoutManager.java | 1 + .../org/apache/fop/layoutmgr/LayoutContext.java | 2 + .../fop/layoutmgr/LeafNodeLayoutManager.java | 1 + .../apache/fop/layoutmgr/LineLayoutManager.java | 1 + src/java/org/apache/fop/layoutmgr/MinOptMax.java | 161 --------------------- .../apache/fop/layoutmgr/PageLayoutManager.java | 1 + .../org/apache/fop/layoutmgr/SpaceSpecifier.java | 1 + .../apache/fop/layoutmgr/TextLayoutManager.java | 1 + src/java/org/apache/fop/layoutmgr/list/Item.java | 2 +- .../fop/layoutmgr/list/ListBlockLayoutManager.java | 2 +- .../fop/layoutmgr/list/ListItemLayoutManager.java | 2 +- src/java/org/apache/fop/layoutmgr/table/Body.java | 2 +- .../org/apache/fop/layoutmgr/table/Caption.java | 2 +- src/java/org/apache/fop/layoutmgr/table/Cell.java | 2 +- src/java/org/apache/fop/layoutmgr/table/Row.java | 2 +- .../table/TableAndCaptionLayoutManager.java | 2 +- .../fop/layoutmgr/table/TableLayoutManager.java | 2 +- src/java/org/apache/fop/traits/MinOptMax.java | 161 +++++++++++++++++++++ src/java/org/apache/fop/traits/SpaceVal.java | 2 +- 26 files changed, 186 insertions(+), 171 deletions(-) delete mode 100644 src/java/org/apache/fop/layoutmgr/MinOptMax.java create mode 100644 src/java/org/apache/fop/traits/MinOptMax.java (limited to 'src') diff --git a/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java b/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java index b718f720a..911b5b4f2 100644 --- a/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java +++ b/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java @@ -125,6 +125,7 @@ import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import org.apache.fop.apps.*; +import org.apache.fop.traits.*; /** * Concrete implementation of FOTreeVisitor for the purpose of adding diff --git a/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java index f16acc3c4..22e4db026 100644 --- a/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java @@ -63,6 +63,7 @@ import org.apache.fop.fo.properties.Overflow; import org.apache.fop.fo.PropertyList; import org.apache.fop.area.CTM; import org.apache.fop.datatypes.FODimension; +import org.apache.fop.traits.*; /** * LayoutManager for a block FO. diff --git a/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java index c4e980c56..2f6284433 100644 --- a/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java @@ -65,6 +65,7 @@ import org.apache.fop.fo.properties.CommonBorderAndPadding; import org.apache.fop.fo.properties.CommonBackground; import org.apache.fop.fonts.*; import org.apache.fop.apps.*; +import org.apache.fop.traits.*; /** * LayoutManager for a block FO. diff --git a/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java b/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java index f2d525100..bdbe06369 100644 --- a/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java @@ -53,6 +53,7 @@ package org.apache.fop.layoutmgr; import org.apache.fop.area.Area; import org.apache.fop.area.BlockParent; import org.apache.fop.area.Block; +import org.apache.fop.traits.*; /** * Base LayoutManager class for all areas which stack their child diff --git a/src/java/org/apache/fop/layoutmgr/BreakPoss.java b/src/java/org/apache/fop/layoutmgr/BreakPoss.java index 61184cbf8..f4fcca41d 100644 --- a/src/java/org/apache/fop/layoutmgr/BreakPoss.java +++ b/src/java/org/apache/fop/layoutmgr/BreakPoss.java @@ -51,6 +51,7 @@ package org.apache.fop.layoutmgr; import org.apache.fop.traits.LayoutProps; +import org.apache.fop.traits.*; /** * Represents a break possibility for the layout manager. diff --git a/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java b/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java index 86d101d63..85263a045 100644 --- a/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/ContentLayoutManager.java @@ -62,6 +62,7 @@ import org.apache.avalon.framework.logger.Logger; import java.util.List; import java.util.Map; import java.util.ArrayList; +import org.apache.fop.traits.*; /** * Content Layout Manager. diff --git a/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java b/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java index f9e850ea7..cfed1a58a 100644 --- a/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java @@ -56,6 +56,7 @@ import org.apache.fop.area.BlockParent; import java.util.ArrayList; import java.util.List; +import org.apache.fop.traits.*; /** * LayoutManager for an fo:flow object. diff --git a/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java b/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java index b5c9cd162..e59b8d4c5 100644 --- a/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/InlineStackingLayoutManager.java @@ -63,6 +63,7 @@ import org.apache.fop.area.Area; import org.apache.fop.area.inline.InlineArea; import org.apache.fop.area.inline.InlineParent; import org.apache.fop.area.inline.Space; +import org.apache.fop.traits.*; /** * LayoutManager for objects which stack children in the inline direction, diff --git a/src/java/org/apache/fop/layoutmgr/LayoutContext.java b/src/java/org/apache/fop/layoutmgr/LayoutContext.java index 6187ba9e9..e635230c5 100644 --- a/src/java/org/apache/fop/layoutmgr/LayoutContext.java +++ b/src/java/org/apache/fop/layoutmgr/LayoutContext.java @@ -50,6 +50,8 @@ */ package org.apache.fop.layoutmgr; +import org.apache.fop.traits.*; + /** * This class is used to pass information to the getNextBreakPoss() diff --git a/src/java/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java b/src/java/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java index 86d212c50..a84c8db16 100644 --- a/src/java/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/LeafNodeLayoutManager.java @@ -53,6 +53,7 @@ package org.apache.fop.layoutmgr; import org.apache.fop.area.Area; import org.apache.fop.area.inline.InlineArea; import org.apache.fop.fo.properties.VerticalAlign; +import org.apache.fop.traits.*; /** * Base LayoutManager for leaf-node FObj, ie: ones which have no children. diff --git a/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java b/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java index 39dcb25c4..d18ebaa51 100644 --- a/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java @@ -64,6 +64,7 @@ import java.util.ListIterator; import java.util.Iterator; import java.util.List; import java.util.ArrayList; +import org.apache.fop.traits.*; /** * LayoutManager for lines. It builds one or more lines containing diff --git a/src/java/org/apache/fop/layoutmgr/MinOptMax.java b/src/java/org/apache/fop/layoutmgr/MinOptMax.java deleted file mode 100644 index 2360e2cda..000000000 --- a/src/java/org/apache/fop/layoutmgr/MinOptMax.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * $Id: MinOptMax.java,v 1.3 2003/03/07 07:58:51 jeremias Exp $ - * ============================================================================ - * The Apache Software License, Version 1.1 - * ============================================================================ - * - * Copyright (C) 1999-2003 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.layoutmgr; - -/** - * This class holds the resolved (as mpoints) form of a LengthRange or - * Space type Property value. - * MinOptMax values are used during layout calculations. The instance - * variables are package visible. - */ -public class MinOptMax implements java.io.Serializable, Cloneable { - - /** Publicly visible min(imum), opt(imum) and max(imum) values.*/ - public int min; - public int opt; - public int max; - - /** - * New min/opt/max with zero values. - */ - public MinOptMax() { - this(0); - } - - /** - * New min/opt/max with one fixed value. - * - * @param val the value for min, opt and max - */ - public MinOptMax(int val) { - this(val, val, val); - } - - /** - * New min/opt/max with the three values. - * - * @param min the minimum value - * @param opt the optimum value - * @param max the maximum value - */ - public MinOptMax(int min, int opt, int max) { - this.min = min; - this.opt = opt; - this.max = max; - } - - /** - * @see java.lang.Object#clone() - */ - public Object clone() { - try { - return super.clone(); - } catch (CloneNotSupportedException ex) { - // SHOULD NEVER OCCUR - all members are primitive types! - return null; - } - } - - /** - * Subtracts one MinOptMax instance from another returning a new one. - * @param op1 first instance to subtract from - * @param op2 second instance - * @return MinOptMax new instance - */ - public static MinOptMax subtract(MinOptMax op1, MinOptMax op2) { - return new MinOptMax(op1.min - op2.max, op1.opt - op2.opt, - op1.max - op2.min); - } - - /** - * Adds one MinOptMax instance to another returning a new one. - * @param op1 first instance - * @param op2 second instance - * @return MinOptMax new instance - */ - public static MinOptMax add(MinOptMax op1, MinOptMax op2) { - return new MinOptMax(op1.min + op2.min, op1.opt + op2.opt, - op1.max + op2.max); - } - - /** - * Multiplies a MinOptMax instance with a factor returning a new instance. - * @param op1 MinOptMax instance - * @param mult multiplier - * @return MinOptMax new instance - */ - public static MinOptMax multiply(MinOptMax op1, double mult) { - return new MinOptMax((int)(op1.min * mult), - (int)(op1.opt * mult), (int)(op1.max * mult)); - } - - /** - * Adds another MinOptMax instance to this one. - * @param op the other instance - */ - public void add(MinOptMax op) { - min += op.min; - opt += op.opt; - max += op.max; - } - - /** - * Subtracts from this instance using another. - * @param op the other instance - */ - public void subtract(MinOptMax op) { - min -= op.max; - opt -= op.opt; - max -= op.min; - } - -} - diff --git a/src/java/org/apache/fop/layoutmgr/PageLayoutManager.java b/src/java/org/apache/fop/layoutmgr/PageLayoutManager.java index d37f24fd8..5a202c2d2 100644 --- a/src/java/org/apache/fop/layoutmgr/PageLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/PageLayoutManager.java @@ -91,6 +91,7 @@ import java.util.Map; import java.awt.Rectangle; import java.util.Iterator; import java.awt.geom.Rectangle2D; +import org.apache.fop.traits.*; /** * LayoutManager for a PageSequence and its flow. diff --git a/src/java/org/apache/fop/layoutmgr/SpaceSpecifier.java b/src/java/org/apache/fop/layoutmgr/SpaceSpecifier.java index a6a716f6a..ef14615d7 100644 --- a/src/java/org/apache/fop/layoutmgr/SpaceSpecifier.java +++ b/src/java/org/apache/fop/layoutmgr/SpaceSpecifier.java @@ -53,6 +53,7 @@ package org.apache.fop.layoutmgr; import org.apache.fop.traits.SpaceVal; import java.util.ArrayList; import java.util.List; +import org.apache.fop.traits.*; /** * Accumulate a sequence of space-specifiers (XSL space type) on diff --git a/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java b/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java index 903f8c51b..9afe92f7a 100644 --- a/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/TextLayoutManager.java @@ -60,6 +60,7 @@ import org.apache.fop.area.inline.Word; import org.apache.fop.area.inline.Space; import org.apache.fop.util.CharUtilities; import org.apache.fop.fonts.*; +import org.apache.fop.traits.*; /** * LayoutManager for text (a sequence of characters) which generates one diff --git a/src/java/org/apache/fop/layoutmgr/list/Item.java b/src/java/org/apache/fop/layoutmgr/list/Item.java index c9f4ff297..dca586894 100644 --- a/src/java/org/apache/fop/layoutmgr/list/Item.java +++ b/src/java/org/apache/fop/layoutmgr/list/Item.java @@ -62,7 +62,7 @@ import org.apache.fop.layoutmgr.Position; import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import org.apache.fop.fo.properties.CommonBorderAndPadding; import org.apache.fop.fo.properties.CommonBackground; diff --git a/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java b/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java index 1ac46d33d..0a8fd15ea 100644 --- a/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java @@ -62,7 +62,7 @@ import org.apache.fop.layoutmgr.Position; import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import org.apache.fop.fo.properties.CommonBorderAndPadding; import org.apache.fop.fo.properties.CommonBackground; diff --git a/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java b/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java index b0acd3896..49d58129d 100644 --- a/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java @@ -61,7 +61,7 @@ import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import org.apache.fop.fo.properties.CommonBorderAndPadding; import org.apache.fop.fo.properties.CommonBackground; diff --git a/src/java/org/apache/fop/layoutmgr/table/Body.java b/src/java/org/apache/fop/layoutmgr/table/Body.java index f58d6ea4b..5efbd7514 100644 --- a/src/java/org/apache/fop/layoutmgr/table/Body.java +++ b/src/java/org/apache/fop/layoutmgr/table/Body.java @@ -62,7 +62,7 @@ import org.apache.fop.layoutmgr.Position; import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import org.apache.fop.fo.properties.CommonBorderAndPadding; import org.apache.fop.fo.properties.CommonBackground; diff --git a/src/java/org/apache/fop/layoutmgr/table/Caption.java b/src/java/org/apache/fop/layoutmgr/table/Caption.java index da6ebeeb8..84f21b8ff 100644 --- a/src/java/org/apache/fop/layoutmgr/table/Caption.java +++ b/src/java/org/apache/fop/layoutmgr/table/Caption.java @@ -60,7 +60,7 @@ import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import java.util.ArrayList; import java.util.List; diff --git a/src/java/org/apache/fop/layoutmgr/table/Cell.java b/src/java/org/apache/fop/layoutmgr/table/Cell.java index 08f1d8402..a89dcd1d9 100644 --- a/src/java/org/apache/fop/layoutmgr/table/Cell.java +++ b/src/java/org/apache/fop/layoutmgr/table/Cell.java @@ -62,7 +62,7 @@ import org.apache.fop.layoutmgr.Position; import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import org.apache.fop.fo.properties.CommonBorderAndPadding; import org.apache.fop.fo.properties.CommonBackground; diff --git a/src/java/org/apache/fop/layoutmgr/table/Row.java b/src/java/org/apache/fop/layoutmgr/table/Row.java index a22c6cab4..de884e9a5 100644 --- a/src/java/org/apache/fop/layoutmgr/table/Row.java +++ b/src/java/org/apache/fop/layoutmgr/table/Row.java @@ -62,7 +62,7 @@ import org.apache.fop.layoutmgr.Position; import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import org.apache.fop.fo.properties.CommonBorderAndPadding; import org.apache.fop.fo.properties.CommonBackground; diff --git a/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java b/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java index 5160fff11..424794730 100644 --- a/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java @@ -60,7 +60,7 @@ import org.apache.fop.layoutmgr.BreakPossPosIter; import org.apache.fop.layoutmgr.Position; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import java.util.ArrayList; import java.util.List; diff --git a/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java b/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java index 3c4303f48..b56cd3e94 100644 --- a/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java @@ -62,7 +62,7 @@ import org.apache.fop.layoutmgr.Position; import org.apache.fop.layoutmgr.TraitSetter; import org.apache.fop.area.Area; import org.apache.fop.area.Block; -import org.apache.fop.layoutmgr.MinOptMax; +import org.apache.fop.traits.MinOptMax; import org.apache.fop.fo.properties.CommonBorderAndPadding; import org.apache.fop.fo.properties.CommonBackground; diff --git a/src/java/org/apache/fop/traits/MinOptMax.java b/src/java/org/apache/fop/traits/MinOptMax.java new file mode 100644 index 000000000..114c4e03f --- /dev/null +++ b/src/java/org/apache/fop/traits/MinOptMax.java @@ -0,0 +1,161 @@ +/* + * $Id$ + * ============================================================================ + * The Apache Software License, Version 1.1 + * ============================================================================ + * + * Copyright (C) 1999-2003 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.traits; + +/** + * This class holds the resolved (as mpoints) form of a LengthRange or + * Space type Property value. + * MinOptMax values are used during layout calculations. The instance + * variables are package visible. + */ +public class MinOptMax implements java.io.Serializable, Cloneable { + + /** Publicly visible min(imum), opt(imum) and max(imum) values.*/ + public int min; + public int opt; + public int max; + + /** + * New min/opt/max with zero values. + */ + public MinOptMax() { + this(0); + } + + /** + * New min/opt/max with one fixed value. + * + * @param val the value for min, opt and max + */ + public MinOptMax(int val) { + this(val, val, val); + } + + /** + * New min/opt/max with the three values. + * + * @param min the minimum value + * @param opt the optimum value + * @param max the maximum value + */ + public MinOptMax(int min, int opt, int max) { + this.min = min; + this.opt = opt; + this.max = max; + } + + /** + * @see java.lang.Object#clone() + */ + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException ex) { + // SHOULD NEVER OCCUR - all members are primitive types! + return null; + } + } + + /** + * Subtracts one MinOptMax instance from another returning a new one. + * @param op1 first instance to subtract from + * @param op2 second instance + * @return MinOptMax new instance + */ + public static MinOptMax subtract(MinOptMax op1, MinOptMax op2) { + return new MinOptMax(op1.min - op2.max, op1.opt - op2.opt, + op1.max - op2.min); + } + + /** + * Adds one MinOptMax instance to another returning a new one. + * @param op1 first instance + * @param op2 second instance + * @return MinOptMax new instance + */ + public static MinOptMax add(MinOptMax op1, MinOptMax op2) { + return new MinOptMax(op1.min + op2.min, op1.opt + op2.opt, + op1.max + op2.max); + } + + /** + * Multiplies a MinOptMax instance with a factor returning a new instance. + * @param op1 MinOptMax instance + * @param mult multiplier + * @return MinOptMax new instance + */ + public static MinOptMax multiply(MinOptMax op1, double mult) { + return new MinOptMax((int)(op1.min * mult), + (int)(op1.opt * mult), (int)(op1.max * mult)); + } + + /** + * Adds another MinOptMax instance to this one. + * @param op the other instance + */ + public void add(MinOptMax op) { + min += op.min; + opt += op.opt; + max += op.max; + } + + /** + * Subtracts from this instance using another. + * @param op the other instance + */ + public void subtract(MinOptMax op) { + min -= op.max; + opt -= op.opt; + max -= op.min; + } + +} + diff --git a/src/java/org/apache/fop/traits/SpaceVal.java b/src/java/org/apache/fop/traits/SpaceVal.java index 579c56099..762b65305 100644 --- a/src/java/org/apache/fop/traits/SpaceVal.java +++ b/src/java/org/apache/fop/traits/SpaceVal.java @@ -51,7 +51,7 @@ package org.apache.fop.traits; import org.apache.fop.datatypes.Space; -import org.apache.fop.layoutmgr.MinOptMax; + import org.apache.fop.fo.Property; import org.apache.fop.fo.properties.Constants; -- cgit v1.2.3