diff options
Diffstat (limited to 'testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-isvalid.html')
-rw-r--r-- | testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-isvalid.html | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-isvalid.html new file mode 100644 index 000000000..87b11d6a8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-isvalid.html @@ -0,0 +1,259 @@ +<!DOCTYPE html> +<html lang='en'> +<head> + <title>paths-dom-02-f-manual.svg</title> + <meta charset='utf-8'> +</head> +<body> + <h1>Source SVG: paths-dom-02-f-manual.svg</h1> +<svg version="1.1" baseProfile="full" onload="CreatePath();setTimeout('AnimatePath();', 500);" 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"> + <!--======================================================================--> + <!--= SVG 1.1 2nd Edition Test Case =--> + <!--======================================================================--> + <!--= Copyright 2009 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/. =--> + <!--======================================================================--> + + <title id="test-title">$RCSfile: paths-dom-02-f.svg,v $</title> + <defs> + <font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F"> + <font-face-src> + <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/> + </font-face-src> + </font-face> + </defs> + <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18"> + <script><![CDATA[ + var offset_angle = 90; + var current_shift = 0; + var shift_inc = 1; + var THRESHOLD = 60; + var segments_added = 0; + var seg_diff = 1; + var adjust_count = 0; + var anim_count = 0; + var adjust_count_max = 8; + var anim_count_max = 10; + var stopped = false; + + function DegToRad(degs) + { + return (degs * Math.PI) / 180; + } + + function CreatePath() + { + var pathelm = document.getElementById("mypath"); + var pathlist = pathelm.pathSegList; + + var move = pathelm.createSVGPathSegMovetoAbs(240 + 30 * Math.cos(DegToRad(offset_angle - 30)), + 180 + 30 * Math.sin(DegToRad(offset_angle - 30))); + pathlist.appendItem(move); + + var angle = offset_angle; + for (var i = 0; i < 6; i++) + { + var x, y, xcp, ycp; + + x = 240 + 30 * Math.cos(DegToRad(angle + 30)); + y = 180 + 30 * Math.sin(DegToRad(angle + 30)); + + xcp = 240 + 120 * Math.cos(DegToRad(angle)); + ycp = 180 + 120 * Math.sin(DegToRad(angle)); + + var curve = pathelm.createSVGPathSegCurvetoCubicAbs(x, y, + xcp, ycp, + xcp, ycp); + + pathlist.appendItem(curve); + + angle += 60; + } + + pathlist.appendItem(pathelm.createSVGPathSegClosePath()); + setTimeout('AdjustPath()', 500); + } + + function AddSegment() + { + var pathelm = document.getElementById("mypath"); + var pathlist = pathelm.pathSegList; + + var segments = pathlist.numberOfItems - 2; // Not MoveTo and Close + var angle = offset_angle; + var inc_angle = 360/(segments+1); + var shift_v_x, shift_v_y, xcp, ycp; + + var move = pathlist.getItem(0); + move.x = 240 + 30 * Math.cos(DegToRad(offset_angle - inc_angle/2)); + move.y = 180 + 30 * Math.sin(DegToRad(offset_angle - inc_angle/2)); + + for (var i = 0; i < segments; i++) + { + var curve = pathlist.getItem(1+i); + + shift_v_x = current_shift * Math.cos(DegToRad(angle + 90)); + shift_v_y = current_shift * Math.sin(DegToRad(angle + 90)); + + xcp = 240 + 120 * Math.cos(DegToRad(angle)); + ycp = 180 + 120 * Math.sin(DegToRad(angle)); + + curve.x = 240 + 30 * Math.cos(DegToRad(angle + inc_angle/2)); + curve.y = 180 + 30 * Math.sin(DegToRad(angle + inc_angle/2)); + + curve.x1 = xcp - shift_v_x; + curve.y1 = ycp - shift_v_y; + + curve.x2 = xcp + shift_v_x; + curve.y2 = ycp + shift_v_y; + + angle += inc_angle; + } + + shift_v_x = current_shift * Math.cos(DegToRad(angle + 90)); + shift_v_y = current_shift * Math.sin(DegToRad(angle + 90)); + + xcp = 240 + 120 * Math.cos(DegToRad(angle)); + ycp = 180 + 120 * Math.sin(DegToRad(angle)); + + var x = 240 + 30 * Math.cos(DegToRad(angle + inc_angle/2)); + var y = 180 + 30 * Math.sin(DegToRad(angle + inc_angle/2)); + + var curve = pathelm.createSVGPathSegCurvetoCubicAbs(x, y, + xcp - shift_v_x, + ycp - shift_v_y, + xcp + shift_v_x, + ycp + shift_v_y); + + pathlist.insertItemBefore(curve, pathlist.numberOfItems-1); + } + + function RemoveSegment() + { + var pathelm = document.getElementById("mypath"); + var pathlist = pathelm.pathSegList; + + var segments = pathlist.numberOfItems - 2; // Not MoveTo and Close + var angle = offset_angle; + var inc_angle = 360/(segments-1); + var shift_v_x, shift_v_y, xcp, ycp; + + var move = pathlist.getItem(0); + move.x = 240 + 30 * Math.cos(DegToRad(offset_angle - inc_angle/2)); + move.y = 180 + 30 * Math.sin(DegToRad(offset_angle - inc_angle/2)); + + for (var i = 0; i < segments-1; i++) + { + var curve = pathlist.getItem(1+i); + + shift_v_x = current_shift * Math.cos(DegToRad(angle + 90)); + shift_v_y = current_shift * Math.sin(DegToRad(angle + 90)); + + xcp = 240 + 120 * Math.cos(DegToRad(angle)); + ycp = 180 + 120 * Math.sin(DegToRad(angle)); + + curve.x = 240 + 30 * Math.cos(DegToRad(angle + inc_angle/2)); + curve.y = 180 + 30 * Math.sin(DegToRad(angle + inc_angle/2)); + + curve.x1 = xcp - shift_v_x; + curve.y1 = ycp - shift_v_y; + + curve.x2 = xcp + shift_v_x; + curve.y2 = ycp + shift_v_y; + + angle += inc_angle; + } + + pathlist.removeItem(pathlist.numberOfItems-2); + } + + function AdjustPath() + { + if (seg_diff > 0) + { + AddSegment(); + } + else + { + RemoveSegment(); + } + + segments_added += seg_diff; + + if (segments_added > 5) + seg_diff = -1; + else if (segments_added <= 0) + seg_diff = 1; + + if(adjust_count < adjust_count_max) + { + adjust_count++; + setTimeout('AdjustPath()', 500); + } + } + + function AnimatePath() + { + var pathelm = document.getElementById("mypath"); + var pathlist = pathelm.pathSegList; + + var segments = pathlist.numberOfItems - 2; // Not MoveTo and Close + var angle = offset_angle; + var inc_angle = 360/segments; + for (var i = 0; i < segments; i++) + { + var curve = pathlist.getItem(1+i); + + var shift_v_x, shift_v_y, xcp, ycp; + + shift_v_x = current_shift * Math.cos(DegToRad(angle + 90)); + shift_v_y = current_shift * Math.sin(DegToRad(angle + 90)); + + xcp = 240 + 120 * Math.cos(DegToRad(angle)); + ycp = 180 + 120 * Math.sin(DegToRad(angle)); + + curve.x1 = xcp - shift_v_x; + curve.y1 = ycp - shift_v_y; + + curve.x2 = xcp + shift_v_x; + curve.y2 = ycp + shift_v_y; + + angle += inc_angle; + } + + current_shift += shift_inc; + if (current_shift >= THRESHOLD || current_shift < 0) + shift_inc = -shift_inc; + + if(adjust_count >= adjust_count_max) + { + anim_count++; + } + + if(anim_count < anim_count_max) + setTimeout('AnimatePath();', 50); + else + document.getElementById("mypath").addEventListener("click", function func() { adjust_count_max=32768;anim_count_max=32768; AdjustPath(); AnimatePath(); }, false); + } + + ]]></script> + <path d="" id="mypath" stroke="black" fill="blue"/> + </g> + <g font-family="SVGFreeSansASCII,sans-serif" font-size="32"> + <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.5 $</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> +</body> +</html> |