155 lines
7.0 KiB
XML
155 lines
7.0 KiB
XML
<?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>
|
|
|