| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <script src="../../resources/testharness.js"></script> |
| 2 <title>putImageData(getImageData) pair test</title> | 2 <script src="../../resources/testharnessreport.js"></script> |
| 3 <body class="show_output"> | 3 |
| 4 <h3>Test that putImageData(getImageData) pair leaves canvas ImageData the same.<
/h3> | |
| 5 <canvas id="c" class="output" width="64" height="64"><p class="fallback">FAIL (f
allback content)</p></canvas> | |
| 6 <br> | |
| 7 Result: <a id="result"></a> | |
| 8 <script> | 4 <script> |
| 9 if (window.testRunner) | 5 var canvas = document.createElement('canvas'); |
| 10 testRunner.dumpAsText(); | 6 var ctx = canvas.getContext('2d'); |
| 11 | 7 |
| 12 var canvas = document.getElementById("c"); | 8 function getPutImageData(numIters, ctx, rgba) { |
| 13 var ctx = canvas.getContext("2d"); | |
| 14 var passed = getPutImageData(50, ctx, 0, 0, 0, 0.0); | |
| 15 passed |= getPutImageData(50, ctx, 0, 0, 0, 0.5); | |
| 16 passed |= getPutImageData(50, ctx, 0, 0, 0, 1.0); | |
| 17 passed |= getPutImageData(50, ctx, 127, 128, 129, 0.49); | |
| 18 passed |= getPutImageData(50, ctx, 127, 128, 129, 0.51); | |
| 19 passed |= getPutImageData(50, ctx, 127, 128, 129, 0.5); | |
| 20 passed |= getPutImageData(50, ctx, 128, 128, 128, 0.0); | |
| 21 passed |= getPutImageData(50, ctx, 128, 128, 128, 0.5); | |
| 22 passed |= getPutImageData(50, ctx, 128, 128, 128, 1.0); | |
| 23 | |
| 24 var result_a = document.getElementById("result"); | |
| 25 if (!passed) | |
| 26 result_a.innerHTML = "FAIL"; | |
| 27 else | |
| 28 result_a.innerHTML = "PASS"; | |
| 29 | |
| 30 function getPutImageData(numIters, ctx, r, g, b, a) { | |
| 31 var x = 0, y = 0, w = ctx.canvas.width, h = ctx.canvas.height; | 9 var x = 0, y = 0, w = ctx.canvas.width, h = ctx.canvas.height; |
| 32 | 10 |
| 33 // Paint the canvas green to start | 11 // Paint the canvas green to start |
| 34 ctx.fillStyle = color; | 12 ctx.fillStyle = color; |
| 35 ctx.fillRect(x,y,w,h); | 13 ctx.fillRect(x,y,w,h); |
| 36 | 14 |
| 37 // Now paint the canvas a random hue of gray | 15 // Now paint the canvas a random hue of gray |
| 38 var color = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; | 16 var color = 'rgba(' + rgba + ')'; |
| 39 ctx.fillStyle = color; | 17 ctx.fillStyle = color; |
| 40 ctx.fillRect(x,y,w,h); | 18 ctx.fillRect(x,y,w,h); |
| 41 | 19 |
| 42 // Get the current "original" image data | 20 // Get the current "original" image data |
| 43 var origImageData = ctx.getImageData(x, y, w, h); | 21 var origImageData = ctx.getImageData(x, y, w, h); |
| 44 ctx.putImageData(origImageData, x, y); | 22 ctx.putImageData(origImageData, x, y); |
| 45 | 23 |
| 46 // Get and put the image data 'numIters' times | 24 // Get and put the image data 'numIters' times |
| 47 for(var i = 0; i < numIters; i++) | 25 for(var i = 0; i < numIters; i++) |
| 48 ctx.putImageData(ctx.getImageData(x,y,w,h), x,y); | 26 ctx.putImageData(ctx.getImageData(x, y, w, h), x,y); |
| 49 | 27 |
| 50 // Grab new current image data | 28 // Grab new current image data |
| 51 var currImageData = ctx.getImageData(x, y, w, h); | 29 var currImageData = ctx.getImageData(x, y, w, h); |
| 52 | 30 |
| 53 // Verify that original and new current image datas are equal | 31 // Verify that original and new current image datas are equal |
| 54 for(var i = 0; i < currImageData.data.length; i++) { | 32 var dataMatch = true; |
| 55 var origSubpixel = origImageData.data[i]; | 33 for(var i = 0; i < currImageData.data.length; i++) |
| 56 var currSubpixel = currImageData.data[i]; | 34 if (origImageData.data[i] != currImageData.data[i]) { |
| 35 dataMatch = false; |
| 36 break; |
| 37 } |
| 38 assert_true(dataMatch); |
| 39 } |
| 57 | 40 |
| 58 // If even 1 subpixel is off, return failure | 41 var testScenarios = [ |
| 59 if (origSubpixel != currSubpixel) | 42 ['GetPutImageDataTestCase ', 50, ctx, '0, 0, 0, 0.0'], |
| 60 return false; | 43 ['GetPutImageDataTestCase ', 50, ctx, '0, 0, 0, 0.5'], |
| 61 } | 44 ['GetPutImageDataTestCase ', 50, ctx, '0, 0, 0, 1.0'], |
| 62 return true; | 45 ['GetPutImageDataTestCase ', 50, ctx, '127, 128, 129, 0.49'], |
| 63 } | 46 ['GetPutImageDataTestCase ', 50, ctx, '127, 128, 129, 0.51'], |
| 64 </script> | 47 ['GetPutImageDataTestCase ', 50, ctx, '127, 128, 129, 0.5'], |
| 48 ['GetPutImageDataTestCase ', 50, ctx, '128, 128, 128, 0.0'], |
| 49 ['GetPutImageDataTestCase ', 50, ctx, '128, 128, 128, 0.5'], |
| 50 ['GetPutImageDataTestCase ', 50, ctx, '128, 128, 128, 1.0'], |
| 51 ]; |
| 52 |
| 53 generate_tests(getPutImageData, testScenarios); |
| 54 |
| 55 </script> |
| OLD | NEW |