示例#1
0
	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
示例#2
0
	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)