Source code for bibliopixel.layout.cube

import math, threading, time

from .. util import log
from .. colors import conversions
from . import font
from . layout import Layout
from . geometry.cube import make_cube_coord_map, make_cube_coord_map_positions


[docs]class Cube(Layout): CLONE_ATTRS = Layout.CLONE_ATTRS + ('x', 'y', 'z') def __init__(self, drivers, x, y, z, coord_map=None, threadedUpdate=False, brightness=255, **kwargs): super().__init__(drivers, threadedUpdate, brightness, **kwargs) self.x = x self.y = y self.z = z if self.x * self.y * self.z != self.numLEDs: raise TypeError("(x * y * z) MUST equal the total pixel count!") if coord_map: self.coord_map = coord_map else: if len(self.drivers) == 1: self.coord_map = make_cube_coord_map(x, y, z) else: raise TypeError( "Must provide coord_map if using multiple drivers!") self.set_pixel_positions(make_cube_coord_map_positions(self.coord_map))
[docs] def get_pixel_positions(self): return make_cube_coord_map_positions(self.coord_map)
@property def shape(self): """Returns ``x, y, z``""" return self.x, self.y, self.z
[docs] def set(self, x, y, z, color): try: pixel = self.coord_map[z][y][x] self._set_base(pixel, color) except IndexError: pass
[docs] def get(self, x, y, z): try: pixel = self.coord_map[z][y][x] return self._get_base(pixel) except IndexError: return 0, 0, 0
[docs] def setHSV(self, x, y, z, hsv): color = conversions.hsv2rgb(hsv) self._set(x, y, z, color)
[docs] def setRGB(self, x, y, z, r, g, b): color = (r, g, b) self._set(x, y, z, color)
from .. util import deprecated if deprecated.allowed(): # pragma: no cover LEDCube = Cube