4 <title>Canvas Hit Regions: fillRule test</title>
5 <script src="../../resources/js-test.js"></script>
8 <canvas id="canvas" width="400" height="400">
12 var canvas = document.getElementById("canvas");
13 var context = canvas.getContext("2d");
15 function clickCanvas(x, y)
17 if (!window.eventSender)
18 return "This test requires eventSender";
21 function listener(event)
23 result = event.region;
26 var rect = canvas.getBoundingClientRect();
27 canvas.addEventListener("click", listener, false);
28 eventSender.mouseMoveTo(rect.left + x, rect.top + y);
29 eventSender.mouseDown();
30 eventSender.mouseUp();
31 canvas.removeEventListener("click", listener, false);
36 context.rect(20, 20, 60, 60);
37 context.rect(0, 0, 100, 100);
38 context.addHitRegion({
43 debug("default fillRule(nonzero):");
44 shouldBe("clickCanvas(1, 1)", "'nonzero'");
45 shouldBe("clickCanvas(99, 98)", "'nonzero'");
46 shouldBe("clickCanvas(21, 21)", "'nonzero'");
47 shouldBe("clickCanvas(50, 50)", "'nonzero'");
50 context.removeHitRegion("nonzero");
52 context.addHitRegion({
57 debug("fillRule = evenodd:");
58 shouldBe("clickCanvas(1, 1)", "'evenodd'");
59 shouldBe("clickCanvas(99, 98)", "'evenodd'");
60 shouldBe("clickCanvas(21, 21)", "null");
61 shouldBe("clickCanvas(50, 50)", "null");
64 context.removeHitRegion("evenodd");
66 context.addHitRegion({
71 debug("fillRule = nonzero:");
72 shouldBe("clickCanvas(1, 1)", "'nonzero'");
73 shouldBe("clickCanvas(99, 98)", "'nonzero'");
74 shouldBe("clickCanvas(21, 21)", "'nonzero'");
75 shouldBe("clickCanvas(50, 50)", "'nonzero'");
78 context.removeHitRegion("nonzero");
80 context.addHitRegion({
85 debug("fillRule = null, falls back to default (nonzero):");
86 shouldBe("clickCanvas(1, 1)", "'nonzero'");
87 shouldBe("clickCanvas(99, 98)", "'nonzero'");
88 shouldBe("clickCanvas(21, 21)", "'nonzero'");
89 shouldBe("clickCanvas(50, 50)", "'nonzero'");
92 context.removeHitRegion("nonzero");
94 context.addHitRegion({
99 debug("fillRule = undefined, falls back to default (nonzero):");
100 shouldBe("clickCanvas(1, 1)", "'nonzero'");
101 shouldBe("clickCanvas(99, 98)", "'nonzero'");
102 shouldBe("clickCanvas(21, 21)", "'nonzero'");
103 shouldBe("clickCanvas(50, 50)", "'nonzero'");