def extractState2(self, inStream): state = {} hasColorTransform = readU8(inStream) hasMasks = readU8(inStream) hasEffect = readU8(inStream) state['objectIdRef'] = readU32(inStream) state['zIndex'] = readS32(inStream) state['colorOffsets'] = {} state['colorMults'] = {'a' :readFloat(inStream)} state['affineTransform'] = readAffineTransform(inStream) if hasColorTransform: state['colorOffsets']['a'] = readFloat(inStream) state['colorMults']['r'] = readFloat(inStream) state['colorOffsets']['r'] = readFloat(inStream) state['colorMults']['g'] = readFloat(inStream) state['colorOffsets']['g'] = readFloat(inStream) state['colorMults']['b'] = readFloat(inStream) state['colorOffsets']['b'] = readFloat(inStream) else: state['colorOffsets']['a'] = 0 state['colorMults']['r'] = 1 state['colorOffsets']['r'] = 0 state['colorMults']['g'] = 1 state['colorOffsets']['g'] = 0 state['colorMults']['b'] = 1 state['colorOffsets']['b'] = 0 if hasEffect: state['effects'] = [] effects = readU8(inStream) for e in range(0, effects): filterType = readU32(inStream) filt = {'type' : 'none'} if filterType == self.GFT_Blur: filt['type'] = 'blur' filt['blurSize'] = readVec(inStream) elif filt == self.GFT_Glow: filt['type'] = 'glow' filt['color'] = readColor(inStream) filt['blurSize'] = readVec(inStream) filt['strength'] = readFloat(inStream) filt['innerGlow'] = bool(readU8(inStream)) filt['knockout'] = bool(readU8(inStream)) elif filt == self.GFT_DropShadow: filt['type'] = 'dropShadow' filt['color'] = readColor(inStream) filt['angle'] = readFloat(inStream) filt['distance'] = readFloat(inStream) filt['strength'] = readFloat(inStream) filt['innerShadow'] = readFloat(inStream) filt['knockout'] = readFloat(inStream) elif filt == self.GFT_ColorMatrix: filt['type'] = 'colorMatrix' matrix = [] for i in range(0, 4): for j in range(0, 4): matrix[j * 4 + i] = readFloat(inStream) matrix2[i] = readFloat(inStream) / 256 state['effects'].append(filt) if hasMasks: state['maskObjectIdRef'] = readU32(inStream) return state
def doParse(self, inStream, length, parent): self.data['fps'] = readU8(inStream) self.data['color'] = readColor(inStream) self.data['width'] = readU16(inStream) self.data['height'] = readU16(inStream)