| <svg id="svg-root" width="100%" height="100%" |
| viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg" |
| xmlns:xlink="http://www.w3.org/1999/xlink"> |
| <!--======================================================================--> |
| <!--= Copyright 2008 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/. =--> |
| <!--======================================================================--> |
| <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/" |
| template-version="1.3" reviewer="CL" author="CM" status="accepted" |
| version="$Revision: 1.9 $" testname="$RCSfile: styling-pres-02-f.svg,v $"> |
| <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/styling.html#UsingPresentationAttributes"> |
| <p> |
| This tests that a presentation attribute that is not relevant |
| to a given element which is otherwise stylable is correctly stored |
| in the property collection for that element. In particular, |
| it tests the following presentation attributes: |
| </p> |
| <ul> |
| <li>fill on image</li> |
| <li>stop-opacity on tspan</li> |
| <li>font-size on rect</li> |
| <li>font-style on circle</li> |
| <li>stop-color on text</li> |
| <li>font-variant on ellipse</li> |
| <li>letter-spacing on polyline</li> |
| <li>flood-color on tref</li> |
| <li>flood-opacity on textPath</li> |
| <li>color-interpolation-filters on altGlyph</li> |
| <li>display on linearGradient</li> |
| <li>fill-rule on stop</li> |
| <li>visibility on radialGradient</li> |
| <li>lighting-color on clipPath</li> |
| </ul> |
| </d:testDescription> |
| <d:operatorScript xmlns="http://www.w3.org/1999/xhtml"> |
| <p> |
| The test comprises 14 sub-tests, each with a rectangle that indicates |
| whether a given presentation attribute of the 14 listed in the test |
| description affects the style of the element on which it is specified. A rectangle |
| is black if the sub-test did not run, red if the sub-test failed and |
| green if the sub-test succeeded. |
| </p> |
| </d:operatorScript> |
| <d:passCriteria xmlns="http://www.w3.org/1999/xhtml"> |
| <p> |
| The test is passed if all 14 rectangles are green. |
| </p> |
| </d:passCriteria> |
| </d:SVGTestCase> |
| <title id="test-title">$RCSfile: styling-pres-02-f.svg,v $</title> |
| <defs> |
| <font-face |
| font-family="SVGFreeSansASCII" |
| unicode-range="U+0-7F"> |
| <font-face-src> |
| <font-face-uri xlink:href="../custom/resources/SVGFreeSans.svg#ascii"/> |
| </font-face-src> |
| </font-face> |
| </defs> |
| <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18"> |
| <text x='10' y='20'>Testing inapplicable presentation attributes</text> |
| |
| <g visibility='hidden'> |
| <path id="path" d="M0,0"/> |
| <image id='image' xlink:href='../images/20x20.png' width='10' height='10' fill='rgb(0, 0, 255)'/> |
| <rect id='rect' width='10' height='10' font-size='123px'/> |
| <circle id='circle' r='10' font-style='italic'/> |
| <ellipse id='ellipse' rx='10' ry='5' font-variant='small-caps'/> |
| <polyline id='polyline' points='0,0 10,10' letter-spacing='20px'/> |
| <text id='text' stop-color='rgb(0, 255, 0)'>a<tspan id='tspan' stop-opacity='0.5'>b</tspan><tref id='tref' xlink:href='#tspan' flood-color='rgb(255, 0, 0)'/><textPath id='textPath' xlink:href='#path' flood-opacity='0.25'/><altGlyph id='altGlyph' glyphRef='blah' color-interpolation-filters='auto'>c</altGlyph></text> |
| <linearGradient id='linearGradient' display='block'><stop id='stop' offset='0' fill-rule='evenodd'/></linearGradient> |
| <radialGradient id='radialGradient' visibility='hidden'><stop offset='0'/></radialGradient> |
| <clipPath id='clipPath' lighting-color='rgb(255, 255, 255)'/> |
| </g> |
| |
| <g font-size='14'> |
| <rect id='r1' x='10' y='25' width='20' height='20'/> |
| <text x='40' y='40'>fill on image</text> |
| |
| <rect id='r2' x='10' y='55' width='20' height='20'/> |
| <text x='40' y='70'>stop-opacity on tspan</text> |
| |
| <rect id='r3' x='10' y='85' width='20' height='20'/> |
| <text x='40' y='100'>font-size on rect</text> |
| |
| <rect id='r4' x='10' y='115' width='20' height='20'/> |
| <text x='40' y='130'>font-style on circle</text> |
| |
| <rect id='r5' x='10' y='145' width='20' height='20'/> |
| <text x='40' y='160'>stop-color on text</text> |
| |
| <rect id='r6' x='10' y='175' width='20' height='20'/> |
| <text x='40' y='190'>font-variant on ellipse</text> |
| |
| <rect id='r7' x='10' y='205' width='20' height='20'/> |
| <text x='40' y='220'>letter-spacing on polyline</text> |
| |
| <rect id='r11' x='250' y='25' width='20' height='20'/> |
| <text x='280' y='40'>flood-color on tref</text> |
| |
| <rect id='r12' x='250' y='55' width='20' height='20'/> |
| <text x='280' y='70'>flood-opacity on textPath</text> |
| |
| <rect id='r13' x='250' y='85' width='20' height='20'/> |
| <text x='280' y='100'>clr-intp-filters on altGlyph</text> |
| |
| <rect id='r14' x='250' y='115' width='20' height='20'/> |
| <text x='280' y='130'>display on linearGradient</text> |
| |
| <rect id='r15' x='250' y='145' width='20' height='20'/> |
| <text x='280' y='160'>fill-rule on stop</text> |
| |
| <rect id='r16' x='250' y='175' width='20' height='20'/> |
| <text x='280' y='190'>visibility on radialGradient</text> |
| |
| <rect id='r17' x='250' y='205' width='20' height='20'/> |
| <text x='280' y='220'>lighting-color on clipPath</text> |
| </g> |
| |
| <script><![CDATA[ |
| function $(x) { return document.getElementById(x) } |
| function decimalToHex(d) { |
| var hex = Number(d).toString(16); |
| while (hex.length < 2) { |
| hex = "0" + hex; |
| } |
| return hex; |
| } |
| |
| function checkSVGColor(e, p, r, g, b) { |
| var v; |
| try { |
| var cssstyledecl = document.defaultView.getComputedStyle(e,null); |
| var v = cssstyledecl.getPropertyValue(p); |
| var longhex = "#" + decimalToHex(r) + decimalToHex(g) + decimalToHex(b); |
| return v == "rgb(" + r + ", " + g + ", " + b + ")" || |
| v == "rgba(" + r + ", " + g + ", " + b + ", 1)" || |
| v == longhex || |
| v == longhex.toUpperCase(); |
| } catch (ex) { |
| } |
| return false; |
| } |
| |
| function checkFloat(e, p, f) { |
| var v; |
| try { |
| var cssstyledecl = document.defaultView.getComputedStyle(e,null); |
| v = cssstyledecl.getPropertyValue(p); |
| return parseFloat(v) == f; |
| } catch (ex) { |
| } |
| return false; |
| } |
| |
| function checkPx(e, p, f) { |
| var v; |
| try { |
| var cssstyledecl = document.defaultView.getComputedStyle(e,null); |
| v = cssstyledecl.getPropertyValue(p); |
| return v == f; |
| } catch (ex) { |
| } |
| return false; |
| } |
| |
| function checkIdent(e, p, i) { |
| var v; |
| i = i.toLowerCase(); |
| try { |
| var cssstyledecl = document.defaultView.getComputedStyle(e,null); |
| v = cssstyledecl.getPropertyValue(p); |
| return v.toLowerCase() == i; |
| } catch (ex) { |
| } |
| return false; |
| } |
| |
| function report(n, b) { |
| $('r' + n).setAttribute('fill', b ? 'green' : 'red'); |
| } |
| |
| report(1, checkSVGColor($('image'), 'fill', 0, 0, 255)); |
| report(2, checkFloat($('tspan'), 'stop-opacity', 0.5)); |
| report(3, checkPx($('rect'), 'font-size', '123px')); |
| report(4, checkIdent($('circle'), 'font-style', 'italic')); |
| report(5, checkSVGColor($('text'), 'stop-color', 0, 255, 0)); |
| report(6, checkIdent($('ellipse'), 'font-variant', 'small-caps')); |
| report(7, checkPx($('polyline'), 'letter-spacing', '20px')); |
| |
| report(11, checkSVGColor($('tref'), 'flood-color', 255, 0, 0)); |
| report(12, checkFloat($('textPath'), 'flood-opacity', 0.25)); |
| report(13, checkIdent($('altGlyph'), 'color-interpolation-filters', 'auto')); |
| report(14, checkIdent($('linearGradient'), 'display', 'block')); |
| report(15, checkIdent($('stop'), 'fill-rule', 'evenodd')); |
| report(16, checkIdent($('radialGradient'), 'visibility', 'hidden')); |
| report(17, checkSVGColor($('clipPath'), 'lighting-color', 255, 255, 255)); |
| ]]></script> |
| </g> |
| <g font-family="SVGFreeSansASCII,sans-serif" font-size="32"> |
| <text id="revision" x="10" y="340" stroke="none" |
| fill="black">$Revision: 1.9 $</text> |
| </g> |
| <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/> |
| <!-- comment out this watermark once the test is approved --> |
| <!-- |
| <g id="draft-watermark"> |
| <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/> |
| <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240" |
| text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text> |
| </g> |
| --> |
| </svg> |