from machine import Pin
from ws2812 import ws2812
from graphics import *


class matrix_8x8:
    def __init__(self,  sm, brightness=1.0):
        # sm marque la machine d'etat a utiliser parmi les 8 disponibles sur RP2040
        self.ws2812 = ws2812(64, brightness,sm)
    
    def array(self): # donne la table des pixels
        return self.ws2812.array()
    
    def show(self) : # affiche avec la machine asssociee
        self.ws2812.pixels_show()
        
    def set_brightness(self, brightness=0.1):
        self.ws2812.pixels_brightness(brightness)
        
    def set_color(self,color=BLACK):
        self.ws2812.pixels_fill(color)
        
        
    def set_char(self,c,color):
        self.ws2812.pixels_char(c,color,0)
        
        
    # de a jouer    
    def set_de(self,c,color):
        self.ws2812.pixels_de(c,color)
        
                
    def set_nombre(self, number,color=WHITE,background=BLACK) :
        #print(f'nombre= {number}')
        if number < 0 and number > 99 :
            print(f'Given nombre is outside range 0-99: {number}')
            return
        digits = [int(x) for x in str(number)]
        digits.reverse()
        pos=0 # a droite si u  seul digit
        self.ws2812.pixels_fill(BLACK)
        for digit in digits:
            self.ws2812.pixels_chiffre(digit,color,pos,background)
            pos += 1
       
        
    def set_rainbow(self,shift=0):
        self.ws2812.pixels_rainbow(shift)
        
        
    def set_spirale(self,color=WHITE,max=1,invert=False,point=False,cumul=False) :
        self.ws2812.pixels_spirale(color,max,invert,point,cumul)
        

    def set_alea(self,num=64):
        self.ws2812.pixels_alea(num)
        

        
    def set_carre(self,color=WHITE,repeat=1) :
        self.ws2812.pixels_carre(color,repeat)
        
    def set_line(self,x1=0,y1=0,x2=7,y2=7,color=WHITE):
        self.ws2812.pixels_line(x1,y1,x2,y2,color)


