Skip to content

Commit 6ccf711

Browse files
committed
Merge pull request mozilla#1971 from yurydelendik/issue-1970
Using fast pixels copy in putBinaryImageData
2 parents 5408be2 + 55b3b00 commit 6ccf711

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/canvas.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,14 +1279,17 @@ function checkPutBinaryImageDataCompatibility() {
12791279
} catch (e) {
12801280
CanvasGraphics.prototype.putBinaryImageData =
12811281
function CanvasGraphicsPutBinaryImageDataShim(ctx, imgData, w, h) {
1282-
var tmpImgData = ctx.getImageData(0, 0, w, h);
1282+
var tmpImgData = 'createImageData' in ctx ? ctx.createImageData(w, h) :
1283+
ctx.getImageData(0, 0, w, h);
12831284

1284-
// Copy over the imageData pixel by pixel.
12851285
var tmpImgDataPixels = tmpImgData.data;
1286-
var len = tmpImgDataPixels.length;
1287-
1288-
while (len--) {
1289-
tmpImgDataPixels[len] = imgData.data[len];
1286+
var data = imgData.data;
1287+
if ('set' in tmpImgDataPixels)
1288+
tmpImgDataPixels.set(data);
1289+
else {
1290+
// Copy over the imageData pixel by pixel.
1291+
for (var i = 0, ii = tmpImgDataPixels.length; i < ii; i++)
1292+
tmpImgDataPixels[i] = data[i];
12901293
}
12911294

12921295
ctx.putImageData(tmpImgData, 0, 0);

0 commit comments

Comments
 (0)