Exemple #1
0
 def _prepare_frames(self):
     if self._frames_prepared:
         return
     tl = TrackLibrary()
     # TODO: We might want to do some cleverer sorting
     print("Sorting tracks by time...")
     tracks = [t for t in tl.sort_tracks_by_time() if t in self.tracks]
     print("Sorted")
     self.frames = []
     if self.timelapse_unit == "track":
         batchsize = self.units_per_frame
         # This splits a list into batches, ie
         # [1,2,3,4,5] -> [[1,2],[3,4],[5]]
         cumulative_tracks = []
         counter = 0
         print("Creating frames")
         startnums = xrange(0, len(tracks), batchsize)
         # The end number should be 1 more than might be expected,
         # because of the way python list slicing works
         batches = [(s, s + batchsize) for s in startnums]
         total = len(batches)
         for tracklist in (tracks[s:e] for (s, e) in batches):
             counter += 1
             if counter % 100 == 0 and total > 200:
                 print("\tCreated %s/%s frames" % (counter, total))
             cumulative_tracks.extend(tracklist)
             canvas = self._get_canvas(counter - 1)
             self.frames.append(Frame(canvas=canvas,
                                      tracks=deepcopy(cumulative_tracks),
                                      frame_number=counter-1))
     else:
         raise NotImplementedError("Don't know how to handle %s" %
                 self.timelapse_unit)
     self._frames_prepared = True