From da7484427cd14228fb12c8a16d84d3ce2149d471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20=C5=81ugowski?= Date: Mon, 3 May 2021 10:49:41 +0700 Subject: [PATCH 1/3] Fixed reverse mode for Comet / RainbowComet animation. --- adafruit_led_animation/animation/comet.py | 37 +++++++++++++++++++---- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/adafruit_led_animation/animation/comet.py b/adafruit_led_animation/animation/comet.py index cabb9f0..2ca273f 100644 --- a/adafruit_led_animation/animation/comet.py +++ b/adafruit_led_animation/animation/comet.py @@ -61,8 +61,8 @@ def __init__( tail_length = len(pixel_object) // 4 if bounce and ring: raise ValueError("Cannot combine bounce and ring mode") - self.reverse = reverse self.bounce = bounce + self._reverse = reverse self._initial_reverse = reverse self._tail_length = tail_length self._color_step = 0.95 / tail_length @@ -89,6 +89,33 @@ def _set_color(self, color): ) self._computed_color = color + @property + def reverse(self): + """ + Whether the animation is reversed + """ + return self._reverse + + @reverse.setter + def reverse(self, value): + self._reverse = value + self._direction = -1 if self._reverse else 1 + + @property + def ring(self): + """ + Ring mode. + """ + return self._ring + + @ring.setter + def ring(self, value): + if self.bounce and value: + raise ValueError("Cannot combine bounce and ring mode") + self._ring = value + self._left_side = 0 if value else -self._tail_length + self.reset() + def draw(self): colors = self._comet_colors if self.reverse: @@ -104,22 +131,20 @@ def draw(self): self._tail_start += self._direction - if self._tail_start < self._left_side or self._tail_start >= self._right_side: + if self._tail_start < self._left_side or (self._tail_start >= self._right_side and not self._reverse): if self.bounce: self.reverse = not self.reverse - self._direction = -self._direction elif self._ring: self._tail_start = self._tail_start % self._num_pixels else: self.reset() - if self.reverse == self._initial_reverse and self.draw_count > 0: - self.cycle_complete = True + + self.cycle_complete = True def reset(self): """ Resets to the first state. """ - self.reverse = self._initial_reverse if self.reverse: self._tail_start = self._num_pixels + self._tail_length + 1 else: From 50f73a532f7df95ab18f9d6a413e917f06fe1d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20=C5=81ugowski?= Date: Tue, 18 May 2021 11:51:24 +0700 Subject: [PATCH 2/3] pre-commit code reformat --- adafruit_led_animation/animation/comet.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adafruit_led_animation/animation/comet.py b/adafruit_led_animation/animation/comet.py index 2ca273f..7252c98 100644 --- a/adafruit_led_animation/animation/comet.py +++ b/adafruit_led_animation/animation/comet.py @@ -131,7 +131,9 @@ def draw(self): self._tail_start += self._direction - if self._tail_start < self._left_side or (self._tail_start >= self._right_side and not self._reverse): + if self._tail_start < self._left_side or ( + self._tail_start >= self._right_side and not self._reverse + ): if self.bounce: self.reverse = not self.reverse elif self._ring: From a18eb1134c42bff52e2bee15335b70c5350f64e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20=C5=81ugowski?= Date: Tue, 18 May 2021 12:01:57 +0700 Subject: [PATCH 3/3] pre-commit code reformat --- adafruit_led_animation/animation/comet.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adafruit_led_animation/animation/comet.py b/adafruit_led_animation/animation/comet.py index 2ca273f..7252c98 100644 --- a/adafruit_led_animation/animation/comet.py +++ b/adafruit_led_animation/animation/comet.py @@ -131,7 +131,9 @@ def draw(self): self._tail_start += self._direction - if self._tail_start < self._left_side or (self._tail_start >= self._right_side and not self._reverse): + if self._tail_start < self._left_side or ( + self._tail_start >= self._right_side and not self._reverse + ): if self.bounce: self.reverse = not self.reverse elif self._ring: