def format_area(self, area, bitstream): modules = [] for module in area.modules: try: if not len(module.params): continue modules.append(module) except: pass modules.sort(lambda a, b: cmp(a.index, b.index)) write_bits = bitstream.write_bits mlen = len(modules) bitstream.write_bitsa([2, 8], [area.index, mlen]) if mlen == 0: write_bits(8, 0) return bitstream.tell_bit() write_bits(8, NVARIATIONS) for module in modules: write_bits(8, module.index) params = module.params write_bits(7, len(params)) for variation in xrange(NVARIATIONS): write_bits(8, variation) for param in params: write_bits(7, param.variations[variation])
def format_area(self, area, bitstream): # collect all modules with parameters that have labels modules = [] for module in area.modules: if hasattr(module, 'params'): for param in module.params: if hasattr(param, 'labels'): modules.append(module) break elif hasattr(module, 'editmodes'): modules.append(module) bitstream.write_bitsa([2, 8], [area.index, len(modules)]) for module in modules: self.format_module(module, bitstream) return bitstream.tell_bit()