Source code for bibliopixel.animation.feedback

import copy
from . wrapper import Wrapper
from .. util import color_list


[docs]class Feedback(Wrapper): def __init__(self, *args, animation, master=1, inputs=None, outputs=None, **kwds): super().__init__(*args, animation=animation, **kwds) self.master = master inputs = inputs or [0] outputs = outputs or [] in_sources = [copy.deepcopy(self.color_list) for i in inputs[1:]] in_sources.insert(self.animation.color_list) out_sources = [copy.deepcopy(self.color_list) for i in outputs] self.inputs = color_list.Mixer(self.color_list, in_sources, inputs) self.outputs = color_list.Mixer(self.color_list, out_sources, outputs) self.clear = self.inputs.clear self.math = self.inputs.math
[docs] def step(self, amt=1): super().step(amt=amt) self.clear() self.inputs.mix(self.master) self.outputs.mix(self.master) def rotate(sources, begin): if len(sources) > 1 + begin: sources.insert(begin, sources.pop()) ins, outs = self.inputs.sources, self.outputs.sources rotate(ins, 1) rotate(outs, 0) if len(ins) > 1: self.math.copy(ins[1], ins[0]) if len(outs) > 0: self.math.copy(outs[0], self.color_list)