def __init__(self, parser, animations): Arbapp.__init__(self, parser) config = animations[self.args.type] self.durations = [int(config['dur_min']*config['rate']), int(config['dur_max']*config['rate'])] self.rate = Rate(config['rate']) if config['colors'][-1]!=config['colors'][0]: config['colors'].append(config['colors'][0]) self.colors = config['colors'] self.generator = self.generators[config['generator_id']] self.brightness = Brightness(2, True) self.brightness.start()
class ColorDemo(Arbapp): generators = [gen_random_flashing, gen_sweep_async, gen_sweep_rand, ] def __init__(self, parser, animations): Arbapp.__init__(self, parser) config = animations[self.args.type] self.durations = [int(config['dur_min']*config['rate']), int(config['dur_max']*config['rate'])] self.rate = Rate(config['rate']) if config['colors'][-1]!=config['colors'][0]: config['colors'].append(config['colors'][0]) self.colors = config['colors'] self.generator = self.generators[config['generator_id']] self.brightness = Brightness(2, True) self.brightness.start() def run(self): # Construct all pixel generators generators = [[None for w in range(self.width)] for h in range(self.height)] for h in range(self.height): for w in range(self.width): duration = random.randrange(0, self.durations[1]-self.durations[0]) generators[h][w] = self.generator(self.durations[0], int(2./self.rate.sleep_dur), duration, self.colors) # Browse all pixel generators at each time while True: brightness = self.brightness.brightness with self.model: for h in range(self.height): for w in range(self.width): try: color = generators[h][w].next() except StopIteration: pass else: self.model.set_pixel(h, w, color*brightness) self.rate.sleep()