diff options
| -rw-r--r-- | pywal/colors.py | 7 | ||||
| -rw-r--r-- | pywal/util.py | 16 | ||||
| -rwxr-xr-x | tests/test_util.py | 28 |
3 files changed, 39 insertions, 12 deletions
diff --git a/pywal/colors.py b/pywal/colors.py index c939215..b2c390e 100644 --- a/pywal/colors.py +++ b/pywal/colors.py @@ -54,6 +54,13 @@ def sort_colors(img, colors): we will later save in json format.""" raw_colors = colors[:1] + colors[9:] + colors[8:] + # Darken the background color if it's too light. + if int(raw_colors[0][1]) in [3, 4]: + raw_colors[0] = util.darken_color(raw_colors[0], 0.50) + + elif int(raw_colors[0][1]) >= 5: + raw_colors[0] = util.darken_color(raw_colors[0], 0.25) + colors = {"wallpaper": img} colors_special = {} diff --git a/pywal/util.py b/pywal/util.py index 06c0510..2f86811 100644 --- a/pywal/util.py +++ b/pywal/util.py @@ -20,7 +20,8 @@ class Color: @property def rgb(self): """Convert a hex color to rgb.""" - return hex_to_rgb(self.hex_color) + red, green, blue = hex_to_rgb(self.hex_color) + return f"{red},{green},{blue}" @property def xrgba(self): @@ -99,8 +100,7 @@ def create_dir(directory): def hex_to_rgb(color): """Convert a hex color to rgb.""" - red, green, blue = list(bytes.fromhex(color.strip("#"))) - return f"{red},{green},{blue}" + return tuple(bytes.fromhex(color.strip("#"))) def hex_to_xrgba(color): @@ -109,6 +109,16 @@ def hex_to_xrgba(color): return f"{col[1]}{col[2]}/{col[3]}{col[4]}/{col[5]}{col[6]}/ff" +def rgb_to_hex(color): + """Convert an rgb color to hex.""" + return f"#{color[0]:02x}{color[1]:02x}{color[2]:02x}" + + +def darken_color(color, darkness): + """Darken a hex color.""" + return rgb_to_hex([int(col * (1 - darkness)) for col in hex_to_rgb(color)]) + + def disown(*cmd): """Call a system command in the background, disown it and hide it's output.""" diff --git a/tests/test_util.py b/tests/test_util.py index b1fa704..5f8e26d 100755 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -64,23 +64,33 @@ class TestUtil(unittest.TestCase): def test_hex_to_rgb_black(self): """> Convert #000000 to RGB.""" result = util.hex_to_rgb("#000000") - self.assertEqual(result, "0,0,0") + self.assertEqual(result, (0, 0, 0)) def test_hex_to_rgb_white(self): - """> Convert #FFFFFF to RGB.""" - result = util.hex_to_rgb("#FFFFFF") - self.assertEqual(result, "255,255,255") + """> Convert #ffffff to RGB.""" + result = util.hex_to_rgb("#ffffff") + self.assertEqual(result, (255, 255, 255)) def test_hex_to_rgb_rand(self): - """> Convert #98AEC2 to RGB.""" - result = util.hex_to_rgb("#98AEC2") - self.assertEqual(result, "152,174,194") + """> Convert #98aec2 to RGB.""" + result = util.hex_to_rgb("#98aec2") + self.assertEqual(result, (152, 174, 194)) def test_hex_to_xrgba(self): - """> Convert #98AEC2 to XRGBA.""" - result = util.hex_to_xrgba("#98AEC2") + """> Convert #98aec2 to XRGBA.""" + result = util.hex_to_xrgba("#98aec2") self.assertEqual(result, "98/ae/c2/ff") + def test_rgb_to_hex(self): + """> Convert 152,174,194 to HEX.""" + result = util.rgb_to_hex((152, 174, 194)) + self.assertEqual(result, "#98aec2") + + def test_darken_color(self): + """> Darken #ffffff by 0.25.""" + result = util.darken_color("#ffffff", 0.25) + self.assertEqual(result, "#bfbfbf") + if __name__ == "__main__": unittest.main() |
