X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=.local%2Flib%2Fpython3.9%2Fsite-packages%2Fpywal%2Fbackends%2Fcolorthief.py;fp=.local%2Flib%2Fpython3.9%2Fsite-packages%2Fpywal%2Fbackends%2Fcolorthief.py;h=bcb9e394032dad3f6bcf2ed4461e1b56dc7aa274;hb=be62f45026507330c54b0d3ace90aceb312e1841;hp=0000000000000000000000000000000000000000;hpb=812379a745a7f23788c538f26d71c84232bf09cc;p=dotfiles%2F.git diff --git a/.local/lib/python3.9/site-packages/pywal/backends/colorthief.py b/.local/lib/python3.9/site-packages/pywal/backends/colorthief.py new file mode 100644 index 00000000..bcb9e394 --- /dev/null +++ b/.local/lib/python3.9/site-packages/pywal/backends/colorthief.py @@ -0,0 +1,64 @@ +""" +Generate a colorscheme using ColorThief. +""" +import logging +import sys + +try: + from colorthief import ColorThief + +except ImportError: + logging.error("ColorThief wasn't found on your system.") + logging.error("Try another backend. (wal --backend)") + sys.exit(1) + +from .. import util + + +def gen_colors(img): + """Loop until 16 colors are generated.""" + color_cmd = ColorThief(img).get_palette + + for i in range(0, 10, 1): + raw_colors = color_cmd(color_count=8 + i) + + if len(raw_colors) >= 8: + break + + elif i == 10: + logging.error("ColorThief couldn't generate a suitable palette.") + sys.exit(1) + + else: + logging.warning("ColorThief couldn't generate a palette.") + logging.warning("Trying a larger palette size %s", 8 + i) + + return [util.rgb_to_hex(color) for color in raw_colors] + + +def adjust(cols, light): + """Create palette.""" + cols.sort(key=util.rgb_to_yiq) + raw_colors = [*cols, *cols] + + if light: + raw_colors[0] = util.lighten_color(cols[0], 0.90) + raw_colors[7] = util.darken_color(cols[0], 0.75) + + else: + for color in raw_colors: + color = util.lighten_color(color, 0.40) + + raw_colors[0] = util.darken_color(cols[0], 0.80) + raw_colors[7] = util.lighten_color(cols[0], 0.60) + + raw_colors[8] = util.lighten_color(cols[0], 0.20) + raw_colors[15] = raw_colors[7] + + return raw_colors + + +def get(img, light=False): + """Get colorscheme.""" + cols = gen_colors(img) + return adjust(cols, light)