| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd"> |
| <!--======================================================================--> |
| <!--= Copyright 2000 World Wide Web Consortium, (Massachusetts =--> |
| <!--= Institute of Technology, Institut National de Recherche en =--> |
| <!--= Informatique et en Automatique, Keio University). All Rights =--> |
| <!--= Reserved. See http://www.w3.org/Consortium/Legal/. =--> |
| <!--======================================================================--> |
| <!-- ===================================================================== --> |
| <!-- dom-svg-BE-02.svg --> |
| <!-- renamed for 1.1 suite to struct-dom-01-t --> |
| <!-- Author : Vincent Hardy 06-08-2000 --> |
| <!-- Revised for 1.1 : Chris Lilley 15-Mar-2002 --> |
| <!--======================================================================--> |
| <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="domTest(evt)"> |
| <SVGTestCase xmlns="http://www.w3.org/2000/02/svg/testsuite/description/"> |
| <OperatorScript version="$Revision: 1.1 $" testname="struct-dom-01-b.svg"> |
| <Paragraph>Verify the basic capability to handle the SVG DOM API. The test is composed of a top |
| level svg element with an 'onload' event handler and a rect element. Both |
| the svg and the rect elements have an identifier. The 'onload' handler |
| invokes SVG-specific DOM API methods which use these identifiers. |
| </Paragraph> |
| <Paragraph>First, the handler gets the SVG element owner of the rect element and checks it has |
| the expected identifier. Then, the handler accesses the coordinates of the rect element |
| and uses them to build a 'shadow' rectangle under the existing one. Finally, the 'shadow' |
| rectangle is created using the SVGSVGElement's createSVGRect method. |
| </Paragraph> |
| <Paragraph>If an implementation supports the ECMA Script DOM binding for SVG, then the image |
| should show the following text: "This document's root identifier is: svg-root" and |
| a red rectangle with a black shadow rectangle. Otherwise, only a red rectangle will show. |
| </Paragraph> |
| <Paragraph>The rendered picture should match the reference image.</Paragraph> |
| </OperatorScript> |
| </SVGTestCase> |
| <title id="test-title">struct-dom-01-b</title> |
| <desc id="test-desc">Checks if SVG DOM ECMA Script binding is supported</desc> |
| <!--======================================================================--> |
| <!--Content of Test Case follows... =====================--> |
| <!--======================================================================--> |
| <g id="test-body-content"> |
| <script type="text/ecmascript"><![CDATA[ |
| |
| function domTest(evt) { |
| |
| var svg_ns = "http://www.w3.org/2000/svg"; |
| |
| // Get Document |
| var target = evt.target; |
| var doc = target.ownerDocument; |
| |
| // |
| // Test that our rectangle is an SVGElement instance |
| // |
| var rect = doc.getElementById("rectId"); |
| var rootSVG = rect.ownerSVGElement; |
| var rootId = rootSVG.getAttribute( "id" ); |
| |
| // Insert a new text element to the DOM tree using the id |
| var newText = doc.createElementNS(svg_ns, 'text'); |
| newText.setAttribute('x', '50'); |
| newText.setAttribute('y', '100'); |
| var message = "This document's root identifier is: " + rootId |
| var textContent = doc.createTextNode(message); |
| newText.appendChild(textContent); |
| rect.parentNode.appendChild(newText); |
| |
| // |
| // Now, check that our rectangle is an instance of SVGRect by accessing |
| // specific methods in order to get its x, y, width and height attributes. |
| // |
| var x = rect.x.baseVal.value; // SVGRect -> SVGAnimatedLenght -> SVGLength -> long |
| var y = rect.y.baseVal.value; |
| var width = rect.width.baseVal.value; |
| var height = rect.height.baseVal.value; |
| |
| // |
| // Now, build a new SVGRect through the SVGSVGElement interface. |
| // |
| var newRect = doc.createElementNS(svg_ns, 'rect'); |
| |
| // |
| // Set the x, y, width and height of this element |
| // |
| newRect.x.baseVal.value = x + 10; |
| newRect.y.baseVal.value = y + 10; |
| newRect.setAttribute("width", width); |
| newRect.setAttribute("height", height); |
| |
| // |
| // Insert new element in DOM tree |
| // |
| rect.parentNode.insertBefore(newRect, rect); |
| } |
| |
| ]]></script> |
| <!--======================================================================--> |
| <!-- Since this test is examining the SVG DOM, it could use any language --> |
| <!-- binding. Here is the equivalent code for the Java binding --> |
| <!-- |
| |
| // |
| // Test that our rectangle is an SVGElement instance |
| // |
| SVGRectElement rect = (SVGRectElement) doc.getElementById("rectId"); |
| SVGElement rootSVG = rect.getOwnerSVGElement(); |
| String rootId = rootSVG.getId(); |
| |
| // Insert a new text element to the DOM tree using the id |
| Element newText = doc.createElement("text"); |
| newText.setAttribute("x", "50"); |
| newText.setAttribute("y", "100"); |
| String message = "This document's root identifier is=" " + rootId" |
| Text textContent = doc.createTextNode(message); |
| newText.appendChild(textContent); |
| rect.getParentNode().appendChild(newText); |
| |
| // |
| // Now, check that our rectangle is an instance of SVGRect by accessing |
| // specific methods in order to get its x, y, width and height attributes. |
| // |
| float x = rect.getX().getBaseVal().getValue(); |
| float y = rect.getY().getBaseVal().getValue(); |
| float width = rect.getWidth().getBaseVal().getValue(); |
| float height = rect.getHeight().getBaseVal().getValue(); |
| |
| // |
| // Now, build a new SVGRect through the SVGSVGElement interface. |
| // |
| SVGRectElement newRect = (SVGRectElement) doc.createElement("rect"); |
| |
| // |
| // Set the x, y, width and height of this element |
| // |
| newRect.getX().getBaseVal().setValue(x + 10); |
| newRect.getY().getBaseVal().setValue(y + 10); |
| newRect.getWidth().getBaseVal().setValue(width); |
| newRect.getHeight().getBaseVal().setValue(height); |
| |
| // |
| // Insert new element in DOM tree |
| // |
| rect.getParentNode().insertBefore(newRect, rect); |
| |
| --> |
| <!-- ===================================================================== --> |
| <!-- The following rectangle's is accessed in the 'domTest' ECMA Script --> |
| <!-- handler. --> |
| <!-- ===================================================================== --> |
| <rect id="rectId" x="40" y="150" width="50" height="50" fill="red"/> |
| </g> |
| <text id="revision" x="10" y="340" font-size="30" stroke="none" fill="black">$Revision: 1.1 $</text> |
| <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> |
| </svg> |
| |