blob: ecde5a6b1495e09675ae5e865e3b36a69c559b37 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny-flat.dtd">
<svg version="1.1" baseProfile="tiny" id="svg-root" width="480" height="360" viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="testSVGLocatable()">
<!--======================================================================-->
<!--= Copyright 2006 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<!-- NOTE: CVS will automatically update the -->
<!-- "$RCSfile: types-basicDOM-01-b.svg,v $" and "$Revision: 1.1 $" -->
<!-- fields in the file. -->
<!-- There is no need to update this information. -->
<!-- =====================================================================-->
<SVGTestCase xmlns="http://www.w3.org/2000/02/svg/testsuite/description/" reviewer="AE,ED" owner="AN" desc="Tests the interface SVGLocatable" status="accepted" version="$Revision: 1.1 $" testname="$RCSfile: types-basicDOM-01-b.svg,v $">
<OperatorScript>
<Paragraph>
This test checks all the methods and properties of the SVGLocatable interface. Note the use of nested svg elements and testing against different elements in the hierarchy. Note that the values of .getScreenCTM() and .getCTM() can only be tested correctly if they are in the html-based test or the width and height of the root element is explicitly set to 480x360. The methods .getScreenCTM() and .getCTM() are tested from the rotated text element, the method .getBBox(), .getTransformToElement() is tested between the rotated text and its parent group, the method .getBBox() and the properties .farthestViewportElement and .nearestViewportElement are tested on the red circle.
</Paragraph>
<Paragraph>
For the test to pass, the values generated by script must match the values provided in the png image. The correct values are:
</Paragraph>
<Paragraph>
.getScreenCTM() for id "rotText": 0.42,0.42,-0.42,0.42,70.00,-60.00
</Paragraph>
<Paragraph>
.getCTM() for id "rotText": 0.42,0.42,-0.42,0.42,70.00,-60.00
</Paragraph>
<Paragraph>
.getTransformToElement() between id "rotText" and id "parentGroup": 0.42,0.42,-0.42,0.42,0.00,0.00
</Paragraph>
<Paragraph>
.getBBox() for 'redCircle': .x=-50,.y=-50,.width=100,.height=100
</Paragraph>
<Paragraph>
.farthestViewportElement of redCircle=svg-root
</Paragraph>
<Paragraph>
.nearestViewportElement of redCircle=nestedSVG
</Paragraph>
</OperatorScript>
</SVGTestCase>
<title id="test-title">types-basicDOM-01-b.svg</title>
<!--======================================================================-->
<!--Content of Test Case follows... =====================-->
<!--======================================================================-->
<g id="test-body-content">
<script type="text/ecmascript"><![CDATA[
function testSVGLocatable() {
var rotText = document.getElementById("rotatedText");
var redCircle = document.getElementById("redCircle")
var matr = rotText.getScreenCTM();
document.getElementById("result1").firstChild.nodeValue = ".getScreenCTM(): " + matr.a.toFixed(2) + "," + matr.b.toFixed(2) + "," + matr.c.toFixed(2) + "," + matr.d.toFixed(2) + "," + matr.e.toFixed(2) + "," + matr.f.toFixed(2);
var matr = rotText.getCTM();
document.getElementById("result2").firstChild.nodeValue = ".getCTM(): " + matr.a.toFixed(2) + "," + matr.b.toFixed(2) + "," + matr.c.toFixed(2) + "," + matr.d.toFixed(2) + "," + matr.e.toFixed(2) + "," + matr.f.toFixed(2);
var matr = rotText.getTransformToElement(document.getElementById("parentGroup"));
document.getElementById("result3").firstChild.nodeValue = ".getTransformToElement(): " + matr.a.toFixed(2) + "," + matr.b.toFixed(2) + "," + matr.c.toFixed(2) + "," + matr.d.toFixed(2) + "," + matr.e.toFixed(2) + "," + matr.f.toFixed(2);
var bbox = redCircle.getBBox();
document.getElementById("result4").firstChild.nodeValue = ".getBBox() for 'redCircle': .x="+bbox.x+",.y="+bbox.y+",.width="+bbox.width+",.height="+bbox.height;
document.getElementById("result5").firstChild.nodeValue = ".farthestViewportElement of redCircle="+redCircle.farthestViewportElement.getAttributeNS(null,"id");
document.getElementById("result6").firstChild.nodeValue = ".nearestViewportElement of redCircle="+redCircle.nearestViewportElement.getAttributeNS(null,"id");
}
]]></script>
<g font-family="sans-serif" font-size="12">
<g id="parentGroup" transform="translate(70,-60)">
<text id="rotatedText" transform="scale(0.6),rotate(45)" font-size="20" x="30" y="150">Rotated Text for testing SVGLocatable</text>
<text id="otherText" transform="scale(0.7)" font-size="20" x="100" y="130">Some other text with id 'otherText'</text>
<svg id="nestedSVG" x="200" y="100" width="110" height="110" viewBox="-55 -55 110 110">
<circle id="redCircle" cx="0" cy="0" r="50" fill="red"/>
</svg>
</g>
<text id="result1" x="10" y="200"> </text>
<text id="result2" x="10" y="220"> </text>
<text id="result3" x="10" y="240"> </text>
<text id="result4" x="10" y="260"> </text>
<text id="result5" x="10" y="280"> </text>
<text id="result6" x="10" y="300"> </text>
</g>
</g>
<text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.1 $</text>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
</svg>