<?xml version="1.0"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="addTransform()" viewBox="0 0 300 100" class="reftest-wait"> <!-- Test that the presence/absence of a patternTransform is correctly detected. Details are below but, in summary, the first two squares should contain the same pattern (a diagonal checkerbox) whilst the third square should contain a different pattern (actually the same pattern but WITHOUT the rotation). --> <script> function addTransform() { var g = document.getElementById("patternBase"); var list = g.patternTransform.baseVal; var t = document.documentElement.createSVGTransform(); t.setRotate(45,50,50); list.appendItem(t); document.documentElement.removeAttribute("class"); } </script> <defs> <!-- 1. The base pattern that will be referenced by others. When the document loads, script will add a patternTransform to this pattern. It does this using *only SVG DOM APIs* (i.e. not setAttribute) so that we can test that when a transform is not specified by markup but is added via the DOM we still correctly detect its presence. --> <pattern id="patternBase" width="1" height="1"> <rect width="50" height="50" fill="blue"/> <rect x="50" width="50" height="50" fill="red"/> <rect y="50" width="50" height="50" fill="red"/> <rect x="50" y="50" width="50" height="50" fill="blue"/> </pattern> <!-- 2. References the base pattern and should detect the base pattern's patternTransform (added by script) and inherit it. (SVG 1.1 F2 13.3, xlink:href 'Any attributes which are defined on the referenced element which are not defined on this element are inherited by this element.'). Hence this pattern should look IDENTICAL to patternBase. --> <pattern xlink:href="#patternBase" id="patternRefWithoutTransform"/> <!-- 3. References the base pattern but patternTransform is defined (although empty) and hence the patternTransform should NOT be inherited and this pattern should look DIFFERENT to patternBase. --> <pattern xlink:href="#patternBase" id="patternRefWithTransform" patternTransform=""/> <!-- The case of a patternTransform being supplied by animation is covered by SMIL reftest anim-pattern-attr-presence-01.svg --> </defs> <rect width="100" height="100" stroke="black" fill="url(#patternBase)"/> <g transform="translate(100)"> <rect width="100" height="100" stroke="black" fill="url(#patternRefWithoutTransform)"/> </g> <g transform="translate(200)"> <rect width="100" height="100" stroke="black" fill="url(#patternRefWithTransform)"/> </g> </svg>