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]