Files
picshow/src/colors.py
2022-11-21 13:50:07 -06:00

115 lines
3.5 KiB
Python

from enum import Enum, auto, unique
from colorama import Fore, Back
class Color:
def __init__(self, r, g, b):
self.R = r
self.G = g
self.B = b
def __str__(self):
return str((self.R, self.G, self.B))
def __eq__(self, other):
return self.R == other.R and self.G == other.G and self.B == other.B
def distance(self, other):
return ((self.R - other.R) ** 2
+ (self.G - other.G) ** 2
+ (self.B - other.B) ** 2) ** .5
def blend(self, other, weight):
oweight = 1 - weight
return Color(self.R * weight + other.R * oweight,
self.G * weight + other.G * oweight,
self.B * weight + other.B * oweight)
#ubuntu
class ColorCode(Enum):
Black = Color(1, 1, 1)
Red = Color(222, 56, 43)
Green = Color(57, 181, 74)
Yellow = Color(255, 199, 6)
Blue = Color(0, 111, 184)
Magenta = Color(118, 38, 113)
Cyan = Color(44, 181, 233)
White = Color(204, 204, 204)
BrightBlack = Color(128, 128, 128)
BrightRed = Color(255, 0, 0)
BrightGreen = Color(0, 255, 0)
BrightYellow = Color(255, 255, 0)
BrightBlue = Color(0, 0, 255)
BrightMagenta = Color(255, 0, 255)
BrightCyan = Color(0, 255, 255)
BrightWhite = Color(255, 255, 255)
def to_fore(color):
if color == ColorCode.Black:
return Fore.BLACK
elif color == ColorCode.Red:
return Fore.RED
elif color == ColorCode.Green:
return Fore.GREEN
elif color == ColorCode.Yellow:
return Fore.YELLOW
elif color == ColorCode.Blue:
return Fore.BLUE
elif color == ColorCode.Magenta:
return Fore.MAGENTA
elif color == ColorCode.Cyan:
return Fore.CYAN
elif color == ColorCode.White:
return Fore.WHITE
elif color == ColorCode.BrightBlack:
return Fore.LIGHTBLACK_EX
elif color == ColorCode.BrightRed:
return Fore.LIGHTRED_EX
elif color == ColorCode.BrightGreen:
return Fore.LIGHTGREEN_EX
elif color == ColorCode.BrightYellow:
return Fore.LIGHTYELLOW_EX
elif color == ColorCode.BrightBlue:
return Fore.LIGHTBLUE_EX
elif color == ColorCode.BrightMagenta:
return Fore.LIGHTMAGENTA_EX
elif color == ColorCode.BrightCyan:
return Fore.LIGHTCYAN_EX
elif color == ColorCode.BrightWhite:
return Fore.LIGHTWHITE_EX
raise ValueError(color)
def to_back(color):
if color == ColorCode.Black:
return Back.BLACK
elif color == ColorCode.Red:
return Back.RED
elif color == ColorCode.Green:
return Back.GREEN
elif color == ColorCode.Yellow:
return Back.YELLOW
elif color == ColorCode.Blue:
return Back.BLUE
elif color == ColorCode.Magenta:
return Back.MAGENTA
elif color == ColorCode.Cyan:
return Back.CYAN
elif color == ColorCode.White:
return Back.WHITE
elif color == ColorCode.BrightBlack:
return Back.LIGHTBLACK_EX
elif color == ColorCode.BrightRed:
return Back.LIGHTRED_EX
elif color == ColorCode.BrightGreen:
return Back.LIGHTGREEN_EX
elif color == ColorCode.BrightYellow:
return Back.LIGHTYELLOW_EX
elif color == ColorCode.BrightBlue:
return Back.LIGHTBLUE_EX
elif color == ColorCode.BrightMagenta:
return Back.LIGHTMAGENTA_EX
elif color == ColorCode.BrightCyan:
return Back.LIGHTCYAN_EX
elif color == ColorCode.BrightWhite:
return Back.LIGHTWHITE_EX
raise ValueError(color)