'''
Simple PixelBuf wrapper for the IS31FL3731 controller used for the Keybow2040's RGB LEDs.
'''

import board

from adafruit_is31fl3731.keybow2040 import Keybow2040 as KeybowLeds
from adafruit_pixelbuf import PixelBuf


class Keybow2040Leds(PixelBuf):
    '''
    Minimal PixelBuf wrapper for the Keybow 2040's LED array.
    '''

    def __init__(self, size: int):
        self.leds = KeybowLeds(board.I2C())
        self._pixels = size
        super().__init__(size, byteorder='RGB')

    def _transmit(self, buffer):
        for pixel in range(self._pixels):
            r = buffer[pixel * 3 + 0]
            g = buffer[pixel * 3 + 1]
            b = buffer[pixel * 3 + 2]
            self.leds.pixelrgb(pixel // 4, pixel % 4, r, g, b)