<?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/. =-->
<!--======================================================================-->
<!-- ===================================================================== -->
<!-- -->
<!-- coords-transforms-BE-02.svg -->
<!-- Author : Vincent Hardy -->
<!-- renamed for 1.1 suite to coords-trans-01-b.svg -->
<!-- Modified for svg 1.1 by Ola Andersson, 07-Mar-2002 -->
<!-- -->
<!-- History: -->
<!-- 24-Feb-2000, VH: created -->
<!-- 27-Feb-2000, LH: minor adjustments to TC name, ser#3. -->
<!-- 02-Mar-2000, LH: fix names, legend, ser#4. -->
<!-- 09-Mar-2000, LH: fix framing rect, ser#5. -->
<!-- 30-Apr-2000, VH=" fix stroke properties bug" ser#5. -->
<!-- 12-May-2000, LH: rmv text-anchor and integrate, ser#6. -->
<!-- 03-Aug-2000, LH=" update DOCTYPE for CR DTD, 20000802" ser# . -->
<!-- 16-Aug-2000, LH="rename" ser#7. -->
<!-- -->
<!-- ===================================================================== -->
<!--======================================================================-->
<!--= Note. After October 2000, revision history is kept as CVS 'commit' =-->
<!--= log messages, and therefore is no longer in the preceding preamble.=-->
<!--======================================================================-->
<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">
<SVGTestCase xmlns="http://www.w3.org/2000/02/svg/testsuite/description/">
<OperatorScript version="$Revision: 1.5 $" testname="coords-trans-01-b.svg">
<Paragraph>
This test verifies the implementation of transforms. It tests elementary transforms
and transform nesting.
Note that for layout purposes, this test uses nesting of translation with the elementary transforms.
</Paragraph>
<Paragraph>
The rendered picture should match the reference image exactly except for variations in the labeling text.
</Paragraph>
<Paragraph>
The test uses the rect element, the fill color (solid primary colors) and transforms.
</Paragraph>
</OperatorScript>
</SVGTestCase>
<title id="test-title">coords-trans-01-b</title>
<desc id="test-desc">Validates elementary transforms and transformation nesting</desc>
<!--======================================================================-->
<!--Content of Test Case follows... =====================-->
<!--======================================================================-->
<g id="test-body-content" transform="translate(0, 30)">
<!-- ====================================================================== -->
<!-- First, draw a test grid ============================================== -->
<!-- ====================================================================== -->
<g id="test-grid" stroke="#cccccc" stroke-width="1" >
<line x1="10" y1="10.5" x2="470" y2="10.5"/>
<line x1="10" y1="20.5" x2="470" y2="20.5"/>
<line x1="10" y1="30.5" x2="470" y2="30.5"/>
<line x1="10" y1="40.5" x2="470" y2="40.5"/>
<line x1="10" y1="50.5" x2="470" y2="50.5"/>
<line x1="10" y1="60.5" x2="470" y2="60.5"/>
<line x1="10" y1="70.5" x2="470" y2="70.5"/>
<line x1="10" y1="80.5" x2="470" y2="80.5"/>
<line x1="10" y1="90.5" x2="470" y2="90.5"/>
<line x1="10" y1="100.5" x2="470" y2="100.5"/>
<line x1="10" y1="110.5" x2="470" y2="110.5"/>
<line x1="10" y1="120.5" x2="470" y2="120.5"/>
<line x1="10" y1="130.5" x2="470" y2="130.5"/>
<line x1="10" y1="140.5" x2="470" y2="140.5"/>
<line x1="10" y1="150.5" x2="470" y2="150.5"/>
<line x1="10" y1="160.5" x2="470" y2="160.5"/>
<line x1="10" y1="170.5" x2="470" y2="170.5"/>
<line x1="10" y1="180.5" x2="470" y2="180.5"/>
<line x1="10" y1="190.5" x2="470" y2="190.5"/>
<line x1="10" y1="200.5" x2="470" y2="200.5"/>
<line x1="10" y1="210.5" x2="470" y2="210.5"/>
<line x1="10" y1="220.5" x2="470" y2="220.5"/>
<line x1="10" y1="230.5" x2="470" y2="230.5"/>
<line x1="10" y1="240.5" x2="470" y2="240.5"/>
<line x1="10" y1="250.5" x2="470" y2="250.5"/>
<line x1="10" y1="260.5" x2="470" y2="260.5"/>
<line y1="10" x1="10.5" y2="260.5" x2="10.5"/>
<line y1="10" x1="20.5" y2="260.5" x2="20.5"/>
<line y1="10" x1="30.5" y2="260.5" x2="30.5"/>
<line y1="10" x1="40.5" y2="260.5" x2="40.5"/>
<line y1="10" x1="50.5" y2="260.5" x2="50.5"/>
<line y1="10" x1="60.5" y2="260.5" x2="60.5"/>
<line y1="10" x1="70.5" y2="260.5" x2="70.5"/>
<line y1="10" x1="80.5" y2="260.5" x2="80.5"/>
<line y1="10" x1="90.5" y2="260.5" x2="90.5"/>
<line y1="10" x1="100.5" y2="260.5" x2="100.5"/>
<line y1="10" x1="110.5" y2="260.5" x2="110.5"/>
<line y1="10" x1="120.5" y2="260.5" x2="120.5"/>
<line y1="10" x1="130.5" y2="260.5" x2="130.5"/>
<line y1="10" x1="140.5" y2="260.5" x2="140.5"/>
<line y1="10" x1="150.5" y2="260.5" x2="150.5"/>
<line y1="10" x1="160.5" y2="260.5" x2="160.5"/>
<line y1="10" x1="170.5" y2="260.5" x2="170.5"/>
<line y1="10" x1="180.5" y2="260.5" x2="180.5"/>
<line y1="10" x1="190.5" y2="260.5" x2="190.5"/>
<line y1="10" x1="200.5" y2="260.5" x2="200.5"/>
<line y1="10" x1="210.5" y2="260.5" x2="210.5"/>
<line y1="10" x1="220.5" y2="260.5" x2="220.5"/>
<line y1="10" x1="230.5" y2="260.5" x2="230.5"/>
<line y1="10" x1="240.5" y2="260.5" x2="240.5"/>
<line y1="10" x1="250.5" y2="260.5" x2="250.5"/>
<line y1="10" x1="260.5" y2="260.5" x2="260.5"/>
<line y1="10" x1="270.5" y2="260.5" x2="270.5"/>
<line y1="10" x1="280.5" y2="260.5" x2="280.5"/>
<line y1="10" x1="290.5" y2="260.5" x2="290.5"/>
<line y1="10" x1="300.5" y2="260.5" x2="300.5"/>
<line y1="10" x1="310.5" y2="260.5" x2="310.5"/>
<line y1="10" x1="320.5" y2="260.5" x2="320.5"/>
<line y1="10" x1="330.5" y2="260.5" x2="330.5"/>
<line y1="10" x1="340.5" y2="260.5" x2="340.5"/>
<line y1="10" x1="350.5" y2="260.5" x2="350.5"/>
<line y1="10" x1="360.5" y2="260.5" x2="360.5"/>
<line y1="10" x1="370.5" y2="260.5" x2="370.5"/>
<line y1="10" x1="380.5" y2="260.5" x2="380.5"/>
<line y1="10" x1="390.5" y2="260.5" x2="390.5"/>
<line y1="10" x1="400.5" y2="260.5" x2="400.5"/>
<line y1="10" x1="410.5" y2="260.5" x2="410.5"/>
<line y1="10" x1="420.5" y2="260.5" x2="420.5"/>
<line y1="10" x1="430.5" y2="260.5" x2="430.5"/>
<line y1="10" x1="440.5" y2="260.5" x2="440.5"/>
<line y1="10" x1="450.5" y2="260.5" x2="450.5"/>
<line y1="10" x1="460.5" y2="260.5" x2="460.5"/>
<line y1="10" x1="470.5" y2="260.5" x2="470.5"/>
</g>
<!-- ====================================================================== -->
<!-- Now, test elementary transforms. For each transform, 3 markers are -->
<!-- placed where the user space is expected after transformations for the -->
<!-- origin (black) and the points in (20, 0) (blue) and (0, 20) (red). -->
<!-- Then, a blue line going from (0, 0) to (20, 0) is drawn and a red line -->
<!-- going from (0, 0) to (0, 20), after applying the elementary -->
<!-- transformation. If the test succeeds, the red line should join the -->
<!-- black marker to the red marker and the blue line the black marker to -->
<!-- the blue marker. -->
<!-- ====================================================================== -->
<g id="elementary-transforms-test" transform="translate(0, 10)">
<g id="elementary-transforms">
<!-- Translate -->
<g transform="translate(50, 50)">
<rect x="0" y="0" width="20" height="2" fill="blue" />
<rect x="0" y="0" width="2" height="20" fill="red" />
</g>
<!-- Rotate -90 deg about (150, 70) -->
<g transform="translate(150, 70) rotate(-90)">
<rect x="0" y="0" width="20" height="2" fill="blue" />
<rect x="0" y="0" width="2" height="20" fill="red" />
</g>
<!-- Skew X -->
<g transform="translate(250, 50) skewX(45)">
<rect x="0" y="0" width="20" height="2" fill="blue" />
<rect x="0" y="0" width="2" height="20" fill="red" />
</g>
<!-- Skew Y -->
<g transform="translate(350, 50) skewY(45)">
<rect x="0" y="0" width="20" height="2" fill="blue" />
<rect x="0" y="0" width="2" height="20" fill="red" />
</g>
<!-- Scale 2 -->
<g transform="translate(210, 120) scale(2)">
<rect x="0" y="0" width="20" height="1" fill="blue" />
<rect x="0" y="0" width="1" height="20" fill="red" />
</g>
</g>
<!-- elementary-transforms -->
<!-- Draw all the markers -->
<g id="elementary-transforms-test-markers">
<!-- Translate -->
<text x="40" y="40">translate (50, 50)</text>
<rect x="48" y="48" width="5" height="5" fill="black" />
<rect x="68" y="48" width="5" height="5" fill="blue" />
<rect x="48" y="68" width="5" height="5" fill="red" />
<!-- Rotate -90 deg about (150, 70) -->
<text x="140" y="40">rotate(-90)</text>
<rect x="148" y="68" width="5" height="5" fill="black" />
<rect x="148" y="48" width="5" height="5" fill="blue" />
<rect x="168" y="68" width="5" height="5" fill="red" />
<!-- Skew X -->
<text x="240" y="40">skew x (45)</text>
<rect x="248" y="48" width="5" height="5" fill="black" />
<rect x="268" y="48" width="5" height="5" fill="blue" />
<rect x="268" y="68" width="5" height="5" fill="red" />
<!-- Skew Y -->
<text x="340" y="40">skew y (45)</text>
<rect x="348" y="48" width="5" height="5" fill="black" />
<rect x="368" y="68" width="5" height="5" fill="blue" />
<rect x="348" y="68" width="5" height="5" fill="red" />
<!-- Scale 2 -->
<text x="200" y="110">scale (2)</text>
<rect x="208" y="118" width="5" height="5" fill="black" />
<rect x="248" y="118" width="5" height="5" fill="blue" />
<rect x="208" y="158" width="5" height="5" fill="red" />
</g>
<!-- elementary-transforms-test-markers -->
</g>
<g id="nested-transforms-test">
<g id="nested-transforms">
<!-- scale/translate in transform attribute -->
<g transform="scale(3, 2) translate(16.666667, 105)">
<rect x="0" y="0" width="20" height="1" fill="blue" />
<rect x="0" y="0" width="0.67" height="20" fill="red" />
</g>
<!-- scale/translate in successive elements -->
<g transform="translate(200, 0)">
<g transform="scale(3, 2)">
<g transform="translate(16.666667, 105)">
<rect x="0" y="0" width="20" height="1" fill="blue" />
<rect x="0" y="0" width="0.67" height="20" fill="red" />
</g>
</g>
</g>
</g>
<!-- nested-transforms -->
<g id="nested-transforms-test-markers">
<!-- scale and translate -->
<text x="40" y="200">scale(25, 95) and translate(2, 2)</text>
<rect x="48" y="208" width="5" height="5" fill="black" />
<rect x="108" y="208" width="5" height="5" fill="blue" />
<rect x="48" y="248" width="5" height="5" fill="red" />
<!-- scale then translate -->
<text x="240" y="200">scale(25, 95) then translate(2, 2)</text>
<rect x="248" y="208" width="5" height="5" fill="black" />
<rect x="308" y="208" width="5" height="5" fill="blue" />
<rect x="248" y="248" width="5" height="5" fill="red" />
</g>
<!-- nested-transforms-test-markers -->
</g>
<!-- nested-transforms test -->
</g>
<text id="revision" x="10" y="340" font-size="40" stroke="none" fill="black">$Revision: 1.5 $</text>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
</svg>