Source code for BiblioPixelAnimations.matrix.pinwheel

from bibliopixel.animation.matrix import Matrix


[docs]class Pinwheel(Matrix): def __init__(self, layout, dir=True, **kwds): super().__init__(layout, **kwds) self._center = (self.width // 2, self.height // 2) self._dir = dir self._len = (self.width * 2) + (self.height * 2) - 2
[docs] def pre_run(self): self._step = 0
[docs] def step(self, amt): if self._dir: s = 255 - self._step else: s = self._step pos = 0 cX, cY = self._center for x in range(self.width): index = pos * 255 / self._len + s self.layout.drawLine(cX, cY, x, 0, self.palette(index)) pos += 1 for y in range(self.height): color = self.palette(pos * 255 / self._len + s) self.layout.drawLine(cX, cY, self.width - 1, y, color) pos += 1 for x in range(self.width - 1, -1, -1): color = self.palette(pos * 255 / self._len + s) self.layout.drawLine(cX, cY, x, self.height - 1, color) pos += 1 for y in range(self.height - 1, -1, -1): color = self.palette(pos * 255 / self._len + s) self.layout.drawLine(cX, cY, 0, y, color) pos += 1 self._step += amt if(self._step >= 255): self._step = 0