diff --git a/adafruit_led_animation/animation/colorcycle.py b/adafruit_led_animation/animation/colorcycle.py index 5f27954..41bff44 100644 --- a/adafruit_led_animation/animation/colorcycle.py +++ b/adafruit_led_animation/animation/colorcycle.py @@ -38,12 +38,15 @@ class ColorCycle(Animation): :param float speed: Animation speed in seconds, e.g. ``0.1``. :param colors: A list of colors to cycle through in ``(r, g, b)`` tuple, or ``0x000000`` hex format. Defaults to a rainbow color cycle. + :param start_color: An index (from 0) for which color to start from. Default 0 (first color). """ - def __init__(self, pixel_object, speed, colors=RAINBOW, name=None): + # pylint: disable=too-many-arguments + def __init__(self, pixel_object, speed, colors=RAINBOW, name=None, start_color=0): self.colors = colors - super().__init__(pixel_object, speed, colors[0], name=name) - self._generator = self._color_generator() + self.start_color = start_color + super().__init__(pixel_object, speed, colors[start_color], name=name) + self._generator = self._color_generator(start_color) next(self._generator) on_cycle_complete_supported = True @@ -52,17 +55,17 @@ def draw(self): self.pixel_object.fill(self.color) next(self._generator) - def _color_generator(self): - index = 0 + def _color_generator(self, start_color): + index = start_color while True: self._color = self.colors[index] yield index = (index + 1) % len(self.colors) - if index == 0: + if index == start_color: self.cycle_complete = True def reset(self): """ Resets to the first color. """ - self._generator = self._color_generator() + self._generator = self._color_generator(self.start_color)