aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache
diff options
context:
space:
mode:
authorFinn Bock <bckfnn@apache.org>2004-02-02 15:01:41 +0000
committerFinn Bock <bckfnn@apache.org>2004-02-02 15:01:41 +0000
commit58b2d92b2d60f6390ac98c0e1791e690d72631da (patch)
treea45516e6fbe0004062b7c7b85235851e1c158c0c /src/java/org/apache
parent52bd88e77fb4da5285da4754c01ab50d079dd358 (diff)
downloadxmlgraphics-fop-58b2d92b2d60f6390ac98c0e1791e690d72631da.tar.gz
xmlgraphics-fop-58b2d92b2d60f6390ac98c0e1791e690d72631da.zip
Phase 2 of bug 26434.
- Roll the datatypes logic into the property classes. PR: 26434. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197312 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache')
-rw-r--r--src/java/org/apache/fop/datatypes/AutoLength.java8
-rw-r--r--src/java/org/apache/fop/datatypes/ColorType.java691
-rw-r--r--src/java/org/apache/fop/datatypes/CondLength.java127
-rw-r--r--src/java/org/apache/fop/datatypes/FixedLength.java9
-rw-r--r--src/java/org/apache/fop/datatypes/Keep.java157
-rw-r--r--src/java/org/apache/fop/datatypes/Length.java93
-rw-r--r--src/java/org/apache/fop/datatypes/LengthPair.java112
-rw-r--r--src/java/org/apache/fop/datatypes/LengthRange.java231
-rw-r--r--src/java/org/apache/fop/datatypes/LinearCombinationLength.java6
-rw-r--r--src/java/org/apache/fop/datatypes/MixedLength.java21
-rw-r--r--src/java/org/apache/fop/datatypes/PercentLength.java9
-rw-r--r--src/java/org/apache/fop/datatypes/Space.java133
-rw-r--r--src/java/org/apache/fop/datatypes/TableColLength.java9
-rw-r--r--src/java/org/apache/fop/fo/ColorTypeProperty.java720
-rw-r--r--src/java/org/apache/fop/fo/CondLengthProperty.java82
-rw-r--r--src/java/org/apache/fop/fo/EnumProperty.java2
-rw-r--r--src/java/org/apache/fop/fo/FOPropertyMapping.java4
-rw-r--r--src/java/org/apache/fop/fo/KeepProperty.java100
-rw-r--r--src/java/org/apache/fop/fo/LengthPairProperty.java58
-rw-r--r--src/java/org/apache/fop/fo/LengthProperty.java117
-rw-r--r--src/java/org/apache/fop/fo/LengthRangeProperty.java182
-rw-r--r--src/java/org/apache/fop/fo/NumberProperty.java11
-rw-r--r--src/java/org/apache/fop/fo/Property.java28
-rw-r--r--src/java/org/apache/fop/fo/SpaceProperty.java88
-rw-r--r--src/java/org/apache/fop/fo/expr/AbsFunction.java4
-rw-r--r--src/java/org/apache/fop/fo/expr/BodyStartFunction.java6
-rw-r--r--src/java/org/apache/fop/fo/expr/LabelEndFunction.java9
-rw-r--r--src/java/org/apache/fop/fo/expr/MaxFunction.java6
-rw-r--r--src/java/org/apache/fop/fo/expr/MinFunction.java6
-rw-r--r--src/java/org/apache/fop/fo/expr/Numeric.java429
-rw-r--r--src/java/org/apache/fop/fo/expr/NumericProperty.java383
-rw-r--r--src/java/org/apache/fop/fo/expr/PPColWidthFunction.java3
-rw-r--r--src/java/org/apache/fop/fo/expr/PropertyParser.java43
-rw-r--r--src/java/org/apache/fop/fo/expr/RGBColorFunction.java4
-rw-r--r--src/java/org/apache/fop/fo/flow/ExternalGraphic.java10
-rw-r--r--src/java/org/apache/fop/fo/flow/Table.java4
-rw-r--r--src/java/org/apache/fop/fo/properties/BorderWidthPropertyMaker.java1
-rw-r--r--src/java/org/apache/fop/fo/properties/CommonBorderAndPadding.java12
-rw-r--r--src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java7
-rw-r--r--src/java/org/apache/fop/fo/properties/LineHeightPropertyMaker.java3
-rw-r--r--src/java/org/apache/fop/render/rtf/TableAttributesConverter.java2
-rw-r--r--src/java/org/apache/fop/render/rtf/TextAttributesConverter.java6
-rw-r--r--src/java/org/apache/fop/traits/SpaceVal.java5
43 files changed, 1747 insertions, 2194 deletions
diff --git a/src/java/org/apache/fop/datatypes/AutoLength.java b/src/java/org/apache/fop/datatypes/AutoLength.java
index d31f92303..cafe3a3d7 100644
--- a/src/java/org/apache/fop/datatypes/AutoLength.java
+++ b/src/java/org/apache/fop/datatypes/AutoLength.java
@@ -50,10 +50,12 @@
*/
package org.apache.fop.datatypes;
+import org.apache.fop.fo.LengthProperty;
+
/**
* A length quantity in XSL which is specified as "auto".
*/
-public class AutoLength extends Length {
+public class AutoLength extends LengthProperty {
/**
* @see org.apache.fop.datatypes.Length#isAuto()
@@ -68,9 +70,9 @@ public class AutoLength extends Length {
// }
/**
- * @see java.lang.Object#toString()
+ * @see org.apache.fop.fo.Property#getString()
*/
- public String toString() {
+ public String getString() {
return "auto";
}
diff --git a/src/java/org/apache/fop/datatypes/ColorType.java b/src/java/org/apache/fop/datatypes/ColorType.java
index 461983ea0..f0c20f3e1 100644
--- a/src/java/org/apache/fop/datatypes/ColorType.java
+++ b/src/java/org/apache/fop/datatypes/ColorType.java
@@ -51,716 +51,39 @@
package org.apache.fop.datatypes;
import java.awt.Color;
-import java.io.Serializable;
-import java.util.StringTokenizer;
/**
* A colour quantity in XSL.
*/
-public class ColorType implements Serializable {
-
- /**
- * the red component
- */
- protected float red = 0f;
-
- /**
- * the green component
- */
- protected float green = 0f;
-
- /**
- * the blue component
- */
- protected float blue = 0f;
-
- /**
- * the alpha component (indicator of opaque-ness)
- * 0.0 - 1.0; 0.0 is completely transparent; 1.0 is completely opaque
- * see definition at http://java.sun.com/j2se/1.3/docs/api/java/awt/Color.html
- */
- protected float alpha = 1f;
-
- /**
- * Main constructor
- * @param red red component
- * @param green green component
- * @param blue blue component
- */
- public ColorType(float red, float green, float blue) {
- this.red = red;
- this.green = green;
- this.blue = blue;
- }
-
- /**
- * Set the colour given a particular String specifying either a
- * colour name or #RGB or #RRGGBB
- * @param value RGB value as String to be parsed
- */
- public ColorType(String value) {
- if (value.startsWith("#")) {
- try {
- if (value.length() == 4) {
- // note: divide by 15 so F = FF = 1 and so on
- this.red = Integer.parseInt(value.substring(1, 2), 16)
- / 15f;
- this.green = Integer.parseInt(value.substring(2, 3), 16)
- / 15f;
- this.blue = Integer.parseInt(value.substring(3), 16)
- / 15f;
- } else if (value.length() == 7) {
- // note: divide by 255 so FF = 1
- this.red = Integer.parseInt(value.substring(1, 3), 16)
- / 255f;
- this.green = Integer.parseInt(value.substring(3, 5), 16)
- / 255f;
- this.blue = Integer.parseInt(value.substring(5), 16)
- / 255f;
- } else {
- this.red = 0;
- this.green = 0;
- this.blue = 0;
- //log.error("unknown colour format. Must be #RGB or #RRGGBB");
- }
- } catch (Exception e) {
- this.red = 0;
- this.green = 0;
- this.blue = 0;
- //log.error("unknown colour format. Must be #RGB or #RRGGBB");
- }
- } else if (value.startsWith("rgb(")) {
- int poss = value.indexOf("(");
- int pose = value.indexOf(")");
- if (poss != -1 && pose != -1) {
- value = value.substring(poss + 1, pose);
- StringTokenizer st = new StringTokenizer(value, ",");
- try {
- if (st.hasMoreTokens()) {
- String str = st.nextToken().trim();
- if (str.endsWith("%")) {
- this.red =
- Integer.parseInt(str.substring(0, str.length() - 1))
- * 2.55f;
- } else {
- this.red = Integer.parseInt(str) / 255f;
- }
- }
- if (st.hasMoreTokens()) {
- String str = st.nextToken().trim();
- if (str.endsWith("%")) {
- this.green =
- Integer.parseInt(str.substring(0, str.length() - 1))
- * 2.55f;
- } else {
- this.green = Integer.parseInt(str) / 255f;
- }
- }
- if (st.hasMoreTokens()) {
- String str = st.nextToken().trim();
- if (str.endsWith("%")) {
- this.blue =
- Integer.parseInt(str.substring(0, str.length() - 1))
- * 2.55f;
- } else {
- this.blue = Integer.parseInt(str) / 255f;
- }
- }
- } catch (Exception e) {
- this.red = 0;
- this.green = 0;
- this.blue = 0;
- //log.error("unknown colour format. Must be #RGB or #RRGGBB");
- }
- }
- } else if (value.startsWith("url(")) {
- // refers to a gradient
- } else {
- if (value.toLowerCase().equals("transparent")) {
- this.red = 0;
- this.green = 0;
- this.blue = 0;
- this.alpha = 0;
- } else {
- boolean found = false;
- for (int count = 0; count < NAMES.length; count++) {
- if (value.toLowerCase().equals(NAMES[count])) {
- this.red = VALUES[count][0] / 255f;
- this.green = VALUES[count][1] / 255f;
- this.blue = VALUES[count][2] / 255f;
- found = true;
- break;
- }
- }
- if (!found) {
- this.red = 0;
- this.green = 0;
- this.blue = 0;
- //log.error("unknown colour name: "
- // + value);
- }
- }
- }
- }
+public interface ColorType {
/**
* Returns the blue component of the color.
* @return float a value between 0.0 and 1.0
*/
- public float getBlue() {
- return this.blue;
- }
+ public float getBlue();
/**
* Returns the green component of the color.
* @return float a value between 0.0 and 1.0
*/
- public float getGreen() {
- return this.green;
- }
+ public float getGreen();
/**
* Returns the red component of the color.
* @return float a value between 0.0 and 1.0
*/
- public float getRed() {
- return this.red;
- }
+ public float getRed();
/**
* Returns the alpha (degree of opaque-ness) component of the color.
* @return float a value between 0.0 (fully transparent) and 1.0 (fully opaque)
*/
- public float getAlpha() {
- return this.alpha;
- }
+ public float getAlpha();
/**
* Returns an AWT instance of this color
* @return float the AWT color represented by this ColorType instance
*/
- public Color getAWTColor() {
- return new Color(this.red, this.green, this.blue, this.alpha);
- }
-
- /**
- * @param floatValue value (between 0.0 and 1.0) of color channel
- * @return integer equivalent (between 0 and 255)
- */
- public static int convertChannelToInteger (float floatValue) {
- if (floatValue > 1.0) {
- floatValue = 1.0f;
- }
- if (floatValue < 0) {
- floatValue = 0;
- }
- return (int) (floatValue * 255);
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- public String toString() {
- StringBuffer sbuf = new StringBuffer(8);
- sbuf.append('#');
- String s = Integer.toHexString((int)(red * 255.0));
- if (s.length() == 1) {
- sbuf.append('0');
- }
- sbuf.append(s);
- s = Integer.toHexString((int)(green * 255.0));
- if (s.length() == 1) {
- sbuf.append('0');
- }
- sbuf.append(s);
- s = Integer.toHexString((int)(blue * 255.0));
- if (s.length() == 1) {
- sbuf.append('0');
- }
- sbuf.append(s);
- return sbuf.toString();
- }
-
- /** The names of the predefined colors */
- protected static final String[] NAMES = {
- "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige",
- "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown",
- "burlywood", "cadetblue", "chartreuse", "chocolate", "coral",
- "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue",
- "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey",
- "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange",
- "darkorchid", "darkred", "darksalmon", "darkseagreen",
- "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise",
- "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey",
- "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia",
- "gainsboro", "lightpink", "lightsalmon", "lightseagreen",
- "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue",
- "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon",
- "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple",
- "mediumseagreen", "mediumslateblue", "mediumspringgreen",
- "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream",
- "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive",
- "olivedrab", "orange", "orangered", "orchid", "palegoldenrod",
- "palegreen", "paleturquoise", "palevioletred", "papayawhip",
- "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red",
- "rosybrown", "royalblue", "saddlebrown", "salmon", "ghostwhite",
- "gold", "goldenrod", "gray", "grey", "green", "greenyellow",
- "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki",
- "lavender", "lavenderblush", "lawngreen", "lemonchiffon",
- "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow",
- "lightgray", "lightgreen", "lightgrey", "sandybrown", "seagreen",
- "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray",
- "slategrey", "snow", "springgreen", "steelblue", "tan", "teal",
- "thistle", "tomato", "turquoise", "violet", "wheat", "white",
- "whitesmoke", "yellow", "yellowgreen"
- };
-
- /** The color values for the predefined colors */
- protected static final int[][] VALUES = {
- {
- 240, 248, 255
- }, {
- 250, 235, 215
- }, {
- 0, 255, 255
- }, {
- 127, 255, 212
- }, {
- 240, 255, 255
- }, {
- 245, 245, 220
- }, {
- 255, 228, 196
- }, {
- 0, 0, 0
- }, {
- 255, 235, 205
- }, {
- 0, 0, 255
- }, {
- 138, 43, 226
- }, {
- 165, 42, 42
- }, {
- 222, 184, 135
- }, {
- 95, 158, 160
- }, {
- 127, 255, 0
- }, {
- 210, 105, 30
- }, {
- 255, 127, 80
- }, {
- 100, 149, 237
- }, {
- 255, 248, 220
- }, {
- 220, 20, 60
- }, {
- 0, 255, 255
- }, {
- 0, 0, 139
- }, {
- 0, 139, 139
- }, {
- 184, 134, 11
- }, {
- 169, 169, 169
- }, {
- 0, 100, 0
- }, {
- 169, 169, 169
- }, {
- 189, 183, 107
- }, {
- 139, 0, 139
- }, {
- 85, 107, 47
- }, {
- 255, 140, 0
- }, {
- 153, 50, 204
- }, {
- 139, 0, 0
- }, {
- 233, 150, 122
- }, {
- 143, 188, 143
- }, {
- 72, 61, 139
- }, {
- 47, 79, 79
- }, {
- 47, 79, 79
- }, {
- 0, 206, 209
- }, {
- 148, 0, 211
- }, {
- 255, 20, 147
- }, {
- 0, 191, 255
- }, {
- 105, 105, 105
- }, {
- 105, 105, 105
- }, {
- 30, 144, 255
- }, {
- 178, 34, 34
- }, {
- 255, 250, 240
- }, {
- 34, 139, 34
- }, {
- 255, 0, 255
- }, {
- 220, 220, 220
- }, {
- 255, 182, 193
- }, {
- 255, 160, 122
- }, {
- 32, 178, 170
- }, {
- 135, 206, 250
- }, {
- 119, 136, 153
- }, {
- 119, 136, 153
- }, {
- 176, 196, 222
- }, {
- 255, 255, 224
- }, {
- 0, 255, 0
- }, {
- 50, 205, 50
- }, {
- 250, 240, 230
- }, {
- 255, 0, 255
- }, {
- 128, 0, 0
- }, {
- 102, 205, 170
- }, {
- 0, 0, 205
- }, {
- 186, 85, 211
- }, {
- 147, 112, 219
- }, {
- 60, 179, 113
- }, {
- 123, 104, 238
- }, {
- 0, 250, 154
- }, {
- 72, 209, 204
- }, {
- 199, 21, 133
- }, {
- 25, 25, 112
- }, {
- 245, 255, 250
- }, {
- 255, 228, 225
- }, {
- 255, 228, 181
- }, {
- 255, 222, 173
- }, {
- 0, 0, 128
- }, {
- 253, 245, 230
- }, {
- 128, 128, 0
- }, {
- 107, 142, 35
- }, {
- 255, 165, 0
- }, {
- 255, 69, 0
- }, {
- 218, 112, 214
- }, {
- 238, 232, 170
- }, {
- 152, 251, 152
- }, {
- 175, 238, 238
- }, {
- 219, 112, 147
- }, {
- 255, 239, 213
- }, {
- 255, 218, 185
- }, {
- 205, 133, 63
- }, {
- 255, 192, 203
- }, {
- 221, 160, 221
- }, {
- 176, 224, 230
- }, {
- 128, 0, 128
- }, {
- 255, 0, 0
- }, {
- 188, 143, 143
- }, {
- 65, 105, 225
- }, {
- 139, 69, 19
- }, {
- 250, 128, 114
- }, {
- 248, 248, 255
- }, {
- 255, 215, 0
- }, {
- 218, 165, 32
- }, {
- 128, 128, 128
- }, {
- 128, 128, 128
- }, {
- 0, 128, 0
- }, {
- 173, 255, 47
- }, {
- 240, 255, 240
- }, {
- 255, 105, 180
- }, {
- 205, 92, 92
- }, {
- 75, 0, 130
- }, {
- 255, 255, 240
- }, {
- 240, 230, 140
- }, {
- 230, 230, 250
- }, {
- 255, 240, 245
- }, {
- 124, 252, 0
- }, {
- 255, 250, 205
- }, {
- 173, 216, 230
- }, {
- 240, 128, 128
- }, {
- 224, 255, 255
- }, {
- 250, 250, 210
- }, {
- 211, 211, 211
- }, {
- 144, 238, 144
- }, {
- 211, 211, 211
- }, {
- 244, 164, 96
- }, {
- 46, 139, 87
- }, {
- 255, 245, 238
- }, {
- 160, 82, 45
- }, {
- 192, 192, 192
- }, {
- 135, 206, 235
- }, {
- 106, 90, 205
- }, {
- 112, 128, 144
- }, {
- 112, 128, 144
- }, {
- 255, 250, 250
- }, {
- 0, 255, 127
- }, {
- 70, 130, 180
- }, {
- 210, 180, 140
- }, {
- 0, 128, 128
- }, {
- 216, 191, 216
- }, {
- 255, 99, 71
- }, {
- 64, 224, 208
- }, {
- 238, 130, 238
- }, {
- 245, 222, 179
- }, {
- 255, 255, 255
- }, {
- 245, 245, 245
- }, {
- 255, 255, 0
- }, {
- 154, 205, 50
- }
- };
-}
-
-/*
- * aliceblue rgb(240, 248, 255)
- * antiquewhite rgb(250, 235, 215)
- * aqua rgb( 0, 255, 255)
- * aquamarine rgb(127, 255, 212)
- * azure rgb(240, 255, 255)
- * beige rgb(245, 245, 220)
- * bisque rgb(255, 228, 196)
- * black rgb( 0, 0, 0)
- * blanchedalmond rgb(255, 235, 205)
- * blue rgb( 0, 0, 255)
- * blueviolet rgb(138, 43, 226)
- * brown rgb(165, 42, 42)
- * burlywood rgb(222, 184, 135)
- * cadetblue rgb( 95, 158, 160)
- * chartreuse rgb(127, 255, 0)
- * chocolate rgb(210, 105, 30)
- * coral rgb(255, 127, 80)
- * cornflowerblue rgb(100, 149, 237)
- * cornsilk rgb(255, 248, 220)
- * crimson rgb(220, 20, 60)
- * cyan rgb( 0, 255, 255)
- * darkblue rgb( 0, 0, 139)
- * darkcyan rgb( 0, 139, 139)
- * darkgoldenrod rgb(184, 134, 11)
- * darkgray rgb(169, 169, 169)
- * darkgreen rgb( 0, 100, 0)
- * darkgrey rgb(169, 169, 169)
- * darkkhaki rgb(189, 183, 107)
- * darkmagenta rgb(139, 0, 139)
- * darkolivegreen rgb( 85, 107, 47)
- * darkorange rgb(255, 140, 0)
- * darkorchid rgb(153, 50, 204)
- * darkred rgb(139, 0, 0)
- * darksalmon rgb(233, 150, 122)
- * darkseagreen rgb(143, 188, 143)
- * darkslateblue rgb( 72, 61, 139)
- * darkslategray rgb( 47, 79, 79)
- * darkslategrey rgb( 47, 79, 79)
- * darkturquoise rgb( 0, 206, 209)
- * darkviolet rgb(148, 0, 211)
- * deeppink rgb(255, 20, 147)
- * deepskyblue rgb( 0, 191, 255)
- * dimgray rgb(105, 105, 105)
- * dimgrey rgb(105, 105, 105)
- * dodgerblue rgb( 30, 144, 255)
- * firebrick rgb(178, 34, 34)
- * floralwhite rgb(255, 250, 240)
- * forestgreen rgb( 34, 139, 34)
- * fuchsia rgb(255, 0, 255)
- * gainsboro rgb(220, 220, 220)
- * lightpink rgb(255, 182, 193)
- * lightsalmon rgb(255, 160, 122)
- * lightseagreen rgb( 32, 178, 170)
- * lightskyblue rgb(135, 206, 250)
- * lightslategray rgb(119, 136, 153)
- * lightslategrey rgb(119, 136, 153)
- * lightsteelblue rgb(176, 196, 222)
- * lightyellow rgb(255, 255, 224)
- * lime rgb( 0, 255, 0)
- * limegreen rgb( 50, 205, 50)
- * linen rgb(250, 240, 230)
- * magenta rgb(255, 0, 255)
- * maroon rgb(128, 0, 0)
- * mediumaquamarine rgb(102, 205, 170)
- * mediumblue rgb( 0, 0, 205)
- * mediumorchid rgb(186, 85, 211)
- * mediumpurple rgb(147, 112, 219)
- * mediumseagreen rgb( 60, 179, 113)
- * mediumslateblue rgb(123, 104, 238)
- * mediumspringgreen rgb( 0, 250, 154)
- * mediumturquoise rgb( 72, 209, 204)
- * mediumvioletred rgb(199, 21, 133)
- * midnightblue rgb( 25, 25, 112)
- * mintcream rgb(245, 255, 250)
- * mistyrose rgb(255, 228, 225)
- * moccasin rgb(255, 228, 181)
- * navajowhite rgb(255, 222, 173)
- * navy rgb( 0, 0, 128)
- * oldlace rgb(253, 245, 230)
- * olive rgb(128, 128, 0)
- * olivedrab rgb(107, 142, 35)
- * orange rgb(255, 165, 0)
- * orangered rgb(255, 69, 0)
- * orchid rgb(218, 112, 214)
- * palegoldenrod rgb(238, 232, 170)
- * palegreen rgb(152, 251, 152)
- * paleturquoise rgb(175, 238, 238)
- * palevioletred rgb(219, 112, 147)
- * papayawhip rgb(255, 239, 213)
- * peachpuff rgb(255, 218, 185)
- * peru rgb(205, 133, 63)
- * pink rgb(255, 192, 203)
- * plum rgb(221, 160, 221)
- * powderblue rgb(176, 224, 230)
- * purple rgb(128, 0, 128)
- * red rgb(255, 0, 0)
- * rosybrown rgb(188, 143, 143)
- * royalblue rgb( 65, 105, 225)
- * saddlebrown rgb(139, 69, 19)
- * salmon rgb(250, 128, 114)
- * ghostwhite rgb(248, 248, 255)
- * gold rgb(255, 215, 0)
- * goldenrod rgb(218, 165, 32)
- * gray rgb(128, 128, 128)
- * grey rgb(128, 128, 128)
- * green rgb( 0, 128, 0)
- * greenyellow rgb(173, 255, 47)
- * honeydew rgb(240, 255, 240)
- * hotpink rgb(255, 105, 180)
- * indianred rgb(205, 92, 92)
- * indigo rgb( 75, 0, 130)
- * ivory rgb(255, 255, 240)
- * khaki rgb(240, 230, 140)
- * lavender rgb(230, 230, 250)
- * lavenderblush rgb(255, 240, 245)
- * lawngreen rgb(124, 252, 0)
- * lemonchiffon rgb(255, 250, 205)
- * lightblue rgb(173, 216, 230)
- * lightcoral rgb(240, 128, 128)
- * lightcyan rgb(224, 255, 255)
- * lightgoldenrodyellow rgb(250, 250, 210)
- * lightgray rgb(211, 211, 211)
- * lightgreen rgb(144, 238, 144)
- * lightgrey rgb(211, 211, 211)
- * sandybrown rgb(244, 164, 96)
- * seagreen rgb( 46, 139, 87)
- * seashell rgb(255, 245, 238)
- * sienna rgb(160, 82, 45)
- * silver rgb(192, 192, 192)
- * skyblue rgb(135, 206, 235)
- * slateblue rgb(106, 90, 205)
- * slategray rgb(112, 128, 144)
- * slategrey rgb(112, 128, 144)
- * snow rgb(255, 250, 250)
- * springgreen rgb( 0, 255, 127)
- * steelblue rgb( 70, 130, 180)
- * tan rgb(210, 180, 140)
- * teal rgb( 0, 128, 128)
- * thistle rgb(216, 191, 216)
- * tomato rgb(255, 99, 71)
- * turquoise rgb( 64, 224, 208)
- * violet rgb(238, 130, 238)
- * wheat rgb(245, 222, 179)
- * white rgb(255, 255, 255)
- * whitesmoke rgb(245, 245, 245)
- * yellow rgb(255, 255, 0)
- * yellowgreen rgb(154, 205, 50)
- */
+ public Color getAWTColor();
+} \ No newline at end of file
diff --git a/src/java/org/apache/fop/datatypes/CondLength.java b/src/java/org/apache/fop/datatypes/CondLength.java
deleted file mode 100644
index 18ca33d2b..000000000
--- a/src/java/org/apache/fop/datatypes/CondLength.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * $Id: CondLength.java,v 1.7 2003/03/05 20:38:23 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 <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.fo.Property;
-import org.apache.fop.fo.Constants;
-
-/**
- * A space quantity in XSL (space-before, space-after).
- * See length-conditional datatype in the specs.
- */
-public class CondLength implements CompoundDatatype {
-
- private Property length;
- private Property conditionality;
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
- */
- public void setComponent(int cmpId, Property cmpnValue,
- boolean bIsDefault) {
- if (cmpId == CP_LENGTH) {
- length = cmpnValue;
- } else if (cmpId == CP_CONDITIONALITY) {
- conditionality = cmpnValue;
- }
- }
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
- */
- public Property getComponent(int cmpId) {
- if (cmpId == CP_LENGTH) {
- return length;
- } else if (cmpId == CP_CONDITIONALITY) {
- return conditionality;
- } else {
- return null;
- }
- }
-
- /**
- * Returns the conditionality.
- * @return the conditionality
- */
- public Property getConditionality() {
- return this.conditionality;
- }
-
- /**
- * Returns the length.
- * @return the length
- */
- public Property getLength() {
- return this.length;
- }
-
- /**
- * Indicates if the length can be discarded on certain conditions.
- * @return true if the length can be discarded.
- */
- public boolean isDiscard() {
- return this.conditionality.getEnum() == Constants.DISCARD;
- }
-
- /**
- * Returns the computed length value.
- * @return the length in millipoints
- */
- public int getLengthValue() {
- return this.length.getLength().getValue();
- }
-
- public String toString() {
- return "CondLength[" + (isDiscard() ? "discard, " : "") +
- length.getObject().toString() + "]";
- }
-}
-
diff --git a/src/java/org/apache/fop/datatypes/FixedLength.java b/src/java/org/apache/fop/datatypes/FixedLength.java
index 445bc4e93..7572c1cf6 100644
--- a/src/java/org/apache/fop/datatypes/FixedLength.java
+++ b/src/java/org/apache/fop/datatypes/FixedLength.java
@@ -50,12 +50,13 @@
*/
package org.apache.fop.datatypes;
-import org.apache.fop.fo.expr.Numeric;
+import org.apache.fop.fo.LengthProperty;
+import org.apache.fop.fo.expr.NumericProperty;
/**
* a length quantity in XSL
*/
-public class FixedLength extends Length {
+public class FixedLength extends LengthProperty {
/**
* Set the length given
@@ -120,8 +121,8 @@ public class FixedLength extends Length {
/**
* @return Numeric equivalent of this
*/
- public Numeric asNumeric() {
- return new Numeric(this);
+ public NumericProperty asNumeric() {
+ return new NumericProperty(this);
}
}
diff --git a/src/java/org/apache/fop/datatypes/Keep.java b/src/java/org/apache/fop/datatypes/Keep.java
deleted file mode 100644
index 09fb31483..000000000
--- a/src/java/org/apache/fop/datatypes/Keep.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * $Id: Keep.java,v 1.5 2003/03/05 20:38:23 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 <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.fo.Property;
-
-
-/**
- * XSL FO Keep Property datatype (keep-together, etc)
- */
-public class Keep implements CompoundDatatype {
- private Property withinLine;
- private Property withinColumn;
- private Property withinPage;
-
- /**
- * Constructor
- */
- public Keep() {
- }
-
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
- */
- public void setComponent(int cmpId, Property cmpnValue,
- boolean bIsDefault) {
- if (cmpId == CP_WITHIN_LINE) {
- setWithinLine(cmpnValue, bIsDefault);
- } else if (cmpId == CP_WITHIN_COLUMN) {
- setWithinColumn(cmpnValue, bIsDefault);
- } else if (cmpId == CP_WITHIN_PAGE) {
- setWithinPage(cmpnValue, bIsDefault);
- }
- }
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
- */
- public Property getComponent(int cmpId) {
- if (cmpId == CP_WITHIN_LINE) {
- return getWithinLine();
- } else if (cmpId == CP_WITHIN_COLUMN) {
- return getWithinColumn();
- } else if (cmpId == CP_WITHIN_PAGE) {
- return getWithinPage();
- } else {
- return null;
- }
- }
-
- /**
- * @param withinLine withinLine property to set
- * @param bIsDefault not used (??)
- */
- public void setWithinLine(Property withinLine, boolean bIsDefault) {
- this.withinLine = withinLine;
- }
-
- /**
- * @param withinColumn withinColumn property to set
- * @param bIsDefault not used (??)
- */
- protected void setWithinColumn(Property withinColumn,
- boolean bIsDefault) {
- this.withinColumn = withinColumn;
- }
-
- /**
- * @param withinPage withinPage property to set
- * @param bIsDefault not used (??)
- */
- public void setWithinPage(Property withinPage, boolean bIsDefault) {
- this.withinPage = withinPage;
- }
-
- /**
- * @return the withinLine property
- */
- public Property getWithinLine() {
- return this.withinLine;
- }
-
- /**
- * @return the withinColumn property
- */
- public Property getWithinColumn() {
- return this.withinColumn;
- }
-
- /**
- * @return the withinPage property
- */
- public Property getWithinPage() {
- return this.withinPage;
- }
-
- /**
- * Not sure what to do here. There isn't really a meaningful single value.
- * @return String representation
- */
- public String toString() {
- return "Keep[" +
- "withinLine:" + getWithinLine().getObject() +
- ", withinColumn:" + getWithinColumn().getObject() +
- ", withinPage:" + getWithinPage().getObject() + "]";
- }
-
-}
diff --git a/src/java/org/apache/fop/datatypes/Length.java b/src/java/org/apache/fop/datatypes/Length.java
index e5db3b762..2d14804e7 100644
--- a/src/java/org/apache/fop/datatypes/Length.java
+++ b/src/java/org/apache/fop/datatypes/Length.java
@@ -50,102 +50,15 @@
*/
package org.apache.fop.datatypes;
-import org.apache.fop.fo.expr.Numeric;
-
/**
* A length quantity in XSL
*/
-public class Length {
-
- /** Holds the length in millipoints. */
- protected int millipoints = 0;
- /** Indicates if the value has been computed, or not. */
- protected boolean bIsComputed = false;
+public interface Length {
/**
* Returns the length in 1/1000ths of a point (millipoints)
* @return the length in millipoints
*/
- public int getValue() {
- if (!bIsComputed) {
- computeValue();
- }
- return millipoints;
- }
-
- /**
- * Computes the value.
- */
- protected void computeValue() {
- }
-
-
- /**
- * Sets the computed value.
- * @param millipoints the length in millipoints
- */
- protected void setComputedValue(int millipoints) {
- setComputedValue(millipoints, true);
- }
-
- /**
- * Sets the computed value.
- * @param millipoints the length in millipoints
- * @param bSetComputed True if the isComputed flag should be set.
- */
- protected void setComputedValue(int millipoints, boolean bSetComputed) {
- this.millipoints = millipoints;
- this.bIsComputed = bSetComputed;
- }
-
- /**
- * Indicates if the length has the "auto" value.
- * @return True if the length is set to "auto"
- */
- public boolean isAuto() {
- return false;
- }
-
- /**
- * Indicates if the length has been computed.
- * @return True if the length has been computed
- */
- public boolean isComputed() {
- return this.bIsComputed;
- }
-
- /**
- * Return the number of table units which are included in this
- * length specification.
- * This will always be 0 unless the property specification used
- * the proportional-column-width() function (only only table
- * column FOs).
- * <p>If this value is not 0, the actual value of the Length cannot
- * be known without looking at all of the columns in the table to
- * determine the value of a "table-unit".
- * @return The number of table units which are included in this
- * length specification.
- */
- public double getTableUnits() {
- return 0.0;
- }
-
- public void resolveTableUnit(double dTableUnit) {
- }
-
- /**
- * @return null (cannot be converted to a Numeric ??)
- */
- public Numeric asNumeric() {
- return null;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- public String toString() {
- String s = millipoints + "mpt";
- return s;
- }
-
+ public int getValue();
+ public boolean isAuto();
}
diff --git a/src/java/org/apache/fop/datatypes/LengthPair.java b/src/java/org/apache/fop/datatypes/LengthPair.java
deleted file mode 100644
index aeb7e1e45..000000000
--- a/src/java/org/apache/fop/datatypes/LengthPair.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * $Id: LengthPair.java,v 1.6 2003/03/05 20:38:24 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 <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.fo.Property;
-
-
-/**
- * Models a pair of lengths, one specifiying the dimensions for the
- * inline-progression-direction, the other for the block-progression-direction.
- * It is currently only used to specify border-separation in tables.
- */
-public class LengthPair implements CompoundDatatype {
-
- private Property ipd;
- private Property bpd;
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
- */
- public void setComponent(int cmpId, Property cmpnValue,
- boolean bIsDefault) {
- if (cmpId == CP_BLOCK_PROGRESSION_DIRECTION) {
- bpd = cmpnValue;
- } else if (cmpId == CP_INLINE_PROGRESSION_DIRECTION) {
- ipd = cmpnValue;
- }
- }
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
- */
- public Property getComponent(int cmpId) {
- if (cmpId == CP_BLOCK_PROGRESSION_DIRECTION) {
- return getBPD();
- } else if (cmpId == CP_INLINE_PROGRESSION_DIRECTION) {
- return getIPD();
- } else {
- return null; // SHOULDN'T HAPPEN
- }
- }
-
- /**
- * @return Property holding the ipd length
- */
- public Property getIPD() {
- return this.ipd;
- }
-
- /**
- * @return Property holding the bpd length
- */
- public Property getBPD() {
- return this.bpd;
- }
-
- public String toString() {
- return "LengthPair[" +
- "ipd:" + getIPD().getObject() +
- ", bpd:" + getBPD().getObject() + "]";
- }
-
-}
-
diff --git a/src/java/org/apache/fop/datatypes/LengthRange.java b/src/java/org/apache/fop/datatypes/LengthRange.java
deleted file mode 100644
index 52e224788..000000000
--- a/src/java/org/apache/fop/datatypes/LengthRange.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * $Id: LengthRange.java,v 1.10 2003/03/05 20:38:23 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 <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.fo.Property;
-
-/**
- * A "progression-dimension" quantity.
- * Examples: block-progression-dimension, inline-progression-dimension.
- * Corresponds to the triplet min-height, height, max-height (or width).
- */
-public class LengthRange implements CompoundDatatype {
-
- private Property minimum;
- private Property optimum;
- private Property 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
- private boolean bChecked = false;
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
- */
- public void setComponent(int cmpId, Property cmpnValue,
- boolean bIsDefault) {
- if (cmpId == CP_MINIMUM) {
- setMinimum(cmpnValue, bIsDefault);
- } else if (cmpId == CP_OPTIMUM) {
- setOptimum(cmpnValue, bIsDefault);
- } else if (cmpId == CP_MAXIMUM) {
- setMaximum(cmpnValue, bIsDefault);
- }
- }
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
- */
- public Property getComponent(int cmpId) {
- if (cmpId == CP_MINIMUM) {
- return getMinimum();
- } else if (cmpId == CP_OPTIMUM) {
- return getOptimum();
- } else if (cmpId == CP_MAXIMUM) {
- return getMaximum();
- } else {
- return null; // SHOULDN'T HAPPEN
- }
- }
-
- /**
- * Set minimum value to min.
- * @param minimum A Length value specifying the minimum value for this
- * LengthRange.
- * @param bIsDefault If true, this is set as a "default" value
- * and not a user-specified explicit value.
- */
- protected void setMinimum(Property minimum, boolean bIsDefault) {
- this.minimum = minimum;
- if (!bIsDefault) {
- bfSet |= MINSET;
- }
- }
-
-
- /**
- * Set maximum value to max if it is >= optimum or optimum isn't set.
- * @param max A Length value specifying the maximum value for this
- * @param bIsDefault If true, this is set as a "default" value
- * and not a user-specified explicit value.
- */
- protected void setMaximum(Property max, boolean bIsDefault) {
- maximum = max;
- if (!bIsDefault) {
- bfSet |= MAXSET;
- }
- }
-
-
- /**
- * Set the optimum value.
- * @param opt A Length value specifying the optimum value for this
- * @param bIsDefault If true, this is set as a "default" value
- * and not a user-specified explicit value.
- */
- protected void setOptimum(Property opt, boolean bIsDefault) {
- optimum = opt;
- if (!bIsDefault) {
- bfSet |= OPTSET;
- }
- }
-
- // Minimum is prioritaire, if explicit
- private void checkConsistency() {
- if (bChecked) {
- return;
- }
- // Make sure max >= min
- // Must also control if have any allowed enum values!
-
- /**
- * *******************
- * if (minimum.mvalue() > maximum.mvalue()) {
- * if ((bfSet&MINSET)!=0) {
- * // if minimum is explicit, force max to min
- * if ((bfSet&MAXSET)!=0) {
- * // Warning: min>max, resetting max to min
- * log.error("forcing max to min in LengthRange");
- * }
- * maximum = minimum ;
- * }
- * else {
- * minimum = maximum; // minimum was default value
- * }
- * }
- * // Now make sure opt <= max and opt >= min
- * if (optimum.mvalue() > maximum.mvalue()) {
- * if ((bfSet&OPTSET)!=0) {
- * if ((bfSet&MAXSET)!=0) {
- * // Warning: opt > max, resetting opt to max
- * log.error("forcing opt to max in LengthRange");
- * optimum = maximum ;
- * }
- * else {
- * maximum = optimum; // maximum was default value
- * }
- * }
- * else {
- * // opt is default and max is explicit or default
- * optimum = maximum ;
- * }
- * }
- * else if (optimum.mvalue() < minimum.mvalue()) {
- * if ((bfSet&MINSET)!=0) {
- * // if minimum is explicit, force opt to min
- * if ((bfSet&OPTSET)!=0) {
- * log.error("forcing opt to min in LengthRange");
- * }
- * optimum = minimum ;
- * }
- * else {
- * minimum = optimum; // minimum was default value
- * }
- * }
- * *******$*******
- */
- bChecked = true;
- }
-
- /**
- * @return minimum length
- */
- public Property getMinimum() {
- checkConsistency();
- return this.minimum;
- }
-
- /**
- * @return maximum length
- */
- public Property getMaximum() {
- checkConsistency();
- return this.maximum;
- }
-
- /**
- * @return optimum length
- */
- public Property getOptimum() {
- checkConsistency();
- return this.optimum;
- }
-
- public String toString() {
- return "LengthRange[" +
- "min:" + getMinimum().getObject() +
- ", max:" + getMaximum().getObject() +
- ", opt:" + getOptimum().getObject() + "]";
- }
-
-}
-
diff --git a/src/java/org/apache/fop/datatypes/LinearCombinationLength.java b/src/java/org/apache/fop/datatypes/LinearCombinationLength.java
index 5ddd1e0ca..a853417dd 100644
--- a/src/java/org/apache/fop/datatypes/LinearCombinationLength.java
+++ b/src/java/org/apache/fop/datatypes/LinearCombinationLength.java
@@ -52,10 +52,12 @@ package org.apache.fop.datatypes;
import java.util.Vector;
+import org.apache.fop.fo.LengthProperty;
+
/**
* Class modelling lengths that are build up by combining other lengths
*/
-public class LinearCombinationLength extends Length {
+public class LinearCombinationLength extends LengthProperty {
/** Collection of factors (1-1 correspondence with {@link #lengths} */
protected Vector factors;
@@ -75,7 +77,7 @@ public class LinearCombinationLength extends Length {
* @param factor the factor to be added
* @param length the Length to be added
*/
- public void addTerm(double factor, Length length) {
+ public void addTerm(double factor, LengthProperty length) {
factors.addElement(new Double(factor));
lengths.addElement(length);
}
diff --git a/src/java/org/apache/fop/datatypes/MixedLength.java b/src/java/org/apache/fop/datatypes/MixedLength.java
index 3e547fc7c..bc7dd1536 100644
--- a/src/java/org/apache/fop/datatypes/MixedLength.java
+++ b/src/java/org/apache/fop/datatypes/MixedLength.java
@@ -50,10 +50,11 @@
*/
package org.apache.fop.datatypes;
-import java.util.Vector;
import java.util.Enumeration;
+import java.util.Vector;
-import org.apache.fop.fo.expr.Numeric;
+import org.apache.fop.fo.LengthProperty;
+import org.apache.fop.fo.expr.NumericProperty;
import org.apache.fop.fo.expr.PropertyException;
/**
@@ -61,7 +62,7 @@ import org.apache.fop.fo.expr.PropertyException;
* of absolute and relative and/or percent components.
* The actual value may not be computable before layout is done.
*/
-public class MixedLength extends Length {
+public class MixedLength extends LengthProperty {
/** The collection of Length objects comprising this MixedLength object */
private Vector lengths ;
@@ -84,7 +85,7 @@ public class MixedLength extends Length {
boolean bAllComputed = true;
Enumeration e = lengths.elements();
while (e.hasMoreElements()) {
- Length l = (Length) e.nextElement();
+ LengthProperty l = (LengthProperty) e.nextElement();
computedValue += l.getValue();
if (!l.isComputed()) {
bAllComputed = false;
@@ -98,7 +99,7 @@ public class MixedLength extends Length {
double tableUnits = 0.0;
Enumeration e = lengths.elements();
while (e.hasMoreElements()) {
- tableUnits += ((Length) e.nextElement()).getTableUnits();
+ tableUnits += ((LengthProperty) e.nextElement()).getTableUnits();
}
return tableUnits;
}
@@ -106,7 +107,7 @@ public class MixedLength extends Length {
public void resolveTableUnit(double dTableUnit) {
Enumeration e = lengths.elements();
while (e.hasMoreElements()) {
- ((Length) e.nextElement()).resolveTableUnit(dTableUnit);
+ ((LengthProperty) e.nextElement()).resolveTableUnit(dTableUnit);
}
}
@@ -128,15 +129,15 @@ public class MixedLength extends Length {
/**
* @return Numeric equivalent of this
*/
- public Numeric asNumeric() {
- Numeric numeric = null;
+ public NumericProperty asNumeric() {
+ NumericProperty numeric = null;
for (Enumeration e = lengths.elements(); e.hasMoreElements();) {
- Length l = (Length) e.nextElement();
+ LengthProperty l = (LengthProperty) e.nextElement();
if (numeric == null) {
numeric = l.asNumeric();
} else {
try {
- Numeric sum = numeric.add(l.asNumeric());
+ NumericProperty sum = numeric.add(l.asNumeric());
numeric = sum;
} catch (PropertyException pe) {
System.err.println(
diff --git a/src/java/org/apache/fop/datatypes/PercentLength.java b/src/java/org/apache/fop/datatypes/PercentLength.java
index 9699be3b2..9d96e7989 100644
--- a/src/java/org/apache/fop/datatypes/PercentLength.java
+++ b/src/java/org/apache/fop/datatypes/PercentLength.java
@@ -50,12 +50,13 @@
*/
package org.apache.fop.datatypes;
-import org.apache.fop.fo.expr.Numeric;
+import org.apache.fop.fo.LengthProperty;
+import org.apache.fop.fo.expr.NumericProperty;
/**
* a percent specified length quantity in XSL
*/
-public class PercentLength extends Length {
+public class PercentLength extends LengthProperty {
/**
* The percentage itself, expressed as a decimal value, e.g. for 95%, set
@@ -132,8 +133,8 @@ public class PercentLength extends Length {
/**
* @return new Numeric object that is equivalent to this
*/
- public Numeric asNumeric() {
- return new Numeric(this);
+ public NumericProperty asNumeric() {
+ return new NumericProperty(this);
}
}
diff --git a/src/java/org/apache/fop/datatypes/Space.java b/src/java/org/apache/fop/datatypes/Space.java
deleted file mode 100644
index b7421cafd..000000000
--- a/src/java/org/apache/fop/datatypes/Space.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * $Id: Space.java,v 1.8 2003/03/05 20:38:23 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 <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.fo.Property;
-
-/**
- * a space quantity in XSL (space-before, space-after)
- */
-public class Space extends LengthRange {
-
- private Property precedence;
- private Property conditionality;
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
- */
- public void setComponent(int cmpId, Property cmpnValue,
- boolean bIsDefault) {
- if (cmpId == CP_PRECEDENCE) {
- setPrecedence(cmpnValue, bIsDefault);
- } else if (cmpId == CP_CONDITIONALITY) {
- setConditionality(cmpnValue, bIsDefault);
- } else {
- super.setComponent(cmpId, cmpnValue, bIsDefault);
- }
- }
-
- /**
- * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
- */
- public Property getComponent(int cmpId) {
- if (cmpId == CP_PRECEDENCE) {
- return getPrecedence();
- } else if (cmpId == CP_CONDITIONALITY) {
- return getConditionality();
- } else {
- return super.getComponent(cmpId);
- }
- }
-
- /**
- *
- * @param precedence precedence Property to set
- * @param bIsDefault (is not used anywhere)
- */
- protected void setPrecedence(Property precedence, boolean bIsDefault) {
- this.precedence = precedence;
- }
-
- /**
- *
- * @param conditionality conditionality Property to set
- * @param bIsDefault (is not used anywhere)
- */
- protected void setConditionality(Property conditionality,
- boolean bIsDefault) {
- this.conditionality = conditionality;
- }
-
- /**
- * @return precedence Property
- */
- public Property getPrecedence() {
- return this.precedence;
- }
-
- /**
- * @return conditionality Property
- */
- public Property getConditionality() {
- return this.conditionality;
- }
-
- public String toString() {
- return "Space[" +
- "min:" + getMinimum().getObject() +
- ", max:" + getMaximum().getObject() +
- ", opt:" + getOptimum().getObject() +
- ", precedence:" + precedence.getObject() +
- ", conditionality:" + conditionality.getObject() + "]";
- }
-
-}
-
diff --git a/src/java/org/apache/fop/datatypes/TableColLength.java b/src/java/org/apache/fop/datatypes/TableColLength.java
index d431c1e44..28b9ec436 100644
--- a/src/java/org/apache/fop/datatypes/TableColLength.java
+++ b/src/java/org/apache/fop/datatypes/TableColLength.java
@@ -50,7 +50,8 @@
*/
package org.apache.fop.datatypes;
-import org.apache.fop.fo.expr.Numeric;
+import org.apache.fop.fo.LengthProperty;
+import org.apache.fop.fo.expr.NumericProperty;
/**
* A table-column width specification, possibly including some
@@ -63,7 +64,7 @@ import org.apache.fop.fo.expr.Numeric;
* during layout.
* NOTE: this is only supposed to be allowed if table-layout=fixed.
*/
-public class TableColLength extends Length {
+public class TableColLength extends LengthProperty {
/**
* Number of table-column proportional units
@@ -114,8 +115,8 @@ public class TableColLength extends Length {
* Converts this to a new Numeric object
* @return the Numeric object
*/
- public Numeric asNumeric() {
- return new Numeric(this);
+ public NumericProperty asNumeric() {
+ return new NumericProperty(this);
}
}
diff --git a/src/java/org/apache/fop/fo/ColorTypeProperty.java b/src/java/org/apache/fop/fo/ColorTypeProperty.java
index 9487193bd..125e1dbc4 100644
--- a/src/java/org/apache/fop/fo/ColorTypeProperty.java
+++ b/src/java/org/apache/fop/fo/ColorTypeProperty.java
@@ -50,13 +50,37 @@
*/
package org.apache.fop.fo;
+import java.awt.Color;
+import java.util.StringTokenizer;
+
import org.apache.fop.datatypes.ColorType;
import org.apache.fop.fo.properties.PropertyMaker;
/**
* Superclass for properties that wrap ColorType values
*/
-public class ColorTypeProperty extends Property {
+public class ColorTypeProperty extends Property implements ColorType {
+ /**
+ * the red component
+ */
+ protected float red = 0f;
+
+ /**
+ * the green component
+ */
+ protected float green = 0f;
+
+ /**
+ * the blue component
+ */
+ protected float blue = 0f;
+
+ /**
+ * the alpha component (indicator of opaque-ness)
+ * 0.0 - 1.0; 0.0 is completely transparent; 1.0 is completely opaque
+ * see definition at http://java.sun.com/j2se/1.3/docs/api/java/awt/Color.html
+ */
+ protected float alpha = 1f;
/**
* Inner class for creating instances of ColorTypeProperty
@@ -75,39 +99,711 @@ public class ColorTypeProperty extends Property {
if (p instanceof ColorTypeProperty) {
return p;
}
- ColorType val = p.getColorType();
+ ColorTypeProperty val = p.getColorType();
if (val != null) {
- return new ColorTypeProperty(val);
+ return val;
}
return convertPropertyDatatype(p, propertyList, fo);
}
}
- private ColorType colorType;
+ /**
+ * Main constructor
+ * @param red red component
+ * @param green green component
+ * @param blue blue component
+ */
+ public ColorTypeProperty(float red, float green, float blue) {
+ this.red = red;
+ this.green = green;
+ this.blue = blue;
+ }
/**
- * @param colorType color type object which is to be wrapped in this
- * Property
+ * Set the colour given a particular String specifying either a
+ * colour name or #RGB or #RRGGBB
+ * @param value RGB value as String to be parsed
*/
- public ColorTypeProperty(ColorType colorType) {
- this.colorType = colorType;
+ public ColorTypeProperty(String value) {
+ if (value.startsWith("#")) {
+ try {
+ if (value.length() == 4) {
+ // note: divide by 15 so F = FF = 1 and so on
+ this.red = Integer.parseInt(value.substring(1, 2), 16)
+ / 15f;
+ this.green = Integer.parseInt(value.substring(2, 3), 16)
+ / 15f;
+ this.blue = Integer.parseInt(value.substring(3), 16)
+ / 15f;
+ } else if (value.length() == 7) {
+ // note: divide by 255 so FF = 1
+ this.red = Integer.parseInt(value.substring(1, 3), 16)
+ / 255f;
+ this.green = Integer.parseInt(value.substring(3, 5), 16)
+ / 255f;
+ this.blue = Integer.parseInt(value.substring(5), 16)
+ / 255f;
+ } else {
+ this.red = 0;
+ this.green = 0;
+ this.blue = 0;
+ //log.error("unknown colour format. Must be #RGB or #RRGGBB");
+ }
+ } catch (Exception e) {
+ this.red = 0;
+ this.green = 0;
+ this.blue = 0;
+ //log.error("unknown colour format. Must be #RGB or #RRGGBB");
+ }
+ } else if (value.startsWith("rgb(")) {
+ int poss = value.indexOf("(");
+ int pose = value.indexOf(")");
+ if (poss != -1 && pose != -1) {
+ value = value.substring(poss + 1, pose);
+ StringTokenizer st = new StringTokenizer(value, ",");
+ try {
+ if (st.hasMoreTokens()) {
+ String str = st.nextToken().trim();
+ if (str.endsWith("%")) {
+ this.red =
+ Integer.parseInt(str.substring(0, str.length() - 1))
+ * 2.55f;
+ } else {
+ this.red = Integer.parseInt(str) / 255f;
+ }
+ }
+ if (st.hasMoreTokens()) {
+ String str = st.nextToken().trim();
+ if (str.endsWith("%")) {
+ this.green =
+ Integer.parseInt(str.substring(0, str.length() - 1))
+ * 2.55f;
+ } else {
+ this.green = Integer.parseInt(str) / 255f;
+ }
+ }
+ if (st.hasMoreTokens()) {
+ String str = st.nextToken().trim();
+ if (str.endsWith("%")) {
+ this.blue =
+ Integer.parseInt(str.substring(0, str.length() - 1))
+ * 2.55f;
+ } else {
+ this.blue = Integer.parseInt(str) / 255f;
+ }
+ }
+ } catch (Exception e) {
+ this.red = 0;
+ this.green = 0;
+ this.blue = 0;
+ //log.error("unknown colour format. Must be #RGB or #RRGGBB");
+ }
+ }
+ } else if (value.startsWith("url(")) {
+ // refers to a gradient
+ } else {
+ if (value.toLowerCase().equals("transparent")) {
+ this.red = 0;
+ this.green = 0;
+ this.blue = 0;
+ this.alpha = 0;
+ } else {
+ boolean found = false;
+ for (int count = 0; count < NAMES.length; count++) {
+ if (value.toLowerCase().equals(NAMES[count])) {
+ this.red = VALUES[count][0] / 255f;
+ this.green = VALUES[count][1] / 255f;
+ this.blue = VALUES[count][2] / 255f;
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ this.red = 0;
+ this.green = 0;
+ this.blue = 0;
+ //log.error("unknown colour name: "
+ // + value);
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the blue component of the color.
+ * @return float a value between 0.0 and 1.0
+ */
+ public float getBlue() {
+ return this.blue;
}
/**
+ * Returns the green component of the color.
+ * @return float a value between 0.0 and 1.0
+ */
+ public float getGreen() {
+ return this.green;
+ }
+
+ /**
+ * Returns the red component of the color.
+ * @return float a value between 0.0 and 1.0
+ */
+ public float getRed() {
+ return this.red;
+ }
+
+ /**
+ * Returns the alpha (degree of opaque-ness) component of the color.
+ * @return float a value between 0.0 (fully transparent) and 1.0 (fully opaque)
+ */
+ public float getAlpha() {
+ return this.alpha;
+ }
+
+ /**
+ * Returns an AWT instance of this color
+ * @return float the AWT color represented by this ColorType instance
+ */
+ public Color getAWTColor() {
+ return new Color(this.red, this.green, this.blue, this.alpha);
+ }
+
+ /**
+ * @param floatValue value (between 0.0 and 1.0) of color channel
+ * @return integer equivalent (between 0 and 255)
+ */
+ public static int convertChannelToInteger (float floatValue) {
+ if (floatValue > 1.0) {
+ floatValue = 1.0f;
+ }
+ if (floatValue < 0) {
+ floatValue = 0;
+ }
+ return (int) (floatValue * 255);
+ }
+
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ StringBuffer sbuf = new StringBuffer(8);
+ sbuf.append('#');
+ String s = Integer.toHexString((int)(red * 255.0));
+ if (s.length() == 1) {
+ sbuf.append('0');
+ }
+ sbuf.append(s);
+ s = Integer.toHexString((int)(green * 255.0));
+ if (s.length() == 1) {
+ sbuf.append('0');
+ }
+ sbuf.append(s);
+ s = Integer.toHexString((int)(blue * 255.0));
+ if (s.length() == 1) {
+ sbuf.append('0');
+ }
+ sbuf.append(s);
+ return sbuf.toString();
+ }
+
+ /** The names of the predefined colors */
+ protected static final String[] NAMES = {
+ "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige",
+ "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown",
+ "burlywood", "cadetblue", "chartreuse", "chocolate", "coral",
+ "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue",
+ "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey",
+ "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange",
+ "darkorchid", "darkred", "darksalmon", "darkseagreen",
+ "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise",
+ "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey",
+ "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia",
+ "gainsboro", "lightpink", "lightsalmon", "lightseagreen",
+ "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue",
+ "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon",
+ "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple",
+ "mediumseagreen", "mediumslateblue", "mediumspringgreen",
+ "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream",
+ "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive",
+ "olivedrab", "orange", "orangered", "orchid", "palegoldenrod",
+ "palegreen", "paleturquoise", "palevioletred", "papayawhip",
+ "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red",
+ "rosybrown", "royalblue", "saddlebrown", "salmon", "ghostwhite",
+ "gold", "goldenrod", "gray", "grey", "green", "greenyellow",
+ "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki",
+ "lavender", "lavenderblush", "lawngreen", "lemonchiffon",
+ "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow",
+ "lightgray", "lightgreen", "lightgrey", "sandybrown", "seagreen",
+ "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray",
+ "slategrey", "snow", "springgreen", "steelblue", "tan", "teal",
+ "thistle", "tomato", "turquoise", "violet", "wheat", "white",
+ "whitesmoke", "yellow", "yellowgreen"
+ };
+
+ /** The color values for the predefined colors */
+ protected static final int[][] VALUES = {
+ {
+ 240, 248, 255
+ }, {
+ 250, 235, 215
+ }, {
+ 0, 255, 255
+ }, {
+ 127, 255, 212
+ }, {
+ 240, 255, 255
+ }, {
+ 245, 245, 220
+ }, {
+ 255, 228, 196
+ }, {
+ 0, 0, 0
+ }, {
+ 255, 235, 205
+ }, {
+ 0, 0, 255
+ }, {
+ 138, 43, 226
+ }, {
+ 165, 42, 42
+ }, {
+ 222, 184, 135
+ }, {
+ 95, 158, 160
+ }, {
+ 127, 255, 0
+ }, {
+ 210, 105, 30
+ }, {
+ 255, 127, 80
+ }, {
+ 100, 149, 237
+ }, {
+ 255, 248, 220
+ }, {
+ 220, 20, 60
+ }, {
+ 0, 255, 255
+ }, {
+ 0, 0, 139
+ }, {
+ 0, 139, 139
+ }, {
+ 184, 134, 11
+ }, {
+ 169, 169, 169
+ }, {
+ 0, 100, 0
+ }, {
+ 169, 169, 169
+ }, {
+ 189, 183, 107
+ }, {
+ 139, 0, 139
+ }, {
+ 85, 107, 47
+ }, {
+ 255, 140, 0
+ }, {
+ 153, 50, 204
+ }, {
+ 139, 0, 0
+ }, {
+ 233, 150, 122
+ }, {
+ 143, 188, 143
+ }, {
+ 72, 61, 139
+ }, {
+ 47, 79, 79
+ }, {
+ 47, 79, 79
+ }, {
+ 0, 206, 209
+ }, {
+ 148, 0, 211
+ }, {
+ 255, 20, 147
+ }, {
+ 0, 191, 255
+ }, {
+ 105, 105, 105
+ }, {
+ 105, 105, 105
+ }, {
+ 30, 144, 255
+ }, {
+ 178, 34, 34
+ }, {
+ 255, 250, 240
+ }, {
+ 34, 139, 34
+ }, {
+ 255, 0, 255
+ }, {
+ 220, 220, 220
+ }, {
+ 255, 182, 193
+ }, {
+ 255, 160, 122
+ }, {
+ 32, 178, 170
+ }, {
+ 135, 206, 250
+ }, {
+ 119, 136, 153
+ }, {
+ 119, 136, 153
+ }, {
+ 176, 196, 222
+ }, {
+ 255, 255, 224
+ }, {
+ 0, 255, 0
+ }, {
+ 50, 205, 50
+ }, {
+ 250, 240, 230
+ }, {
+ 255, 0, 255
+ }, {
+ 128, 0, 0
+ }, {
+ 102, 205, 170
+ }, {
+ 0, 0, 205
+ }, {
+ 186, 85, 211
+ }, {
+ 147, 112, 219
+ }, {
+ 60, 179, 113
+ }, {
+ 123, 104, 238
+ }, {
+ 0, 250, 154
+ }, {
+ 72, 209, 204
+ }, {
+ 199, 21, 133
+ }, {
+ 25, 25, 112
+ }, {
+ 245, 255, 250
+ }, {
+ 255, 228, 225
+ }, {
+ 255, 228, 181
+ }, {
+ 255, 222, 173
+ }, {
+ 0, 0, 128
+ }, {
+ 253, 245, 230
+ }, {
+ 128, 128, 0
+ }, {
+ 107, 142, 35
+ }, {
+ 255, 165, 0
+ }, {
+ 255, 69, 0
+ }, {
+ 218, 112, 214
+ }, {
+ 238, 232, 170
+ }, {
+ 152, 251, 152
+ }, {
+ 175, 238, 238
+ }, {
+ 219, 112, 147
+ }, {
+ 255, 239, 213
+ }, {
+ 255, 218, 185
+ }, {
+ 205, 133, 63
+ }, {
+ 255, 192, 203
+ }, {
+ 221, 160, 221
+ }, {
+ 176, 224, 230
+ }, {
+ 128, 0, 128
+ }, {
+ 255, 0, 0
+ }, {
+ 188, 143, 143
+ }, {
+ 65, 105, 225
+ }, {
+ 139, 69, 19
+ }, {
+ 250, 128, 114
+ }, {
+ 248, 248, 255
+ }, {
+ 255, 215, 0
+ }, {
+ 218, 165, 32
+ }, {
+ 128, 128, 128
+ }, {
+ 128, 128, 128
+ }, {
+ 0, 128, 0
+ }, {
+ 173, 255, 47
+ }, {
+ 240, 255, 240
+ }, {
+ 255, 105, 180
+ }, {
+ 205, 92, 92
+ }, {
+ 75, 0, 130
+ }, {
+ 255, 255, 240
+ }, {
+ 240, 230, 140
+ }, {
+ 230, 230, 250
+ }, {
+ 255, 240, 245
+ }, {
+ 124, 252, 0
+ }, {
+ 255, 250, 205
+ }, {
+ 173, 216, 230
+ }, {
+ 240, 128, 128
+ }, {
+ 224, 255, 255
+ }, {
+ 250, 250, 210
+ }, {
+ 211, 211, 211
+ }, {
+ 144, 238, 144
+ }, {
+ 211, 211, 211
+ }, {
+ 244, 164, 96
+ }, {
+ 46, 139, 87
+ }, {
+ 255, 245, 238
+ }, {
+ 160, 82, 45
+ }, {
+ 192, 192, 192
+ }, {
+ 135, 206, 235
+ }, {
+ 106, 90, 205
+ }, {
+ 112, 128, 144
+ }, {
+ 112, 128, 144
+ }, {
+ 255, 250, 250
+ }, {
+ 0, 255, 127
+ }, {
+ 70, 130, 180
+ }, {
+ 210, 180, 140
+ }, {
+ 0, 128, 128
+ }, {
+ 216, 191, 216
+ }, {
+ 255, 99, 71
+ }, {
+ 64, 224, 208
+ }, {
+ 238, 130, 238
+ }, {
+ 245, 222, 179
+ }, {
+ 255, 255, 255
+ }, {
+ 245, 245, 245
+ }, {
+ 255, 255, 0
+ }, {
+ 154, 205, 50
+ }
+ };
+
+ /*
+ * aliceblue rgb(240, 248, 255)
+ * antiquewhite rgb(250, 235, 215)
+ * aqua rgb( 0, 255, 255)
+ * aquamarine rgb(127, 255, 212)
+ * azure rgb(240, 255, 255)
+ * beige rgb(245, 245, 220)
+ * bisque rgb(255, 228, 196)
+ * black rgb( 0, 0, 0)
+ * blanchedalmond rgb(255, 235, 205)
+ * blue rgb( 0, 0, 255)
+ * blueviolet rgb(138, 43, 226)
+ * brown rgb(165, 42, 42)
+ * burlywood rgb(222, 184, 135)
+ * cadetblue rgb( 95, 158, 160)
+ * chartreuse rgb(127, 255, 0)
+ * chocolate rgb(210, 105, 30)
+ * coral rgb(255, 127, 80)
+ * cornflowerblue rgb(100, 149, 237)
+ * cornsilk rgb(255, 248, 220)
+ * crimson rgb(220, 20, 60)
+ * cyan rgb( 0, 255, 255)
+ * darkblue rgb( 0, 0, 139)
+ * darkcyan rgb( 0, 139, 139)
+ * darkgoldenrod rgb(184, 134, 11)
+ * darkgray rgb(169, 169, 169)
+ * darkgreen rgb( 0, 100, 0)
+ * darkgrey rgb(169, 169, 169)
+ * darkkhaki rgb(189, 183, 107)
+ * darkmagenta rgb(139, 0, 139)
+ * darkolivegreen rgb( 85, 107, 47)
+ * darkorange rgb(255, 140, 0)
+ * darkorchid rgb(153, 50, 204)
+ * darkred rgb(139, 0, 0)
+ * darksalmon rgb(233, 150, 122)
+ * darkseagreen rgb(143, 188, 143)
+ * darkslateblue rgb( 72, 61, 139)
+ * darkslategray rgb( 47, 79, 79)
+ * darkslategrey rgb( 47, 79, 79)
+ * darkturquoise rgb( 0, 206, 209)
+ * darkviolet rgb(148, 0, 211)
+ * deeppink rgb(255, 20, 147)
+ * deepskyblue rgb( 0, 191, 255)
+ * dimgray rgb(105, 105, 105)
+ * dimgrey rgb(105, 105, 105)
+ * dodgerblue rgb( 30, 144, 255)
+ * firebrick rgb(178, 34, 34)
+ * floralwhite rgb(255, 250, 240)
+ * forestgreen rgb( 34, 139, 34)
+ * fuchsia rgb(255, 0, 255)
+ * gainsboro rgb(220, 220, 220)
+ * lightpink rgb(255, 182, 193)
+ * lightsalmon rgb(255, 160, 122)
+ * lightseagreen rgb( 32, 178, 170)
+ * lightskyblue rgb(135, 206, 250)
+ * lightslategray rgb(119, 136, 153)
+ * lightslategrey rgb(119, 136, 153)
+ * lightsteelblue rgb(176, 196, 222)
+ * lightyellow rgb(255, 255, 224)
+ * lime rgb( 0, 255, 0)
+ * limegreen rgb( 50, 205, 50)
+ * linen rgb(250, 240, 230)
+ * magenta rgb(255, 0, 255)
+ * maroon rgb(128, 0, 0)
+ * mediumaquamarine rgb(102, 205, 170)
+ * mediumblue rgb( 0, 0, 205)
+ * mediumorchid rgb(186, 85, 211)
+ * mediumpurple rgb(147, 112, 219)
+ * mediumseagreen rgb( 60, 179, 113)
+ * mediumslateblue rgb(123, 104, 238)
+ * mediumspringgreen rgb( 0, 250, 154)
+ * mediumturquoise rgb( 72, 209, 204)
+ * mediumvioletred rgb(199, 21, 133)
+ * midnightblue rgb( 25, 25, 112)
+ * mintcream rgb(245, 255, 250)
+ * mistyrose rgb(255, 228, 225)
+ * moccasin rgb(255, 228, 181)
+ * navajowhite rgb(255, 222, 173)
+ * navy rgb( 0, 0, 128)
+ * oldlace rgb(253, 245, 230)
+ * olive rgb(128, 128, 0)
+ * olivedrab rgb(107, 142, 35)
+ * orange rgb(255, 165, 0)
+ * orangered rgb(255, 69, 0)
+ * orchid rgb(218, 112, 214)
+ * palegoldenrod rgb(238, 232, 170)
+ * palegreen rgb(152, 251, 152)
+ * paleturquoise rgb(175, 238, 238)
+ * palevioletred rgb(219, 112, 147)
+ * papayawhip rgb(255, 239, 213)
+ * peachpuff rgb(255, 218, 185)
+ * peru rgb(205, 133, 63)
+ * pink rgb(255, 192, 203)
+ * plum rgb(221, 160, 221)
+ * powderblue rgb(176, 224, 230)
+ * purple rgb(128, 0, 128)
+ * red rgb(255, 0, 0)
+ * rosybrown rgb(188, 143, 143)
+ * royalblue rgb( 65, 105, 225)
+ * saddlebrown rgb(139, 69, 19)
+ * salmon rgb(250, 128, 114)
+ * ghostwhite rgb(248, 248, 255)
+ * gold rgb(255, 215, 0)
+ * goldenrod rgb(218, 165, 32)
+ * gray rgb(128, 128, 128)
+ * grey rgb(128, 128, 128)
+ * green rgb( 0, 128, 0)
+ * greenyellow rgb(173, 255, 47)
+ * honeydew rgb(240, 255, 240)
+ * hotpink rgb(255, 105, 180)
+ * indianred rgb(205, 92, 92)
+ * indigo rgb( 75, 0, 130)
+ * ivory rgb(255, 255, 240)
+ * khaki rgb(240, 230, 140)
+ * lavender rgb(230, 230, 250)
+ * lavenderblush rgb(255, 240, 245)
+ * lawngreen rgb(124, 252, 0)
+ * lemonchiffon rgb(255, 250, 205)
+ * lightblue rgb(173, 216, 230)
+ * lightcoral rgb(240, 128, 128)
+ * lightcyan rgb(224, 255, 255)
+ * lightgoldenrodyellow rgb(250, 250, 210)
+ * lightgray rgb(211, 211, 211)
+ * lightgreen rgb(144, 238, 144)
+ * lightgrey rgb(211, 211, 211)
+ * sandybrown rgb(244, 164, 96)
+ * seagreen rgb( 46, 139, 87)
+ * seashell rgb(255, 245, 238)
+ * sienna rgb(160, 82, 45)
+ * silver rgb(192, 192, 192)
+ * skyblue rgb(135, 206, 235)
+ * slateblue rgb(106, 90, 205)
+ * slategray rgb(112, 128, 144)
+ * slategrey rgb(112, 128, 144)
+ * snow rgb(255, 250, 250)
+ * springgreen rgb( 0, 255, 127)
+ * steelblue rgb( 70, 130, 180)
+ * tan rgb(210, 180, 140)
+ * teal rgb( 0, 128, 128)
+ * thistle rgb(216, 191, 216)
+ * tomato rgb(255, 99, 71)
+ * turquoise rgb( 64, 224, 208)
+ * violet rgb(238, 130, 238)
+ * wheat rgb(245, 222, 179)
+ * white rgb(255, 255, 255)
+ * whitesmoke rgb(245, 245, 245)
+ * yellow rgb(255, 255, 0)
+ * yellowgreen rgb(154, 205, 50)
+ */
+
+ /**
* Can't convert to any other types
* @return this.colorType
*/
- public ColorType getColorType() {
- return this.colorType;
+ public ColorTypeProperty getColorType() {
+ return this;
}
/**
* @return this.colorType cast as an Object
*/
public Object getObject() {
- return this.colorType;
+ return this;
}
-
}
diff --git a/src/java/org/apache/fop/fo/CondLengthProperty.java b/src/java/org/apache/fop/fo/CondLengthProperty.java
index 8ee5d9e8b..aa2260a41 100644
--- a/src/java/org/apache/fop/fo/CondLengthProperty.java
+++ b/src/java/org/apache/fop/fo/CondLengthProperty.java
@@ -51,14 +51,15 @@
package org.apache.fop.fo;
import org.apache.fop.apps.FOPException;
-import org.apache.fop.datatypes.CondLength;
-import org.apache.fop.datatypes.Length;
+import org.apache.fop.datatypes.CompoundDatatype;
import org.apache.fop.fo.properties.CompoundPropertyMaker;
/**
* Superclass for properties that have conditional lengths
*/
-public class CondLengthProperty extends Property {
+public class CondLengthProperty extends Property implements CompoundDatatype {
+ private Property length;
+ private Property conditionality;
/**
* Inner class for creating instances of CondLengthProperty
@@ -77,7 +78,7 @@ public class CondLengthProperty extends Property {
* @return the new instance.
*/
public Property makeNewProperty() {
- return new CondLengthProperty(new CondLength());
+ return new CondLengthProperty();
}
/**
@@ -93,36 +94,89 @@ public class CondLengthProperty extends Property {
}
}
- private CondLength condLength = null;
+ /**
+ * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
+ */
+ public void setComponent(int cmpId, Property cmpnValue,
+ boolean bIsDefault) {
+ if (cmpId == CP_LENGTH) {
+ length = cmpnValue;
+ } else if (cmpId == CP_CONDITIONALITY) {
+ conditionality = cmpnValue;
+ }
+ }
+
+ /**
+ * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
+ */
+ public Property getComponent(int cmpId) {
+ if (cmpId == CP_LENGTH) {
+ return length;
+ } else if (cmpId == CP_CONDITIONALITY) {
+ return conditionality;
+ } else {
+ return null;
+ }
+ }
/**
- * @param condLength conditional length object which is to be wrapped in
- * this property
+ * Returns the conditionality.
+ * @return the conditionality
*/
- public CondLengthProperty(CondLength condLength) {
- this.condLength = condLength;
+ public Property getConditionality() {
+ return this.conditionality;
}
/**
+ * Returns the length.
+ * @return the length
+ */
+ public Property getLengthComponent() {
+ return this.length;
+ }
+
+ /**
+ * Indicates if the length can be discarded on certain conditions.
+ * @return true if the length can be discarded.
+ */
+ public boolean isDiscard() {
+ return this.conditionality.getEnum() == Constants.DISCARD;
+ }
+
+ /**
+ * Returns the computed length value.
+ * @return the length in millipoints
+ */
+ public int getLengthValue() {
+ return this.length.getLength().getValue();
+ }
+
+ public String toString() {
+ return "CondLength[" + (isDiscard() ? "discard, " : "") +
+ length.getObject().toString() + "]";
+ }
+
+
+ /**
* @return this.condLength
*/
- public CondLength getCondLength() {
- return this.condLength;
+ public CondLengthProperty getCondLength() {
+ return this;
}
/**
* TODO: Should we allow this?
* @return this.condLength cast as a Length
*/
- public Length getLength() {
- return this.condLength.getLength().getLength();
+ public LengthProperty getLength() {
+ return length.getLength();
}
/**
* @return this.condLength cast as an Object
*/
public Object getObject() {
- return this.condLength;
+ return this;
}
}
diff --git a/src/java/org/apache/fop/fo/EnumProperty.java b/src/java/org/apache/fop/fo/EnumProperty.java
index 3c39b1c9f..5d09de9c7 100644
--- a/src/java/org/apache/fop/fo/EnumProperty.java
+++ b/src/java/org/apache/fop/fo/EnumProperty.java
@@ -66,7 +66,7 @@ public class EnumProperty extends Property {
/**
* @param propName name of property for which a Maker should be created
*/
- protected Maker(int propId) {
+ public Maker(int propId) {
super(propId);
}
diff --git a/src/java/org/apache/fop/fo/FOPropertyMapping.java b/src/java/org/apache/fop/fo/FOPropertyMapping.java
index afe6ea959..5ca79af2a 100644
--- a/src/java/org/apache/fop/fo/FOPropertyMapping.java
+++ b/src/java/org/apache/fop/fo/FOPropertyMapping.java
@@ -53,10 +53,10 @@ package org.apache.fop.fo;
import java.util.HashMap;
import java.util.Map;
-import org.apache.fop.datatypes.ColorType;
import org.apache.fop.datatypes.LengthBase;
import org.apache.fop.datatypes.ToBeImplementedProperty;
import org.apache.fop.fo.properties.BorderWidthPropertyMaker;
+import org.apache.fop.fo.properties.CharacterProperty;
import org.apache.fop.fo.properties.CorrespondingPropertyMaker;
import org.apache.fop.fo.properties.DimensionPropertyMaker;
import org.apache.fop.fo.properties.IndentPropertyMaker;
@@ -686,7 +686,7 @@ public class FOPropertyMapping implements Constants {
Property p, PropertyList propertyList, FObj fo) {
String nameval = p.getNCname();
if (nameval != null) {
- return new ColorTypeProperty(new ColorType(nameval));
+ return new ColorTypeProperty(nameval);
}
return super.convertPropertyDatatype(p, propertyList, fo);
}
diff --git a/src/java/org/apache/fop/fo/KeepProperty.java b/src/java/org/apache/fop/fo/KeepProperty.java
index a4fa0595d..a7d659dc3 100644
--- a/src/java/org/apache/fop/fo/KeepProperty.java
+++ b/src/java/org/apache/fop/fo/KeepProperty.java
@@ -51,13 +51,16 @@
package org.apache.fop.fo;
import org.apache.fop.apps.FOPException;
-import org.apache.fop.datatypes.Keep;
+import org.apache.fop.datatypes.CompoundDatatype;
import org.apache.fop.fo.properties.CompoundPropertyMaker;
/**
* Superclass for properties that wrap Keep values
*/
-public class KeepProperty extends Property {
+public class KeepProperty extends Property implements CompoundDatatype {
+ private Property withinLine;
+ private Property withinColumn;
+ private Property withinPage;
/**
* Inner class for creating instances of KeepProperty
@@ -76,7 +79,7 @@ public class KeepProperty extends Property {
* @return the new instance.
*/
public Property makeNewProperty() {
- return new KeepProperty(new Keep());
+ return new KeepProperty();
}
/**
@@ -92,27 +95,104 @@ public class KeepProperty extends Property {
}
}
- private Keep keep;
+ /**
+ * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
+ */
+ public void setComponent(int cmpId, Property cmpnValue,
+ boolean bIsDefault) {
+ if (cmpId == CP_WITHIN_LINE) {
+ setWithinLine(cmpnValue, bIsDefault);
+ } else if (cmpId == CP_WITHIN_COLUMN) {
+ setWithinColumn(cmpnValue, bIsDefault);
+ } else if (cmpId == CP_WITHIN_PAGE) {
+ setWithinPage(cmpnValue, bIsDefault);
+ }
+ }
+
+ /**
+ * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
+ */
+ public Property getComponent(int cmpId) {
+ if (cmpId == CP_WITHIN_LINE) {
+ return getWithinLine();
+ } else if (cmpId == CP_WITHIN_COLUMN) {
+ return getWithinColumn();
+ } else if (cmpId == CP_WITHIN_PAGE) {
+ return getWithinPage();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * @param withinLine withinLine property to set
+ * @param bIsDefault not used (??)
+ */
+ public void setWithinLine(Property withinLine, boolean bIsDefault) {
+ this.withinLine = withinLine;
+ }
+
+ /**
+ * @param withinColumn withinColumn property to set
+ * @param bIsDefault not used (??)
+ */
+ protected void setWithinColumn(Property withinColumn,
+ boolean bIsDefault) {
+ this.withinColumn = withinColumn;
+ }
+
+ /**
+ * @param withinPage withinPage property to set
+ * @param bIsDefault not used (??)
+ */
+ public void setWithinPage(Property withinPage, boolean bIsDefault) {
+ this.withinPage = withinPage;
+ }
+
+ /**
+ * @return the withinLine property
+ */
+ public Property getWithinLine() {
+ return this.withinLine;
+ }
+
+ /**
+ * @return the withinColumn property
+ */
+ public Property getWithinColumn() {
+ return this.withinColumn;
+ }
+
+ /**
+ * @return the withinPage property
+ */
+ public Property getWithinPage() {
+ return this.withinPage;
+ }
/**
- * @param keep Keep value to wrap in this Property
+ * Not sure what to do here. There isn't really a meaningful single value.
+ * @return String representation
*/
- public KeepProperty(Keep keep) {
- this.keep = keep;
+ public String toString() {
+ return "Keep[" +
+ "withinLine:" + getWithinLine().getObject() +
+ ", withinColumn:" + getWithinColumn().getObject() +
+ ", withinPage:" + getWithinPage().getObject() + "]";
}
/**
* @return this.keep
*/
- public Keep getKeep() {
- return this.keep;
+ public KeepProperty getKeep() {
+ return this;
}
/**
* @return this.keep cast as Object
*/
public Object getObject() {
- return this.keep;
+ return this;
}
}
diff --git a/src/java/org/apache/fop/fo/LengthPairProperty.java b/src/java/org/apache/fop/fo/LengthPairProperty.java
index d9170c268..e56bcab2b 100644
--- a/src/java/org/apache/fop/fo/LengthPairProperty.java
+++ b/src/java/org/apache/fop/fo/LengthPairProperty.java
@@ -51,13 +51,15 @@
package org.apache.fop.fo;
import org.apache.fop.apps.FOPException;
-import org.apache.fop.datatypes.LengthPair;
+import org.apache.fop.datatypes.CompoundDatatype;
import org.apache.fop.fo.properties.CompoundPropertyMaker;
/**
* Superclass for properties wrapping a LengthPair value
*/
-public class LengthPairProperty extends Property {
+public class LengthPairProperty extends Property implements CompoundDatatype {
+ private Property ipd;
+ private Property bpd;
/**
* Inner class for creating instances of LengthPairProperty
@@ -76,7 +78,7 @@ public class LengthPairProperty extends Property {
* @return the new instance.
*/
public Property makeNewProperty() {
- return new LengthPairProperty(new LengthPair());
+ return new LengthPairProperty();
}
/**
@@ -92,27 +94,63 @@ public class LengthPairProperty extends Property {
}
}
- private LengthPair lengthPair;
+ /**
+ * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
+ */
+ public void setComponent(int cmpId, Property cmpnValue,
+ boolean bIsDefault) {
+ if (cmpId == CP_BLOCK_PROGRESSION_DIRECTION) {
+ bpd = cmpnValue;
+ } else if (cmpId == CP_INLINE_PROGRESSION_DIRECTION) {
+ ipd = cmpnValue;
+ }
+ }
/**
- * @param lengthPair the LengthPair object to be wrapped in this Property
+ * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
*/
- public LengthPairProperty(LengthPair lengthPair) {
- this.lengthPair = lengthPair;
+ public Property getComponent(int cmpId) {
+ if (cmpId == CP_BLOCK_PROGRESSION_DIRECTION) {
+ return getBPD();
+ } else if (cmpId == CP_INLINE_PROGRESSION_DIRECTION) {
+ return getIPD();
+ } else {
+ return null; // SHOULDN'T HAPPEN
+ }
+ }
+
+ /**
+ * @return Property holding the ipd length
+ */
+ public Property getIPD() {
+ return this.ipd;
+ }
+
+ /**
+ * @return Property holding the bpd length
+ */
+ public Property getBPD() {
+ return this.bpd;
+ }
+
+ public String toString() {
+ return "LengthPair[" +
+ "ipd:" + getIPD().getObject() +
+ ", bpd:" + getBPD().getObject() + "]";
}
/**
* @return this.lengthPair
*/
- public LengthPair getLengthPair() {
- return this.lengthPair;
+ public LengthPairProperty getLengthPair() {
+ return this;
}
/**
* @return this.lengthPair cast as an Object
*/
public Object getObject() {
- return this.lengthPair;
+ return this;
}
}
diff --git a/src/java/org/apache/fop/fo/LengthProperty.java b/src/java/org/apache/fop/fo/LengthProperty.java
index f42be2be9..fd69848ce 100644
--- a/src/java/org/apache/fop/fo/LengthProperty.java
+++ b/src/java/org/apache/fop/fo/LengthProperty.java
@@ -50,16 +50,20 @@
*/
package org.apache.fop.fo;
-import org.apache.fop.datatypes.Length;
+import org.apache.fop.apps.FOPException;
import org.apache.fop.datatypes.AutoLength;
-import org.apache.fop.fo.expr.Numeric;
+import org.apache.fop.datatypes.Length;
+import org.apache.fop.fo.expr.NumericProperty;
import org.apache.fop.fo.properties.PropertyMaker;
-import org.apache.fop.apps.FOPException;
/**
* Superclass for properties wrapping a Length value.
*/
-public class LengthProperty extends Property {
+public class LengthProperty extends Property implements Length {
+ /** Holds the length in millipoints. */
+ protected int millipoints = 0;
+ /** Indicates if the value has been computed, or not. */
+ protected boolean bIsComputed = false;
/**
* Inner class for making instances of LengthProperty
@@ -111,60 +115,127 @@ public class LengthProperty extends Property {
if (isAutoLengthAllowed()) {
String pval = p.getString();
if (pval != null && pval.equals("auto")) {
- return new LengthProperty(new AutoLength());
+ return new AutoLength();
}
}
if (p instanceof LengthProperty) {
return p;
}
- Length val = p.getLength();
+ LengthProperty val = p.getLength();
if (val != null) {
- return new LengthProperty(val);
+ return val;
}
return convertPropertyDatatype(p, propertyList, fo);
}
}
- /*
- * public static Property.Maker maker(String prop) {
- * return new Maker(prop);
- * }
+
+ /**
+ * Returns the length in 1/1000ths of a point (millipoints)
+ * @return the length in millipoints
+ */
+ public int getValue() {
+ if (!bIsComputed) {
+ computeValue();
+ }
+ return millipoints;
+ }
+
+ /**
+ * Computes the value.
+ */
+ protected void computeValue() {
+ }
+
+
+ /**
+ * Sets the computed value.
+ * @param millipoints the length in millipoints
+ */
+ protected void setComputedValue(int millipoints) {
+ setComputedValue(millipoints, true);
+ }
+
+ /**
+ * Sets the computed value.
+ * @param millipoints the length in millipoints
+ * @param bSetComputed True if the isComputed flag should be set.
+ */
+ protected void setComputedValue(int millipoints, boolean bSetComputed) {
+ this.millipoints = millipoints;
+ this.bIsComputed = bSetComputed;
+ }
+
+ /**
+ * Indicates if the length has the "auto" value.
+ * @return True if the length is set to "auto"
+ */
+ public boolean isAuto() {
+ return false;
+ }
+
+ /**
+ * Indicates if the length has been computed.
+ * @return True if the length has been computed
+ */
+ public boolean isComputed() {
+ return this.bIsComputed;
+ }
+
+ /**
+ * Return the number of table units which are included in this
+ * length specification.
+ * This will always be 0 unless the property specification used
+ * the proportional-column-width() function (only only table
+ * column FOs).
+ * <p>If this value is not 0, the actual value of the Length cannot
+ * be known without looking at all of the columns in the table to
+ * determine the value of a "table-unit".
+ * @return The number of table units which are included in this
+ * length specification.
*/
+ public double getTableUnits() {
+ return 0.0;
+ }
+
+ public void resolveTableUnit(double dTableUnit) {
+ }
/**
- * This object may be also be a subclass of Length, such
- * as PercentLength, TableColLength.
+ * @return null (cannot be converted to a Numeric ??)
*/
- private Length length;
+ public NumericProperty asNumeric() {
+ return null;
+ }
/**
- * @param length Length object to wrap in this
+ * @see java.lang.Object#toString()
*/
- public LengthProperty(Length length) {
- this.length = length;
- // System.err.println("Set LengthProperty: " + length.toString());
+ public String toString() {
+ String s = millipoints + "mpt";
+ return s;
}
/**
* @return this.lenght cast as a Numeric
*/
- public Numeric getNumeric() {
- return length.asNumeric() ;
+ public NumericProperty getNumeric() {
+ return asNumeric() ;
}
/**
* @return this.length
*/
- public Length getLength() {
- return this.length;
+ public LengthProperty getLength() {
+ return this;
}
/**
* @return this.length cast as an Object
*/
public Object getObject() {
- return this.length;
+ return this;
}
}
diff --git a/src/java/org/apache/fop/fo/LengthRangeProperty.java b/src/java/org/apache/fop/fo/LengthRangeProperty.java
index a57211cc5..218cf5514 100644
--- a/src/java/org/apache/fop/fo/LengthRangeProperty.java
+++ b/src/java/org/apache/fop/fo/LengthRangeProperty.java
@@ -50,14 +50,22 @@
*/
package org.apache.fop.fo;
-import org.apache.fop.datatypes.LengthRange;
-import org.apache.fop.fo.properties.CompoundPropertyMaker;
import org.apache.fop.apps.FOPException;
+import org.apache.fop.datatypes.CompoundDatatype;
+import org.apache.fop.fo.properties.CompoundPropertyMaker;
/**
* Superclass for properties that contain LengthRange values
*/
-public class LengthRangeProperty extends Property {
+public class LengthRangeProperty extends Property implements CompoundDatatype {
+ private Property minimum;
+ private Property optimum;
+ private Property 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
+ private boolean bChecked = false;
/**
* Inner class for a Maker for LengthProperty objects
@@ -76,7 +84,7 @@ public class LengthRangeProperty extends Property {
* @return the new instance.
*/
public Property makeNewProperty() {
- return new LengthRangeProperty(new LengthRange());
+ return new LengthRangeProperty();
}
/**
@@ -92,27 +100,179 @@ public class LengthRangeProperty extends Property {
}
}
- private LengthRange lengthRange;
+
+
+ /**
+ * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
+ */
+ public void setComponent(int cmpId, Property cmpnValue,
+ boolean bIsDefault) {
+ if (cmpId == CP_MINIMUM) {
+ setMinimum(cmpnValue, bIsDefault);
+ } else if (cmpId == CP_OPTIMUM) {
+ setOptimum(cmpnValue, bIsDefault);
+ } else if (cmpId == CP_MAXIMUM) {
+ setMaximum(cmpnValue, bIsDefault);
+ }
+ }
+
+ /**
+ * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
+ */
+ public Property getComponent(int cmpId) {
+ if (cmpId == CP_MINIMUM) {
+ return getMinimum();
+ } else if (cmpId == CP_OPTIMUM) {
+ return getOptimum();
+ } else if (cmpId == CP_MAXIMUM) {
+ return getMaximum();
+ } else {
+ return null; // SHOULDN'T HAPPEN
+ }
+ }
+
+ /**
+ * Set minimum value to min.
+ * @param minimum A Length value specifying the minimum value for this
+ * LengthRange.
+ * @param bIsDefault If true, this is set as a "default" value
+ * and not a user-specified explicit value.
+ */
+ protected void setMinimum(Property minimum, boolean bIsDefault) {
+ this.minimum = minimum;
+ if (!bIsDefault) {
+ bfSet |= MINSET;
+ }
+ }
+
+
+ /**
+ * Set maximum value to max if it is >= optimum or optimum isn't set.
+ * @param max A Length value specifying the maximum value for this
+ * @param bIsDefault If true, this is set as a "default" value
+ * and not a user-specified explicit value.
+ */
+ protected void setMaximum(Property max, boolean bIsDefault) {
+ maximum = max;
+ if (!bIsDefault) {
+ bfSet |= MAXSET;
+ }
+ }
+
/**
- * @param lengthRange LengthRange object to wrap in this
+ * Set the optimum value.
+ * @param opt A Length value specifying the optimum value for this
+ * @param bIsDefault If true, this is set as a "default" value
+ * and not a user-specified explicit value.
*/
- public LengthRangeProperty(LengthRange lengthRange) {
- this.lengthRange = lengthRange;
+ protected void setOptimum(Property opt, boolean bIsDefault) {
+ optimum = opt;
+ if (!bIsDefault) {
+ bfSet |= OPTSET;
+ }
+ }
+
+ // Minimum is prioritaire, if explicit
+ private void checkConsistency() {
+ if (bChecked) {
+ return;
+ }
+ // Make sure max >= min
+ // Must also control if have any allowed enum values!
+
+ /**
+ * *******************
+ * if (minimum.mvalue() > maximum.mvalue()) {
+ * if ((bfSet&MINSET)!=0) {
+ * // if minimum is explicit, force max to min
+ * if ((bfSet&MAXSET)!=0) {
+ * // Warning: min>max, resetting max to min
+ * log.error("forcing max to min in LengthRange");
+ * }
+ * maximum = minimum ;
+ * }
+ * else {
+ * minimum = maximum; // minimum was default value
+ * }
+ * }
+ * // Now make sure opt <= max and opt >= min
+ * if (optimum.mvalue() > maximum.mvalue()) {
+ * if ((bfSet&OPTSET)!=0) {
+ * if ((bfSet&MAXSET)!=0) {
+ * // Warning: opt > max, resetting opt to max
+ * log.error("forcing opt to max in LengthRange");
+ * optimum = maximum ;
+ * }
+ * else {
+ * maximum = optimum; // maximum was default value
+ * }
+ * }
+ * else {
+ * // opt is default and max is explicit or default
+ * optimum = maximum ;
+ * }
+ * }
+ * else if (optimum.mvalue() < minimum.mvalue()) {
+ * if ((bfSet&MINSET)!=0) {
+ * // if minimum is explicit, force opt to min
+ * if ((bfSet&OPTSET)!=0) {
+ * log.error("forcing opt to min in LengthRange");
+ * }
+ * optimum = minimum ;
+ * }
+ * else {
+ * minimum = optimum; // minimum was default value
+ * }
+ * }
+ * *******$*******
+ */
+ bChecked = true;
+ }
+
+ /**
+ * @return minimum length
+ */
+ public Property getMinimum() {
+ checkConsistency();
+ return this.minimum;
+ }
+
+ /**
+ * @return maximum length
+ */
+ public Property getMaximum() {
+ checkConsistency();
+ return this.maximum;
+ }
+
+ /**
+ * @return optimum length
+ */
+ public Property getOptimum() {
+ checkConsistency();
+ return this.optimum;
+ }
+
+ public String toString() {
+ return "LengthRange[" +
+ "min:" + getMinimum().getObject() +
+ ", max:" + getMaximum().getObject() +
+ ", opt:" + getOptimum().getObject() + "]";
}
/**
* @return this.lengthRange
*/
- public LengthRange getLengthRange() {
- return this.lengthRange;
+ public LengthRangeProperty getLengthRange() {
+ return this;
}
/**
* @return this.lengthRange cast as an Object
*/
public Object getObject() {
- return this.lengthRange;
+ return this;
}
}
diff --git a/src/java/org/apache/fop/fo/NumberProperty.java b/src/java/org/apache/fop/fo/NumberProperty.java
index 8c98dd06e..9288cb8d7 100644
--- a/src/java/org/apache/fop/fo/NumberProperty.java
+++ b/src/java/org/apache/fop/fo/NumberProperty.java
@@ -50,8 +50,7 @@
*/
package org.apache.fop.fo;
-import org.apache.fop.datatypes.ColorType;
-import org.apache.fop.fo.expr.Numeric;
+import org.apache.fop.fo.expr.NumericProperty;
import org.apache.fop.fo.properties.PropertyMaker;
/**
@@ -142,18 +141,18 @@ public class NumberProperty extends Property {
* Convert NumberProperty to Numeric object
* @return Numeric object corresponding to this
*/
- public Numeric getNumeric() {
- return new Numeric(this.number);
+ public NumericProperty getNumeric() {
+ return new NumericProperty(this.number);
}
/**
* Convert NumberProperty to a ColorType. Not sure why this is needed.
* @return ColorType that corresponds to black
*/
- public ColorType getColorType() {
+ public ColorTypeProperty getColorType() {
// Convert numeric value to color ???
// Convert to hexadecimal and then try to make it into a color?
- return new ColorType((float)0.0, (float)0.0, (float)0.0);
+ return new ColorTypeProperty((float)0.0, (float)0.0, (float)0.0);
}
}
diff --git a/src/java/org/apache/fop/fo/Property.java b/src/java/org/apache/fop/fo/Property.java
index 17d5d3648..80b68d4ed 100644
--- a/src/java/org/apache/fop/fo/Property.java
+++ b/src/java/org/apache/fop/fo/Property.java
@@ -50,14 +50,7 @@
*/
package org.apache.fop.fo;
-import org.apache.fop.datatypes.ColorType;
-import org.apache.fop.datatypes.CondLength;
-import org.apache.fop.datatypes.Keep;
-import org.apache.fop.datatypes.Length;
-import org.apache.fop.datatypes.LengthPair;
-import org.apache.fop.datatypes.LengthRange;
-import org.apache.fop.datatypes.Space;
-import org.apache.fop.fo.expr.Numeric;
+import org.apache.fop.fo.expr.NumericProperty;
import java.util.Vector;
/**
@@ -97,7 +90,7 @@ public class Property {
* This method expects to be overridden by subclasses
* @return Length property value
*/
- public Length getLength() {
+ public LengthProperty getLength() {
return null;
}
@@ -105,7 +98,7 @@ public class Property {
* This method expects to be overridden by subclasses
* @return ColorType property value
*/
- public ColorType getColorType() {
+ public ColorTypeProperty getColorType() {
return null;
}
@@ -113,7 +106,7 @@ public class Property {
* This method expects to be overridden by subclasses
* @return CondLength property value
*/
- public CondLength getCondLength() {
+ public CondLengthProperty getCondLength() {
return null;
}
@@ -121,7 +114,7 @@ public class Property {
* This method expects to be overridden by subclasses
* @return LenghtRange property value
*/
- public LengthRange getLengthRange() {
+ public LengthRangeProperty getLengthRange() {
return null;
}
@@ -129,7 +122,7 @@ public class Property {
* This method expects to be overridden by subclasses
* @return LengthPair property value
*/
- public LengthPair getLengthPair() {
+ public LengthPairProperty getLengthPair() {
return null;
}
@@ -137,7 +130,7 @@ public class Property {
* This method expects to be overridden by subclasses
* @return Space property value
*/
- public Space getSpace() {
+ public SpaceProperty getSpace() {
return null;
}
@@ -145,7 +138,7 @@ public class Property {
* This method expects to be overridden by subclasses
* @return Keep property value
*/
- public Keep getKeep() {
+ public KeepProperty getKeep() {
return null;
}
@@ -185,7 +178,7 @@ public class Property {
* This method expects to be overridden by subclasses
* @return Numeric property value
*/
- public Numeric getNumeric() {
+ public NumericProperty getNumeric() {
return null;
}
@@ -210,8 +203,7 @@ public class Property {
* @return String property value
*/
public String getString() {
- Object o = getObject();
- return (o == null) ? null : o.toString();
+ return null;
}
/**
diff --git a/src/java/org/apache/fop/fo/SpaceProperty.java b/src/java/org/apache/fop/fo/SpaceProperty.java
index 40d33b08a..7f2c15425 100644
--- a/src/java/org/apache/fop/fo/SpaceProperty.java
+++ b/src/java/org/apache/fop/fo/SpaceProperty.java
@@ -51,8 +51,6 @@
package org.apache.fop.fo;
import org.apache.fop.apps.FOPException;
-import org.apache.fop.datatypes.LengthRange;
-import org.apache.fop.datatypes.Space;
import org.apache.fop.fo.properties.CompoundPropertyMaker;
/**
@@ -60,7 +58,9 @@ import org.apache.fop.fo.properties.CompoundPropertyMaker;
* fo:space-after variety. It is extended by org.apache.fop.fo.properties.GenericSpace,
* which is extended by many other properties.
*/
-public class SpaceProperty extends Property {
+public class SpaceProperty extends LengthRangeProperty {
+ private Property precedence;
+ private Property conditionality;
/**
* Inner class used to create new instances of SpaceProperty
@@ -79,7 +79,7 @@ public class SpaceProperty extends Property {
* @return the new instance.
*/
public Property makeNewProperty() {
- return new SpaceProperty(new Space());
+ return new SpaceProperty();
}
/**
@@ -95,35 +95,97 @@ public class SpaceProperty extends Property {
}
}
- private Space space;
+
/**
- * @param space the Space object (datatype) to be stored here
+ * @see org.apache.fop.datatypes.CompoundDatatype#setComponent(int, Property, boolean)
*/
- public SpaceProperty(Space space) {
- this.space = space;
+ public void setComponent(int cmpId, Property cmpnValue,
+ boolean bIsDefault) {
+ if (cmpId == CP_PRECEDENCE) {
+ setPrecedence(cmpnValue, bIsDefault);
+ } else if (cmpId == CP_CONDITIONALITY) {
+ setConditionality(cmpnValue, bIsDefault);
+ } else {
+ super.setComponent(cmpId, cmpnValue, bIsDefault);
+ }
+ }
+
+ /**
+ * @see org.apache.fop.datatypes.CompoundDatatype#getComponent(int)
+ */
+ public Property getComponent(int cmpId) {
+ if (cmpId == CP_PRECEDENCE) {
+ return getPrecedence();
+ } else if (cmpId == CP_CONDITIONALITY) {
+ return getConditionality();
+ } else {
+ return super.getComponent(cmpId);
+ }
+ }
+
+ /**
+ *
+ * @param precedence precedence Property to set
+ * @param bIsDefault (is not used anywhere)
+ */
+ protected void setPrecedence(Property precedence, boolean bIsDefault) {
+ this.precedence = precedence;
+ }
+
+ /**
+ *
+ * @param conditionality conditionality Property to set
+ * @param bIsDefault (is not used anywhere)
+ */
+ protected void setConditionality(Property conditionality,
+ boolean bIsDefault) {
+ this.conditionality = conditionality;
+ }
+
+ /**
+ * @return precedence Property
+ */
+ public Property getPrecedence() {
+ return this.precedence;
+ }
+
+ /**
+ * @return conditionality Property
+ */
+ public Property getConditionality() {
+ return this.conditionality;
+ }
+
+ public String toString() {
+ return "Space[" +
+ "min:" + getMinimum().getObject() +
+ ", max:" + getMaximum().getObject() +
+ ", opt:" + getOptimum().getObject() +
+ ", precedence:" + precedence.getObject() +
+ ", conditionality:" + conditionality.getObject() + "]";
}
/**
* @return the Space (datatype) object contained here
*/
- public Space getSpace() {
- return this.space;
+ public SpaceProperty getSpace() {
+ return this;
}
/**
* Space extends LengthRange.
* @return the Space (datatype) object contained here
*/
- public LengthRange getLengthRange() {
- return this.space;
+ public LengthRangeProperty getLengthRange() {
+ return this;
}
/**
* @return the Space (datatype) object contained here
*/
public Object getObject() {
- return this.space;
+ return this;
}
}
diff --git a/src/java/org/apache/fop/fo/expr/AbsFunction.java b/src/java/org/apache/fop/fo/expr/AbsFunction.java
index 9acfb1596..f29bb8c6c 100644
--- a/src/java/org/apache/fop/fo/expr/AbsFunction.java
+++ b/src/java/org/apache/fop/fo/expr/AbsFunction.java
@@ -73,12 +73,12 @@ public class AbsFunction extends FunctionBase {
*/
public Property eval(Property[] args,
PropertyInfo propInfo) throws PropertyException {
- Numeric num = args[0].getNumeric();
+ NumericProperty num = args[0].getNumeric();
if (num == null) {
throw new PropertyException("Non numeric operand to abs function");
}
// TODO: What if it has relative components (percent, table-col units)?
- return new NumericProperty(num.abs());
+ return num.abs();
}
}
diff --git a/src/java/org/apache/fop/fo/expr/BodyStartFunction.java b/src/java/org/apache/fop/fo/expr/BodyStartFunction.java
index 6a68d42b3..69416d770 100644
--- a/src/java/org/apache/fop/fo/expr/BodyStartFunction.java
+++ b/src/java/org/apache/fop/fo/expr/BodyStartFunction.java
@@ -77,7 +77,7 @@ public class BodyStartFunction extends FunctionBase {
*/
public Property eval(Property[] args,
PropertyInfo pInfo) throws PropertyException {
- Numeric distance =
+ NumericProperty distance =
pInfo.getPropertyList().get(Constants.PR_PROVISIONAL_DISTANCE_BETWEEN_STARTS).getNumeric();
FONode item = pInfo.getFO();
@@ -88,10 +88,10 @@ public class BodyStartFunction extends FunctionBase {
throw new PropertyException("body-start() called from outside an fo:list-item");
}
- Numeric startIndent =
+ NumericProperty startIndent =
((ListItem)item).propertyList.get(Constants.PR_START_INDENT).getNumeric();
- return new NumericProperty(distance.add(startIndent));
+ return distance.add(startIndent);
}
}
diff --git a/src/java/org/apache/fop/fo/expr/LabelEndFunction.java b/src/java/org/apache/fop/fo/expr/LabelEndFunction.java
index 8306857d2..e44b29951 100644
--- a/src/java/org/apache/fop/fo/expr/LabelEndFunction.java
+++ b/src/java/org/apache/fop/fo/expr/LabelEndFunction.java
@@ -50,7 +50,6 @@
*/
package org.apache.fop.fo.expr;
-import org.apache.fop.datatypes.Length;
import org.apache.fop.datatypes.LengthBase;
import org.apache.fop.datatypes.LinearCombinationLength;
import org.apache.fop.datatypes.PercentLength;
@@ -84,9 +83,9 @@ public class LabelEndFunction extends FunctionBase {
public Property eval(Property[] args,
PropertyInfo pInfo) throws PropertyException {
- Length distance =
+ LengthProperty distance =
pInfo.getPropertyList().get(Constants.PR_PROVISIONAL_DISTANCE_BETWEEN_STARTS).getLength();
- Length separation =
+ LengthProperty separation =
pInfo.getPropertyList().getNearestSpecified(Constants.PR_PROVISIONAL_LABEL_SEPARATION).getLength();
FONode item = pInfo.getFO();
@@ -96,7 +95,7 @@ public class LabelEndFunction extends FunctionBase {
if (item == null) {
throw new PropertyException("label-end() called from outside an fo:list-item");
}
- Length startIndent = ((ListItem)item).propertyList.get(Constants.PR_START_INDENT).getLength();
+ LengthProperty startIndent = ((ListItem)item).propertyList.get(Constants.PR_START_INDENT).getLength();
LinearCombinationLength labelEnd = new LinearCombinationLength();
@@ -110,7 +109,7 @@ public class LabelEndFunction extends FunctionBase {
labelEnd.addTerm(-1.0, startIndent);
labelEnd.addTerm(1.0, separation);
- return new LengthProperty(labelEnd);
+ return labelEnd;
}
}
diff --git a/src/java/org/apache/fop/fo/expr/MaxFunction.java b/src/java/org/apache/fop/fo/expr/MaxFunction.java
index dc208d0ae..40c8a407a 100644
--- a/src/java/org/apache/fop/fo/expr/MaxFunction.java
+++ b/src/java/org/apache/fop/fo/expr/MaxFunction.java
@@ -74,12 +74,12 @@ public class MaxFunction extends FunctionBase {
*/
public Property eval(Property[] args,
PropertyInfo pInfo) throws PropertyException {
- Numeric n1 = args[0].getNumeric();
- Numeric n2 = args[1].getNumeric();
+ NumericProperty n1 = args[0].getNumeric();
+ NumericProperty n2 = args[1].getNumeric();
if (n1 == null || n2 == null) {
throw new PropertyException("Non numeric operands to max function");
}
- return new NumericProperty(n1.max(n2));
+ return n1.max(n2);
}
}
diff --git a/src/java/org/apache/fop/fo/expr/MinFunction.java b/src/java/org/apache/fop/fo/expr/MinFunction.java
index 02b4e3f62..cdb9f25a3 100644
--- a/src/java/org/apache/fop/fo/expr/MinFunction.java
+++ b/src/java/org/apache/fop/fo/expr/MinFunction.java
@@ -74,12 +74,12 @@ public class MinFunction extends FunctionBase {
*/
public Property eval(Property[] args,
PropertyInfo pInfo) throws PropertyException {
- Numeric n1 = args[0].getNumeric();
- Numeric n2 = args[1].getNumeric();
+ NumericProperty n1 = args[0].getNumeric();
+ NumericProperty n2 = args[1].getNumeric();
if (n1 == null || n2 == null) {
throw new PropertyException("Non numeric operands to min function");
}
- return new NumericProperty(n1.min(n2));
+ return n1.min(n2);
}
}
diff --git a/src/java/org/apache/fop/fo/expr/Numeric.java b/src/java/org/apache/fop/fo/expr/Numeric.java
deleted file mode 100644
index 2845637e5..000000000
--- a/src/java/org/apache/fop/fo/expr/Numeric.java
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * $Id: Numeric.java,v 1.6 2003/03/05 20:38:26 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 <jtauber@jtauber.com>. For more information on the Apache
- * Software Foundation, please see <http://www.apache.org/>.
- */
-package org.apache.fop.fo.expr;
-
-import java.util.Vector;
-
-import org.apache.fop.datatypes.Length;
-import org.apache.fop.datatypes.FixedLength;
-import org.apache.fop.datatypes.PercentLength;
-import org.apache.fop.datatypes.MixedLength;
-import org.apache.fop.datatypes.TableColLength;
-import org.apache.fop.datatypes.PercentBase;
-
-/**
- * Represents a "numeric" value as defined by the XSL FO Specification.
- * This consists of one or more kinds of value specifications, from
- * absolute numbers (units power of 0) to lengths (unit power of 1),
- * relative lengths (ems), percentage lengths.
- * A Numeric can be constructed from other Property types representing
- * Numbers or Length-type values.
- * Numeric provides methods to return Number and Length values based on
- * its current value.
- * It supports basic arithmetic operations involving Numerics.
- */
-public class Numeric {
- // Bit fields
-
- /** constant for a length of absolute units (or number) */
- public static final int ABS_LENGTH = 1;
- /** constant for a percentage */
- public static final int PC_LENGTH = 2;
- /** constant for table units */
- public static final int TCOL_LENGTH = 4;
-
- private int valType;
- private double absValue;
- private double pcValue;
- private PercentBase pcBase = null; // base value for PC_LENGTH component
- private double tcolValue;
- private int dim;
-
-
- /**
- * Construct a Numeric object by specifying one or more components,
- * including absolute length, percent length, table units.
- * @param valType A combination of bits representing the value types.
- * @param absValue The value of a Number or resolved Length value if
- * the ABS_LENGTH flag is set.
- * @param pcValue The decimal percent value if the PC_LENGTH flag is set
- * @param tcolValue The decimal table unit value if the TCOL_LENGTH flag
- * is set.
- * @param dim The dimension of the value. 0 for a Number, 1 for a Length
- * (any type), >1, <0 if Lengths have been multiplied or divided.
- * @param pcBase The PercentBase object used to calculate an actual value for
- * a PC_LENGTH.
- */
- protected Numeric(int valType, double absValue, double pcValue,
- double tcolValue, int dim, PercentBase pcBase) {
- this.valType = valType;
- this.absValue = absValue;
- this.pcValue = pcValue;
- this.tcolValue = tcolValue;
- this.dim = dim;
- this.pcBase = pcBase;
- }
-
- /**
- * Construct a Numeric object of dimension 0 from a double.
- * @param valType A combination of bits representing the value types.
- * @param absValue The value of a Number or resolved Length value.
- */
-
- /**
- * *
- * protected Numeric(int valType, double absValue) {
- * this.valType = valType;
- * this.absValue = absValue;
- * }
- */
-
- /**
- * Construct a Numeric object from a Number.
- * @param num The number.
- */
- public Numeric(Number num) {
- this(ABS_LENGTH, num.doubleValue(), 0.0, 0.0, 0, null);
- }
-
- /**
- * Construct a Numeric object from a Length.
- * @param l The Length.
- */
- public Numeric(FixedLength l) {
- this(ABS_LENGTH, (double)l.getValue(), 0.0, 0.0, 1, null);
- }
-
- /**
- * Construct a Numeric object from a PercentLength.
- * @param pclen The PercentLength.
- */
- public Numeric(PercentLength pclen) {
- this(PC_LENGTH, 0.0, pclen.value(), 0.0, 1, pclen.getBaseLength());
- }
-
- /**
- * Construct a Numeric object from a TableColLength.
- * @param tclen The TableColLength.
- */
- public Numeric(TableColLength tclen) {
- this(TCOL_LENGTH, 0.0, 0.0, tclen.getTableUnits(), 1, null);
- }
-
-
- /**
- * @return the current value as a Length if possible. This constructs
- * a new Length or Length subclass based on the current value type
- * of the Numeric.
- * If the stored value has a unit dimension other than 1, null
- * is returned.
- */
- public Length asLength() {
- if (dim == 1) {
- Vector len = new Vector(3);
- if ((valType & ABS_LENGTH) != 0) {
- len.add(new FixedLength((int)absValue));
- }
- if ((valType & PC_LENGTH) != 0) {
- len.add(new PercentLength(pcValue, pcBase));
- }
- if ((valType & TCOL_LENGTH) != 0) {
- len.add(new TableColLength(tcolValue));
- }
- 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
- return null;
- }
- }
-
- /**
- * @return the current value as a Number if possible.
- * Calls asDouble().
- */
- public Number asNumber() {
- return asDouble();
- }
-
- /**
- * @return the current value as a Double
- */
- public Double asDouble() {
- if (dim == 0 && valType == ABS_LENGTH) {
- return new Double(absValue);
- } else {
- // or throw exception???
- // can't make Number if dimension != 0
- return null;
- }
- }
-
- /**
- * Return the current value as a Integer if possible.
- * If the unit dimension is 0 and the value type is ABSOLUTE, an Integer
- * is returned. Otherwise null is returned. Note: the current value is
- * truncated if necessary to make an integer value.
- */
-
- /**
- * public Integer asInteger() {
- * if (dim == 0 && valType==ABS_LENGTH) {
- * return new Integer((int)absValue);
- * }
- * else {
- * // or throw exception???
- * // can't make Number if dimension != 0
- * return null;
- * }
- * }
- */
-
- /**
- * Return a boolean value indiciating whether the currently stored
- * value consists of different "types" of values (absolute, percent,
- * and/or table-unit.)
- */
- private boolean isMixedType() {
- int ntype = 0;
- for (int t = valType; t != 0; t = t >> 1) {
- if ((t & 1) != 0) {
- ++ntype;
- }
- }
- return ntype > 1;
- }
-
- /**
- * Subtract the operand from the current value and return a new Numeric
- * representing the result.
- * @param op The value to subtract.
- * @return A Numeric representing the result.
- * @throws PropertyException If the dimension of the operand is different
- * from the dimension of this Numeric.
- */
- public Numeric subtract(Numeric op) throws PropertyException {
- // Check of same dimension
- // Add together absolute and table units
- // What about percentages??? Treat as colUnits if they can't be
- // in same property!
- if (dim == op.dim) {
- PercentBase npcBase = ((valType & PC_LENGTH) != 0) ? pcBase
- : op.pcBase;
- // Subtract each type of value
- return new Numeric(valType | op.valType, absValue - op.absValue,
- pcValue - op.pcValue,
- tcolValue - op.tcolValue, dim, npcBase);
- } else {
- throw new PropertyException("Can't add Numerics of different dimensions");
- }
- }
-
- /**
- * Add the operand from the current value and return a new Numeric
- * representing the result.
- * @param op The value to add.
- * @return A Numeric representing the result.
- * @throws PropertyException If the dimension of the operand is different
- * from the dimension of this Numeric.
- */
- public Numeric add(Numeric op) throws PropertyException {
- // Check of same dimension
- // Add together absolute and table units
- // What about percentages??? Treat as colUnits if they can't be
- // in same property!
- if (dim == op.dim) {
- PercentBase npcBase = ((valType & PC_LENGTH) != 0) ? pcBase
- : op.pcBase;
- // Add each type of value
- return new Numeric(valType | op.valType, absValue + op.absValue,
- pcValue + op.pcValue,
- tcolValue + op.tcolValue, dim, npcBase);
- } else {
- throw new PropertyException("Can't add Numerics of different dimensions");
- }
- }
-
- /**
- * Multiply the the current value by the operand and return a new Numeric
- * representing the result.
- * @param op The multiplier.
- * @return A Numeric representing the result.
- * @throws PropertyException If both Numerics have "mixed" type.
- */
- public Numeric multiply(Numeric op) throws PropertyException {
- // Multiply together absolute units and add dimensions (exponents)
- // What about percentages??? Treat as colUnits if they can't be
- // in same property!
- if (dim == 0) {
- // This is a dimensionless quantity, ie. a "Number"
- return new Numeric(op.valType, absValue * op.absValue,
- absValue * op.pcValue,
- absValue * op.tcolValue, op.dim, op.pcBase);
- } else if (op.dim == 0) {
- double opval = op.absValue;
- return new Numeric(valType, opval * absValue, opval * pcValue,
- opval * tcolValue, dim, pcBase);
- } else if (valType == op.valType && !isMixedType()) {
- // Check same relbase and pcbase ???
- PercentBase npcBase = ((valType & PC_LENGTH) != 0) ? pcBase
- : op.pcBase;
- return new Numeric(valType, absValue * op.absValue,
- pcValue * op.pcValue,
- tcolValue * op.tcolValue, dim + op.dim,
- npcBase);
- } else {
- throw new PropertyException("Can't multiply mixed Numerics");
- }
- }
-
- /**
- * Divide the the current value by the operand and return a new Numeric
- * representing the result.
- * @param op The divisor.
- * @return A Numeric representing the result.
- * @throws PropertyException If both Numerics have "mixed" type.
- */
- public Numeric divide(Numeric op) throws PropertyException {
- // Multiply together absolute units and add dimensions (exponents)
- // What about percentages??? Treat as colUnits if they can't be
- // in same property!
- if (dim == 0) {
- // This is a dimensionless quantity, ie. a "Number"
- return new Numeric(op.valType, absValue / op.absValue,
- absValue / op.pcValue,
- absValue / op.tcolValue, -op.dim, op.pcBase);
- } else if (op.dim == 0) {
- double opval = op.absValue;
- return new Numeric(valType, absValue / opval, pcValue / opval,
- tcolValue / opval, dim, pcBase);
- } else if (valType == op.valType && !isMixedType()) {
- PercentBase npcBase = ((valType & PC_LENGTH) != 0) ? pcBase
- : op.pcBase;
- return new Numeric(valType,
- (valType == ABS_LENGTH ? absValue / op.absValue : 0.0),
- (valType == PC_LENGTH ? pcValue / op.pcValue : 0.0),
- (valType == TCOL_LENGTH ? tcolValue / op.tcolValue : 0.0),
- dim - op.dim, npcBase);
- } else {
- throw new PropertyException("Can't divide mixed Numerics.");
- }
- }
-
- /**
- * Return the absolute value of this Numeric.
- * @return A new Numeric object representing the absolute value.
- */
- public Numeric abs() {
- return new Numeric(valType, Math.abs(absValue), Math.abs(pcValue),
- Math.abs(tcolValue), dim, pcBase);
- }
-
- /**
- * @param op the operand to which the current value should be compared
- * @return a Numeric which is the maximum of the current value and the
- * operand.
- * @throws PropertyException If the dimensions or value types of the
- * object and the operand are different.
- */
- public Numeric max(Numeric op) throws PropertyException {
- double rslt = 0.0;
- // Only compare if have same dimension and value type!
- if (dim == op.dim && valType == op.valType && !isMixedType()) {
- if (valType == ABS_LENGTH) {
- rslt = absValue - op.absValue;
- } else if (valType == PC_LENGTH) {
- rslt = pcValue - op.pcValue;
- } else if (valType == TCOL_LENGTH) {
- rslt = tcolValue - op.tcolValue;
- }
- if (rslt > 0.0) {
- return this;
- } else {
- return op;
- }
- }
- throw new PropertyException("Arguments to max() must have same dimension and value type.");
- }
-
- /**
- * @param op the operand to which the current value should be compared
- * @return a Numeric which is the minimum of the current value and the
- * operand.
- * @throws PropertyException If the dimensions or value types of the
- * object and the operand are different.
- */
- public Numeric min(Numeric op) throws PropertyException {
- double rslt = 0.0;
- // Only compare if have same dimension and value type!
- if (dim == op.dim && valType == op.valType && !isMixedType()) {
- if (valType == ABS_LENGTH) {
- rslt = absValue - op.absValue;
- } else if (valType == PC_LENGTH) {
- rslt = pcValue - op.pcValue;
- } else if (valType == TCOL_LENGTH) {
- rslt = tcolValue - op.tcolValue;
- }
- if (rslt > 0.0) {
- return op;
- } else {
- return this;
- }
- }
- throw new PropertyException("Arguments to min() must have same dimension and value type.");
- }
-
-}
-
diff --git a/src/java/org/apache/fop/fo/expr/NumericProperty.java b/src/java/org/apache/fop/fo/expr/NumericProperty.java
index 9f28e14e8..3d9028cba 100644
--- a/src/java/org/apache/fop/fo/expr/NumericProperty.java
+++ b/src/java/org/apache/fop/fo/expr/NumericProperty.java
@@ -50,36 +50,393 @@
*/
package org.apache.fop.fo.expr;
+import java.util.Vector;
+
+import org.apache.fop.datatypes.PercentBase;
+import org.apache.fop.datatypes.FixedLength;
+import org.apache.fop.datatypes.TableColLength;
+import org.apache.fop.datatypes.PercentLength;
+import org.apache.fop.datatypes.MixedLength;
+
+import org.apache.fop.fo.ColorTypeProperty;
+import org.apache.fop.fo.LengthProperty;
import org.apache.fop.fo.Property;
-import org.apache.fop.datatypes.Length;
-import org.apache.fop.datatypes.ColorType;
-class NumericProperty extends Property {
- private Numeric numeric;
+public class NumericProperty extends Property {
+ // Bit fields
+
+ /** constant for a length of absolute units (or number) */
+ public static final int ABS_LENGTH = 1;
+ /** constant for a percentage */
+ public static final int PC_LENGTH = 2;
+ /** constant for table units */
+ public static final int TCOL_LENGTH = 4;
+
+ private int valType;
+ private double absValue;
+ private double pcValue;
+ private PercentBase pcBase = null; // base value for PC_LENGTH component
+ private double tcolValue;
+ private int dim;
+
+
+ /**
+ * Construct a Numeric object by specifying one or more components,
+ * including absolute length, percent length, table units.
+ * @param valType A combination of bits representing the value types.
+ * @param absValue The value of a Number or resolved Length value if
+ * the ABS_LENGTH flag is set.
+ * @param pcValue The decimal percent value if the PC_LENGTH flag is set
+ * @param tcolValue The decimal table unit value if the TCOL_LENGTH flag
+ * is set.
+ * @param dim The dimension of the value. 0 for a Number, 1 for a Length
+ * (any type), >1, <0 if Lengths have been multiplied or divided.
+ * @param pcBase The PercentBase object used to calculate an actual value for
+ * a PC_LENGTH.
+ */
+ protected NumericProperty(int valType, double absValue, double pcValue,
+ double tcolValue, int dim, PercentBase pcBase) {
+ this.valType = valType;
+ this.absValue = absValue;
+ this.pcValue = pcValue;
+ this.tcolValue = tcolValue;
+ this.dim = dim;
+ this.pcBase = pcBase;
+ }
+
+ /**
+ * Construct a Numeric object of dimension 0 from a double.
+ * @param valType A combination of bits representing the value types.
+ * @param absValue The value of a Number or resolved Length value.
+ */
+
+ /**
+ * *
+ * protected Numeric(int valType, double absValue) {
+ * this.valType = valType;
+ * this.absValue = absValue;
+ * }
+ */
+
+ /**
+ * Construct a Numeric object from a Number.
+ * @param num The number.
+ */
+ public NumericProperty(Number num) {
+ this(ABS_LENGTH, num.doubleValue(), 0.0, 0.0, 0, null);
+ }
+
+ /**
+ * Construct a Numeric object from a Length.
+ * @param l The Length.
+ */
+ public NumericProperty(FixedLength l) {
+ this(ABS_LENGTH, (double)l.getValue(), 0.0, 0.0, 1, null);
+ }
+
+ /**
+ * Construct a Numeric object from a PercentLength.
+ * @param pclen The PercentLength.
+ */
+ public NumericProperty(PercentLength pclen) {
+ this(PC_LENGTH, 0.0, pclen.value(), 0.0, 1, pclen.getBaseLength());
+ }
+
+ /**
+ * Construct a Numeric object from a TableColLength.
+ * @param tclen The TableColLength.
+ */
+ public NumericProperty(TableColLength tclen) {
+ this(TCOL_LENGTH, 0.0, 0.0, tclen.getTableUnits(), 1, null);
+ }
+
+
+ /**
+ * @return the current value as a Length if possible. This constructs
+ * a new Length or Length subclass based on the current value type
+ * of the Numeric.
+ * If the stored value has a unit dimension other than 1, null
+ * is returned.
+ */
+ public LengthProperty asLength() {
+ if (dim == 1) {
+ Vector len = new Vector(3);
+ if ((valType & ABS_LENGTH) != 0) {
+ len.add(new FixedLength((int)absValue));
+ }
+ if ((valType & PC_LENGTH) != 0) {
+ len.add(new PercentLength(pcValue, pcBase));
+ }
+ if ((valType & TCOL_LENGTH) != 0) {
+ len.add(new TableColLength(tcolValue));
+ }
+ if (len.size() == 1) {
+ return (LengthProperty)len.elementAt(0);
+ } else {
+ return new MixedLength(len);
+ }
+ } else {
+ // or throw exception???
+ // can't make Length if dimension != 1
+ return null;
+ }
+ }
+
+ /**
+ * @return the current value as a Number if possible.
+ * Calls asDouble().
+ */
+ public Number asNumber() {
+ return asDouble();
+ }
+
+ /**
+ * @return the current value as a Double
+ */
+ public Double asDouble() {
+ if (dim == 0 && valType == ABS_LENGTH) {
+ return new Double(absValue);
+ } else {
+ // or throw exception???
+ // can't make Number if dimension != 0
+ return null;
+ }
+ }
+
+ /**
+ * Return the current value as a Integer if possible.
+ * If the unit dimension is 0 and the value type is ABSOLUTE, an Integer
+ * is returned. Otherwise null is returned. Note: the current value is
+ * truncated if necessary to make an integer value.
+ */
+
+ /**
+ * public Integer asInteger() {
+ * if (dim == 0 && valType==ABS_LENGTH) {
+ * return new Integer((int)absValue);
+ * }
+ * else {
+ * // or throw exception???
+ * // can't make Number if dimension != 0
+ * return null;
+ * }
+ * }
+ */
+
+ /**
+ * Return a boolean value indiciating whether the currently stored
+ * value consists of different "types" of values (absolute, percent,
+ * and/or table-unit.)
+ */
+ private boolean isMixedType() {
+ int ntype = 0;
+ for (int t = valType; t != 0; t = t >> 1) {
+ if ((t & 1) != 0) {
+ ++ntype;
+ }
+ }
+ return ntype > 1;
+ }
+
+ /**
+ * Subtract the operand from the current value and return a new Numeric
+ * representing the result.
+ * @param op The value to subtract.
+ * @return A Numeric representing the result.
+ * @throws PropertyException If the dimension of the operand is different
+ * from the dimension of this Numeric.
+ */
+ public NumericProperty subtract(NumericProperty op) throws PropertyException {
+ // Check of same dimension
+ // Add together absolute and table units
+ // What about percentages??? Treat as colUnits if they can't be
+ // in same property!
+ if (dim == op.dim) {
+ PercentBase npcBase = ((valType & PC_LENGTH) != 0) ? pcBase
+ : op.pcBase;
+ // Subtract each type of value
+ return new NumericProperty(valType | op.valType, absValue - op.absValue,
+ pcValue - op.pcValue,
+ tcolValue - op.tcolValue, dim, npcBase);
+ } else {
+ throw new PropertyException("Can't add Numerics of different dimensions");
+ }
+ }
+
+ /**
+ * Add the operand from the current value and return a new Numeric
+ * representing the result.
+ * @param op The value to add.
+ * @return A Numeric representing the result.
+ * @throws PropertyException If the dimension of the operand is different
+ * from the dimension of this Numeric.
+ */
+ public NumericProperty add(NumericProperty op) throws PropertyException {
+ // Check of same dimension
+ // Add together absolute and table units
+ // What about percentages??? Treat as colUnits if they can't be
+ // in same property!
+ if (dim == op.dim) {
+ PercentBase npcBase = ((valType & PC_LENGTH) != 0) ? pcBase
+ : op.pcBase;
+ // Add each type of value
+ return new NumericProperty(valType | op.valType, absValue + op.absValue,
+ pcValue + op.pcValue,
+ tcolValue + op.tcolValue, dim, npcBase);
+ } else {
+ throw new PropertyException("Can't add Numerics of different dimensions");
+ }
+ }
+
+ /**
+ * Multiply the the current value by the operand and return a new Numeric
+ * representing the result.
+ * @param op The multiplier.
+ * @return A Numeric representing the result.
+ * @throws PropertyException If both Numerics have "mixed" type.
+ */
+ public NumericProperty multiply(NumericProperty op) throws PropertyException {
+ // Multiply together absolute units and add dimensions (exponents)
+ // What about percentages??? Treat as colUnits if they can't be
+ // in same property!
+ if (dim == 0) {
+ // This is a dimensionless quantity, ie. a "Number"
+ return new NumericProperty(op.valType, absValue * op.absValue,
+ absValue * op.pcValue,
+ absValue * op.tcolValue, op.dim, op.pcBase);
+ } else if (op.dim == 0) {
+ double opval = op.absValue;
+ return new NumericProperty(valType, opval * absValue, opval * pcValue,
+ opval * tcolValue, dim, pcBase);
+ } else if (valType == op.valType && !isMixedType()) {
+ // Check same relbase and pcbase ???
+ PercentBase npcBase = ((valType & PC_LENGTH) != 0) ? pcBase
+ : op.pcBase;
+ return new NumericProperty(valType, absValue * op.absValue,
+ pcValue * op.pcValue,
+ tcolValue * op.tcolValue, dim + op.dim,
+ npcBase);
+ } else {
+ throw new PropertyException("Can't multiply mixed Numerics");
+ }
+ }
+
+ /**
+ * Divide the the current value by the operand and return a new Numeric
+ * representing the result.
+ * @param op The divisor.
+ * @return A Numeric representing the result.
+ * @throws PropertyException If both Numerics have "mixed" type.
+ */
+ public NumericProperty divide(NumericProperty op) throws PropertyException {
+ // Multiply together absolute units and add dimensions (exponents)
+ // What about percentages??? Treat as colUnits if they can't be
+ // in same property!
+ if (dim == 0) {
+ // This is a dimensionless quantity, ie. a "Number"
+ return new NumericProperty(op.valType, absValue / op.absValue,
+ absValue / op.pcValue,
+ absValue / op.tcolValue, -op.dim, op.pcBase);
+ } else if (op.dim == 0) {
+ double opval = op.absValue;
+ return new NumericProperty(valType, absValue / opval, pcValue / opval,
+ tcolValue / opval, dim, pcBase);
+ } else if (valType == op.valType && !isMixedType()) {
+ PercentBase npcBase = ((valType & PC_LENGTH) != 0) ? pcBase
+ : op.pcBase;
+ return new NumericProperty(valType,
+ (valType == ABS_LENGTH ? absValue / op.absValue : 0.0),
+ (valType == PC_LENGTH ? pcValue / op.pcValue : 0.0),
+ (valType == TCOL_LENGTH ? tcolValue / op.tcolValue : 0.0),
+ dim - op.dim, npcBase);
+ } else {
+ throw new PropertyException("Can't divide mixed Numerics.");
+ }
+ }
+
+ /**
+ * Return the absolute value of this Numeric.
+ * @return A new Numeric object representing the absolute value.
+ */
+ public NumericProperty abs() {
+ return new NumericProperty(valType, Math.abs(absValue), Math.abs(pcValue),
+ Math.abs(tcolValue), dim, pcBase);
+ }
+
+ /**
+ * @param op the operand to which the current value should be compared
+ * @return a Numeric which is the maximum of the current value and the
+ * operand.
+ * @throws PropertyException If the dimensions or value types of the
+ * object and the operand are different.
+ */
+ public NumericProperty max(NumericProperty op) throws PropertyException {
+ double rslt = 0.0;
+ // Only compare if have same dimension and value type!
+ if (dim == op.dim && valType == op.valType && !isMixedType()) {
+ if (valType == ABS_LENGTH) {
+ rslt = absValue - op.absValue;
+ } else if (valType == PC_LENGTH) {
+ rslt = pcValue - op.pcValue;
+ } else if (valType == TCOL_LENGTH) {
+ rslt = tcolValue - op.tcolValue;
+ }
+ if (rslt > 0.0) {
+ return this;
+ } else {
+ return op;
+ }
+ }
+ throw new PropertyException("Arguments to max() must have same dimension and value type.");
+ }
- NumericProperty(Numeric value) {
- this.numeric = value;
+ /**
+ * @param op the operand to which the current value should be compared
+ * @return a Numeric which is the minimum of the current value and the
+ * operand.
+ * @throws PropertyException If the dimensions or value types of the
+ * object and the operand are different.
+ */
+ public NumericProperty min(NumericProperty op) throws PropertyException {
+ double rslt = 0.0;
+ // Only compare if have same dimension and value type!
+ if (dim == op.dim && valType == op.valType && !isMixedType()) {
+ if (valType == ABS_LENGTH) {
+ rslt = absValue - op.absValue;
+ } else if (valType == PC_LENGTH) {
+ rslt = pcValue - op.pcValue;
+ } else if (valType == TCOL_LENGTH) {
+ rslt = tcolValue - op.tcolValue;
+ }
+ if (rslt > 0.0) {
+ return op;
+ } else {
+ return this;
+ }
+ }
+ throw new PropertyException("Arguments to min() must have same dimension and value type.");
}
+
- public Numeric getNumeric() {
- return this.numeric;
+ public NumericProperty getNumeric() {
+ return this;
}
public Number getNumber() {
- return numeric.asNumber();
+ return asNumber();
}
- public Length getLength() {
- return numeric.asLength();
+ public LengthProperty getLength() {
+ return asLength();
}
- public ColorType getColorType() {
+ public ColorTypeProperty getColorType() {
// try converting to numeric number and then to color
return null;
}
public Object getObject() {
- return this.numeric;
+ return this;
}
}
diff --git a/src/java/org/apache/fop/fo/expr/PPColWidthFunction.java b/src/java/org/apache/fop/fo/expr/PPColWidthFunction.java
index 1c66675c1..4d2ce74fc 100644
--- a/src/java/org/apache/fop/fo/expr/PPColWidthFunction.java
+++ b/src/java/org/apache/fop/fo/expr/PPColWidthFunction.java
@@ -52,7 +52,6 @@ package org.apache.fop.fo.expr;
import org.apache.fop.fo.Property;
-import org.apache.fop.fo.LengthProperty;
import org.apache.fop.datatypes.TableColLength;
/**
@@ -90,7 +89,7 @@ public class PPColWidthFunction extends FunctionBase {
+ "may only be used on table-column FO");
}
// Check if table-layout is "fixed"...
- return new LengthProperty(new TableColLength(d.doubleValue()));
+ return new TableColLength(d.doubleValue());
}
}
diff --git a/src/java/org/apache/fop/fo/expr/PropertyParser.java b/src/java/org/apache/fop/fo/expr/PropertyParser.java
index 3d2c9b3e2..4a2bcca09 100644
--- a/src/java/org/apache/fop/fo/expr/PropertyParser.java
+++ b/src/java/org/apache/fop/fo/expr/PropertyParser.java
@@ -50,17 +50,15 @@
*/
package org.apache.fop.fo.expr;
-import org.apache.fop.datatypes.ColorType;
import org.apache.fop.datatypes.FixedLength;
-import org.apache.fop.datatypes.Length;
import org.apache.fop.datatypes.PercentBase;
import org.apache.fop.datatypes.PercentLength;
import org.apache.fop.fo.Property;
+import org.apache.fop.fo.ColorTypeProperty;
import org.apache.fop.fo.ListProperty;
import org.apache.fop.fo.LengthProperty;
import org.apache.fop.fo.NumberProperty;
import org.apache.fop.fo.StringProperty;
-import org.apache.fop.fo.ColorTypeProperty;
import java.util.HashMap;
@@ -73,7 +71,7 @@ public class PropertyParser extends PropertyTokenizer {
private PropertyInfo propInfo; // Maker and propertyList related info
private static final String RELUNIT = "em";
- private static final Numeric NEGATIVE_ONE = new Numeric(new Double(-1.0));
+ private static final NumericProperty NEGATIVE_ONE = new NumericProperty(new Double(-1.0));
private static final HashMap FUNCTION_TABLE = new HashMap();
static {
@@ -299,8 +297,7 @@ public class PropertyParser extends PropertyTokenizer {
if (pcBase.getDimension() == 0) {
prop = new NumberProperty(pcval * pcBase.getBaseValue());
} else if (pcBase.getDimension() == 1) {
- prop = new LengthProperty(new PercentLength(pcval,
- pcBase));
+ prop = new PercentLength(pcval, pcBase);
} else {
throw new PropertyException("Illegal percent dimension value");
}
@@ -316,7 +313,7 @@ public class PropertyParser extends PropertyTokenizer {
String unitPart = currentTokenValue.substring(numLen);
Double numPart = new Double(currentTokenValue.substring(0,
numLen));
- Length length = null;
+ LengthProperty length = null;
if (unitPart.equals(RELUNIT)) {
length = new FixedLength(numPart.doubleValue(),
propInfo.currentFontSize());
@@ -327,12 +324,12 @@ public class PropertyParser extends PropertyTokenizer {
throw new PropertyException("unrecognized unit name: "
+ currentTokenValue);
} else {
- prop = new LengthProperty(length);
+ prop = length;
}
break;
case TOK_COLORSPEC:
- prop = new ColorTypeProperty(new ColorType(currentTokenValue));
+ prop = new ColorTypeProperty(currentTokenValue);
break;
case TOK_FUNCTION_LPAR: {
@@ -404,12 +401,12 @@ public class PropertyParser extends PropertyTokenizer {
* the sum of the two operands.
* @throws PropertyException If either operand is null.
*/
- private Property evalAddition(Numeric op1,
- Numeric op2) throws PropertyException {
+ private Property evalAddition(NumericProperty op1,
+ NumericProperty op2) throws PropertyException {
if (op1 == null || op2 == null) {
throw new PropertyException("Non numeric operand in addition");
}
- return new NumericProperty(op1.add(op2));
+ return op1.add(op2);
}
/**
@@ -421,12 +418,12 @@ public class PropertyParser extends PropertyTokenizer {
* the difference of the two operands.
* @throws PropertyException If either operand is null.
*/
- private Property evalSubtraction(Numeric op1,
- Numeric op2) throws PropertyException {
+ private Property evalSubtraction(NumericProperty op1,
+ NumericProperty op2) throws PropertyException {
if (op1 == null || op2 == null) {
throw new PropertyException("Non numeric operand in subtraction");
}
- return new NumericProperty(op1.subtract(op2));
+ return op1.subtract(op2);
}
/**
@@ -437,11 +434,11 @@ public class PropertyParser extends PropertyTokenizer {
* the negative of the operand (multiplication by *1).
* @throws PropertyException If the operand is null.
*/
- private Property evalNegate(Numeric op) throws PropertyException {
+ private Property evalNegate(NumericProperty op) throws PropertyException {
if (op == null) {
throw new PropertyException("Non numeric operand to unary minus");
}
- return new NumericProperty(op.multiply(NEGATIVE_ONE));
+ return op.multiply(NEGATIVE_ONE);
}
/**
@@ -453,12 +450,12 @@ public class PropertyParser extends PropertyTokenizer {
* the product of the two operands.
* @throws PropertyException If either operand is null.
*/
- private Property evalMultiply(Numeric op1,
- Numeric op2) throws PropertyException {
+ private Property evalMultiply(NumericProperty op1,
+ NumericProperty op2) throws PropertyException {
if (op1 == null || op2 == null) {
throw new PropertyException("Non numeric operand in multiplication");
}
- return new NumericProperty(op1.multiply(op2));
+ return op1.multiply(op2);
}
@@ -471,12 +468,12 @@ public class PropertyParser extends PropertyTokenizer {
* op1 divided by op2.
* @throws PropertyException If either operand is null.
*/
- private Property evalDivide(Numeric op1,
- Numeric op2) throws PropertyException {
+ private Property evalDivide(NumericProperty op1,
+ NumericProperty op2) throws PropertyException {
if (op1 == null || op2 == null) {
throw new PropertyException("Non numeric operand in division");
}
- return new NumericProperty(op1.divide(op2));
+ return op1.divide(op2);
}
/**
diff --git a/src/java/org/apache/fop/fo/expr/RGBColorFunction.java b/src/java/org/apache/fop/fo/expr/RGBColorFunction.java
index 6b0b439aa..00b58a359 100644
--- a/src/java/org/apache/fop/fo/expr/RGBColorFunction.java
+++ b/src/java/org/apache/fop/fo/expr/RGBColorFunction.java
@@ -53,7 +53,6 @@ package org.apache.fop.fo.expr;
import org.apache.fop.fo.Property;
import org.apache.fop.fo.ColorTypeProperty;
-import org.apache.fop.datatypes.ColorType;
import org.apache.fop.datatypes.PercentBase;
class RGBColorFunction extends FunctionBase {
@@ -88,8 +87,7 @@ class RGBColorFunction extends FunctionBase {
}
cfvals[i] = colorVal;
}
- return new ColorTypeProperty(new ColorType(cfvals[0], cfvals[1],
- cfvals[2]));
+ return new ColorTypeProperty(cfvals[0], cfvals[1], cfvals[2]);
}
diff --git a/src/java/org/apache/fop/fo/flow/ExternalGraphic.java b/src/java/org/apache/fop/fo/flow/ExternalGraphic.java
index 441125769..06141c983 100644
--- a/src/java/org/apache/fop/fo/flow/ExternalGraphic.java
+++ b/src/java/org/apache/fop/fo/flow/ExternalGraphic.java
@@ -58,9 +58,9 @@ import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.FOTreeVisitor;
+import org.apache.fop.fo.LengthProperty;
import org.apache.fop.image.ImageFactory;
import org.apache.fop.image.FopImage;
-import org.apache.fop.datatypes.Length;
// Java
import java.awt.geom.Rectangle2D;
@@ -104,7 +104,7 @@ public class ExternalGraphic extends FObj {
url = ImageFactory.getURL(url);
// assume lr-tb for now and just use the .optimum value of the range
- Length ipd = propertyList.get(PR_INLINE_PROGRESSION_DIMENSION).
+ LengthProperty ipd = propertyList.get(PR_INLINE_PROGRESSION_DIMENSION).
getLengthRange().getOptimum().getLength();
if (!ipd.isAuto()) {
viewWidth = ipd.getValue();
@@ -114,7 +114,7 @@ public class ExternalGraphic extends FObj {
viewWidth = ipd.getValue();
}
}
- Length bpd = propertyList.get(PR_BLOCK_PROGRESSION_DIMENSION | CP_OPTIMUM).getLength();
+ LengthProperty bpd = propertyList.get(PR_BLOCK_PROGRESSION_DIMENSION | CP_OPTIMUM).getLength();
if (!bpd.isAuto()) {
viewHeight = bpd.getValue();
} else {
@@ -129,7 +129,7 @@ public class ExternalGraphic extends FObj {
int cwidth = -1;
int cheight = -1;
- Length ch = propertyList.get(PR_CONTENT_HEIGHT).getLength();
+ LengthProperty ch = propertyList.get(PR_CONTENT_HEIGHT).getLength();
if (!ch.isAuto()) {
/*if (ch.scaleToFit()) {
if (viewHeight != -1) {
@@ -138,7 +138,7 @@ public class ExternalGraphic extends FObj {
} else {*/
cheight = ch.getValue();
}
- Length cw = propertyList.get(PR_CONTENT_WIDTH).getLength();
+ LengthProperty cw = propertyList.get(PR_CONTENT_WIDTH).getLength();
if (!cw.isAuto()) {
/*if (cw.scaleToFit()) {
if (viewWidth != -1) {
diff --git a/src/java/org/apache/fop/fo/flow/Table.java b/src/java/org/apache/fop/fo/flow/Table.java
index fbe6be427..ad531aa6f 100644
--- a/src/java/org/apache/fop/fo/flow/Table.java
+++ b/src/java/org/apache/fop/fo/flow/Table.java
@@ -59,7 +59,7 @@ import org.xml.sax.Attributes;
// FOP
import org.apache.fop.apps.FOPException;
import org.apache.fop.datatypes.ColorType;
-import org.apache.fop.datatypes.LengthRange;
+import org.apache.fop.fo.LengthRangeProperty;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
import org.apache.fop.fo.FOTreeVisitor;
@@ -88,7 +88,7 @@ public class Table extends FObj {
private int spaceBefore;
private int spaceAfter;
private ColorType backgroundColor;
- private LengthRange ipd;
+ private LengthRangeProperty ipd;
private int height;
private boolean bAutoLayout = false;
diff --git a/src/java/org/apache/fop/fo/properties/BorderWidthPropertyMaker.java b/src/java/org/apache/fop/fo/properties/BorderWidthPropertyMaker.java
index 36fae49ef..637a62845 100644
--- a/src/java/org/apache/fop/fo/properties/BorderWidthPropertyMaker.java
+++ b/src/java/org/apache/fop/fo/properties/BorderWidthPropertyMaker.java
@@ -55,7 +55,6 @@ import org.apache.fop.fo.Constants;
import org.apache.fop.fo.LengthProperty;
import org.apache.fop.fo.Property;
import org.apache.fop.fo.PropertyList;
-import org.apache.fop.fo.LengthProperty.Maker;
/**
* This subclass of LengthProperty.Maker handles the special treatment of
diff --git a/src/java/org/apache/fop/fo/properties/CommonBorderAndPadding.java b/src/java/org/apache/fop/fo/properties/CommonBorderAndPadding.java
index 6f6420fd9..aa72ad6de 100644
--- a/src/java/org/apache/fop/fo/properties/CommonBorderAndPadding.java
+++ b/src/java/org/apache/fop/fo/properties/CommonBorderAndPadding.java
@@ -50,9 +50,9 @@
*/
package org.apache.fop.fo.properties;
-import org.apache.fop.fo.Constants;
import org.apache.fop.datatypes.ColorType;
-import org.apache.fop.datatypes.CondLength;
+import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.CondLengthProperty;
/**
* Stores all common border and padding properties.
@@ -78,7 +78,7 @@ public class CommonBorderAndPadding implements Cloneable {
private int iLength; // Resolved length value
private boolean bDiscard;
- public ResolvedCondLength(CondLength length) {
+ public ResolvedCondLength(CondLengthProperty length) {
bDiscard = length.isDiscard();
iLength = length.getLengthValue();
}
@@ -114,7 +114,7 @@ public class CommonBorderAndPadding implements Cloneable {
private ColorType mColor; // Border color
private ResolvedCondLength mWidth;
- BorderInfo(int style, CondLength width, ColorType color) {
+ BorderInfo(int style, CondLengthProperty width, ColorType color) {
mStyle = style;
mWidth = new ResolvedCondLength(width);
mColor = color;
@@ -131,12 +131,12 @@ public class CommonBorderAndPadding implements Cloneable {
private BorderInfo[] borderInfo = new BorderInfo[4];
private ResolvedCondLength[] padding = new ResolvedCondLength[4];
- public void setBorder(int side, int style, CondLength width,
+ public void setBorder(int side, int style, CondLengthProperty width,
ColorType color) {
borderInfo[side] = new BorderInfo(style, width, color);
}
- public void setPadding(int side, CondLength width) {
+ public void setPadding(int side, CondLengthProperty width) {
padding[side] = new ResolvedCondLength(width);
}
diff --git a/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java b/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java
index e2927a687..7a19e784e 100644
--- a/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java
+++ b/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java
@@ -53,10 +53,9 @@ package org.apache.fop.fo.properties;
import org.apache.fop.apps.FOPException;
import org.apache.fop.datatypes.FixedLength;
import org.apache.fop.fo.FOPropertyMapping;
-import org.apache.fop.fo.LengthProperty;
import org.apache.fop.fo.Property;
import org.apache.fop.fo.PropertyList;
-import org.apache.fop.fo.expr.Numeric;
+import org.apache.fop.fo.expr.NumericProperty;
/**
* This property maker handles the calculations described in 5.3.2 which
@@ -109,7 +108,7 @@ public class IndentPropertyMaker extends CorrespondingPropertyMaker {
}
// Calculate the values as described in 5.3.2.
try {
- Numeric v = new Numeric(new FixedLength(0));
+ NumericProperty v = new NumericProperty(new FixedLength(0));
/*
if (!propertyList.getFObj().generatesInlineAreas()) {
String propName = FOPropertyMapping.getPropertyName(this.propId);
@@ -119,7 +118,7 @@ public class IndentPropertyMaker extends CorrespondingPropertyMaker {
v = v.add(propertyList.get(propertyList.wmMap(lr_tb, rl_tb, tb_rl)).getNumeric());
v = v.add(getCorresponding(paddingCorresponding, propertyList).getNumeric());
v = v.add(getCorresponding(borderWidthCorresponding, propertyList).getNumeric());
- return new LengthProperty(v.asLength());
+ return v.asLength();
} catch (org.apache.fop.fo.expr.PropertyException propEx) {
String propName = FOPropertyMapping.getPropertyName(baseMaker.getPropId());
throw new FOPException("Error in " + propName
diff --git a/src/java/org/apache/fop/fo/properties/LineHeightPropertyMaker.java b/src/java/org/apache/fop/fo/properties/LineHeightPropertyMaker.java
index c2dbb51f8..b5bf98a76 100644
--- a/src/java/org/apache/fop/fo/properties/LineHeightPropertyMaker.java
+++ b/src/java/org/apache/fop/fo/properties/LineHeightPropertyMaker.java
@@ -117,8 +117,7 @@ public class LineHeightPropertyMaker extends LengthProperty.Maker {
FObj fo) {
Number numval = p.getNumber();
if (numval != null) {
- return new LengthProperty(
- new PercentLength(numval.doubleValue(), getPercentBase(fo,propertyList)));
+ return new PercentLength(numval.doubleValue(), getPercentBase(fo,propertyList));
}
return super.convertPropertyDatatype(p, propertyList, fo);
}
diff --git a/src/java/org/apache/fop/render/rtf/TableAttributesConverter.java b/src/java/org/apache/fop/render/rtf/TableAttributesConverter.java
index 8f00f4434..e7aef684e 100644
--- a/src/java/org/apache/fop/render/rtf/TableAttributesConverter.java
+++ b/src/java/org/apache/fop/render/rtf/TableAttributesConverter.java
@@ -178,7 +178,7 @@ public class TableAttributesConverter {
ListProperty listprop = (ListProperty) p;
ColorType color = null;
if (listprop.getList().get(0) instanceof NCnameProperty) {
- color = new ColorType(((NCnameProperty)listprop.getList().get(0)).getNCname());
+ color = new ColorTypeProperty(((NCnameProperty)listprop.getList().get(0)).getNCname());
} else if (listprop.getList().get(0) instanceof ColorTypeProperty) {
color = ((ColorTypeProperty)listprop.getList().get(0)).getColorType();
}
diff --git a/src/java/org/apache/fop/render/rtf/TextAttributesConverter.java b/src/java/org/apache/fop/render/rtf/TextAttributesConverter.java
index 4d6dc9f73..d7f7f0d5c 100644
--- a/src/java/org/apache/fop/render/rtf/TextAttributesConverter.java
+++ b/src/java/org/apache/fop/render/rtf/TextAttributesConverter.java
@@ -327,9 +327,9 @@ class TextAttributesConverter {
* @return integer pointing into the RTF color table
*/
public static int convertFOPColorToRTF(ColorType fopColor) {
- int redComponent = ColorType.convertChannelToInteger (fopColor.getRed());
- int greenComponent = ColorType.convertChannelToInteger (fopColor.getGreen());
- int blueComponent = ColorType.convertChannelToInteger (fopColor.getBlue());
+ int redComponent = ColorTypeProperty.convertChannelToInteger (fopColor.getRed());
+ int greenComponent = ColorTypeProperty.convertChannelToInteger (fopColor.getGreen());
+ int blueComponent = ColorTypeProperty.convertChannelToInteger (fopColor.getBlue());
return RtfColorTable.getInstance().getColorNumber(redComponent,
greenComponent, blueComponent).intValue();
}
diff --git a/src/java/org/apache/fop/traits/SpaceVal.java b/src/java/org/apache/fop/traits/SpaceVal.java
index bdb038ee2..b15e8cb49 100644
--- a/src/java/org/apache/fop/traits/SpaceVal.java
+++ b/src/java/org/apache/fop/traits/SpaceVal.java
@@ -50,9 +50,8 @@
*/
package org.apache.fop.traits;
-import org.apache.fop.datatypes.Space;
-
import org.apache.fop.fo.Property;
+import org.apache.fop.fo.SpaceProperty;
import org.apache.fop.fo.Constants;
/**
@@ -70,7 +69,7 @@ public class SpaceVal {
* Constructor for SpaceVal objects based on Space objects.
* @param spaceprop Space object to use
*/
- public SpaceVal(Space spaceprop) {
+ public SpaceVal(SpaceProperty spaceprop) {
space = new MinOptMax(spaceprop.getMinimum().getLength().getValue(),
spaceprop.getOptimum().getLength().getValue(),
spaceprop.getMaximum().getLength().getValue());