"""Predefined "standard colors" and helper functions.
Colors are defined as (RED, GREEN, BLUE) tuples. Feel free to define your own!
"""
# Utility functions for manipulating colors
[docs]def to565(r,g,b):
"""Convert 888 RGB (24 bits) to 565 (16 bits)
Note: The CodeX LCD uses 16-bit colors natively!
"""
return (r&0xF8,g&0xFC,b&0xF8)
[docs]def color16(color24):
"""Convert a 24-bit RGB tuple to a 16-bit native LCD color tuple."""
return to565(*color24)
[docs]def rgb_to_int(rgb):
"""Convert RGB tuple to an integer."""
return (rgb[0]<<16) | (rgb[1]<<8) | (rgb[2])
[docs]def int_to_rgb(h):
"""Convert integer to RGB tuple"""
r = (h>>16) & 255
g = (h>>8) & 255
b = h & 255
return (r,g,b)
[docs]def scale_rgb(val, pcnt=100):
"""Scale RGB tuple elements by given percentage (bright/dim)"""
return tuple(int(i * pcnt / 100) for i in val)
# Color constants 24-bit (R, G, B)
BLACK = (0x00,0x00,0x00) #:
WHITE = (0xFF,0xFF,0xFF) #:
RED = (0xFF,0x00,0x00) #:
GREEN = (0x00,0xFF,0x00) #:
BLUE = (0x00,0x00,0xFF) #:
YELLOW = (0xFF,0xFF,0x00) #:
CYAN = (0x00,0xFF,0xFF) #:
MAGENTA = (0xFF,0x00,0xFF) #:
BROWN = (0x6F,0x4E,0x37) #:
PINK = (0xFF,0x14,0x93) #:
LIGHT_GRAY = (0xD3,0xD3,0xD3) #:
GRAY = (0x60,0x60,0x60) #:
ORANGE = (0xFF,0xA5,0x00) #:
DARK_GREEN = (0x22,0x8B,0x22) #:
DARK_BLUE = (0x00,0x00,0x8B) #:
PURPLE = (0x6A,0x0D,0xAD) #:
TRANSPARENT = (0xF7,0xFB,0xF7) #:
# Color Collections
#:
COLORS_BY_NAME = {
'BLACK' : BLACK,
'WHITE' : WHITE,
'RED' : RED,
'GREEN' : GREEN,
'BLUE' : BLUE,
'YELLOW' : YELLOW,
'CYAN' : CYAN,
'MAGENTA' : MAGENTA,
'BROWN' : BROWN,
'PINK' : PINK,
'LIGHT_GRAY' : LIGHT_GRAY,
'GRAY' : GRAY,
'ORANGE' : ORANGE,
'DARK_GREEN' : DARK_GREEN,
'DARK_BLUE' : DARK_BLUE,
'PURPLE' : PURPLE,
'TRANSPARENT' : TRANSPARENT,
}
# List the predefined colors. First 10 are in order of the Resistor Color Code.
#:
COLOR_LIST = (
BLACK, BROWN, RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE, GRAY, WHITE, CYAN, MAGENTA, PINK, LIGHT_GRAY, DARK_GREEN, DARK_BLUE,
)