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]