| <!DOCTYPE html |
| PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| |
| |
| <head> |
| <title>Context2D.quadraticCurveTo Test Case</title> |
| <script> |
| if (window.testRunner) |
| testRunner.dumpAsText(true); |
| |
| var ctx; |
| var current_point; |
| var current_center; |
| |
| function M (x, y) { |
| ctx.beginPath(); |
| ctx.moveTo(x,y); |
| current_point = [x,y]; |
| current_center = [x,y]; |
| } |
| |
| function q (x1, y1, x, y) { |
| x1 += current_point[0]; |
| y1 += current_point[1]; |
| x += current_point[0]; |
| y += current_point[1]; |
| ctx.quadraticCurveTo(x1, y1, x, y); |
| current_point = [x,y]; |
| current_center = [x1,y1]; |
| } |
| |
| function t (x, y) { |
| var x1 = current_point[0] * 2 - current_center[0]; |
| var y1 = current_point[1] * 2 - current_center[1]; |
| x += current_point[0]; |
| y += current_point[1]; |
| ctx.quadraticCurveTo(x1, y1, x, y); |
| current_point = [x,y]; |
| current_center = [x1,y1]; |
| } |
| |
| function z () { |
| ctx.closePath(); |
| } |
| |
| //////////////////// |
| |
| function runTest() { |
| // setup canvas and context |
| var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); |
| canvas.setAttribute('width', 480); |
| canvas.setAttribute('height', 360); |
| document.documentElement.appendChild(canvas); |
| ctx = canvas.getContext('2d'); |
| |
| // draw shapes equivalent to SVG path data "M 240 296 q 25 -100 47 0 t 47 0 t 47 0 t 47 0 t 47 0 z" |
| M(10,60); |
| q(25,-100,47,0); |
| t(47,0); |
| t(47,0); |
| t(47,0); |
| t(47,0); |
| z(); |
| |
| // stroke it |
| ctx.stroke(); |
| } |
| </script> |
| </head> |
| |
| <body onload="runTest()"> |
| |
| <p> |
| This test case should produce a sine-wave stroked with 1px black. |
| </p> |
| |
| </body> |
| |
| </html> |