hillion     01/10/18 10:29:06

  Modified:    sources/org/apache/batik/css AbstractViewCSS.java
               sources/org/apache/batik/dom/svg
                        ElementNonCSSPresentationalHintsSupport.java
                        ExtensibleSVGDOMImplementation.java
                        SVGDOMImplementation.java SVGOMDocument.java
  Log:
  Added methods for CSS extension.
  
  Revision  Changes    Path
  1.22      +2 -2      xml-batik/sources/org/apache/batik/css/AbstractViewCSS.java
  
  Index: AbstractViewCSS.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/css/AbstractViewCSS.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- AbstractViewCSS.java      2001/10/18 14:07:41     1.21
  +++ AbstractViewCSS.java      2001/10/18 17:29:06     1.22
  @@ -51,7 +51,7 @@
    * {@link org.w3c.dom.css.ViewCSS} interface.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: AbstractViewCSS.java,v 1.21 2001/10/18 14:07:41 hillion Exp $
  + * @version $Id: AbstractViewCSS.java,v 1.22 2001/10/18 17:29:06 hillion Exp $
    */
   public abstract class AbstractViewCSS implements ViewCSS {
   
  @@ -169,7 +169,7 @@
       /**
        * Adds a resolver to the resolver list.
        */
  -    protected void addRelativeValueResolver(RelativeValueResolver rvr) {
  +    public void addRelativeValueResolver(RelativeValueResolver rvr) {
        relativeValueResolvers.add(rvr);
       }
   
  
  
  
  1.8       +70 -64    
xml-batik/sources/org/apache/batik/dom/svg/ElementNonCSSPresentationalHintsSupport.java
  
  Index: ElementNonCSSPresentationalHintsSupport.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/dom/svg/ElementNonCSSPresentationalHintsSupport.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ElementNonCSSPresentationalHintsSupport.java      2001/09/10 12:26:07     1.7
  +++ ElementNonCSSPresentationalHintsSupport.java      2001/10/18 17:29:06     1.8
  @@ -23,74 +23,77 @@
    * processing in SVG.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: ElementNonCSSPresentationalHintsSupport.java,v 1.7 2001/09/10 
12:26:07 hillion Exp $
  + * @version $Id: ElementNonCSSPresentationalHintsSupport.java,v 1.8 2001/10/18 
17:29:06 hillion Exp $
    */
   public class ElementNonCSSPresentationalHintsSupport
       implements CSSConstants {
       /**
  -     * The presentation attributes.
  +     * Return the default presentation attributes.
        */
  -    public final static Set PRESENTATION_ATTRIBUTES = new HashSet();
  -    static {
  -        PRESENTATION_ATTRIBUTES.add(CSS_ALIGNMENT_BASELINE_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_BASELINE_SHIFT_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_CLIP_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_CLIP_PATH_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_CLIP_RULE_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_COLOR_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_COLOR_INTERPOLATION_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_COLOR_INTERPOLATION_FILTERS_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_COLOR_PROFILE_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_COLOR_RENDERING_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_CURSOR_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_DIRECTION_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_DISPLAY_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_DOMINANT_BASELINE_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_ENABLE_BACKGROUND_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_FILL_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FILL_OPACITY_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FILL_RULE_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FILTER_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FLOOD_COLOR_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FLOOD_OPACITY_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FONT_FAMILY_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FONT_SIZE_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FONT_SIZE_ADJUST_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FONT_STRETCH_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FONT_STYLE_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FONT_VARIANT_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_FONT_WEIGHT_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_GLYPH_ORIENTATION_HORIZONTAL_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_GLYPH_ORIENTATION_VERTICAL_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_IMAGE_RENDERING_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_LETTER_SPACING_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_LIGHTING_COLOR_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_MARKER_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_MARKER_END_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_MARKER_MID_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_MARKER_START_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_MASK_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_OPACITY_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_OVERFLOW_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_POINTER_EVENTS_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_SHAPE_RENDERING_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_STOP_COLOR_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_STOP_OPACITY_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_STROKE_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_STROKE_DASHARRAY_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_STROKE_DASHOFFSET_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_STROKE_LINECAP_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_STROKE_LINEJOIN_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_STROKE_MITERLIMIT_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_STROKE_OPACITY_PROPERTY);
  -     PRESENTATION_ATTRIBUTES.add(CSS_STROKE_WIDTH_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_TEXT_ANCHOR_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_TEXT_DECORATION_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_TEXT_RENDERING_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_UNICODE_BIDI_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_VISIBILITY_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_WORD_SPACING_PROPERTY);
  -        PRESENTATION_ATTRIBUTES.add(CSS_WRITING_MODE_PROPERTY);
  +    public static Set createPresentionAttributeSet() {
  +        Set result = new HashSet();
  +
  +        result.add(CSS_ALIGNMENT_BASELINE_PROPERTY);
  +        result.add(CSS_BASELINE_SHIFT_PROPERTY);
  +        result.add(CSS_CLIP_PROPERTY);
  +        result.add(CSS_CLIP_PATH_PROPERTY);
  +        result.add(CSS_CLIP_RULE_PROPERTY);
  +        result.add(CSS_COLOR_PROPERTY);
  +        result.add(CSS_COLOR_INTERPOLATION_PROPERTY);
  +        result.add(CSS_COLOR_INTERPOLATION_FILTERS_PROPERTY);
  +        result.add(CSS_COLOR_PROFILE_PROPERTY);
  +        result.add(CSS_COLOR_RENDERING_PROPERTY);
  +        result.add(CSS_CURSOR_PROPERTY);
  +        result.add(CSS_DIRECTION_PROPERTY);
  +        result.add(CSS_DISPLAY_PROPERTY);
  +        result.add(CSS_DOMINANT_BASELINE_PROPERTY);
  +     result.add(CSS_ENABLE_BACKGROUND_PROPERTY);
  +     result.add(CSS_FILL_PROPERTY);
  +        result.add(CSS_FILL_OPACITY_PROPERTY);
  +        result.add(CSS_FILL_RULE_PROPERTY);
  +        result.add(CSS_FILTER_PROPERTY);
  +        result.add(CSS_FLOOD_COLOR_PROPERTY);
  +        result.add(CSS_FLOOD_OPACITY_PROPERTY);
  +        result.add(CSS_FONT_FAMILY_PROPERTY);
  +        result.add(CSS_FONT_SIZE_PROPERTY);
  +        result.add(CSS_FONT_SIZE_ADJUST_PROPERTY);
  +        result.add(CSS_FONT_STRETCH_PROPERTY);
  +        result.add(CSS_FONT_STYLE_PROPERTY);
  +        result.add(CSS_FONT_VARIANT_PROPERTY);
  +        result.add(CSS_FONT_WEIGHT_PROPERTY);
  +        result.add(CSS_GLYPH_ORIENTATION_HORIZONTAL_PROPERTY);
  +        result.add(CSS_GLYPH_ORIENTATION_VERTICAL_PROPERTY);
  +        result.add(CSS_IMAGE_RENDERING_PROPERTY);
  +        result.add(CSS_LETTER_SPACING_PROPERTY);
  +        result.add(CSS_LIGHTING_COLOR_PROPERTY);
  +        result.add(CSS_MARKER_PROPERTY);
  +        result.add(CSS_MARKER_END_PROPERTY);
  +        result.add(CSS_MARKER_MID_PROPERTY);
  +        result.add(CSS_MARKER_START_PROPERTY);
  +        result.add(CSS_MASK_PROPERTY);
  +        result.add(CSS_OPACITY_PROPERTY);
  +        result.add(CSS_OVERFLOW_PROPERTY);
  +        result.add(CSS_POINTER_EVENTS_PROPERTY);
  +        result.add(CSS_SHAPE_RENDERING_PROPERTY);
  +        result.add(CSS_STOP_COLOR_PROPERTY);
  +        result.add(CSS_STOP_OPACITY_PROPERTY);
  +     result.add(CSS_STROKE_PROPERTY);
  +     result.add(CSS_STROKE_DASHARRAY_PROPERTY);
  +     result.add(CSS_STROKE_DASHOFFSET_PROPERTY);
  +     result.add(CSS_STROKE_LINECAP_PROPERTY);
  +     result.add(CSS_STROKE_LINEJOIN_PROPERTY);
  +     result.add(CSS_STROKE_MITERLIMIT_PROPERTY);
  +        result.add(CSS_STROKE_OPACITY_PROPERTY);
  +     result.add(CSS_STROKE_WIDTH_PROPERTY);
  +        result.add(CSS_TEXT_ANCHOR_PROPERTY);
  +        result.add(CSS_TEXT_DECORATION_PROPERTY);
  +        result.add(CSS_TEXT_RENDERING_PROPERTY);
  +        result.add(CSS_UNICODE_BIDI_PROPERTY);
  +        result.add(CSS_VISIBILITY_PROPERTY);
  +        result.add(CSS_WORD_SPACING_PROPERTY);
  +        result.add(CSS_WRITING_MODE_PROPERTY);
  +
  +        return result;
       }
   
       /**
  @@ -100,12 +103,15 @@
       public static CSSStyleDeclaration getNonCSSPresentationalHints(Element elt) {
        CSSStyleDeclaration result = null;
   
  +        SVGDOMImplementation svgImpl;
  +        svgImpl = (SVGDOMImplementation)elt.getOwnerDocument().getImplementation();
  +        Set pa = svgImpl.getPresentionAttributeSet();
        NamedNodeMap nnm = elt.getAttributes();
        int len = nnm.getLength();
        for (int i = 0; i < len; i++) {
            Node attr = nnm.item(i);
            String an = attr.getNodeName();
  -         if (PRESENTATION_ATTRIBUTES.contains(an)) {
  +         if (pa.contains(an)) {
                if (result == null) {
                    DOMImplementation impl;
                       impl = elt.getOwnerDocument().getImplementation();
  
  
  
  1.3       +42 -1     
xml-batik/sources/org/apache/batik/dom/svg/ExtensibleSVGDOMImplementation.java
  
  Index: ExtensibleSVGDOMImplementation.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/dom/svg/ExtensibleSVGDOMImplementation.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ExtensibleSVGDOMImplementation.java       2001/09/10 12:26:07     1.2
  +++ ExtensibleSVGDOMImplementation.java       2001/10/18 17:29:06     1.3
  @@ -13,6 +13,10 @@
   import java.util.List;
   import java.util.ListIterator;
   
  +import org.apache.batik.css.svg.SVGViewCSS;
  +import org.apache.batik.css.value.RelativeValueResolver;
  +import org.apache.batik.css.value.ValueFactory;
  +
   import org.apache.batik.dom.AbstractDocument;
   import org.apache.batik.dom.GenericElement;
   import org.apache.batik.dom.GenericElementNS;
  @@ -24,6 +28,7 @@
   import org.w3c.dom.DOMException;
   import org.w3c.dom.DOMImplementation;
   import org.w3c.dom.Element;
  +import org.w3c.dom.css.ViewCSS;
   
   /**
    * This class implements the {@link org.w3c.dom.DOMImplementation} interface.
  @@ -32,7 +37,7 @@
    * {@link org.apache.batik.util.Service}).
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: ExtensibleSVGDOMImplementation.java,v 1.2 2001/09/10 12:26:07 
hillion Exp $
  + * @version $Id: ExtensibleSVGDOMImplementation.java,v 1.3 2001/10/18 17:29:06 
hillion Exp $
    */
   public class ExtensibleSVGDOMImplementation extends SVGDOMImplementation {
       
  @@ -48,6 +53,11 @@
       protected DoublyIndexedTable customFactories;
   
       /**
  +     * The custom value resolvers.
  +     */
  +    protected List relativeValueResolvers = new LinkedList();
  +
  +    /**
        * Returns the default instance of this class.
        */
       public static DOMImplementation getDOMImplementation() {
  @@ -76,6 +86,37 @@
               customFactories = new DoublyIndexedTable();
           }
           customFactories.put(namespaceURI, localName, factory);
  +    }
  +
  +    /**
  +     * Allows the user to register a new CSS value factory.
  +     */
  +    public void registerCustomCSSValueFactory(ValueFactory vf) {
  +        String name = vf.getPropertyName();
  +        presentationAttributeSet.add(name);
  +        valueFactoryMap.put(name, vf);
  +    }
  +
  +    /**
  +     * Allows the user to register a new CSS value resolver.
  +     */
  +    public void registerCustomCSSRelativeValueResolver(RelativeValueResolver rvr) {
  +        presentationAttributeSet.add(rvr.getPropertyName());
  +        relativeValueResolvers.add(rvr);
  +    }
  +
  +    /**
  +     * Creates a ViewCSS.
  +     */
  +    public ViewCSS createViewCSS(SVGOMDocument doc) {
  +        SVGViewCSS result = (SVGViewCSS)super.createViewCSS(doc);
  +
  +        ListIterator it = relativeValueResolvers.listIterator();
  +        while (it.hasNext()) {
  +            result.addRelativeValueResolver((RelativeValueResolver)it.next());
  +        }
  +
  +        return result;
       }
   
       /**
  
  
  
  1.17      +30 -2     
xml-batik/sources/org/apache/batik/dom/svg/SVGDOMImplementation.java
  
  Index: SVGDOMImplementation.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGDOMImplementation.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- SVGDOMImplementation.java 2001/10/11 18:37:33     1.16
  +++ SVGDOMImplementation.java 2001/10/18 17:29:06     1.17
  @@ -12,12 +12,14 @@
   
   import java.util.Locale;
   import java.util.MissingResourceException;
  +import java.util.Set;
   
   import org.apache.batik.css.CSSDocumentHandler;
   import org.apache.batik.css.CSSOMStyleDeclaration;
   import org.apache.batik.css.CSSOMStyleSheet;
   import org.apache.batik.css.DOMMediaList;
   import org.apache.batik.css.svg.SVGValueFactoryMap;
  +import org.apache.batik.css.svg.SVGViewCSS;
   import org.apache.batik.css.value.ValueFactoryMap;
   
   import org.apache.batik.dom.AbstractDocument;
  @@ -46,6 +48,7 @@
   import org.w3c.dom.css.CSSStyleDeclaration;
   import org.w3c.dom.css.CSSStyleSheet;
   import org.w3c.dom.css.DOMImplementationCSS;
  +import org.w3c.dom.css.ViewCSS;
   import org.w3c.dom.events.Event;
   import org.w3c.dom.stylesheets.StyleSheet;
   
  @@ -54,7 +57,7 @@
    * It provides support the SVG 1.0 documents.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: SVGDOMImplementation.java,v 1.16 2001/10/11 18:37:33 hillion Exp $
  + * @version $Id: SVGDOMImplementation.java,v 1.17 2001/10/18 17:29:06 hillion Exp $
    */
   public class SVGDOMImplementation
       extends    AbstractDOMImplementation
  @@ -85,7 +88,7 @@
       /**
        * The CSS value factory map for SVG.
        */
  -    protected ValueFactoryMap valueFactoryMap =
  +    protected SVGValueFactoryMap valueFactoryMap =
           new SVGValueFactoryMap(CSSDocumentHandler.createParser());
   
       /**
  @@ -95,6 +98,12 @@
           new LocalizableSupport(RESOURCES);
   
       /**
  +     * The presentation attribute set.
  +     */
  +    protected Set presentationAttributeSet =
  +        ElementNonCSSPresentationalHintsSupport.createPresentionAttributeSet();
  +
  +    /**
        * Returns the default instance of this class.
        */
       public static DOMImplementation getDOMImplementation() {
  @@ -109,6 +118,25 @@
           registerFeature("StyleSheets",    "2.0");
           registerFeature("SVG",            "1.0");
           registerFeature("SVGEvents",      "1.0");
  +    }
  +
  +    /**
  +     * Creates a ViewCSS.
  +     */
  +    public ViewCSS createViewCSS(SVGOMDocument doc) {
  +        SVGViewCSS result;
  +
  +        result = new SVGViewCSS(doc, doc.getSVGContext());
  +        result.setUserAgentStyleSheet(getUserAgentStyleSheet());
  +
  +        return result;
  +    }
  +
  +    /**
  +     * Return the default presentation attributes.
  +     */
  +    public Set getPresentionAttributeSet() {
  +        return presentationAttributeSet;
       }
   
       /**
  
  
  
  1.42      +2 -5      xml-batik/sources/org/apache/batik/dom/svg/SVGOMDocument.java
  
  Index: SVGOMDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/svg/SVGOMDocument.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- SVGOMDocument.java        2001/10/18 12:30:23     1.41
  +++ SVGOMDocument.java        2001/10/18 17:29:06     1.42
  @@ -17,7 +17,6 @@
   
   import org.apache.batik.css.DOMStyleSheetList;
   import org.apache.batik.css.ElementWithID;
  -import org.apache.batik.css.svg.SVGViewCSS;
   
   import org.apache.batik.dom.AbstractDocument;
   import org.apache.batik.dom.GenericAttr;
  @@ -68,7 +67,7 @@
    * This class implements {@link SVGDocument}.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: SVGOMDocument.java,v 1.41 2001/10/18 12:30:23 hillion Exp $
  + * @version $Id: SVGOMDocument.java,v 1.42 2001/10/18 17:29:06 hillion Exp $
    */
   public class SVGOMDocument
       extends    AbstractDocument
  @@ -450,10 +449,8 @@
        */
       public AbstractView getDefaultView() {
           if (defaultView == null) {
  -            defaultView = new SVGViewCSS(this, getSVGContext());
               SVGDOMImplementation impl = (SVGDOMImplementation)implementation;
  -            ((SVGViewCSS)defaultView).setUserAgentStyleSheet
  -                (impl.getUserAgentStyleSheet());
  +            defaultView = impl.createViewCSS(this);
           }
           return defaultView;
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to