gecko/content/canvas/test/test_2d.path.isPointInPath.winding.html

44 lines
1.5 KiB
HTML

<!DOCTYPE HTML>
<title>Canvas test: 2d.path.isPointInPath.winding</title>
<!-- Testing: isPointInPath() uses the non-zero winding number rule -->
<script src="/MochiKit/packed.js"></script>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css">
<body>
<canvas id="c" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
<script>
SimpleTest.waitForExplicitFinish();
MochiKit.DOM.addLoadEvent(function () {
var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');
// Create a square ring, using opposite windings to make a hole in the centre
ctx.moveTo(0, 0);
ctx.lineTo(50, 0);
ctx.lineTo(50, 50);
ctx.lineTo(0, 50);
ctx.lineTo(0, 0);
ctx.lineTo(10, 10);
ctx.lineTo(10, 40);
ctx.lineTo(40, 40);
ctx.lineTo(40, 10);
ctx.lineTo(10, 10);
ok(ctx.isPointInPath(5, 5) === true, "ctx.isPointInPath(5, 5) === true");
ok(ctx.isPointInPath(25, 5) === true, "ctx.isPointInPath(25, 5) === true");
ok(ctx.isPointInPath(45, 5) === true, "ctx.isPointInPath(45, 5) === true");
ok(ctx.isPointInPath(5, 25) === true, "ctx.isPointInPath(5, 25) === true");
ok(ctx.isPointInPath(25, 25) === false, "ctx.isPointInPath(25, 25) === false");
ok(ctx.isPointInPath(45, 25) === true, "ctx.isPointInPath(45, 25) === true");
ok(ctx.isPointInPath(5, 45) === true, "ctx.isPointInPath(5, 45) === true");
ok(ctx.isPointInPath(25, 45) === true, "ctx.isPointInPath(25, 45) === true");
ok(ctx.isPointInPath(45, 45) === true, "ctx.isPointInPath(45, 45) === true");
SimpleTest.finish();
});
</script>