import ctypes  
import os

class Log:
    """ 日志类 class for log """
    Error = 1
    Warning = 2
    Info = 3
    Debug = 4
    def __init__(self, level, message):
        self.level = level
        self.message = message
    
    def log(self):
        if self.level == Log.Error :
            print("[Error] " + self.message)
        elif self.level == Log.Warning :
            print("[Warning] " + self.message)
        elif self.level == Log.Info :
            print("[Info] " + self.message)


class image:
    """ The class for image """
    x : int 
    y : int
    colorToBlock : dict
    pixels : list
    def __init__(self, x, y, colorToBlock, pixels):
        self.x = x
        self.y = y
        self.colorToBlock = colorToBlock
        self.pixels = pixels

try:
    ll = ctypes.cdll.LoadLibrary   
    lib = ll("./library.so")  
except FileNotFoundError:
    log : Log = Log(Log.Error, "library.so not found")
    log.log()

def createImageBlocks(Image : image ):
    """ Create a list (blocks to build a image) """
    createImageBlocksLog : Log = Log(Log.Info, "Creating image blocks")
    createImageBlocksLog.log()
    colorToBlock = Image.colorToBlock
    pixels = Image.pixels
    for i in Image.pixels:
        try:
            pixels.append(colorToBlock[pixels[i]])
            createImageBlocksLog : Log = Log(Log.Info, "Add a block to list")
            createImageBlocksLog.log()
        except KeyError:
            pixels.append("minecraft:air")
            createImageBlocksLog : Log = Log(Log.Info, "No corresponding block found for the color , add a air to this pixel")
            createImageBlocksLog.log()
    
