Chromium Code Reviews| 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-createPattern-fillRect-shadow.js"></script> | 4 <script> |
| 5 | |
| 6 // Create auxiliary canvas to draw to and create an image from. | |
| 7 // This is done instead of simply loading an image from the file system | |
| 8 // because that would throw a SECURITY_ERR DOM Exception. | |
| 9 var aCanvas = document.createElement('canvas'); | |
| 10 aCanvas.setAttribute('width', '200'); | |
| 11 aCanvas.setAttribute('height', '200'); | |
| 12 var aCtx = aCanvas.getContext('2d'); | |
| 13 | |
| 14 // Draw a circle on the same canvas. | |
| 15 aCtx.beginPath(); | |
| 16 aCtx.fillStyle = 'blue'; | |
| 17 aCtx.arc(100, 100, 100, 0, Math.PI*2, false); | |
| 18 aCtx.fill(); | |
| 19 | |
| 20 // Create the image object to be drawn on the master canvas. | |
| 21 var img = new Image(); | |
| 22 img.onload = drawImageToCanvasAndCheckPixels; | |
| 23 img.src = aCanvas.toDataURL(); // set a data URI of the base64 encoded image as the source | |
| 24 | |
| 25 // Create master canvas. | |
| 26 var canvas = document.createElement('canvas'); | |
| 27 document.body.appendChild(canvas); | |
| 28 canvas.setAttribute('width', '700'); | |
| 29 canvas.setAttribute('height', '1100'); | |
| 30 var ctx = canvas.getContext('2d'); | |
| 31 | |
| 32 function drawImageToCanvasAndCheckPixels() { | |
| 33 ctx.shadowOffsetX = 250; | |
| 34 ctx.fillStyle = ctx.createPattern(img, 'repeat'); | |
| 35 | |
| 36 ctx.shadowColor = 'rgba(255, 0, 0, 1.0)'; | |
| 37 ctx.fillRect(50, 50, 200, 200); | |
| 38 | |
| 39 ctx.shadowColor = 'rgba(255, 0, 0, 0.2)'; | |
| 40 ctx.fillRect(50, 300, 200, 200); | |
| 41 | |
| 42 ctx.shadowBlur = 10; | |
| 43 ctx.shadowColor = 'rgba(255, 0, 0, 1.0)'; | |
| 44 ctx.fillRect(50, 550, 200, 200); | |
| 45 | |
| 46 ctx.shadowColor = 'rgba(255, 0, 0, 0.2)'; | |
| 47 ctx.fillRect(50, 800, 200, 200); | |
| 48 | |
| 49 checkPixels(); | |
| 50 } | |
| 51 | |
| 52 function checkPixels() { | |
| 53 test(function(t) { | |
|
Justin Novosad
2017/02/08 18:23:33
The test hraness may terminate before this is reac
zakerinasab
2017/02/08 19:57:49
Done.
| |
| 54 var imageData, data; | |
| 55 | |
| 56 // Verify solid shadow. | |
| 57 imageData = ctx.getImageData(300, 50, 1, 1); | |
| 58 d = imageData.data; | |
| 59 assert_equals(d[0], 255); | |
| 60 assert_equals(d[1], 0); | |
| 61 assert_equals(d[2], 0); | |
| 62 assert_equals(d[3], 255); | |
| 63 | |
| 64 imageData = ctx.getImageData(300, 249, 1, 1); | |
| 65 d = imageData.data; | |
| 66 assert_equals(d[0], 255); | |
| 67 assert_equals(d[1], 0); | |
| 68 assert_equals(d[2], 0); | |
| 69 assert_equals(d[3], 255); | |
| 70 | |
| 71 imageData = ctx.getImageData(490, 240, 1, 1); | |
| 72 d = imageData.data; | |
| 73 assert_equals(d[0], 255); | |
| 74 assert_equals(d[1], 0); | |
| 75 assert_equals(d[2], 0); | |
| 76 assert_equals(d[3], 255); | |
| 77 | |
| 78 // Verify solid alpha shadow. | |
| 79 imageData = ctx.getImageData(310, 350, 1, 1); | |
| 80 d = imageData.data; | |
| 81 assert_equals(d[0], 255); | |
| 82 assert_equals(d[1], 0); | |
| 83 assert_equals(d[2], 0); | |
| 84 assert_approx_equals(d[3], 51, 10); | |
| 85 | |
| 86 imageData = ctx.getImageData(490, 490, 1, 1); | |
| 87 d = imageData.data; | |
| 88 assert_equals(d[0], 255); | |
| 89 assert_equals(d[1], 0); | |
| 90 assert_equals(d[2], 0); | |
| 91 assert_approx_equals(d[3], 51, 10); | |
| 92 | |
| 93 imageData = ctx.getImageData(300, 499, 1, 1); | |
| 94 d = imageData.data; | |
| 95 assert_equals(d[0], 255); | |
| 96 assert_equals(d[1], 0); | |
| 97 assert_equals(d[2], 0); | |
| 98 assert_approx_equals(d[3], 51, 10); | |
| 99 | |
| 100 // Verify blurry shadow. | |
| 101 imageData = ctx.getImageData(310, 550, 1, 1); | |
| 102 d = imageData.data; | |
| 103 assert_equals(d[0], 255); | |
| 104 assert_equals(d[1], 0); | |
| 105 assert_equals(d[2], 0); | |
| 106 assert_approx_equals(d[3], 141, 10); | |
| 107 | |
| 108 imageData = ctx.getImageData(490, 750, 1, 1); | |
| 109 d = imageData.data; | |
| 110 assert_equals(d[0], 255); | |
| 111 assert_equals(d[1], 0); | |
| 112 assert_equals(d[2], 0); | |
| 113 assert_approx_equals(d[3], 113, 10); | |
| 114 | |
| 115 imageData = ctx.getImageData(499, 499, 1, 1); | |
| 116 d = imageData.data; | |
| 117 assert_equals(d[0], 255); | |
| 118 assert_equals(d[1], 0); | |
| 119 assert_equals(d[2], 0); | |
| 120 assert_approx_equals(d[3], 51, 10); | |
| 121 | |
| 122 // Verify blurry alpha shadow. | |
| 123 imageData = ctx.getImageData(300, 850, 1, 1); | |
| 124 d = imageData.data; | |
| 125 assert_equals(d[0], 255); | |
| 126 assert_equals(d[1], 0); | |
| 127 assert_equals(d[2], 0); | |
| 128 assert_approx_equals(d[3], 29, 10); | |
| 129 | |
| 130 imageData = ctx.getImageData(500, 875, 1, 1); | |
| 131 d = imageData.data; | |
| 132 assert_equals(d[0], 255); | |
| 133 assert_equals(d[1], 0); | |
| 134 assert_equals(d[2], 0); | |
| 135 assert_approx_equals(d[3], 23, 10); | |
| 136 | |
| 137 imageData = ctx.getImageData(300, 900, 1, 1); | |
| 138 d = imageData.data; | |
| 139 assert_equals(d[0], 255); | |
| 140 assert_equals(d[1], 0); | |
| 141 assert_equals(d[2], 0); | |
| 142 assert_approx_equals(d[3], 29, 10); | |
| 143 }, "Ensure correct behavior of canvas with createPattern + fillRect with sha dow."); | |
| 144 } | |
| 145 | |
| 146 window.jsTestIsAsync = true; | |
|
Justin Novosad
2017/02/08 18:23:33
This is no longer relevant.
zakerinasab
2017/02/08 19:57:50
Done.
| |
| 147 </script> | |
| 8 </body> | 148 </body> |
| 9 </html> | |
| OLD | NEW |