summaryrefslogtreecommitdiff
path: root/lz.js
diff options
context:
space:
mode:
authorAric Stewart <aric@codeweavers.com>2012-10-09 10:34:25 -0500
committerJeremy White <jwhite@codeweavers.com>2012-10-11 17:32:55 -0500
commit468869812f3ca230b95cc05ddce686253804e579 (patch)
tree0a21aa0986c1d2e4849613a0cf370a134de42ab2 /lz.js
parent2e5ef9b93de8e769f3050171161b2e18dcb294e2 (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.js26
1 files changed, 17 insertions, 9 deletions
diff --git a/lz.js b/lz.js
index 2914c37..4292eac 100644
--- a/lz.js
+++ b/lz.js
@@ -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;
}