Merge pull request #115 from tneish/horiz_animation

ColorCycle accepts start color
This commit is contained in:
Dan Halbert 2023-12-27 16:43:47 -05:00 committed by GitHub
commit 35d8c011b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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 @@ class ColorCycle(Animation):
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)