| OLD | NEW |
| (Empty) |
| 1 description("Series of tests for Canvas.isPointInPath"); | |
| 2 | |
| 3 ctx = document.getElementById("canvas").getContext("2d"); | |
| 4 ctx.save(); | |
| 5 debug("Rectangle at (0,0) 20x20"); | |
| 6 ctx.rect(0, 0, 20, 20); | |
| 7 shouldBe("ctx.isPointInPath(5, 5)", "true"); | |
| 8 shouldBe("ctx.isPointInPath(10, 10)", "true"); | |
| 9 shouldBe("ctx.isPointInPath(19, 19)", "true"); | |
| 10 shouldBe("ctx.isPointInPath(30, 30)", "false"); | |
| 11 shouldBe("ctx.isPointInPath(-1, 10)", "false"); | |
| 12 shouldBe("ctx.isPointInPath(10, -1)", "false"); | |
| 13 debug("Translate context (10,10)"); | |
| 14 ctx.translate(10,10); | |
| 15 shouldBe("ctx.isPointInPath(5, 5)", "true"); | |
| 16 shouldBe("ctx.isPointInPath(10, 10)", "true"); | |
| 17 shouldBe("ctx.isPointInPath(19, 19)", "true"); | |
| 18 shouldBe("ctx.isPointInPath(30, 30)", "false"); | |
| 19 shouldBe("ctx.isPointInPath(-1, 10)", "false"); | |
| 20 shouldBe("ctx.isPointInPath(10, -1)", "false"); | |
| 21 debug("Collapse ctm to non-invertible matrix"); | |
| 22 ctx.scale(0,0); | |
| 23 shouldBe("ctx.isPointInPath(5, 5)", "false"); | |
| 24 shouldBe("ctx.isPointInPath(10, 10)", "false"); | |
| 25 shouldBe("ctx.isPointInPath(20, 20)", "false"); | |
| 26 shouldBe("ctx.isPointInPath(30, 30)", "false"); | |
| 27 shouldBe("ctx.isPointInPath(-1, 10)", "false"); | |
| 28 shouldBe("ctx.isPointInPath(10, -1)", "false"); | |
| 29 debug("Resetting context to a clean state"); | |
| 30 ctx.restore(); | |
| 31 | |
| 32 ctx.save(); | |
| 33 ctx.beginPath(); | |
| 34 debug("Translate context (10,10)"); | |
| 35 ctx.translate(10,10); | |
| 36 debug("Rectangle at (0,0) 20x20"); | |
| 37 ctx.rect(0, 0, 20, 20); | |
| 38 shouldBe("ctx.isPointInPath(5, 5)", "false"); | |
| 39 shouldBe("ctx.isPointInPath(10, 10)", "true"); | |
| 40 shouldBe("ctx.isPointInPath(20, 20)", "true"); | |
| 41 shouldBe("ctx.isPointInPath(29, 29)", "true"); | |
| 42 shouldBe("ctx.isPointInPath(-1, 10)", "false"); | |
| 43 shouldBe("ctx.isPointInPath(10, -1)", "false"); | |
| 44 ctx.restore(); | |
| 45 | |
| 46 ctx.save(); | |
| 47 ctx.beginPath(); | |
| 48 debug("Translate context (10,20)"); | |
| 49 ctx.translate(10,20); | |
| 50 debug("Transform context (1, 0, 0, -1, 0, 0)"); | |
| 51 ctx.transform(1, 0, 0, -1, 0, 0); | |
| 52 debug("Rectangle at (0,0) 20x20"); | |
| 53 ctx.rect(0, 0, 20, 20); | |
| 54 // After the flip, rect is actually 10, 0, 20, 20 | |
| 55 shouldBe("ctx.isPointInPath(5, 5)", "false"); | |
| 56 shouldBe("ctx.isPointInPath(10, 0)", "true"); | |
| 57 shouldBe("ctx.isPointInPath(29, 0)", "true"); | |
| 58 shouldBe("ctx.isPointInPath(10, 19)", "true"); | |
| 59 shouldBe("ctx.isPointInPath(21, 10)", "true"); | |
| 60 shouldBe("ctx.isPointInPath(29, 19)", "true"); | |
| 61 ctx.strokeStyle = 'green'; | |
| 62 ctx.stroke(); | |
| 63 ctx.restore(); | |
| OLD | NEW |