1
0
Fork 0
mirror of https://github.com/Findus23/RPGnotes.git synced 2024-09-19 15:43:45 +02:00
RPGnotes/utils/colors.py
2023-04-25 22:16:28 +02:00

302 lines
3.1 KiB
Python

"""
colors from https://stackoverflow.com/a/33295456/4398037
"""
import random
color_string = """#B88183
#922329
#5A0007
#D7BFC2
#D86A78
#FF8A9A
#3B000A
#E20027
#943A4D
#5B4E51
#B05B6F
#FEB2C6
#D83D66
#895563
#FF1A59
#FFDBE5
#CC0744
#CB7E98
#997D87
#6A3A4C
#FF2F80
#6B002C
#A74571
#C6005A
#FF5DA7
#300018
#B894A6
#FF90C9
#7C6571
#A30059
#DA007C
#5B113C
#402334
#D157A0
#DDB6D0
#885578
#962B75
#A97399
#D20096
#E773CE
#AA5199
#E704C4
#6B3A64
#FFA0F2
#6F0062
#B903AA
#C895C5
#FF34FF
#320033
#DBD5DD
#EEC3FF
#BC23FF
#671190
#201625
#F5E1FF
#BC65E9
#D790FF
#72418F
#4A3B53
#9556BD
#B4A8BD
#7900D7
#A079BF
#958A9F
#837393
#64547B
#3A2465
#353339
#BCB1E5
#9F94F0
#9695C5
#0000A6
#000035
#636375
#00005F
#97979E
#7A7BFF
#3C3E6E
#6367A9
#494B5A
#3B5DFF
#C8D0F6
#6D80BA
#8FB0FF
#0045D2
#7A87A1
#324E72
#00489C
#0060CD
#789EC9
#012C58
#99ADC0
#001325
#DDEFFF
#59738A
#0086ED
#75797C
#BDC9D2
#3E89BE
#8CD0FF
#0AA3F7
#6B94AA
#29607C
#404E55
#006FA6
#013349
#0AA6D8
#658188
#5EBCD1
#456D75
#0089A3
#B5F4FF
#02525F
#1CE6FF
#001C1E
#203B3C
#A3C8C9
#00A6AA
#00C6C8
#006A66
#518A87
#E4FFFC
#66E1D3
#004D43
#809693
#15A08A
#00846F
#00C2A0
#00FECF
#78AFA1
#02684E
#C2FFED
#47675D
#00D891
#004B28
#8ADBB4
#0CBD66
#549E79
#1A3A2A
#6C8F7D
#008941
#63FFAC
#1BE177
#006C31
#B5D6C3
#3D4F44
#4B8160
#66796D
#71BB8C
#04F757
#001E09
#D2DCD5
#00B433
#9FB2A4
#003109
#A3F3AB
#456648
#51A058
#83A485
#7ED379
#D1F7CE
#A1C299
#061203
#1E6E00
#5EFF03
#55813B
#3B9700
#4FC601
#1B4400
#C2FF99
#788D66
#868E7E
#83AB58
#374527
#98D058
#C6DC99
#A4E804
#76912F
#8BB400
#34362D
#4C6001
#DFFB71
#6A714A
#222800
#6B7900
#3A3F00
#BEC459
#FEFFE6
#A3A489
#9FA064
#FFFF00
#61615A
#FFFFFE
#9B9700
#CFCDAC
#797868
#575329
#FFF69F
#8D8546
#F4D749
#7E6405
#1D1702
#CCAA35
#CCB87C
#453C23
#513A01
#FFB500
#A77500
#D68E01
#B79762
#7A4900
#372101
#886F4C
#A45B02
#E7AB63
#FAD09F
#C0B9B2
#938A81
#A38469
#D16100
#A76F42
#5B4534
#5B3213
#CA834E
#FF913F
#953F00
#D0AC94
#7D5A44
#BE4700
#FDE8DC
#772600
#A05837
#EA8B66
#391406
#FF6832
#C86240
#29201D
#B77B68
#806C66
#FFAA92
#89412E
#E83000
#A88C85
#F7C9BF
#643127
#E98176
#7B4F4B
#1E0200
#9C6966
#BF5650
#BA0900
#FF4A46
#F4ABAA
#000000
#452C2C
#C8A1A1"""
def get_all_colors():
colors = []
for c in color_string.split("\n"):
colors.append(c.strip())
return colors
def get_random_color() -> str:
return random.choice(get_all_colors())
## color math from
## https://stackoverflow.com/a/56678483/4398037
def gamma_correction(value: float) -> float:
value /= 255
if value < 0.04045:
return value / 12.92
else:
return ((value + 0.055) / 1.055) ** 2.4
def get_luminance(rgb: tuple[int, ...]) -> float:
r, g, b = list(map(gamma_correction, rgb))
return 0.2126 * r + 0.7152 * g + 0.0722 * b
def get_percieved_lightness(rgb: tuple[int, ...]) -> float:
Y = get_luminance(rgb)
if Y <= (216 / 24389):
return Y * (24389 / 27)
else:
return Y ** (1 / 3) * 116 - 16
def is_bright_color(bg_color: str) -> bool:
bg_color = bg_color[1:]
rgb = tuple(int(bg_color[i:i + 2], 16) for i in (0, 2, 4))
return get_percieved_lightness(rgb) > 50