115 lines
3.5 KiB
Python
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)
|