def str_to_xsheet(self, ani_data): """ Update FrameList from animation data. """ data = json.loads(ani_data) # first check if it's in the legacy non-descriptive JSON or new XDNA format if type(data) is dict and data['XDNA']: print 'Loading using new file format' x = self.xdna # right now we only have one animatable layer, hence the first item raster_frames = data['xsheet']['raster_frame_lists'][0] self.frames = FrameList(len(raster_frames), self.opacities) self.framerate = data['xsheet']['framerate'] self.cleared = True for i, d in enumerate(raster_frames): if d['idx'] is not None: #cel = self.doc.layers[d['idx']] - this line exceptions with some files if the first frame is a key # cels appear to be numbered from # 0 in memory, but from 1 on disk... cel = self.doc.layers[d['idx']-1] else: cel = None self.frames[i].is_key = d['is_key'] self.frames[i].description = d['description'] self.frames[i].cel = cel logger.info("loading cel #" + str(i)) else: # load in legacy style print 'Loading using old format' self.using_legacy = True self.frames = FrameList(len(data), self.opacities) self.cleared = True for i, d in enumerate(data): is_key, description, layer_idx = d if layer_idx is not None: cel = self.doc.layers[layer_idx] else: cel = None self.frames[i].is_key = is_key self.frames[i].description = description self.frames[i].cel = cel
def clear_xsheet(self, init=False): self.frames = FrameList(24, self.opacities) self.cleared = True