| OLD | NEW |
| (Empty) |
| 1 description("Test the behavior of currentPath in Canvas"); | |
| 2 var c = document.createElement('canvas'); | |
| 3 document.body.appendChild(c); | |
| 4 var ctx = c.getContext('2d'); | |
| 5 | |
| 6 var testStrings = [ | |
| 7 "ctx.isPointInPath(49,49)", | |
| 8 "ctx.isPointInPath(99,99)", | |
| 9 "ctx.isPointInPath(149,149)", | |
| 10 "ctx.isPointInPath(199,199)", | |
| 11 "ctx.isPointInPath(249,249)" | |
| 12 ]; | |
| 13 | |
| 14 // Test collection of points. Each point has an offset of 50,50 to previous poin
t. | |
| 15 function testPointCollection(hitResults) { | |
| 16 for (var i = 0; i < hitResults.length; i++) { | |
| 17 if (hitResults[i]) | |
| 18 shouldBeTrue(testStrings[i]); | |
| 19 else | |
| 20 shouldBeFalse(testStrings[i]); | |
| 21 } | |
| 22 } | |
| 23 | |
| 24 document.body.appendChild(ctx.canvas); | |
| 25 | |
| 26 ctx.fillStyle = '#0f0'; | |
| 27 ctx.beginPath(); | |
| 28 | |
| 29 debug("Create path object, replace current context path with the path of this ob
ject."); | |
| 30 var p = new Path2D(); | |
| 31 p.rect(0,0,200,200); | |
| 32 testPointCollection([false, false, false, false, false]); | |
| 33 | |
| 34 ctx.currentPath = p; | |
| 35 | |
| 36 testPointCollection([true, true, true, true, false]); | |
| 37 debug(""); | |
| 38 | |
| 39 debug("Add new segment to context path and check that this is not added to the p
ath object (not live).") | |
| 40 | |
| 41 ctx.rect(50,50,200,200); | |
| 42 testPointCollection([true, true, true, true, true]); | |
| 43 | |
| 44 ctx.currentPath = p; | |
| 45 | |
| 46 testPointCollection([true, true, true, true, false]); | |
| 47 debug(""); | |
| 48 | |
| 49 debug("Test that path object can get applied to transformed context, respecting
the CTM."); | |
| 50 | |
| 51 ctx.beginPath(); | |
| 52 ctx.translate(100,100); | |
| 53 ctx.currentPath = p; | |
| 54 ctx.translate(-100,-100); | |
| 55 testPointCollection([false, false, true, true, true]); | |
| 56 | |
| 57 debug(""); | |
| 58 | |
| 59 debug("Test that currentPath returns a path object."); | |
| 60 p = null; | |
| 61 shouldBeNull("p"); | |
| 62 ctx.beginPath(); | |
| 63 ctx.rect(0,0,200,200); | |
| 64 p = ctx.currentPath; | |
| 65 shouldBeType("p", "Path2D"); | |
| 66 debug(""); | |
| 67 | |
| 68 debug("Create context path and test that it exists."); | |
| 69 testPointCollection([true, true, true, true, false]); | |
| 70 debug(""); | |
| 71 | |
| 72 debug("Clear context path."); | |
| 73 ctx.beginPath(); | |
| 74 testPointCollection([false, false, false, false, false]); | |
| 75 debug(""); | |
| 76 | |
| 77 debug("Apply stored (non-live) path object back to context."); | |
| 78 ctx.currentPath = p; | |
| 79 testPointCollection([true, true, true, true, false]); | |
| 80 debug(""); | |
| 81 | |
| 82 debug("Transform CTM in the process of adding segments to context path. Check th
at currentPath's path object archive these transformations."); | |
| 83 ctx.beginPath(); | |
| 84 ctx.rect(0,0,100,100); | |
| 85 ctx.translate(150,150); | |
| 86 ctx.rect(0,0,100,100); | |
| 87 ctx.translate(-150,-150); | |
| 88 testPointCollection([true, true, false, true, true]); | |
| 89 p = ctx.currentPath; | |
| 90 | |
| 91 debug("Clear current path on object and check that it is cleaned up."); | |
| 92 ctx.beginPath(); | |
| 93 testPointCollection([false, false, false, false, false]); | |
| 94 debug(""); | |
| 95 | |
| 96 debug("Apply path back to context path.") | |
| 97 ctx.currentPath = p; | |
| 98 testPointCollection([true, true, false, true, true]); | |
| OLD | NEW |