diff options
author | Aric Stewart <aric@codeweavers.com> | 2012-10-09 10:34:25 -0500 |
---|---|---|
committer | Jeremy White <jwhite@codeweavers.com> | 2012-10-11 17:32:55 -0500 |
commit | 468869812f3ca230b95cc05ddce686253804e579 (patch) | |
tree | 0a21aa0986c1d2e4849613a0cf370a134de42ab2 /lz.js | |
parent | 2e5ef9b93de8e769f3050171161b2e18dcb294e2 (diff) |
support decompressing LZ_IMAGE_TYPE_XXXA images
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Diffstat (limited to 'lz.js')
-rw-r--r-- | lz.js | 26 |
1 files changed, 17 insertions, 9 deletions
@@ -141,18 +141,26 @@ function lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha) return encoder - 1; } -function convert_spice_lz_rgb_to_web(context, lz_rgb) +function convert_spice_lz_to_web(context, lz_image) { - var u8 = new Uint8Array(lz_rgb.data); var at; - if (lz_rgb.type != LZ_IMAGE_TYPE_RGB32 && lz_rgb.type != LZ_IMAGE_TYPE_RGBA) - return undefined; - - var ret = context.createImageData(lz_rgb.width, lz_rgb.height); + if (lz_image.type === LZ_IMAGE_TYPE_RGB32 || lz_image.type === LZ_IMAGE_TYPE_RGBA) + { + var u8 = new Uint8Array(lz_image.data); + var ret = context.createImageData(lz_image.width, lz_image.height); - at = lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGB32, lz_rgb.type != LZ_IMAGE_TYPE_RGBA); - if (lz_rgb.type == LZ_IMAGE_TYPE_RGBA) - lz_rgb32_decompress(u8, at, ret.data, LZ_IMAGE_TYPE_RGBA, false); + at = lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGB32, lz_image.type != LZ_IMAGE_TYPE_RGBA); + if (lz_image.type == LZ_IMAGE_TYPE_RGBA) + lz_rgb32_decompress(u8, at, ret.data, LZ_IMAGE_TYPE_RGBA, false); + } + else if (lz_image.type === LZ_IMAGE_TYPE_XXXA) + { + var u8 = new Uint8Array(lz_image.data); + var ret = context.createImageData(lz_image.width, lz_image.height); + lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGBA, false); + } + else + return undefined; return ret; } |