From: Glen Mazza Date: Mon, 6 Sep 2004 21:13:51 +0000 (+0000) Subject: PR: X-Git-Tag: Root_Temp_KnuthStylePageBreaking~577 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4d9ca181da2db9e221f88f0d8c9a8964b9f428af;p=xmlgraphics-fop.git PR: Obtained from: Submitted by: Reviewed by: Moved the property shorthand parser code into the properties package. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197914 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/fo/BoxPropShorthandParser.java b/src/java/org/apache/fop/fo/BoxPropShorthandParser.java deleted file mode 100644 index 524458917..000000000 --- a/src/java/org/apache/fop/fo/BoxPropShorthandParser.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 1999-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.fo; - -import org.apache.fop.fo.properties.ListProperty; -import org.apache.fop.fo.properties.Property; -import org.apache.fop.fo.properties.PropertyMaker; - -/** - * Shorthand property parser for Box properties - */ -public class BoxPropShorthandParser extends GenericShorthandParser { - - /** - * @see org.apache.fop.fo.GenericShorthandParser#GenericShorthandParser() - */ - public BoxPropShorthandParser() { - } - - /** - * Stores 1 to 4 values of same type. - * Set the given property based on the number of values set. - * Example: padding, border-width, border-color, border-style, margin - * @see org.apache.fop.fo.GenericShorthandParser#convertValueForProperty( - * int, ListProperty, PropertyMaker, PropertyList) - */ - protected Property convertValueForProperty(int propId, - ListProperty listProperty, - PropertyMaker maker, - PropertyList propertyList) { - String name = FOPropertyMapping.getPropertyName(propId); - Property p = null; - int count = listProperty.getList().size(); - if (name.indexOf("-top") >= 0) { - p = getElement(listProperty, 0); - } else if (name.indexOf("-right") >= 0) { - p = getElement(listProperty, count > 1 ? 1 : 0); - } else if (name.indexOf("-bottom") >= 0) { - p = getElement(listProperty, count > 2 ? 2 : 0); - } else if (name.indexOf("-left") >= 0) { - p = getElement(listProperty, count > 3 ? 3 : (count > 1 ? 1 : 0)); - } - // if p not null, try to convert it to a value of the correct type - if (p != null) { - return maker.convertShorthandProperty(propertyList, p, null); - } - return p; - } - -} diff --git a/src/java/org/apache/fop/fo/FOPropertyMapping.java b/src/java/org/apache/fop/fo/FOPropertyMapping.java index 54d89b247..a821654f4 100644 --- a/src/java/org/apache/fop/fo/FOPropertyMapping.java +++ b/src/java/org/apache/fop/fo/FOPropertyMapping.java @@ -23,12 +23,14 @@ import java.util.Map; import org.apache.fop.datatypes.LengthBase; import org.apache.fop.fo.properties.BorderWidthPropertyMaker; +import org.apache.fop.fo.properties.BoxPropShorthandParser; import org.apache.fop.fo.properties.CharacterProperty; import org.apache.fop.fo.properties.ColorTypeProperty; import org.apache.fop.fo.properties.CondLengthProperty; import org.apache.fop.fo.properties.CorrespondingPropertyMaker; import org.apache.fop.fo.properties.DimensionPropertyMaker; import org.apache.fop.fo.properties.EnumProperty; +import org.apache.fop.fo.properties.GenericShorthandParser; import org.apache.fop.fo.properties.IndentPropertyMaker; import org.apache.fop.fo.properties.KeepProperty; import org.apache.fop.fo.properties.LengthPairProperty; @@ -39,6 +41,7 @@ import org.apache.fop.fo.properties.ListProperty; import org.apache.fop.fo.properties.NumberProperty; import org.apache.fop.fo.properties.Property; import org.apache.fop.fo.properties.PropertyMaker; +import org.apache.fop.fo.properties.ShorthandParser; import org.apache.fop.fo.properties.SpaceProperty; import org.apache.fop.fo.properties.SpacingPropertyMaker; import org.apache.fop.fo.properties.StringProperty; diff --git a/src/java/org/apache/fop/fo/GenericShorthandParser.java b/src/java/org/apache/fop/fo/GenericShorthandParser.java deleted file mode 100644 index cf1d8da60..000000000 --- a/src/java/org/apache/fop/fo/GenericShorthandParser.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 1999-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.fo; - -import java.util.Enumeration; - -import org.apache.fop.fo.properties.ListProperty; -import org.apache.fop.fo.properties.Property; -import org.apache.fop.fo.properties.PropertyMaker; - -public class GenericShorthandParser implements ShorthandParser { - - /** - * Constructor. - */ - public GenericShorthandParser() { - } - - /** - * @param index the index into the List of properties - * @return the property from the List of properties at the index parameter - */ - protected Property getElement(ListProperty list, int index) { - if (list.getList().size() > index) { - return (Property) list.getList().elementAt(index); - } else { - return null; - } - } - - // Stores 1 to 3 values for border width, style, color - // Used for: border, border-top, border-right etc - public Property getValueForProperty(int propId, - ListProperty listProperty, - PropertyMaker maker, - PropertyList propertyList) { - Property prop = null; - // Check for keyword "inherit" - if (listProperty.getList().size() == 1) { - String sval = getElement(listProperty, 0).getString(); - if (sval != null && sval.equals("inherit")) { - return propertyList.getFromParent(propId); - } - } - return convertValueForProperty(propId, listProperty, maker, propertyList); - } - - - /** - * Converts a property name into a Property - * @param propId the property ID in the Constants interface - * @param maker the Property.Maker to be used in the conversion - * @param propertyList the PropertyList from which the Property should be - * extracted - * @return the Property matching the parameters, or null if not found - */ - protected Property convertValueForProperty(int propId, - ListProperty listProperty, - PropertyMaker maker, - PropertyList propertyList) { - Property prop = null; - // Try each of the stored values in turn - Enumeration eprop = listProperty.getList().elements(); - while (eprop.hasMoreElements() && prop == null) { - Property p = (Property) eprop.nextElement(); - prop = maker.convertShorthandProperty(propertyList, p, null); - } - return prop; - } - -} - diff --git a/src/java/org/apache/fop/fo/ShorthandParser.java b/src/java/org/apache/fop/fo/ShorthandParser.java deleted file mode 100644 index 38fcc7a7f..000000000 --- a/src/java/org/apache/fop/fo/ShorthandParser.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 1999-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* $Id$ */ - -package org.apache.fop.fo; - -import org.apache.fop.fo.properties.ListProperty; -import org.apache.fop.fo.properties.Property; -import org.apache.fop.fo.properties.PropertyMaker; - -/** - * Interface used to provide parsing capabilities to Properties with shorthand - * characteristics (those with multiple components). - */ -public interface ShorthandParser { - - /** - * @param propId the property ID in the Constants interface - * @param maker Maker object for the Property - * @param propertyList list of properties - * @return Property object corresponding to propName - */ - Property getValueForProperty(int propId, - ListProperty listProperty, - PropertyMaker maker, - PropertyList propertyList); -} diff --git a/src/java/org/apache/fop/fo/properties/BoxPropShorthandParser.java b/src/java/org/apache/fop/fo/properties/BoxPropShorthandParser.java new file mode 100644 index 000000000..5e0d079ca --- /dev/null +++ b/src/java/org/apache/fop/fo/properties/BoxPropShorthandParser.java @@ -0,0 +1,65 @@ +/* + * Copyright 1999-2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.fo.properties; + +import org.apache.fop.fo.FOPropertyMapping; +import org.apache.fop.fo.PropertyList; + +/** + * Shorthand property parser for Box properties + */ +public class BoxPropShorthandParser extends GenericShorthandParser { + + /** + * @see org.apache.fop.fo.GenericShorthandParser#GenericShorthandParser() + */ + public BoxPropShorthandParser() { + } + + /** + * Stores 1 to 4 values of same type. + * Set the given property based on the number of values set. + * Example: padding, border-width, border-color, border-style, margin + * @see org.apache.fop.fo.GenericShorthandParser#convertValueForProperty( + * int, ListProperty, PropertyMaker, PropertyList) + */ + protected Property convertValueForProperty(int propId, + ListProperty listProperty, + PropertyMaker maker, + PropertyList propertyList) { + String name = FOPropertyMapping.getPropertyName(propId); + Property p = null; + int count = listProperty.getList().size(); + if (name.indexOf("-top") >= 0) { + p = getElement(listProperty, 0); + } else if (name.indexOf("-right") >= 0) { + p = getElement(listProperty, count > 1 ? 1 : 0); + } else if (name.indexOf("-bottom") >= 0) { + p = getElement(listProperty, count > 2 ? 2 : 0); + } else if (name.indexOf("-left") >= 0) { + p = getElement(listProperty, count > 3 ? 3 : (count > 1 ? 1 : 0)); + } + // if p not null, try to convert it to a value of the correct type + if (p != null) { + return maker.convertShorthandProperty(propertyList, p, null); + } + return p; + } + +} diff --git a/src/java/org/apache/fop/fo/properties/GenericShorthandParser.java b/src/java/org/apache/fop/fo/properties/GenericShorthandParser.java new file mode 100644 index 000000000..54be52421 --- /dev/null +++ b/src/java/org/apache/fop/fo/properties/GenericShorthandParser.java @@ -0,0 +1,85 @@ +/* + * Copyright 1999-2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.fo.properties; + +import java.util.Enumeration; +import org.apache.fop.fo.PropertyList; + +public class GenericShorthandParser implements ShorthandParser { + + /** + * Constructor. + */ + public GenericShorthandParser() { + } + + /** + * @param index the index into the List of properties + * @return the property from the List of properties at the index parameter + */ + protected Property getElement(ListProperty list, int index) { + if (list.getList().size() > index) { + return (Property) list.getList().elementAt(index); + } else { + return null; + } + } + + // Stores 1 to 3 values for border width, style, color + // Used for: border, border-top, border-right etc + public Property getValueForProperty(int propId, + ListProperty listProperty, + PropertyMaker maker, + PropertyList propertyList) { + Property prop = null; + // Check for keyword "inherit" + if (listProperty.getList().size() == 1) { + String sval = getElement(listProperty, 0).getString(); + if (sval != null && sval.equals("inherit")) { + return propertyList.getFromParent(propId); + } + } + return convertValueForProperty(propId, listProperty, maker, propertyList); + } + + + /** + * Converts a property name into a Property + * @param propId the property ID in the Constants interface + * @param maker the Property.Maker to be used in the conversion + * @param propertyList the PropertyList from which the Property should be + * extracted + * @return the Property matching the parameters, or null if not found + */ + protected Property convertValueForProperty(int propId, + ListProperty listProperty, + PropertyMaker maker, + PropertyList propertyList) { + Property prop = null; + // Try each of the stored values in turn + Enumeration eprop = listProperty.getList().elements(); + while (eprop.hasMoreElements() && prop == null) { + Property p = (Property) eprop.nextElement(); + prop = maker.convertShorthandProperty(propertyList, p, null); + } + return prop; + } + +} + diff --git a/src/java/org/apache/fop/fo/properties/PropertyMaker.java b/src/java/org/apache/fop/fo/properties/PropertyMaker.java index 5a32d02a6..228e3472c 100644 --- a/src/java/org/apache/fop/fo/properties/PropertyMaker.java +++ b/src/java/org/apache/fop/fo/properties/PropertyMaker.java @@ -28,7 +28,6 @@ import org.apache.fop.datatypes.PercentBase; import org.apache.fop.fo.FOPropertyMapping; import org.apache.fop.fo.FObj; import org.apache.fop.fo.PropertyList; -import org.apache.fop.fo.ShorthandParser; import org.apache.fop.fo.expr.PropertyInfo; import org.apache.fop.fo.expr.PropertyParser; diff --git a/src/java/org/apache/fop/fo/properties/ShorthandParser.java b/src/java/org/apache/fop/fo/properties/ShorthandParser.java new file mode 100644 index 000000000..b8045b759 --- /dev/null +++ b/src/java/org/apache/fop/fo/properties/ShorthandParser.java @@ -0,0 +1,39 @@ +/* + * Copyright 1999-2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.fo.properties; + +import org.apache.fop.fo.PropertyList; + +/** + * Interface used to provide parsing capabilities to Properties with shorthand + * characteristics (those with multiple components). + */ +public interface ShorthandParser { + + /** + * @param propId the property ID in the Constants interface + * @param maker Maker object for the Property + * @param propertyList list of properties + * @return Property object corresponding to propName + */ + Property getValueForProperty(int propId, + ListProperty listProperty, + PropertyMaker maker, + PropertyList propertyList); +}