Special-case 24-bit RGB image-handling.

This commit is contained in:
Nicholas Nethercote 2014-02-24 19:37:19 -08:00
parent f11a6ae238
commit f62c1c469f
3 changed files with 51 additions and 23 deletions

View file

@ -526,6 +526,22 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
ctx.putImageData(chunkImgData, 0, i * fullChunkHeight);
}
} else if (imgData.kind === 'rgb_24bpp') {
// RGB, 24-bits per pixel.
for (var i = 0; i < totalChunks; i++) {
var thisChunkHeight =
(i < fullChunks) ? fullChunkHeight : partialChunkHeight;
var elemsInThisChunk = imgData.width * thisChunkHeight * 3;
var destPos = 0;
for (var j = 0; j < elemsInThisChunk; j += 3) {
chunkImgData.data[destPos++] = imgData.data[srcPos++];
chunkImgData.data[destPos++] = imgData.data[srcPos++];
chunkImgData.data[destPos++] = imgData.data[srcPos++];
chunkImgData.data[destPos++] = 255;
}
ctx.putImageData(chunkImgData, 0, i * fullChunkHeight);
}
} else {
error('bad image kind: ' + imgData.kind);
}