blob: 5f8f1957b4dbef9477889672151ab56e063921d9 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>Test that restoring a valid matrix after aplying non-invertible doesn't collapse all path to 0,0.</title>
</head>
<body>
<canvas id='canvas0' width='100' height='100'></canvas>
<canvas id='canvas1' width='100' height='100'></canvas>
<canvas id='canvas2' width='100' height='100'></canvas>
<canvas id='canvas3' width='100' height='100'></canvas>
<canvas id='canvas4' width='100' height='100'></canvas>
<canvas id='canvas5' width='100' height='100'></canvas>
<canvas id='canvas6' width='100' height='100'></canvas>
<canvas id='canvas7' width='100' height='100'></canvas>
<script>
var canvas0 = document.getElementById('canvas0');
var canvas1 = document.getElementById('canvas1');
var canvas2 = document.getElementById('canvas2');
var canvas3 = document.getElementById('canvas3');
var canvas4 = document.getElementById('canvas4');
var canvas5 = document.getElementById('canvas5');
var canvas6 = document.getElementById('canvas6');
var canvas7 = document.getElementById('canvas7');
var ctx0 = canvas0.getContext('2d');
var ctx1 = canvas1.getContext('2d');
var ctx2 = canvas2.getContext('2d');
var ctx3 = canvas3.getContext('2d');
var ctx4 = canvas4.getContext('2d');
var ctx5 = canvas5.getContext('2d');
var ctx6 = canvas6.getContext('2d');
var ctx7 = canvas7.getContext('2d');
// Testing moveTo.
ctx0.moveTo(80,80);
ctx0.lineTo(20,80);
ctx0.moveTo(0,0);
ctx0.lineTo(20,80);
ctx0.stroke();
// Testing lineTo.
ctx1.moveTo(80,80);
ctx1.lineTo(20,80);
ctx1.lineTo(0,0);
ctx1.stroke();
// Testing quadraticCurveTo.
ctx2.moveTo(80,80);
ctx2.lineTo(20,80);
ctx2.quadraticCurveTo(0,0,0,0);
ctx2.stroke();
// Testing bezierCurveTo.
ctx3.moveTo(80,80);
ctx3.lineTo(20,80);
ctx3.bezierCurveTo(0,0,0,0,0,0);
ctx3.stroke();
// Testing arcTo.
ctx4.moveTo(80,80);
ctx4.lineTo(20,80);
ctx4.arcTo(0,0,0,0,0);
ctx4.stroke();
// Testing lineTo with scale (1,0).
ctx5.moveTo(80,80);
ctx5.lineTo(20,80);
ctx5.lineTo(0,20);
ctx5.stroke();
// Testing lineTo with scale (0,1).
ctx6.moveTo(80,80);
ctx6.lineTo(20,80);
ctx6.quadraticCurveTo(20,0,80,0);
ctx6.stroke();
// Different way to go from a non-infertible CTM to an invertible one.
ctx7.moveTo(0,0);
ctx7.lineTo(20,80);
ctx7.lineTo(80,80);
ctx7.stroke();
</script>
</body>
</html>