You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by gm...@apache.org on 2004/09/06 23:13:51 UTC

cvs commit: xml-fop/src/java/org/apache/fop/fo/properties BoxPropShorthandParser.java GenericShorthandParser.java ShorthandParser.java PropertyMaker.java

gmazza      2004/09/06 14:13:51

  Modified:    src/java/org/apache/fop/fo FOPropertyMapping.java
               src/java/org/apache/fop/fo/properties PropertyMaker.java
  Added:       src/java/org/apache/fop/fo/properties
                        BoxPropShorthandParser.java
                        GenericShorthandParser.java ShorthandParser.java
  Removed:     src/java/org/apache/fop/fo BoxPropShorthandParser.java
                        GenericShorthandParser.java ShorthandParser.java
  Log:
  Moved the property shorthand parser code into the properties package.
  
  Revision  Changes    Path
  1.15      +4 -1      xml-fop/src/java/org/apache/fop/fo/FOPropertyMapping.java
  
  Index: FOPropertyMapping.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOPropertyMapping.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- FOPropertyMapping.java	15 Aug 2004 09:57:07 -0000	1.14
  +++ FOPropertyMapping.java	6 Sep 2004 21:13:50 -0000	1.15
  @@ -23,12 +23,14 @@
   
   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.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;
  
  
  
  1.6       +1 -2      xml-fop/src/java/org/apache/fop/fo/properties/PropertyMaker.java
  
  Index: PropertyMaker.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/properties/PropertyMaker.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PropertyMaker.java	18 Jun 2004 17:58:35 -0000	1.5
  +++ PropertyMaker.java	6 Sep 2004 21:13:51 -0000	1.6
  @@ -28,7 +28,6 @@
   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;
   
  
  
  
  1.1                  xml-fop/src/java/org/apache/fop/fo/properties/BoxPropShorthandParser.java
  
  Index: BoxPropShorthandParser.java
  ===================================================================
  /*
   * 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: BoxPropShorthandParser.java,v 1.1 2004/09/06 21:13:51 gmazza Exp $ */
  
  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;
      }
  
  }
  
  
  
  1.1                  xml-fop/src/java/org/apache/fop/fo/properties/GenericShorthandParser.java
  
  Index: GenericShorthandParser.java
  ===================================================================
  /*
   * 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: GenericShorthandParser.java,v 1.1 2004/09/06 21:13:51 gmazza Exp $ */
  
  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;
      }
  
  }
  
  
  
  
  1.1                  xml-fop/src/java/org/apache/fop/fo/properties/ShorthandParser.java
  
  Index: ShorthandParser.java
  ===================================================================
  /*
   * 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: ShorthandParser.java,v 1.1 2004/09/06 21:13:51 gmazza Exp $ */
  
  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);
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org