1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
"""
SPICE compression and decompression implementation.
we have our own lz implementation, see spice/common/lz_common.h
"""
import struct
from util import reverse_dict
LZ_MAGIC = struct.unpack('<I', "LZ ")[0]
LZ_MAJOR = 1
LZ_MINOR = 1
LzImageType = (LZ_IMAGE_TYPE_INVALID,
LZ_IMAGE_TYPE_PLT1_LE,
LZ_IMAGE_TYPE_PLT1_BE, # PLT stands for palette
LZ_IMAGE_TYPE_PLT4_LE,
LZ_IMAGE_TYPE_PLT4_BE,
LZ_IMAGE_TYPE_PLT8,
LZ_IMAGE_TYPE_RGB16,
LZ_IMAGE_TYPE_RGB24,
LZ_IMAGE_TYPE_RGB32,
LZ_IMAGE_TYPE_RGBA,
LZ_IMAGE_TYPE_XXXA) = xrange(11)
LzImageType = dict([(k, locals()[k]) for k in locals().keys() if k.startswith('LZ_IMAGE_TYPE')])
LzImageTypeRev = reverse_dict(LzImageType)
def lz_decompress(s):
(magic, major, minor,
type, width, height, stride, out_top_down
) = struct.unpack_from('>IHHIIIII', s)
assert(magic == LZ_MAGIC)
assert(major == LZ_MAJOR)
assert(minor == LZ_MINOR)
del s
return locals()
|