Skip to content

Commit

Permalink
Merge pull request #115 from tneish/horiz_animation
Browse files Browse the repository at this point in the history
ColorCycle accepts start color
  • Loading branch information
dhalbert authored Dec 27, 2023
2 parents 0f24be5 + cba51fb commit 35d8c01
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions adafruit_led_animation/animation/colorcycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)

0 comments on commit 35d8c01

Please sign in to comment.