class Regions(object): _pixelsEnabled: [] = [] _regions: [] = [] def __init__(self, strip_length: int, splitters: []): self._length: int = strip_length start_pixel = 0 for i in splitters: if i > self._length: raise ValueError('splitter out of bounds, you idiot') self._regions.append([start_pixel, i + 1, True]) start_pixel = i + 1 self._regions.append([start_pixel, self._length, True]) for i in range(self._length): self._pixelsEnabled.append(True) def region_switch(self, region_id: int, enabled: bool): pixel_region = self._regions[region_id] for i in range(pixel_region[0], pixel_region[1]): self._pixelsEnabled[i] = enabled self._regions[region_id][2] = enabled def is_pixel_enabled(self, pixel_id: int): return self._pixelsEnabled[pixel_id] def switch_region(self, region_id: int): status: bool = self._regions[region_id][2] self.region_switch(region_id, not status) def list_region_ids(self): result = [] for i in range(len(self._regions)): result.append(i) return result