from PIL import Image
from PIL import ImageOps

import os
import sys
import numpy as np

ccColors = {
        1: (178, 102, 229, 255),
        2: (153, 153, 153, 255),
        4: ( 37,  49, 146, 255),
        8: (222, 222, 108, 255),
       16: (127, 204,  25, 255),
       32: (242, 178,  51, 255),
       64: ( 76,  76,  76, 255),
      128: (153, 178, 242, 255),
      256: (242, 178, 204, 255),
      512: (127, 102,  76, 255),
     1024: (204,  76,  76, 255),
     2048: (229, 127, 216, 255),
     4096: ( 76, 153, 178, 255),
     8192: ( 87, 166,  78, 255),
    16384: (240, 240, 240, 255),
    32768: (  0,   0,   0, 255),
}

def setColor(im, fg = (255, 255, 255, 255), bg = (0, 0, 0, 0)):
    data = np.array(im) 
    red, green, blue, alpha = data.T

    white_areas = (red == 255) & (blue == 255) & (green == 255) & (alpha == 255)
    black_areas = (red == 0) & (blue == 0) & (green == 0) & (alpha == 255)
    data[...][white_areas] = (255, 255, 255, 255)
    data[...][black_areas] = (0, 0, 0, 255)

    white_areas = (red == 255) & (blue == 255) & (green == 255) & (alpha == 255)
    black_areas = (red == 0) & (blue == 0) & (green == 0) & (alpha == 255)
    data[...][white_areas] = fg
    data[...][black_areas] = bg

    return Image.fromarray(data)

rawGlyphs = Image.open('default.png').convert('RGBA')

glyphs = setColor(rawGlyphs, fg = ccColors[4096])
im = Image.new('RGBA', (128, 128), 'black')

glyphs.show()
im.show()

