SHOW:
|
|
- or go back to the newest paste.
| 1 | from colorsys import * | |
| 2 | import math | |
| 3 | ||
| 4 | simple_colors = {
| |
| 5 | "aliceblue":"f0f8ff", | |
| 6 | "antiquewhite":"faebd7", | |
| 7 | "aqua":"00ffff", | |
| 8 | "aquamarine":"7fffd4", | |
| 9 | "azure":"f0ffff", | |
| 10 | "beige":"f5f5dc", | |
| 11 | "bisque":"ffe4c4", | |
| 12 | "black":"000000", | |
| 13 | "blanchedalmond":"ffebcd", | |
| 14 | "blue":"0000ff", | |
| 15 | "blueviolet":"8a2be2", | |
| 16 | "brown":"a52a2a", | |
| 17 | "burlywood":"deb887", | |
| 18 | "cadetblue":"5f9ea0", | |
| 19 | "chartreuse":"7fff00", | |
| 20 | "chocolate":"d2691e", | |
| 21 | "coral":"ff7f50", | |
| 22 | "cornflowerblue":"6495ed", | |
| 23 | "cornsilk":"fff8dc", | |
| 24 | "crimson":"dc143c", | |
| 25 | "cyan":"00ffff", | |
| 26 | "darkblue":"00008b", | |
| 27 | "darkcyan":"008b8b", | |
| 28 | "darkgoldenrod":"b8860b", | |
| 29 | "darkgray":"a9a9a9", | |
| 30 | "darkgreen":"006400", | |
| 31 | "darkgrey":"a9a9a9", | |
| 32 | "darkkhaki":"bdb76b", | |
| 33 | "darkmagenta":"8b008b", | |
| 34 | "darkolivegreen":"556b2f", | |
| 35 | "darkorange":"ff8c00", | |
| 36 | "darkorchid":"9932cc", | |
| 37 | "darkred":"8b0000", | |
| 38 | "darksalmon":"e9967a", | |
| 39 | "darkseagreen":"8fbc8f", | |
| 40 | "darkslateblue":"483d8b", | |
| 41 | "darkslategray":"2f4f4f", | |
| 42 | "darkslategrey":"2f4f4f", | |
| 43 | "darkturquoise":"00ced1", | |
| 44 | "darkviolet":"9400d3", | |
| 45 | "deeppink":"ff1493", | |
| 46 | "deepskyblue":"00bfff", | |
| 47 | "dimgray":"696969", | |
| 48 | "dimgrey":"696969", | |
| 49 | "dodgerblue":"1e90ff", | |
| 50 | "firebrick":"b22222", | |
| 51 | "floralwhite":"fffaf0", | |
| 52 | "forestgreen":"228b22", | |
| 53 | "fuchsia":"ff00ff", | |
| 54 | "gainsboro":"dcdcdc", | |
| 55 | "ghostwhite":"f8f8ff", | |
| 56 | "gold":"ffd700", | |
| 57 | "goldenrod":"daa520", | |
| 58 | "gray":"808080", | |
| 59 | "green":"008000", | |
| 60 | "greenyellow":"adff2f", | |
| 61 | "grey":"808080", | |
| 62 | "honeydew":"f0fff0", | |
| 63 | "hotpink":"ff69b4", | |
| 64 | "indianred":"cd5c5c", | |
| 65 | "indigo":"4b0082", | |
| 66 | "ivory":"fffff0", | |
| 67 | "khaki":"f0e68c", | |
| 68 | "lavender":"e6e6fa", | |
| 69 | "lavenderblush":"fff0f5", | |
| 70 | "lawngreen":"7cfc00", | |
| 71 | "lemonchiffon":"fffacd", | |
| 72 | "lightblue":"add8e6", | |
| 73 | "lightcoral":"f08080", | |
| 74 | "lightcyan":"e0ffff", | |
| 75 | "lightgoldenrodyellow":"fafad2", | |
| 76 | "lightgray":"d3d3d3", | |
| 77 | "lightgreen":"90ee90", | |
| 78 | "lightgrey":"d3d3d3", | |
| 79 | "lightpink":"ffb6c1", | |
| 80 | "lightsalmon":"ffa07a", | |
| 81 | "lightseagreen":"20b2aa", | |
| 82 | "lightskyblue":"87cefa", | |
| 83 | "lightslategray":"778899", | |
| 84 | "lightslategrey":"778899", | |
| 85 | "lightsteelblue":"b0c4de", | |
| 86 | "lightyellow":"ffffe0", | |
| 87 | "lime":"00ff00", | |
| 88 | "limegreen":"32cd32", | |
| 89 | "linen":"faf0e6", | |
| 90 | "magenta":"ff00ff", | |
| 91 | "maroon":"800000", | |
| 92 | "mediumaquamarine":"66cdaa", | |
| 93 | "mediumblue":"0000cd", | |
| 94 | "mediumorchid":"ba55d3", | |
| 95 | "mediumpurple":"9370db", | |
| 96 | "mediumseagreen":"3cb371", | |
| 97 | "mediumslateblue":"7b68ee", | |
| 98 | "mediumspringgreen":"00fa9a", | |
| 99 | "mediumturquoise":"48d1cc", | |
| 100 | "mediumvioletred":"c71585", | |
| 101 | "midnightblue":"191970", | |
| 102 | "mintcream":"f5fffa", | |
| 103 | "mistyrose":"ffe4e1", | |
| 104 | "moccasin":"ffe4b5", | |
| 105 | "navajowhite":"ffdead", | |
| 106 | "navy":"000080", | |
| 107 | "oldlace":"fdf5e6", | |
| 108 | "olive":"808000", | |
| 109 | "olivedrab":"6b8e23", | |
| 110 | "orange":"ffa500", | |
| 111 | "orangered":"ff4500", | |
| 112 | "orchid":"da70d6", | |
| 113 | "palegoldenrod":"eee8aa", | |
| 114 | "palegreen":"98fb98", | |
| 115 | "paleturquoise":"afeeee", | |
| 116 | "palevioletred":"db7093", | |
| 117 | "papayawhip":"ffefd5", | |
| 118 | "peachpuff":"ffdab9", | |
| 119 | "peru":"cd853f", | |
| 120 | "pink":"ffc0cb", | |
| 121 | "plum":"dda0dd", | |
| 122 | "powderblue":"b0e0e6", | |
| 123 | "purple":"800080", | |
| 124 | "red":"ff0000", | |
| 125 | "rosybrown":"bc8f8f", | |
| 126 | "royalblue":"4169e1", | |
| 127 | "saddlebrown":"8b4513", | |
| 128 | "salmon":"fa8072", | |
| 129 | "sandybrown":"f4a460", | |
| 130 | "seagreen":"2e8b57", | |
| 131 | "seashell":"fff5ee", | |
| 132 | "sienna":"a0522d", | |
| 133 | "silver":"c0c0c0", | |
| 134 | "skyblue":"87ceeb", | |
| 135 | "slateblue":"6a5acd", | |
| 136 | "slategray":"708090", | |
| 137 | "slategrey":"708090", | |
| 138 | "snow":"fffafa", | |
| 139 | "springgreen":"00ff7f", | |
| 140 | "steelblue":"4682b4", | |
| 141 | "tan":"d2b48c", | |
| 142 | "teal":"008080", | |
| 143 | "thistle":"d8bfd8", | |
| 144 | "tomato":"ff6347", | |
| 145 | "turquoise":"40e0d0", | |
| 146 | "violet":"ee82ee", | |
| 147 | "wheat":"f5deb3", | |
| 148 | "white":"ffffff", | |
| 149 | "whitesmoke":"f5f5f5", | |
| 150 | "yellow":"ffff00", | |
| 151 | "yellowgreen":"9acd32" | |
| 152 | } | |
| 153 | ||
| 154 | class ColorScale: | |
| 155 | def __init__(self, min, max): | |
| 156 | self.min = float(min) | |
| 157 | self.max = float(max) | |
| 158 | ||
| 159 | def range(self, color1, color2): | |
| 160 | def HSV(color): | |
| 161 | color_hex = simple_colors[color] | |
| 162 | - | colortuple = tuple([float(int(color_hex[i:i+2], 16))/255. \ |
| 162 | + | colorlist = [float(int(color_hex[i:i+2], 16))/255. \ |
| 163 | - | for i in range(0, len(color_hex), 2)]) |
| 163 | + | for i in range(0, len(color_hex), 2)] |
| 164 | - | return rgb_to_hsv(*colortuple) |
| 164 | + | return rgb_to_hsv(*colorlist) |
| 165 | - | #print HSV(color1), HSV(color2) |
| 165 | + | |
| 166 | scale = (float(value) - self.min)/(self.max - self.min) | |
| 167 | - | scaled = (float(value) - self.min)/(self.max - self.min) |
| 167 | + | |
| 168 | c2 = HSV(color2) | |
| 169 | if c2[0] > c1[0]: | |
| 170 | if (c2[0] - c1[0]) > 0.5: | |
| 171 | h = c1[0] - scale*(1.-c2[0]+c1[0]) | |
| 172 | - | h = c1[0] - scaled*(1.-c2[0]+c1[0]) |
| 172 | + | |
| 173 | h += 1.0 | |
| 174 | else: | |
| 175 | h = c1[0] + scale*(c2[0]-c1[0]) | |
| 176 | - | h = c1[0] + scaled*(c2[0]-c1[0]) |
| 176 | + | |
| 177 | if (c1[0] - c2[0]) > 0.5: | |
| 178 | h = c1[0] + scale*(1.-c1[0]+c2[0]) | |
| 179 | - | h = c1[0] + scaled*(1.-c1[0]+c2[0]) |
| 179 | + | |
| 180 | h -= 1.0 | |
| 181 | else: | |
| 182 | h = c1[0] - scale*(c1[0]-c2[0]) | |
| 183 | - | h = c1[0] - scaled*(c1[0]-c2[0]) |
| 183 | + | s = c1[1]+(c2[1]-c1[1])*scale |
| 184 | - | s = c1[1]+(c2[1]-c1[1])*scaled |
| 184 | + | v = c1[2]+(c2[2]-c1[2])*scale |
| 185 | - | v = c1[2]+(c2[2]-c1[2])*scaled |
| 185 | + | return tuple(map(lambda x: 255.*x, hsv_to_rgb(h, s, v))) |
| 186 | - | hsv = (h, s, v) |
| 186 | + |