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)