Test case details

Preparation Code

<canvas id="canvas" height="600" width="600"> </canvas>
var canvas = document.getElementById('canvas');     var canvasWidth = canvas.width;     var canvasHeight = canvas.height;     var ctx = canvas.getContext('2d');     var imageData = ctx.getImageData(0, 0, canvasWidth, canvasHeight);         var data = imageData.data;         var buf = new ArrayBuffer(imageData.data.length);     var buf8 = new Uint8ClampedArray(buf);     var data32 = new Uint32Array(buf);
    ctx.putImageData(imageData, 0, 0);

Test cases

Test #1

for (var y = 0; y < canvasHeight; ++y) {   for (var x = 0; x < canvasWidth; ++x) {     var value = x * y & 0xff;     data32[y * canvasWidth + x] = (255 << 24) | // alpha     (value << 16) | // blue     (value << 8) | // green     value; // red   } } imageData.data.set(buf8); ctx.putImageData(imageData, 0, 0);

Test #2

var index = 0; for (var y = 0; y < canvasHeight; ++y) {   for (var x = 0; x < canvasWidth; ++x) {     var value = x * y & 0xff;     data32[index++] = (255 << 24) | // alpha     (value << 16) | // blue     (y << 8) | // green     x; // red   } } imageData.data.set(buf8); ctx.putImageData(imageData, 0, 0);

Test #3

var ch = canvasHeight-1; var cw = canvasWidth-1; var index = 0; for (var y = 1; y < ch; ++y) {   for (var x = 1; x < cw; ++x) {     var value = x * y & 0xff;     data32[index++] = (255 << 24) | // alpha     (value << 16) | // blue     (value << 8) | // green     value; // red   } } imageData.data.set(buf8); ctx.putImageData(imageData, 0, 0);