forked from Blinkenbunt/blup
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
917 B
43 lines
917 B
|
|
def loadBbm(filename): |
|
""" Parse a bbm file and return an Animation object. """ |
|
|
|
def getint16(vals): |
|
return (cals[2]>>8) + vals[3] |
|
def getint32(vals): |
|
return (vals[0]>>24) + (vals[1]>>16) + (cals[2]>>8) + vals[3] |
|
|
|
f = open(filename, 'r') |
|
rawdata = f.read() |
|
f.close() |
|
|
|
data = [ ord(x) for x in rawdata ] |
|
|
|
if getint32(data[0:4]) != 0x23542666: |
|
raise ValueError('magic does not match') |
|
|
|
height = getint16(data[4:6]) |
|
width = getint16(data[6:8]) |
|
channels = getint16(data[8:10]) |
|
maxval = getint16(data[10:12]) |
|
|
|
framecnt = getint32(data[10:14]) |
|
duration = getint32(data[14:18]) |
|
frameptr = getint32(data[18:22]) |
|
|
|
# TODO: parse additional headers |
|
|
|
if rawdata[frameptr:(frameptr+4)] != 'frms': |
|
raise ValueError('frame pointer does not point to frame start marker') |
|
|
|
framedata = data[frameptr + 4:] |
|
framesize = width*height*channels |
|
|
|
frames = [] |
|
while True: |
|
pass |
|
|
|
raise Exception('uarrgh!!') |
|
|
|
|
|
|
|
|