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