aboutsummaryrefslogtreecommitdiff
path: root/config/ratpoison/py/color_detect.py
diff options
context:
space:
mode:
Diffstat (limited to 'config/ratpoison/py/color_detect.py')
-rw-r--r--config/ratpoison/py/color_detect.py108
1 files changed, 0 insertions, 108 deletions
diff --git a/config/ratpoison/py/color_detect.py b/config/ratpoison/py/color_detect.py
deleted file mode 100644
index 30661f8..0000000
--- a/config/ratpoison/py/color_detect.py
+++ /dev/null
@@ -1,108 +0,0 @@
-import sys
-import colorsys
-from colorz import colorz
-from math import sqrt
-
-try:
- import Image
-except ImportError:
- from PIL import Image
-
-if len(sys.argv) < 2:
- print "Usage: {0} FILENAME [num_colors]".format(sys.argv[0])
- sys.exit()
-
-
-print sys.argv[1]
-
-WALLPAPER = sys.argv[1]
-filename = WALLPAPER.split('/').pop()
-COLORS = ".{0}.colors".format(filename)
-XRESOURCES = ".{0}.Xres".format(filename)
-SAMPLE = ".{0}.sample.png".format(filename)
-
-cols = ''
-xres = ''
-
-def torgb(hexv):
- hexv = hexv[1:]
- r, g, b = (
- int(hexv[0:2], 16) / 256.0,
- int(hexv[2:4], 16) / 256.0,
- int(hexv[4:6], 16) / 256.0,
- )
- return r, g, b
-
-def normalize(hexv, minv=128, maxv=256):
- r, g, b = torgb(hexv)
- h, s, v = colorsys.rgb_to_hsv(r, g, b)
- minv = minv / 256.0
- maxv = maxv / 256.0
- if v < minv:
- v = minv
- if v > maxv:
- v = maxv
- r, g, b = colorsys.hsv_to_rgb(h, s, v)
- return '#{:02x}{:02x}{:02x}'.format(int(r * 256), int(g * 256), int(b * 256))
-
-def darkness(hexv):
- r, g, b = torgb(hexv)
- darkness = sqrt((255 - r) ** 2 + (255 - g) ** 2 + (255 - b) ** 2)
- return darkness
-
-def to_hsv(c):
- r, g, b = torgb(c)
- h, s, v = colorsys.rgb_to_hsv(r, g, b)
- return h, s, v
-
-def hex_color_to_rgb(color):
- color = color[1:] if color[0]=="#" else color
- return (
- int(color[:2], 16),
- int(color[2:4], 16),
- int(color[4:], 16)
- )
-
-def create_sample(f, colors):
- im = Image.new("RGB", (1000, 100), "white")
- pix = im.load()
-
- width_sample = im.size[0]/len(colors)
-
- for i, c in enumerate(colors):
- for j in range(width_sample*i, width_sample*i+width_sample):
- for k in range(0, 100):
- pix[j, k] = hex_color_to_rgb(c)
-
- im.save(f)
-
-if __name__ == '__main__':
- if len(sys.argv) == 2:
- n = 16
- else:
- n = int(sys.argv[2])
-
-
- i = 0
- # sort by value, saturation, then hue
- colors = colorz(WALLPAPER, n=n)
- colors.sort(key=lambda x:darkness(x), reverse=True)
- for c in colors:
- if i == 0:
- c = normalize(c, minv=0, maxv=32)
- elif i == 8:
- c = normalize(c, minv=128, maxv=192)
- elif i < 8:
- c = normalize(c, minv=160, maxv=224)
- else:
- c = normalize(c, minv=200, maxv=256)
- c = normalize(c, minv=32, maxv=224)
- xres += """*color{}: {}\n""".format(i, c)
- cols += """export COLOR{}="{}"\n""".format(i, c)
- i += 1
-
- create_sample(SAMPLE, colors)
- with open(XRESOURCES, 'w') as f:
- f.write(xres)
- with open(COLORS, 'w') as f:
- f.write(cols)