diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/colors.map | 646 | ||||
-rwxr-xr-x | tools/colors_find.py | 63 | ||||
-rwxr-xr-x | tools/generate_gradients.py | 217 | ||||
-rwxr-xr-x | tools/purge-PRs.py | 27 |
4 files changed, 953 insertions, 0 deletions
diff --git a/tools/colors.map b/tools/colors.map new file mode 100644 index 0000000..61d8c4a --- /dev/null +++ b/tools/colors.map @@ -0,0 +1,646 @@ +Grey 545454 +Grey, Silver C0C0C0 +grey BEBEBE +LightGray D3D3D3 +LightSlateGrey 778899 +SlateGray 708090 +SlateGray1 C6E2FF +SlateGray2 B9D3EE +SlateGray3 9FB6CD +SlateGray4 6C7B8B +black 000000 +grey0 000000 +grey1 030303 +grey2 050505 +grey3 080808 +grey4 0A0A0A +grey5 0D0D0D +grey6 0F0F0F +grey7 121212 +grey8 141414 +grey9 171717 +grey10 1A1A1A +grey11 1C1C1C +grey12 1F1F1F +grey13 212121 +grey14 242424 +grey15 262626 +grey16 292929 +grey17 2B2B2B +grey18 2E2E2E +grey19 303030 +grey20 333333 +grey21 363636 +grey22 383838 +grey23 3B3B3B +grey24 3D3D3D +grey25 404040 +grey26 424242 +grey27 454545 +grey28 474747 +grey29 4A4A4A +grey30 4D4D4D +grey31 4F4F4F +grey32 525252 +grey33 545454 +grey34 575757 +grey35 595959 +grey36 5C5C5C +grey37 5E5E5E +grey38 616161 +grey39 636363 +grey40 666666 +grey41, DimGrey 696969 +grey42 6B6B6B +grey43 6E6E6E +grey44 707070 +grey45 737373 +grey46 757575 +grey47 787878 +grey48 7A7A7A +grey49 7D7D7D +grey50 7F7F7F +grey51 828282 +grey52 858585 +grey53 878787 +grey54 8A8A8A +grey55 8C8C8C +grey56 8F8F8F +grey57 919191 +grey58 949494 +grey59 969696 +grey60 999999 +grey61 9C9C9C +grey62 9E9E9E +grey63 A1A1A1 +grey64 A3A3A3 +grey65 A6A6A6 +grey66 A8A8A8 +grey67 ABABAB +grey68 ADADAD +grey69 B0B0B0 +grey70 B3B3B3 +grey71 B5B5B5 +grey72 B8B8B8 +grey73 BABABA +grey74 BDBDBD +grey75 BFBFBF +grey76 C2C2C2 +grey77 C4C4C4 +grey78 C7C7C7 +grey79 C9C9C9 +grey80 CCCCCC +grey81 CFCFCF +grey82 D1D1D1 +grey83 D4D4D4 +grey84 D6D6D6 +grey85 D9D9D9 +grey86 DBDBDB +grey87 DEDEDE +grey88 E0E0E0 +grey89 E3E3E3 +grey90 E5E5E5 +grey91 E8E8E8 +grey92 EBEBEB +grey93 EDEDED +grey94 F0F0F0 +grey95 F2F2F2 +grey96 F5F5F5 +grey97 F7F7F7 +grey98 FAFAFA +grey99 FCFCFC +grey100, White FFFFFF +Dark Slate Grey 2F4F4F +Dim Grey 545454 +Very Light Grey CDCDCD +Free Speech Grey 635688 +AliceBlue F0F8FF +BlueViolet 8A2BE2 +Cadet Blue 5F9F9F +CadetBlue 5F9EA0 +CadetBlue 5F9EA0 +CadetBlue1 98F5FF +CadetBlue2 8EE5EE +CadetBlue3 7AC5CD +CadetBlue4 53868B +Corn Flower Blue 42426F +CornflowerBlue 6495ED +DarkSlateBlue 483D8B +DarkTurquoise 00CED1 +DeepSkyBlue 00BFFF +DeepSkyBlue1 00BFFF +DeepSkyBlue2 00B2EE +DeepSkyBlue3 009ACD +DeepSkyBlue4 00688B +DodgerBlue 1E90FF +DodgerBlue1 1E90FF +DodgerBlue2 1C86EE +DodgerBlue3 1874CD +DodgerBlue4 104E8B +LightBlue ADD8E6 +LightBlue1 BFEFFF +LightBlue2 B2DFEE +LightBlue3 9AC0CD +LightBlue4 68838B +LightCyan E0FFFF +LightCyan1 E0FFFF +LightCyan2 D1EEEE +LightCyan3 B4CDCD +LightCyan4 7A8B8B +LightSkyBlue 87CEFA +LightSkyBlue1 B0E2FF +LightSkyBlue2 A4D3EE +LightSkyBlue3 8DB6CD +LightSkyBlue4 607B8B +LightSlateBlue 8470FF +LightSteelBlue B0C4DE +LightSteelBlue1 CAE1FF +LightSteelBlue2 BCD2EE +LightSteelBlue3 A2B5CD +LightSteelBlue4 6E7B8B +Aquamarine 70DB93 +MediumBlue 0000CD +MediumSlateBlue 7B68EE +MediumTurquoise 48D1CC +MidnightBlue 191970 +NavyBlue 000080 +PaleTurquoise AFEEEE +PaleTurquoise1 BBFFFF +PaleTurquoise2 AEEEEE +PaleTurquoise3 96CDCD +PaleTurquoise4 668B8B +PowderBlue B0E0E6 +RoyalBlue 4169E1 +RoyalBlue1 4876FF +RoyalBlue2 436EEE +RoyalBlue3 3A5FCD +RoyalBlue4 27408B +RoyalBlue5 002266 +SkyBlue 87CEEB +SkyBlue1 87CEFF +SkyBlue2 7EC0EE +SkyBlue3 6CA6CD +SkyBlue4 4A708B +SlateBlue 6A5ACD +SlateBlue1 836FFF +SlateBlue2 7A67EE +SlateBlue3 6959CD +SlateBlue4 473C8B +SteelBlue 4682B4 +SteelBlue1 63B8FF +SteelBlue2 5CACEE +SteelBlue3 4F94CD +SteelBlue4 36648B +aquamarine 7FFFD4 +aquamarine1 7FFFD4 +aquamarine2 76EEC6 +aquamarine3, MediumAquamarine 66CDAA +aquamarine4 458B74 +azure F0FFFF +azure1 F0FFFF +azure2 E0EEEE +azure3 C1CDCD +azure4 838B8B +blue 0000FF +blue1 0000FF +blue2 0000EE +blue3 0000CD +blue4 00008B +aqua 00FFFF +True Iris Blue 03B4CC +cyan 00FFFF +cyan1 00FFFF +cyan2 00EEEE +cyan3 00CDCD +cyan4 008B8B +navy 000080 +teal 008080 +turquoise 40E0D0 +turquoise1 00F5FF +turquoise2 00E5EE +turquoise3 00C5CD +turquoise4 00868B +DarkSlateGray 2F4F4F +DarkSlateGray1 97FFFF +DarkSlateGray2 8DEEEE +DarkSlateGray3 79CDCD +DarkSlateGray4 528B8B +Dark Slate Blue 241882 +Dark Turquoise 7093DB +Medium Slate Blue 7F00FF +Medium Turquoise 70DBDB +Midnight Blue 2F2F4F +Navy Blue 23238E +Neon Blue 4D4DFF +New Midnight Blue 00009C +Rich Blue 5959AB +Sky Blue 3299CC +Slate Blue 007FFF +Summer Sky 38B0DE +Iris Blue 03B4C8 +Free Speech Blue 4156C5 +RosyBrown BC8F8F +RosyBrown1 FFC1C1 +RosyBrown2 EEB4B4 +RosyBrown3 CD9B9B +RosyBrown4 8B6969 +SaddleBrown 8B4513 +SandyBrown F4A460 +beige F5F5DC +brown A52A2A +brown A62A2A +brown1 FF4040 +brown2 EE3B3B +brown3 CD3333 +brown4 8B2323 +dark brown 5C4033 +burlywood DEB887 +burlywood1 FFD39B +burlywood2 EEC591 +burlywood3 CDAA7D +burlywood4 8B7355 +baker's chocolate 5C3317 +chocolate D2691E +chocolate1 FF7F24 +chocolate2 EE7621 +chocolate3 CD661D +chocolate4 8B4513 +peru CD853F +tan D2B48C +tan1 FFA54F +tan2 EE9A49 +tan3 CD853F +tan4 8B5A2B +Dark Tan 97694F +Dark Wood 855E42 +Light Wood 856363 +Medium Wood A68064 +New Tan EBC79E +Semi-Sweet Chocolate 6B4226 +Sienna 8E6B23 +Tan DB9370 +Very Dark Brown 5C4033 +Dark Green 2F4F2F +DarkGreen 006400 +dark green copper 4A766E +DarkKhaki BDB76B +DarkOliveGreen 556B2F +DarkOliveGreen1 CAFF70 +DarkOliveGreen2 BCEE68 +DarkOliveGreen3 A2CD5A +DarkOliveGreen4 6E8B3D +olive 808000 +DarkSeaGreen 8FBC8F +DarkSeaGreen1 C1FFC1 +DarkSeaGreen2 B4EEB4 +DarkSeaGreen3 9BCD9B +DarkSeaGreen4 698B69 +ForestGreen 228B22 +GreenYellow ADFF2F +LawnGreen 7CFC00 +LightSeaGreen 20B2AA +LimeGreen 32CD32 +MediumSeaGreen 3CB371 +MediumSpringGreen 00FA9A +MintCream F5FFFA +OliveDrab 6B8E23 +OliveDrab1 C0FF3E +OliveDrab2 B3EE3A +OliveDrab3 9ACD32 +OliveDrab4 698B22 +PaleGreen 98FB98 +PaleGreen1 9AFF9A +PaleGreen2 90EE90 +PaleGreen3 7CCD7C +PaleGreen4 548B54 +SeaGreen, SeaGreen4 2E8B57 +SeaGreen1 54FF9F +SeaGreen2 4EEE94 +SeaGreen3 43CD80 +SpringGreen 00FF7F +SpringGreen1 00FF7F +SpringGreen2 00EE76 +SpringGreen3 00CD66 +SpringGreen4 008B45 +YellowGreen 9ACD32 +chartreuse 7FFF00 +chartreuse1 7FFF00 +chartreuse2 76EE00 +chartreuse3 66CD00 +chartreuse4 458B00 +green 00FF00 +green 008000 +lime 00FF00 +green1 00FF00 +green2 00EE00 +green3 00CD00 +green4 008B00 +khaki F0E68C +khaki1 FFF68F +khaki2 EEE685 +khaki3 CDC673 +khaki4 8B864E +Dark Olive Green 4F4F2F +Green Yellow <a href=#sic>[sic]</a> D19275 +Hunter Green <a href=#sic>[sic]</a> 8E2323 +Forest Green, Khaki, Medium Aquamarine 238E23 +Medium Forest Green DBDB70 +Medium Sea Green 426F42 +Medium Spring Green 7FFF00 +Pale Green 8FBC8F +Sea Green 238E68 +Spring Green 00FF7F +Free Speech Green 09F911 +Free Speech Aquamarine 029D74 +DarkOrange FF8C00 +DarkOrange1 FF7F00 +DarkOrange2 EE7600 +DarkOrange3 CD6600 +DarkOrange4 8B4500 +DarkSalmon E9967A +LightCoral F08080 +LightSalmon FFA07A +LightSalmon1 FFA07A +LightSalmon2 EE9572 +LightSalmon3 CD8162 +LightSalmon4 8B5742 +PeachPuff FFDAB9 +PeachPuff1 FFDAB9 +PeachPuff2 EECBAD +PeachPuff3 CDAF95 +PeachPuff4 8B7765 +bisque FFE4C4 +bisque1 FFE4C4 +bisque2 EED5B7 +bisque3 CDB79E +bisque4 8B7D6B +coral FF7F00 +coral FF7F50 +coral1 FF7256 +coral2 EE6A50 +coral3 CD5B45 +coral4 8B3E2F +honeydew F0FFF0 +honeydew1 F0FFF0 +honeydew2 E0EEE0 +honeydew3 C1CDC1 +honeydew4 838B83 +orange FFA500 +orange1 FFA500 +orange2 EE9A00 +orange3 CD8500 +orange4 8B5A00 +salmon FA8072 +salmon1 FF8C69 +salmon2 EE8262 +salmon3 CD7054 +salmon4 8B4C39 +sienna A0522D +sienna1 FF8247 +sienna2 EE7942 +sienna3 CD6839 +sienna4 8B4726 +Mandarian Orange 8E2323 +Orange FF7F00 +Orange Red FF2400 +DeepPink FF1493 +DeepPink1 FF1493 +DeepPink2 EE1289 +DeepPink3 CD1076 +DeepPink4 8B0A50 +HotPink FF69B4 +HotPink1 FF6EB4 +HotPink2 EE6AA7 +HotPink3 CD6090 +HotPink4 8B3A62 +IndianRed CD5C5C +IndianRed1 FF6A6A +IndianRed2 EE6363 +IndianRed3 CD5555 +IndianRed4 8B3A3A +LightPink FFB6C1 +LightPink1 FFAEB9 +LightPink2 EEA2AD +LightPink3 CD8C95 +LightPink4 8B5F65 +MediumVioletRed C71585 +MistyRose FFE4E1 +MistyRose1 FFE4E1 +MistyRose2 EED5D2 +MistyRose3 CDB7B5 +MistyRose4 8B7D7B +OrangeRed FF4500 +OrangeRed1 FF4500 +OrangeRed2 EE4000 +OrangeRed3 CD3700 +OrangeRed4 8B2500 +PaleVioletRed DB7093 +PaleVioletRed1 FF82AB +PaleVioletRed2 EE799F +PaleVioletRed3 CD6889 +PaleVioletRed4 8B475D +VioletRed D02090 +VioletRed1 FF3E96 +VioletRed2 EE3A8C +VioletRed3 CD3278 +VioletRed4 8B2252 +firebrick B22222 +firebrick1 FF3030 +firebrick2 EE2C2C +firebrick3 CD2626 +firebrick4 8B1A1A +pink FFC0CB +pink1 FFB5C5 +pink2 EEA9B8 +pink3 CD919E +pink4 8B636C +Flesh F5CCB0 +Feldspar D19275 +red FF0000 +red1 FF0000 +red2 EE0000 +red3 CD0000 +red4 8B0000 +tomato FF6347 +tomato1 FF6347 +tomato2 EE5C42 +tomato3 CD4F39 +tomato4 8B3626 +Dusty Rose 856363 +Firebrick 8E2323 +Indian Red F5CCB0 +Pink BC8F8F +Salmon 6F4242 +Scarlet 8C1717 +Spicy Pink FF1CAE +Free Speech Magenta E35BD8 +Free Speech Red C00000 +DarkOrchid 9932CC +DarkOrchid1 BF3EFF +DarkOrchid2 B23AEE +DarkOrchid3 9A32CD +DarkOrchid4 68228B +DarkViolet 9400D3 +LavenderBlush FFF0F5 +LavenderBlush1 FFF0F5 +LavenderBlush2 EEE0E5 +LavenderBlush3 CDC1C5 +LavenderBlush4 8B8386 +MediumOrchid BA55D3 +MediumOrchid1 E066FF +MediumOrchid2 D15FEE +MediumOrchid3 B452CD +MediumOrchid4 7A378B +MediumPurple 9370DB +Medium Orchid 9370DB +MediumPurple1 AB82FF +Dark Orchid 9932CD +MediumPurple2 9F79EE +MediumPurple3 8968CD +MediumPurple4 5D478B +lavender E6E6FA +magenta FF00FF +fuchsia FF00FF +magenta1 FF00FF +magenta2 EE00EE +magenta3 CD00CD +magenta4 8B008B +maroon B03060 +maroon1 FF34B3 +maroon2 EE30A7 +maroon3 CD2990 +maroon4 8B1C62 +orchid DA70D6 +Orchid DB70DB +orchid1 FF83FA +orchid2 EE7AE9 +orchid3 CD69C9 +orchid4 8B4789 +plum DDA0DD +plum1 FFBBFF +plum2 EEAEEE +plum3 CD96CD +plum4 8B668B +purple A020F0 +purple 800080 +purple1 9B30FF +purple2 912CEE +purple3 7D26CD +purple4 551A8B +thistle D8BFD8 +thistle1 FFE1FF +thistle2 EED2EE +thistle3 CDB5CD +thistle4 8B7B8B +violet EE82EE +violet blue 9F5F9F +Dark Purple 871F78 +Maroon 800000 +Medium Violet Red DB7093 +Neon Pink FF6EC7 +Plum EAADEA +Thistle D8BFD8 +Turquoise ADEAEA +Violet 4F2F4F +Violet Red CC3299 +AntiqueWhite FAEBD7 +AntiqueWhite1 FFEFDB +AntiqueWhite2 EEDFCC +AntiqueWhite3 CDC0B0 +AntiqueWhite4 8B8378 +FloralWhite FFFAF0 +GhostWhite F8F8FF +NavajoWhite FFDEAD +NavajoWhite1 FFDEAD +NavajoWhite2 EECFA1 +NavajoWhite3 CDB38B +NavajoWhite4 8B795E +OldLace FDF5E6 +WhiteSmoke F5F5F5 +gainsboro DCDCDC +ivory FFFFF0 +ivory1 FFFFF0 +ivory2 EEEEE0 +ivory3 CDCDC1 +ivory4 8B8B83 +linen FAF0E6 +seashell FFF5EE +seashell1 FFF5EE +seashell2 EEE5DE +seashell3 CDC5BF +seashell4 8B8682 +snow FFFAFA +snow1 FFFAFA +snow2 EEE9E9 +snow3 CDC9C9 +snow4 8B8989 +wheat F5DEB3 +wheat1 FFE7BA +wheat2 EED8AE +wheat3 CDBA96 +wheat4 8B7E66 +white FFFFFF +Quartz D9D9F3 +Wheat D8D8BF +BlanchedAlmond FFEBCD +DarkGoldenrod B8860B +DarkGoldenrod1 FFB90F +DarkGoldenrod2 EEAD0E +DarkGoldenrod3 CD950C +DarkGoldenrod4 8B6508 +LemonChiffon FFFACD +LemonChiffon1 FFFACD +LemonChiffon2 EEE9BF +LemonChiffon3 CDC9A5 +LemonChiffon4 8B8970 +LightGoldenrod EEDD82 +LightGoldenrod1 FFEC8B +LightGoldenrod2 EEDC82 +LightGoldenrod3 CDBE70 +LightGoldenrod4 8B814C +LightGoldenrodYellow FAFAD2 +LightYellow FFFFE0 +LightYellow1 FFFFE0 +LightYellow2 EEEED1 +LightYellow3 CDCDB4 +LightYellow4 8B8B7A +PaleGoldenrod EEE8AA +PapayaWhip FFEFD5 +cornsilk FFF8DC +cornsilk1 FFF8DC +cornsilk2 EEE8CD +cornsilk3 CDC8B1 +cornsilk4 8B8878 +goldenrod DAA520 +goldenrod1 FFC125 +goldenrod2 EEB422 +goldenrod3 CD9B1D +goldenrod4 8B6914 +moccasin FFE4B5 +yellow FFFF00 +yellow1 FFFF00 +yellow2 EEEE00 +yellow3 CDCD00 +yellow4 8B8B00 +gold FFD700 +gold1 FFD700 +gold2 EEC900 +gold3 CDAD00 +gold4 8B7500 +Goldenrod DBDB70 +Medium Goldenrod EAEAAE +Yellow Green 99CC32 +copper B87333 +cool copper D98719 +Green Copper 856363 +brass B5A642 +bronze 8C7853 +bronze II A67D3D +bright gold D9D919 +Old Gold CFB53B +CSS Gold CC9900 +gold CD7F32 +silver E6E8FA +Silver, Grey C0C0C0 +Light Steel Blue 545454 +Steel Blue 236B8E diff --git a/tools/colors_find.py b/tools/colors_find.py new file mode 100755 index 0000000..cf66ef9 --- /dev/null +++ b/tools/colors_find.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8:noet +from __future__ import (unicode_literals, division, absolute_import, print_function) + +import sys +import os + +from colormath.color_objects import sRGBColor, LabColor +from colormath.color_conversions import convert_color +from colormath.color_diff import delta_e_cie2000 + + +def get_lab(name, rgb): + rgb = sRGBColor( + int(rgb[:2], 16), int(rgb[2:4], 16), int(rgb[4:6], 16), + is_upscaled=True + ) + lab = convert_color(rgb, LabColor) + return name, lab + + +with open(os.path.join(os.path.dirname(__file__), 'colors.map'), 'r') as f: + colors = [get_lab(*line.split('\t')) for line in f] + + +ulab = get_lab(None, sys.argv[1])[1] + + +def find_color(urgb, colors): + cur_distance = 3 * (255 ** 2 + 1) + cur_color = None + for color, clab in colors: + dist = delta_e_cie2000(ulab, clab) + if dist < cur_distance: + cur_distance = dist + cur_color = (color, clab) + return cur_color + + +cur_color = find_color(ulab, colors) + + +def lab_to_csi(lab): + rgb = convert_color(lab, sRGBColor) + colstr = ';2;' + ';'.join((str(i) for i in get_upscaled_values(rgb))) + return colstr + 'm' + + +def get_upscaled_values(rgb): + return [min(max(0, i), 255) for i in rgb.get_upscaled_value_tuple()] + + +def get_rgb(lab): + rgb = convert_color(lab, sRGBColor) + rgb = sRGBColor(*get_upscaled_values(rgb), is_upscaled=True) + return rgb.get_rgb_hex()[1:] + +print(get_rgb(ulab), ':', cur_color[0], ':', get_rgb(cur_color[1])) + +col_1 = lab_to_csi(ulab) +col_2 = lab_to_csi(cur_color[1]) +sys.stdout.write('\033[48' + col_1 + '\033[38' + col_2 + 'abc\033[0m <-- bg:urgb, fg:crgb\n') +sys.stdout.write('\033[48' + col_2 + '\033[38' + col_1 + 'abc\033[0m <-- bg:crgb, fg:urgb\n') diff --git a/tools/generate_gradients.py b/tools/generate_gradients.py new file mode 100755 index 0000000..290e75e --- /dev/null +++ b/tools/generate_gradients.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8:noet + +'''Gradients generator +''' + +from __future__ import (unicode_literals, division, absolute_import, print_function) + +import sys +import json +import argparse + +from itertools import groupby + +from colormath.color_objects import sRGBColor, LabColor +from colormath.color_conversions import convert_color +from colormath.color_diff import delta_e_cie2000 + +from powerline.colorscheme import cterm_to_hex + + +def num2(s): + try: + return (True, [int(v) for v in s.partition(' ')[::2]]) + except TypeError: + return (False, [float(v) for v in s.partition(' ')[::2]]) + + +def rgbint_to_lab(rgbint): + rgb = sRGBColor( + (rgbint >> 16) & 0xFF, (rgbint >> 8) & 0xFF, rgbint & 0xFF, + is_upscaled=True + ) + return convert_color(rgb, LabColor) + + +cterm_to_lab = tuple((rgbint_to_lab(v) for v in cterm_to_hex)) + + +def color(s): + if len(s) <= 3: + return cterm_to_lab[int(s)] + else: + return rgbint_to_lab(int(s, 16)) + + +def nums(s): + return [int(i) for i in s.split()] + + +def linear_gradient(start_value, stop_value, start_offset, stop_offset, offset): + return start_value + ((offset - start_offset) * (stop_value - start_value) / (stop_offset - start_offset)) + + +def lab_gradient(slab, elab, soff, eoff, off): + svals = slab.get_value_tuple() + evals = elab.get_value_tuple() + return LabColor(*[ + linear_gradient(start_value, end_value, soff, eoff, off) + for start_value, end_value in zip(svals, evals) + ]) + + +def generate_gradient_function(DATA): + def gradient_function(y): + initial_offset = 0 + for offset, start, end in DATA: + if y <= offset: + return lab_gradient(start, end, initial_offset, offset, y) + initial_offset = offset + return gradient_function + + +def get_upscaled_values(rgb): + return [min(max(0, i), 255) for i in rgb.get_upscaled_value_tuple()] + + +def get_rgb(lab): + rgb = convert_color(lab, sRGBColor) + rgb = sRGBColor(*get_upscaled_values(rgb), is_upscaled=True) + return rgb.get_rgb_hex()[1:] + + +def find_color(ulab, colors, ctrans): + cur_distance = float('inf') + cur_color = None + i = 0 + for clab in colors: + dist = delta_e_cie2000(ulab, clab) + if dist < cur_distance: + cur_distance = dist + cur_color = (ctrans(i), clab) + i += 1 + return cur_color + + +def print_color(color): + if type(color) is int: + colstr = '5;' + str(color) + else: + rgb = convert_color(color, sRGBColor) + colstr = '2;' + ';'.join((str(i) for i in get_upscaled_values(rgb))) + sys.stdout.write('\033[48;' + colstr + 'm ') + + +def print_colors(colors, num): + for i in range(num): + color = colors[int(round(i * (len(colors) - 1) / num))] + print_color(color) + sys.stdout.write('\033[0m\n') + + +def dec_scale_generator(num): + j = 0 + r = '' + while num: + r += '\033[{0}m'.format(j % 2) + for i in range(10): + r += str(i) + num -= 1 + if not num: + break + j += 1 + r += '\033[0m\n' + return r + + +def compute_steps(gradient, weights): + maxweight = len(gradient) - 1 + if weights: + weight_sum = sum(weights) + norm_weights = [100.0 * weight / weight_sum for weight in weights] + steps = [0] + for weight in norm_weights: + steps.append(steps[-1] + weight) + steps.pop(0) + steps.pop(0) + else: + step = m / maxweight + steps = [i * step for i in range(1, maxweight + 1)] + return steps + + +palettes = { + '16': (cterm_to_lab[:16], lambda c: c), + '256': (cterm_to_lab, lambda c: c), + None: (cterm_to_lab[16:], lambda c: c + 16), +} + + +def show_scale(rng, num_output): + if not rng and num_output >= 32 and (num_output - 1) // 10 >= 4 and (num_output - 1) % 10 == 0: + sys.stdout.write('0') + sys.stdout.write(''.join(('%*u' % (num_output // 10, i) for i in range(10, 101, 10)))) + sys.stdout.write('\n') + else: + if rng: + vmin, vmax = rng[1] + isint = rng[0] + else: + isint = True + vmin = 0 + vmax = 100 + s = '' + lasts = ' ' + str(vmax) + while len(s) + len(lasts) < num_output: + curpc = len(s) + 1 if s else 0 + curval = vmin + curpc * (vmax - vmin) / num_output + if isint: + curval = int(round(curval)) + s += str(curval) + ' ' + sys.stdout.write(s[:-1] + lasts + '\n') + sys.stdout.write(dec_scale_generator(num_output) + '\n') + + +if __name__ == '__main__': + p = argparse.ArgumentParser(description=__doc__) + p.add_argument('gradient', nargs='*', metavar='COLOR', type=color, help='List of colors (either indexes from 8-bit palette or 24-bit RGB in hexadecimal notation)') + p.add_argument('-n', '--num_items', metavar='INT', type=int, help='Number of items in resulting list', default=101) + p.add_argument('-N', '--num_output', metavar='INT', type=int, help='Number of characters in sample', default=101) + p.add_argument('-r', '--range', metavar='V1 V2', type=num2, help='Use this range when outputting scale') + p.add_argument('-s', '--show', action='store_true', help='If present output gradient sample') + p.add_argument('-p', '--palette', choices=('16', '256'), help='Use this palette. Defaults to 240-color palette (256 colors without first 16)') + p.add_argument('-w', '--weights', metavar='INT INT ...', type=nums, help='Adjust weights of colors. Number of weights must be equal to number of colors') + p.add_argument('-C', '--omit-terminal', action='store_true', help='If present do not compute values for terminal') + + args = p.parse_args() + + m = args.num_items + + steps = compute_steps(args.gradient, args.weights) + + data = [ + (weight, args.gradient[i - 1], args.gradient[i]) + for weight, i in zip(steps, range(1, len(args.gradient))) + ] + gr_func = generate_gradient_function(data) + gradient = [gr_func(y) for y in range(0, m)] + + r = [get_rgb(lab) for lab in gradient] + if not args.omit_terminal: + r2 = [find_color(lab, *palettes[args.palette])[0] for lab in gradient] + r3 = [i[0] for i in groupby(r2)] + + if not args.omit_terminal: + print(json.dumps(r3) + ',') + print(json.dumps(r2) + ',') + print(json.dumps(r)) + + if args.show: + print_colors(args.gradient, args.num_output) + if not args.omit_terminal: + print_colors(r3, args.num_output) + print_colors(r2, args.num_output) + print_colors(gradient, args.num_output) + + show_scale(args.range, args.num_output) diff --git a/tools/purge-PRs.py b/tools/purge-PRs.py new file mode 100755 index 0000000..38f44d9 --- /dev/null +++ b/tools/purge-PRs.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8:noet +from __future__ import (unicode_literals, division, absolute_import, print_function) + +import argparse + +from getpass import getpass + +from github import Github + + +p = argparse.ArgumentParser(description='Powerline release script') +p.add_argument('-u', '--user', type=str, metavar='USER', help='Github username.', required=True) +p.add_argument('-p', '--password', type=str, metavar='PASS', help='Github password. You will be prompted if it is not supplied.') + +if __name__ == '__main__': + args = p.parse_args() + user = args.user + password = args.password or getpass('Password for {0}: '.format(user)) + gh = Github(user, password) + grepo = gh.get_repo('powerline/powerline') + for pr in grepo.get_pulls(): + if pr.base.ref != 'develop': + issue = grepo.get_issue(pr.number) + issue.create_comment('PRs to any branch, but develop, are not accepted.', ) + issue.add_to_labels('s:invalid') + issue.edit(state='closed') |