-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgenerate_color_gradient.py
More file actions
executable file
·58 lines (37 loc) · 1.66 KB
/
Copy pathgenerate_color_gradient.py
File metadata and controls
executable file
·58 lines (37 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/env python3
import sys
import os
def help():
print("Usage: "+sys.argv[0]+" <color> <steps> <color> [<steps> <color>]...")
print("Args:")
print(" color a colorcode as in html (like #12ff04)")
print(" steps number of colors to calculate between two colors")
print("If your terminal supports RGB colors and if the COLORTERM")
print("environment variable is set, output will be colored")
sys.exit(0)
def hexToRGB(color):
color = color.lstrip('#')
return tuple(int(color[i:i+2], 16) for i in (0, 2, 4))
def rgbToHex(rgb):
return format(rgb[0], '02x')+format(rgb[1], '02x')+format(rgb[2], '02x')
def generateGradient(color1, steps, color2):
step = tuple(float((color2[i]-color1[i])/(steps-1)) for i in (0,1,2))
return list(tuple(round(color1[j]+step[j]*i) for j in (0,1,2)) for i in range(0, steps))
def getColorOfLinearGradient(start_rgb, end_rgb, steps, pos):
step = tuple(float((end_rgb[i]-start_rgb[i])/(steps-1)) for i in (0,1,2))
return tuple(round(start_rgb[i]+step[i]*pos) for i in (0,1,2))
def print_color(color):
if color_output:
print("\x1b[38;2;%d;%d;%dm"%hexToRGB(color), end="")
print("#"+color)
if __name__ == "__main__":
color_output = False
if os.getenv("COLORTERM") in ["24bit", "truecolor"]:
color_output = True
if len(sys.argv) < 4 or (len(sys.argv)-4)%2 != 0:
help()
print_color(sys.argv[1])
for i in range(0, len(sys.argv)-2, 2):
colorlist = generateGradient(hexToRGB(sys.argv[i+1]), int(sys.argv[i+2]), hexToRGB(sys.argv[i+3]))
for j in range(1, len(colorlist)):
print_color(rgbToHex(colorlist[j]))