You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by tk...@apache.org on 2001/11/13 16:20:59 UTC
cvs commit: xml-batik/sources/org/apache/batik/bridge AbstractGraphicsNodeBridge.java SVGGElementBridge.java SVGImageElementBridge.java SVGSVGElementBridge.java SVGShapeElementBridge.java SVGTextElementBridge.java SVGUseElementBridge.java
tkormann 01/11/13 07:20:59
Modified: sources/org/apache/batik/bridge
AbstractGraphicsNodeBridge.java
SVGGElementBridge.java SVGImageElementBridge.java
SVGSVGElementBridge.java SVGShapeElementBridge.java
SVGTextElementBridge.java SVGUseElementBridge.java
Added: samples/tests/spec/structure requiredFeatures.svg
requiredFeaturesCombo.svg
Log:
add support for requiredFeatures on graphical elements.
2 new tests added.
Other elements need clarifications from the WG.
Revision Changes Path
1.1 xml-batik/samples/tests/spec/structure/requiredFeatures.svg
Index: requiredFeatures.svg
===================================================================
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- ========================================================================= -->
<!-- Copyright (C) The Apache Software Foundation. All rights reserved. -->
<!-- -->
<!-- This software is published under the terms of the Apache Software License -->
<!-- version 1.1, a copy of which has been included with this distribution in -->
<!-- the LICENSE file. -->
<!-- ========================================================================= -->
<!-- ========================================================================= -->
<!-- Test the 'requiredFeatures' attribute -->
<!-- -->
<!-- @author tkormann@ilog.fr -->
<!-- @version $Id: requiredFeatures.svg,v 1.1 2001/11/13 15:20:58 tkormann Exp $ -->
<!-- ========================================================================= -->
<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
<svg width="450" height="500" viewBox="0 0 450 500">
<title>Test the 'requiredFeatures' attribute</title>
<!-- ============================================================= -->
<!-- Test content -->
<!-- ============================================================= -->
<g id="testContent">
<text x="225" y="50" class="title">Test the 'requiredFeatures' attribute</text>
<g style="fill:#eee; stroke:black">
<rect x="50" y="80" width="360" height="20" />
<rect x="30" y="100" width="20" height="85" />
<rect x="30" y="185" width="20" height="85" />
<rect x="30" y="270" width="20" height="85" />
<rect x="30" y="355" width="20" height="85" />
</g>
<g style="fill:none; stroke:black">
<rect x="50" y="80" width="360" height="360" />
<line x1="170" y1="80" x2="170" y2="440" />
<line x1="290" y1="80" x2="290" y2="440" />
<line x1="50" y1="185" x2="410" y2="185" />
<line x1="50" y1="270" x2="410" y2="270" />
<line x1="50" y1="355" x2="410" y2="355" />
</g>
<g style="fill:black; text-anchor:middle;">
<text x="110" y="94">default</text>
<text x="230" y="94">org.w3c.svg.static</text>
<text x="350" y="94">invalid</text>
<text x="0" y="0" transform="translate(44, 145) rotate(-90)">Graphic Obj.</text>
<text x="0" y="0" transform="translate(44, 230) rotate(-90)"><svg></text>
<text x="0" y="0" transform="translate(44, 315) rotate(-90)"><g></text>
<text x="0" y="0" transform="translate(44, 400) rotate(-90)"><use></text>
</g>
<defs>
</defs>
<!-- ####################################################################################### -->
<g transform="translate(60, 110)">
<g>
<rect x="0" y="0" width="30" height="20" style="fill:crimson" />
<circle cx="50" cy="10" r="10" style="fill:orange" />
<ellipse cx="85" cy="10" rx="15" ry="10" style="fill:gold" />
</g>
<g style="stroke-width:3; fill:none">
<line x1="0" y1="25" x2="30" y2="45" style="stroke:crimson" />
<polyline points="35 25 45 42 55 25 65 42" style="stroke:orange" />
<polygon points="70 25 80 42 90 25 100 42" style="fill: gold" />
</g>
<g style="stroke-width:3; fill:none">
<path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:gold" />
<image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" />
<text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle">text</text>
</g>
</g>
<g transform="translate(180, 110)">
<g>
<rect x="0" y="0" width="30" height="20" style="fill:crimson" requiredFeatures="org.w3c.svg.static" />
<circle cx="50" cy="10" r="10" style="fill:orange" requiredFeatures="org.w3c.svg.static"/>
<ellipse cx="85" cy="10" rx="15" ry="10" style="fill:gold" requiredFeatures="org.w3c.svg.static"/>
</g>
<g style="stroke-width:3; fill:none">
<line x1="0" y1="25" x2="30" y2="45" style="stroke:crimson" requiredFeatures="org.w3c.svg.static"/>
<polyline points="35 25 45 42 55 25 65 42" style="stroke:orange" requiredFeatures="org.w3c.svg.static"/>
<polygon points="70 25 80 42 90 25 100 42" style="fill: gold" requiredFeatures="org.w3c.svg.static"/>
</g>
<g style="stroke-width:3; fill:none">
<path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:gold" requiredFeatures="org.w3c.svg.static"/>
<image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" requiredFeatures="org.w3c.svg.static"/>
<text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle" requiredFeatures="org.w3c.svg.static">text</text>
</g>
</g>
<g transform="translate(300, 110)">
<g>
<rect x="0" y="0" width="30" height="20" style="fill:crimson" requiredFeatures="invalid"/>
<circle cx="50" cy="10" r="10" style="fill:orange" requiredFeatures="invalid"/>
<ellipse cx="85" cy="10" rx="15" ry="10" style="fill:gold" requiredFeatures="invalid"/>
</g>
<g style="stroke-width:3; fill:none">
<line x1="0" y1="25" x2="30" y2="45" style="stroke:crimson" requiredFeatures="invalid"/>
<polyline points="35 25 45 42 55 25 65 42" style="stroke:orange" requiredFeatures="invalid"/>
<polygon points="70 25 80 42 90 25 100 42" style="fill: gold" requiredFeatures="invalid"/>
</g>
<g style="stroke-width:3; fill:none">
<path d="M0 60C5 55 10 55 15 60C20 65 25 65 30 60" style="stroke:gold" requiredFeatures="invalid"/>
<image xlink:href="../../resources/images/tde.jpg" x="35" y="50" width="30" height="20" requiredFeatures="invalid"/>
<text x="85" y="65" style="fill:black; stroke:none; text-anchor:middle" requiredFeatures="invalid">text</text>
</g>
</g>
<!-- ####################################################################################### -->
<g style="fill:crimson">
<svg x="52" y="187" width="116" height="81">
<rect x="0" y="0" width="100%" height="100%" />
</svg>
<svg x="172" y="187" width="116" height="81" requiredFeatures="org.w3c.svg.static">
<rect x="0" y="0" width="100%" height="100%" />
</svg>
<svg x="292" y="187" width="116" height="81" requiredFeatures="invalid">
<rect x="0" y="0" width="100%" height="100%" />
</svg>
</g>
<!-- ####################################################################################### -->
<g style="fill:crimson" transform="translate(0 85)">
<g>
<rect x="52" y="187" width="116" height="81" />
</g>
<g>
<rect x="172" y="187" width="116" height="81" requiredFeatures="org.w3c.svg.static" />
</g>
<g>
<rect x="292" y="187" width="116" height="81" requiredFeatures="invalid" />
</g>
</g>
<!-- ####################################################################################### -->
<defs>
<rect id="use" x="0" y="0" width="116" height="81" style="fill:crimson"/>
</defs>
<g>
<use xlink:href="#use" x="52" y="357" />
<use xlink:href="#use" x="172" y="357" requiredFeatures="org.w3c.svg.static" />
<use xlink:href="#use" x="292" y="357" requiredFeatures="invalid" />
</g>
</g>
<!-- ============================================================= -->
<!-- Batik sample mark -->
<!-- ============================================================= -->
<use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
</svg>
1.1 xml-batik/samples/tests/spec/structure/requiredFeaturesCombo.svg
Index: requiredFeaturesCombo.svg
===================================================================
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- ========================================================================= -->
<!-- Copyright (C) The Apache Software Foundation. All rights reserved. -->
<!-- -->
<!-- This software is published under the terms of the Apache Software License -->
<!-- version 1.1, a copy of which has been included with this distribution in -->
<!-- the LICENSE file. -->
<!-- ========================================================================= -->
<!-- ========================================================================= -->
<!-- Test the 'requiredFeatures' attribtue combo -->
<!-- -->
<!-- @author tkormann@ilog.fr -->
<!-- @version $Id: requiredFeaturesCombo.svg,v 1.1 2001/11/13 15:20:58 tkormann Exp $ -->
<!-- ========================================================================= -->
<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
<svg width="450" height="500" viewBox="0 0 450 500">
<title>Test the 'requiredFeatures' attribute combo</title>
<!-- ============================================================= -->
<!-- Test content -->
<!-- ============================================================= -->
<g id="testContent">
<text x="225" y="50" class="title">Test the 'requiredFeatures' attribute combo</text>
<g style="stroke:black; fill:#eee">
<rect x="45" y="80" width="120" height="20" />
<rect x="165" y="80" width="120" height="20" />
<rect x="285" y="80" width="120" height="20" />
<rect x="25" y="100" width="20" height="120" />
<rect x="25" y="220" width="20" height="120" />
<rect x="25" y="340" width="20" height="120" />
</g>
<g style="stroke:black; fill:none">
<rect x="45" y="100" width="360" height="360" />
<line x1="165" y1="100" x2="165" y2="460" />
<line x1="285" y1="100" x2="285" y2="460" />
<line x1="45" y1="220" x2="405" y2="220" />
<line x1="45" y1="340" x2="405" y2="340" />
</g>
<g style="stroke:none; fill:black; text-anchor:middle">
<text x="105" y="94">org.w3c.svg</text>
<text x="225" y="94">org.w3c.svg.static</text>
<text x="345" y="94">invalid</text>
<text x="0" y="0" transform="translate(40 160) rotate(-90)">org.w3c.svg</text>
<text x="0" y="0" transform="translate(40 280) rotate(-90)">org.w3c.svg.static</text>
<text x="0" y="0" transform="translate(40 400) rotate(-90)">invalid</text>
</g>
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg" />
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg org.w3c.svg.static" transform="translate(120 0)" />
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg invalid" transform="translate(240 0)" />
<g transform="translate(0 120)">
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg.static org.w3c.svg" />
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg.static" transform="translate(120 0)" />
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="org.w3c.svg.static invalid" transform="translate(240 0)" />
</g>
<g transform="translate(0 240)">
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="invalid org.w3c.svg"/>
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="invalid org.w3c.svg.static" transform="translate(120 0)" />
<rect x="65" y="120" width="80" height="80" style="fill:crimson" requiredFeatures="invalid" transform="translate(240 0)" />
</g>
</g>
<!-- ============================================================= -->
<!-- Batik sample mark -->
<!-- ============================================================= -->
<use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
</svg>
1.5 +6 -1 xml-batik/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java
Index: AbstractGraphicsNodeBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/AbstractGraphicsNodeBridge.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AbstractGraphicsNodeBridge.java 2001/08/03 16:33:42 1.4
+++ AbstractGraphicsNodeBridge.java 2001/11/13 15:20:58 1.5
@@ -35,7 +35,7 @@
* </ul>
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: AbstractGraphicsNodeBridge.java,v 1.4 2001/08/03 16:33:42 vhardy Exp $
+ * @version $Id: AbstractGraphicsNodeBridge.java,v 1.5 2001/11/13 15:20:58 tkormann Exp $
*/
public abstract class AbstractGraphicsNodeBridge extends AbstractSVGBridge
implements GraphicsNodeBridge, ErrorConstants {
@@ -53,6 +53,11 @@
* @return a graphics node that represents the specified element
*/
public GraphicsNode createGraphicsNode(BridgeContext ctx, Element e) {
+ // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
+ if (!SVGUtilities.matchUserAgent(e, ctx.getUserAgent())) {
+ return null;
+ }
+
GraphicsNode node = instantiateGraphicsNode();
// 'transform'
String s = e.getAttributeNS(null, SVG_TRANSFORM_ATTRIBUTE);
1.11 +6 -1 xml-batik/sources/org/apache/batik/bridge/SVGGElementBridge.java
Index: SVGGElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGGElementBridge.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- SVGGElementBridge.java 2001/05/02 14:34:01 1.10
+++ SVGGElementBridge.java 2001/11/13 15:20:58 1.11
@@ -21,7 +21,7 @@
* Bridge class for the <g> element.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: SVGGElementBridge.java,v 1.10 2001/05/02 14:34:01 tkormann Exp $
+ * @version $Id: SVGGElementBridge.java,v 1.11 2001/11/13 15:20:58 tkormann Exp $
*/
public class SVGGElementBridge extends AbstractGraphicsNodeBridge {
@@ -45,6 +45,11 @@
* @return a graphics node that represents the specified element
*/
public GraphicsNode createGraphicsNode(BridgeContext ctx, Element e) {
+ // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
+ if (!SVGUtilities.matchUserAgent(e, ctx.getUserAgent())) {
+ return null;
+ }
+
CompositeGraphicsNode gn =
(CompositeGraphicsNode)super.createGraphicsNode(ctx, e);
1.30 +5 -1 xml-batik/sources/org/apache/batik/bridge/SVGImageElementBridge.java
Index: SVGImageElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGImageElementBridge.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- SVGImageElementBridge.java 2001/10/09 22:17:10 1.29
+++ SVGImageElementBridge.java 2001/11/13 15:20:58 1.30
@@ -45,7 +45,7 @@
* Bridge class for the <image> element.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: SVGImageElementBridge.java,v 1.29 2001/10/09 22:17:10 deweese Exp $
+ * @version $Id: SVGImageElementBridge.java,v 1.30 2001/11/13 15:20:58 tkormann Exp $
*/
public class SVGImageElementBridge extends AbstractGraphicsNodeBridge {
@@ -70,6 +70,10 @@
* @return a graphics node that represents the specified element
*/
public GraphicsNode createGraphicsNode(BridgeContext ctx, Element e) {
+ // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
+ if (!SVGUtilities.matchUserAgent(e, ctx.getUserAgent())) {
+ return null;
+ }
ImageNode imageNode = (ImageNode)super.createGraphicsNode(ctx, e);
1.18 +6 -1 xml-batik/sources/org/apache/batik/bridge/SVGSVGElementBridge.java
Index: SVGSVGElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGSVGElementBridge.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- SVGSVGElementBridge.java 2001/09/18 21:18:59 1.17
+++ SVGSVGElementBridge.java 2001/11/13 15:20:58 1.18
@@ -29,7 +29,7 @@
* Bridge class for the <svg> element.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: SVGSVGElementBridge.java,v 1.17 2001/09/18 21:18:59 deweese Exp $
+ * @version $Id: SVGSVGElementBridge.java,v 1.18 2001/11/13 15:20:58 tkormann Exp $
*/
public class SVGSVGElementBridge extends AbstractSVGBridge
implements GraphicsNodeBridge, ErrorConstants {
@@ -54,6 +54,11 @@
* @return a graphics node that represents the specified element
*/
public GraphicsNode createGraphicsNode(BridgeContext ctx, Element e) {
+ // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
+ if (!SVGUtilities.matchUserAgent(e, ctx.getUserAgent())) {
+ return null;
+ }
+
CanvasGraphicsNode gn = new CanvasGraphicsNode();
UnitProcessor.Context uctx = UnitProcessor.createContext(ctx, e);
1.12 +4 -1 xml-batik/sources/org/apache/batik/bridge/SVGShapeElementBridge.java
Index: SVGShapeElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGShapeElementBridge.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- SVGShapeElementBridge.java 2001/09/18 09:23:39 1.11
+++ SVGShapeElementBridge.java 2001/11/13 15:20:58 1.12
@@ -21,7 +21,7 @@
* The base bridge class for shapes. Subclasses bridge <tt>ShapeNode</tt>.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: SVGShapeElementBridge.java,v 1.11 2001/09/18 09:23:39 tkormann Exp $
+ * @version $Id: SVGShapeElementBridge.java,v 1.12 2001/11/13 15:20:58 tkormann Exp $
*/
public abstract class SVGShapeElementBridge extends AbstractGraphicsNodeBridge {
@@ -40,6 +40,9 @@
*/
public GraphicsNode createGraphicsNode(BridgeContext ctx, Element e) {
ShapeNode shapeNode = (ShapeNode)super.createGraphicsNode(ctx, e);
+ if (shapeNode == null) {
+ return null;
+ }
// delegates to subclasses the shape construction
buildShape(ctx, e, shapeNode);
if (shapeNode.getShape() == null) {
1.40 +5 -1 xml-batik/sources/org/apache/batik/bridge/SVGTextElementBridge.java
Index: SVGTextElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGTextElementBridge.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- SVGTextElementBridge.java 2001/11/13 10:35:24 1.39
+++ SVGTextElementBridge.java 2001/11/13 15:20:58 1.40
@@ -56,7 +56,7 @@
* Bridge class for the <text> element.
*
* @author <a href="bill.haneman@ireland.sun.com>Bill Haneman</a>
- * @version $Id: SVGTextElementBridge.java,v 1.39 2001/11/13 10:35:24 tkormann Exp $
+ * @version $Id: SVGTextElementBridge.java,v 1.40 2001/11/13 15:20:58 tkormann Exp $
*/
public class SVGTextElementBridge extends AbstractSVGBridge
implements GraphicsNodeBridge, ErrorConstants {
@@ -82,6 +82,10 @@
* @return a graphics node that represents the specified element
*/
public GraphicsNode createGraphicsNode(BridgeContext ctx, Element e) {
+ // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
+ if (!SVGUtilities.matchUserAgent(e, ctx.getUserAgent())) {
+ return null;
+ }
TextNode node = new TextNode();
// specify the text painter to use if one has been provided in the
1.13 +5 -1 xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java
Index: SVGUseElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SVGUseElementBridge.java 2001/10/09 22:17:10 1.12
+++ SVGUseElementBridge.java 2001/11/13 15:20:58 1.13
@@ -33,7 +33,7 @@
* Bridge class for the <use> element.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: SVGUseElementBridge.java,v 1.12 2001/10/09 22:17:10 deweese Exp $
+ * @version $Id: SVGUseElementBridge.java,v 1.13 2001/11/13 15:20:58 tkormann Exp $
*/
public class SVGUseElementBridge extends AbstractSVGBridge
implements GraphicsNodeBridge, ErrorConstants {
@@ -58,6 +58,10 @@
* @return a graphics node that represents the specified element
*/
public GraphicsNode createGraphicsNode(BridgeContext ctx, Element e) {
+ // 'requiredFeatures', 'requiredExtensions' and 'systemLanguage'
+ if (!SVGUtilities.matchUserAgent(e, ctx.getUserAgent())) {
+ return null;
+ }
// get the referenced element
String uri = XLinkSupport.getXLinkHref(e);
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org