| OLD | NEW |
| 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 1 <script src="../../resources/testharness.js"></script> |
| 2 <html> | 2 <script src="../../resources/testharnessreport.js"></script> |
| 3 <head> | |
| 4 <script src="../../resources/js-test.js"></script> | |
| 5 </head> | |
| 6 <body> | 3 <body> |
| 7 <script src="script-tests/canvas-drawImage-shadow.js"></script> | 4 <script> |
| 5 // Create auxiliary canvas to draw to and create an image from. |
| 6 // This is done instead of simply loading an image from the file system |
| 7 // because that would throw a SECURITY_ERR DOM Exception. |
| 8 var aCanvas = document.createElement('canvas'); |
| 9 aCanvas.setAttribute('width', '200'); |
| 10 aCanvas.setAttribute('height', '200'); |
| 11 var aCtx = aCanvas.getContext('2d'); |
| 12 |
| 13 // Draw a circle on the same canvas. |
| 14 aCtx.beginPath(); |
| 15 aCtx.fillStyle = 'green'; |
| 16 aCtx.arc(100, 100, 150, 0, -Math.PI/2, false); |
| 17 aCtx.fill(); |
| 18 |
| 19 // Create the image object to be drawn on the master canvas. |
| 20 var img = new Image(); |
| 21 img.onload = drawImageToCanvasAndCheckPixels; |
| 22 img.src = aCanvas.toDataURL(); // set a data URI of the base64 enconded image as
the source |
| 23 |
| 24 // Create master canvas. |
| 25 var canvas = document.createElement('canvas'); |
| 26 document.body.appendChild(canvas); |
| 27 canvas.setAttribute('width', '600'); |
| 28 canvas.setAttribute('height', '600'); |
| 29 var ctx = canvas.getContext('2d'); |
| 30 |
| 31 function drawImageToCanvasAndCheckPixels() { |
| 32 ctx.shadowOffsetX = 250; |
| 33 ctx.shadowColor = 'rgba(240, 50, 50, 1.0)'; |
| 34 ctx.drawImage(img, 50, 50); |
| 35 |
| 36 ctx.shadowOffsetX = 250; |
| 37 ctx.shadowBlur = 6; |
| 38 ctx.shadowColor = 'rgba(50, 50, 200, 0.9)'; |
| 39 ctx.shadowColor = 'rgba(0, 0, 255, 1.0)'; |
| 40 ctx.drawImage(img, 50, 300); |
| 41 |
| 42 checkPixels(); |
| 43 } |
| 44 |
| 45 function checkPixels() { |
| 46 test(function(t) { |
| 47 var imageData, data; |
| 48 |
| 49 // Verify solid shadow. |
| 50 imageData = ctx.getImageData(260, 300, 1, 1); |
| 51 d = imageData.data; |
| 52 assert_equals(d[0], 0); |
| 53 assert_equals(d[1], 0); |
| 54 assert_equals(d[2], 0); |
| 55 assert_equals(d[3], 0); |
| 56 |
| 57 imageData = ctx.getImageData(350, 100, 1, 1); |
| 58 d = imageData.data; |
| 59 assert_equals(d[0], 240); |
| 60 assert_equals(d[1], 50); |
| 61 assert_equals(d[2], 50); |
| 62 assert_equals(d[3], 255); |
| 63 |
| 64 imageData = ctx.getImageData(400, 200, 1, 1); |
| 65 d = imageData.data; |
| 66 assert_equals(d[0], 240); |
| 67 assert_equals(d[1], 50); |
| 68 assert_equals(d[2], 50); |
| 69 assert_equals(d[3], 255); |
| 70 |
| 71 imageData = ctx.getImageData(490, 65, 1, 1); |
| 72 d = imageData.data; |
| 73 assert_equals(d[0], 0); |
| 74 assert_equals(d[1], 0); |
| 75 assert_equals(d[2], 0); |
| 76 assert_equals(d[3], 0); |
| 77 |
| 78 imageData = ctx.getImageData(485, 65, 1, 1); |
| 79 d = imageData.data; |
| 80 assert_equals(d[0], 0); |
| 81 assert_equals(d[1], 0); |
| 82 assert_equals(d[2], 0); |
| 83 assert_equals(d[3], 0); |
| 84 |
| 85 // Verify blurry shadow. |
| 86 imageData = ctx.getImageData(260, 400, 1, 1); |
| 87 d = imageData.data; |
| 88 assert_equals(d[0], 0); |
| 89 assert_equals(d[1], 0); |
| 90 assert_equals(d[2], 0); |
| 91 assert_equals(d[3], 0); |
| 92 |
| 93 imageData = ctx.getImageData(350, 300, 1, 1); |
| 94 d = imageData.data; |
| 95 assert_equals(d[0], 0); |
| 96 assert_equals(d[1], 0); |
| 97 assert_equals(d[2], 255); |
| 98 assert_not_equals(d[3], 255); |
| 99 |
| 100 imageData = ctx.getImageData(300, 400, 1, 1); |
| 101 d = imageData.data; |
| 102 assert_equals(d[0], 0); |
| 103 assert_equals(d[1], 0); |
| 104 assert_equals(d[2], 255); |
| 105 assert_not_equals(d[3], 255); |
| 106 |
| 107 imageData = ctx.getImageData(300, 500, 1, 1); |
| 108 d = imageData.data; |
| 109 assert_equals(d[0], 0); |
| 110 assert_equals(d[1], 0); |
| 111 assert_equals(d[2], 255); |
| 112 assert_not_equals(d[3], 255); |
| 113 |
| 114 imageData = ctx.getImageData(400, 500, 1, 1); |
| 115 d = imageData.data; |
| 116 assert_equals(d[0], 0); |
| 117 assert_equals(d[1], 0); |
| 118 assert_equals(d[2], 255); |
| 119 assert_not_equals(d[3], 255); |
| 120 |
| 121 imageData = ctx.getImageData(400, 400, 1, 1); |
| 122 d = imageData.data; |
| 123 assert_equals(d[0], 0); |
| 124 assert_equals(d[1], 0); |
| 125 assert_equals(d[2], 255); |
| 126 |
| 127 imageData = ctx.getImageData(490, 315, 1, 1); |
| 128 d = imageData.data; |
| 129 assert_equals(d[0], 0); |
| 130 assert_equals(d[1], 0); |
| 131 assert_equals(d[2], 0); |
| 132 assert_equals(d[3], 0); |
| 133 |
| 134 imageData = ctx.getImageData(485, 320, 1, 1); |
| 135 d = imageData.data; |
| 136 assert_equals(d[0], 0); |
| 137 assert_equals(d[1], 0); |
| 138 assert_equals(d[2], 0); |
| 139 assert_equals(d[3], 0); |
| 140 |
| 141 }, "Ensure correct behavior of canvas with image shadow. A square with a cut
-out top-right corner should be displayed with solid shadow (top) and blur shado
w (bottom)."); |
| 142 } |
| 143 </script> |
| 8 </body> | 144 </body> |
| 9 </html> | |
| OLD | NEW |