Source code for BiblioPixelAnimations.matrix.AnalogClock

import time

from bibliopixel.animation.matrix import Matrix
from bibliopixel.util.util import pointOnCircle


[docs]class AnalogClock(Matrix): def __init__(self, layout, aa=True, **kwds): super().__init__(layout, **kwds) self._centerX = (self.width - 1) // 2 self._centerY = (self.height - 1) // 2 self.hand_length = min(self._centerX, self._centerY) self.aa = aa
[docs] def step(self, amt=1): self.layout.all_off() t = time.localtime() hrs = t.tm_hour % 12 mins = t.tm_min sec = t.tm_sec p_hrs = pointOnCircle(self._centerX, self._centerY, int(self.hand_length * 0.7), hrs * 30) p_min = pointOnCircle(self._centerX, self._centerY, self.hand_length, mins * 6) p_sec = pointOnCircle(self._centerX, self._centerY, self.hand_length, sec * 6) self.layout.drawLine(self._centerX, self._centerY, p_hrs[0], p_hrs[1], (255, 0, 0), aa=self.aa) self.layout.drawLine(self._centerX, self._centerY, p_min[0], p_min[1], (0, 255, 0), aa=self.aa) self.layout.drawLine(self._centerX, self._centerY, p_sec[0], p_sec[1], (0, 0, 255), aa=self.aa)
[docs]class RGBAnalogClock(Matrix): def __init__(self, layout, aa=True, **kwds): super().__init__(layout, **kwds) self._centerX = (self.width - 1) // 2 self._centerY = (self.height - 1) // 2 self.hand_length = min(self._centerX, self._centerY) self.aa = aa
[docs] def step(self, amt=1): self.layout.all_off() t = time.localtime() hrs = t.tm_hour % 12 mins = t.tm_min sec = t.tm_sec p_hrs = pointOnCircle(self._centerX, self._centerY, int(self.hand_length * 0.7), hrs * 30) p_min = pointOnCircle(self._centerX, self._centerY, self.hand_length, mins * 6) p_sec = pointOnCircle(self._centerX, self._centerY, self.hand_length, sec * 6) c_hrs = self.palette(hrs * (256 // 12)) c_min = self.palette(mins * (256 // 60)) c_sec = self.palette(sec * (256 // 60)) self.layout.drawLine(self._centerX, self._centerY, p_hrs[0], p_hrs[1], c_hrs, aa=self.aa) self.layout.drawLine(self._centerX, self._centerY, p_min[0], p_min[1], c_min, aa=self.aa) self.layout.drawLine(self._centerX, self._centerY, p_sec[0], p_sec[1], c_sec, aa=self.aa)