| <?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> |