49 lines
1.2 KiB
Python
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])
|