flickerstrip-py/flickerstrip_py/pattern.py

49 lines
1.2 KiB
Python

class PatternMeta:
def __init__(self, id, name, frames, pixels, flags, fps):
self.id = id
self.name = name
self.frames = frames
self.pixels = pixels
self.flags = flags
self.fps = fps
def to_json(self):
return {
"id": self.id, "name": self.name, "frames": self.frames,
"pixels": self.pixels, "flags": self.flags, "fps": self.fps
}
@classmethod
def from_json(cls, json):
return cls(
json["id"], json["name"], json["frames"],
json["pixels"], json["flags"], json["fps"]
)
class PatternBuilder:
def __init__(self, name, fps=1):
self.pixels = []
self.name = name
self.fps = fps
self.frame_count = 1
self.pixel_count = 0
self.frame_pixels = 0
def add_pixel(self, r, g, b):
if self.frame_count == 1:
self.pixel_count += 1
self.frame_pixels += 1
self.pixels += [r, g, b]
def next_frame(self):
self.frame_count += 1
self.frame_pixels = 0
def is_valid(self):
self.frame_pixels == self.pixel_count
def to_binary_string(self):
return ''.join([chr(item) for item in self.pixels])