def get_css_color_names(self, text): """Get CSS color names.""" for name in sorted(csscolors.name2hex_map): color = util.RGBA(csscolors.name2hex(name)).get_rgba() text.append( '[%s](%s) %s\n' % ( mdpopups.color_box( [color], OUTER_BORDER, INNER_BORDER, border_size=2, height=self.height, width=self.width * 13, check_size=2 ), color, name ) )
def get_css_color_names(self): """Get CSS color names.""" check_size = self.check_size(self.box_height) html = [] for name in sorted(csscolors.name2hex_map): color = util.RGBA(csscolors.name2hex(name)).get_rgba() html.append( '[%s](%s) %s<br>' % (mdpopups.color_box([color], OUTER_BORDER, INNER_BORDER, border_size=2, height=self.box_height, width=self.box_height * 8, check_size=check_size), color, name)) self.template_vars['channel_names'] = ''.join(html)
def index_colors(self): """Index colors in file.""" colors = set() for m in util.COLOR_RE.finditer(self.source): if self.abort: break color, alpha = util.translate_color(m) if color is not None: colors.add(color) for m in self.webcolor_names.finditer(self.source): if self.abort: break colors.add(csscolors.name2hex(m.group(0))) if not self.abort: sublime.set_timeout( lambda view=self.view, colors=list(colors): self.update_index(view, colors), 0 )
def translate_color(m, use_hex_argb=False, decode=False): """Translate the match object to a color w/ alpha.""" color = None alpha = None alpha_dec = None if m.group('hex_compressed'): if decode: content = m.group('hex_compressed_content').decode('utf-8') else: content = m.group('hex_compressed_content') color = "#%02x%02x%02x" % ( int(content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16) ) elif m.group('hexa_compressed') and use_hex_argb: if decode: content = m.group('hexa_compressed_content').decode('utf-8') else: content = m.group('hexa_compressed_content') color = "#%02x%02x%02x" % ( int(content[1:2] * 2, 16), int(content[2:3] * 2, 16), int(content[3:] * 2, 16) ) alpha = content[0:1] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) elif m.group('hexa_compressed'): if decode: content = m.group('hexa_compressed_content').decode('utf-8') else: content = m.group('hexa_compressed_content') color = "#%02x%02x%02x" % ( int(content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16) ) alpha = content[3:] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) elif m.group('hex'): if decode: content = m.group('hex_content').decode('utf-8') else: content = m.group('hex_content') if len(content) == 6: color = "#%02x%02x%02x" % ( int(content[0:2], 16), int(content[2:4], 16), int(content[4:6], 16) ) else: color = "#%02x%02x%02x" % ( int(content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16) ) elif m.group('hexa') and use_hex_argb: if decode: content = m.group('hexa_content').decode('utf-8') else: content = m.group('hexa_content') if len(content) == 8: color = "#%02x%02x%02x" % ( int(content[2:4], 16), int(content[4:6], 16), int(content[6:], 16) ) alpha = content[0:2] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) else: color = "#%02x%02x%02x" % ( int(content[1:2] * 2, 16), int(content[2:3] * 2, 16), int(content[3:] * 2, 16) ) alpha = content[0:1] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) elif m.group('hexa'): if decode: content = m.group('hexa_content').decode('utf-8') else: content = m.group('hexa_content') if len(content) == 8: color = "#%02x%02x%02x" % ( int(content[0:2], 16), int(content[2:4], 16), int(content[4:6], 16) ) alpha = content[6:] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) else: color = "#%02x%02x%02x" % ( int(content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16) ) alpha = content[3:] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) elif m.group('rgb'): if decode: content = [x.strip() for x in m.group('rgb_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('rgb_content').split(',')] if content[0].endswith('%'): r = round_int(clamp(float(content[0].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) g = round_int(clamp(float(content[1].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) b = round_int(clamp(float(content[2].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) color = "#%02x%02x%02x" % (r, g, b) else: color = "#%02x%02x%02x" % ( clamp(round_int(float(content[0])), 0, 255), clamp(round_int(float(content[1])), 0, 255), clamp(round_int(float(content[2])), 0, 255) ) elif m.group('rgba'): if decode: content = [x.strip() for x in m.group('rgba_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('rgba_content').split(',')] if content[0].endswith('%'): r = round_int(clamp(float(content[0].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) g = round_int(clamp(float(content[1].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) b = round_int(clamp(float(content[2].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) color = "#%02x%02x%02x" % (r, g, b) else: color = "#%02x%02x%02x" % ( clamp(round_int(float(content[0])), 0, 255), clamp(round_int(float(content[1])), 0, 255), clamp(round_int(float(content[2])), 0, 255) ) if content[3].endswith('%'): alpha, alpha_dec = alpha_percent_normalize(content[3]) else: alpha, alpha_dec = alpha_dec_normalize(content[3]) elif m.group('gray'): if decode: content = m.group('gray_content').decode('utf-8') else: content = m.group('gray_content') if content.endswith('%'): g = round_int(clamp(float(content.strip('%')), 0.0, 255.0) * (255.0 / 100.0)) else: g = clamp(round_int(float(content)), 0, 255) color = "#%02x%02x%02x" % (g, g, g) elif m.group('graya'): if decode: content = [x.strip() for x in m.group('graya_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('graya_content').split(',')] if content[0].endswith('%'): g = round_int(clamp(float(content[0].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) else: g = clamp(round_int(float(content[0])), 0, 255) color = "#%02x%02x%02x" % (g, g, g) if content[1].endswith('%'): alpha, alpha_dec = alpha_percent_normalize(content[1]) else: alpha, alpha_dec = alpha_dec_normalize(content[1]) elif m.group('hsl'): if decode: content = [x.strip() for x in m.group('hsl_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('hsl_content').split(',')] rgba = RGBA() hue = float(content[0]) if hue < 0.0 or hue > 360.0: hue = hue % 360.0 h = hue / 360.0 s = clamp(float(content[1].strip('%')), 0.0, 100.0) / 100.0 l = clamp(float(content[2].strip('%')), 0.0, 100.0) / 100.0 rgba.fromhls(h, l, s) color = rgba.get_rgb() elif m.group('hsla'): if decode: content = [x.strip() for x in m.group('hsla_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('hsla_content').split(',')] rgba = RGBA() hue = float(content[0]) if hue < 0.0 or hue > 360.0: hue = hue % 360.0 h = hue / 360.0 s = clamp(float(content[1].strip('%')), 0.0, 100.0) / 100.0 l = clamp(float(content[2].strip('%')), 0.0, 100.0) / 100.0 rgba.fromhls(h, l, s) color = rgba.get_rgb() if content[3].endswith('%'): alpha, alpha_dec = alpha_percent_normalize(content[3]) else: alpha, alpha_dec = alpha_dec_normalize(content[3]) elif m.group('hwb'): if decode: content = [x.strip() for x in m.group('hwb_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('hwb_content').split(',')] rgba = RGBA() hue = float(content[0]) if hue < 0.0 or hue > 360.0: hue = hue % 360.0 h = hue / 360.0 w = clamp(float(content[1].strip('%')), 0.0, 100.0) / 100.0 b = clamp(float(content[2].strip('%')), 0.0, 100.0) / 100.0 rgba.fromhwb(h, w, b) color = rgba.get_rgb() elif m.group('hwba'): if decode: content = [x.strip() for x in m.group('hwba_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('hwba_content').split(',')] rgba = RGBA() hue = float(content[0]) if hue < 0.0 or hue > 360.0: hue = hue % 360.0 h = hue / 360.0 w = clamp(float(content[1].strip('%')), 0.0, 100.0) / 100.0 b = clamp(float(content[2].strip('%')), 0.0, 100.0) / 100.0 rgba.fromhwb(h, w, b) color = rgba.get_rgb() if content[3].endswith('%'): alpha, alpha_dec = alpha_percent_normalize(content[3]) else: alpha, alpha_dec = alpha_dec_normalize(content[3]) elif m.group('webcolors'): try: if decode: color = csscolors.name2hex(m.group('webcolors').decode('utf-8')).lower() else: color = csscolors.name2hex(m.group('webcolors')).lower() except: pass return color, alpha, alpha_dec
def translate_color(m, decode=False): """Translate the match object to a color w/ alpha.""" color = None alpha = None if m.group('hex'): if decode: content = m.group('hex_content') else: content = m.group('hex_content') if len(content) == 6: color = "#%02x%02x%02x" % ( int(content[0:2], 16), int(content[2:4], 16), int(content[4:6], 16) ) else: color = "#%02x%02x%02x" % ( int(content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16) ) elif m.group('rgb'): if decode: content = [x.strip() for x in m.group('rgb_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('rgb_content').split(',')] color = "#%02x%02x%02x" % ( int(content[0]), int(content[1]), int(content[2]) ) elif m.group('rgba'): if decode: content = [x.strip() for x in m.group('rgba_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('rgba_content').split(',')] color = "#%02x%02x%02x" % ( int(content[0]), int(content[1]), int(content[2]) ) alpha = content[3] elif m.group('hsl'): if decode: content = [x.strip() for x in m.group('hsl_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('hsl_content').split(',')] rgba = RGBA() h = float(content[0]) / 360.0 s = float(content[1].strip('%')) / 100.0 l = float(content[2].strip('%')) / 100.0 rgba.fromhls(h, l, s) color = rgba.get_rgb() elif m.group('hsla'): if decode: content = [x.strip() for x in m.group('hsla_content').decode('utf-8').split(',')] else: content = [x.strip() for x in m.group('hsla_content').split(',')] rgba = RGBA() h = float(content[0]) / 360.0 s = float(content[1].strip('%')) / 100.0 l = float(content[2].strip('%')) / 100.0 rgba.fromhls(h, l, s) color = rgba.get_rgb() alpha = content[3] elif m.group('webcolors'): try: if decode: color = csscolors.name2hex(m.group('webcolors').decode('utf-8')).lower() else: color = csscolors.name2hex(m.group('webcolors')).lower() except: pass return color, alpha
def translate_color(m, use_hex_argb=False, decode=False): """Translate the match object to a color w/ alpha.""" color = None alpha = None alpha_dec = None if m.group('hex_compressed'): if decode: content = m.group('hex_compressed_content').decode('utf-8') else: content = m.group('hex_compressed_content') color = "#%02x%02x%02x" % (int(content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16)) elif m.group('hexa_compressed') and use_hex_argb: if decode: content = m.group('hexa_compressed_content').decode('utf-8') else: content = m.group('hexa_compressed_content') color = "#%02x%02x%02x" % (int(content[1:2] * 2, 16), int(content[2:3] * 2, 16), int(content[3:] * 2, 16)) alpha = content[0:1] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) elif m.group('hexa_compressed'): if decode: content = m.group('hexa_compressed_content').decode('utf-8') else: content = m.group('hexa_compressed_content') color = "#%02x%02x%02x" % (int(content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16)) alpha = content[3:] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) elif m.group('hex'): if decode: content = m.group('hex_content').decode('utf-8') else: content = m.group('hex_content') if len(content) == 6: color = "#%02x%02x%02x" % (int( content[0:2], 16), int(content[2:4], 16), int( content[4:6], 16)) else: color = "#%02x%02x%02x" % (int( content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16)) elif m.group('hexa') and use_hex_argb: if decode: content = m.group('hexa_content').decode('utf-8') else: content = m.group('hexa_content') if len(content) == 8: color = "#%02x%02x%02x" % (int( content[2:4], 16), int(content[4:6], 16), int(content[6:], 16)) alpha = content[0:2] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) else: color = "#%02x%02x%02x" % (int( content[1:2] * 2, 16), int(content[2:3] * 2, 16), int(content[3:] * 2, 16)) alpha = content[0:1] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) elif m.group('hexa'): if decode: content = m.group('hexa_content').decode('utf-8') else: content = m.group('hexa_content') if len(content) == 8: color = "#%02x%02x%02x" % (int( content[0:2], 16), int(content[2:4], 16), int( content[4:6], 16)) alpha = content[6:] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) else: color = "#%02x%02x%02x" % (int( content[0:1] * 2, 16), int(content[1:2] * 2, 16), int(content[2:3] * 2, 16)) alpha = content[3:] alpha_dec = fmt_float(float(int(alpha, 16)) / 255.0, 3) elif m.group('rgb'): if decode: content = [ x.strip() for x in m.group('rgb_content').decode('utf-8').split(',') ] else: content = [x.strip() for x in m.group('rgb_content').split(',')] if content[0].endswith('%'): r = round_int( clamp(float(content[0].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) g = round_int( clamp(float(content[1].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) b = round_int( clamp(float(content[2].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) color = "#%02x%02x%02x" % (r, g, b) else: color = "#%02x%02x%02x" % (clamp( round_int(float(content[0])), 0, 255), clamp(round_int(float(content[1])), 0, 255), clamp(round_int(float(content[2])), 0, 255)) elif m.group('rgba'): if decode: content = [ x.strip() for x in m.group('rgba_content').decode('utf-8').split(',') ] else: content = [x.strip() for x in m.group('rgba_content').split(',')] if content[0].endswith('%'): r = round_int( clamp(float(content[0].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) g = round_int( clamp(float(content[1].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) b = round_int( clamp(float(content[2].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) color = "#%02x%02x%02x" % (r, g, b) else: color = "#%02x%02x%02x" % (clamp( round_int(float(content[0])), 0, 255), clamp(round_int(float(content[1])), 0, 255), clamp(round_int(float(content[2])), 0, 255)) if content[3].endswith('%'): alpha, alpha_dec = alpha_percent_normalize(content[3]) else: alpha, alpha_dec = alpha_dec_normalize(content[3]) elif m.group('gray'): if decode: content = m.group('gray_content').decode('utf-8') else: content = m.group('gray_content') if content.endswith('%'): g = round_int( clamp(float(content.strip('%')), 0.0, 255.0) * (255.0 / 100.0)) else: g = clamp(round_int(float(content)), 0, 255) color = "#%02x%02x%02x" % (g, g, g) elif m.group('graya'): if decode: content = [ x.strip() for x in m.group('graya_content').decode('utf-8').split(',') ] else: content = [x.strip() for x in m.group('graya_content').split(',')] if content[0].endswith('%'): g = round_int( clamp(float(content[0].strip('%')), 0.0, 255.0) * (255.0 / 100.0)) else: g = clamp(round_int(float(content[0])), 0, 255) color = "#%02x%02x%02x" % (g, g, g) if content[1].endswith('%'): alpha, alpha_dec = alpha_percent_normalize(content[1]) else: alpha, alpha_dec = alpha_dec_normalize(content[1]) elif m.group('hsl'): if decode: content = [ x.strip() for x in m.group('hsl_content').decode('utf-8').split(',') ] else: content = [x.strip() for x in m.group('hsl_content').split(',')] rgba = RGBA() hue = float(content[0]) if hue < 0.0 or hue > 360.0: hue = hue % 360.0 h = hue / 360.0 s = clamp(float(content[1].strip('%')), 0.0, 100.0) / 100.0 l = clamp(float(content[2].strip('%')), 0.0, 100.0) / 100.0 rgba.fromhls(h, l, s) color = rgba.get_rgb() elif m.group('hsla'): if decode: content = [ x.strip() for x in m.group('hsla_content').decode('utf-8').split(',') ] else: content = [x.strip() for x in m.group('hsla_content').split(',')] rgba = RGBA() hue = float(content[0]) if hue < 0.0 or hue > 360.0: hue = hue % 360.0 h = hue / 360.0 s = clamp(float(content[1].strip('%')), 0.0, 100.0) / 100.0 l = clamp(float(content[2].strip('%')), 0.0, 100.0) / 100.0 rgba.fromhls(h, l, s) color = rgba.get_rgb() if content[3].endswith('%'): alpha, alpha_dec = alpha_percent_normalize(content[3]) else: alpha, alpha_dec = alpha_dec_normalize(content[3]) elif m.group('hwb'): if decode: content = [ x.strip() for x in m.group('hwb_content').decode('utf-8').split(',') ] else: content = [x.strip() for x in m.group('hwb_content').split(',')] rgba = RGBA() hue = float(content[0]) if hue < 0.0 or hue > 360.0: hue = hue % 360.0 h = hue / 360.0 w = clamp(float(content[1].strip('%')), 0.0, 100.0) / 100.0 b = clamp(float(content[2].strip('%')), 0.0, 100.0) / 100.0 rgba.fromhwb(h, w, b) color = rgba.get_rgb() elif m.group('hwba'): if decode: content = [ x.strip() for x in m.group('hwba_content').decode('utf-8').split(',') ] else: content = [x.strip() for x in m.group('hwba_content').split(',')] rgba = RGBA() hue = float(content[0]) if hue < 0.0 or hue > 360.0: hue = hue % 360.0 h = hue / 360.0 w = clamp(float(content[1].strip('%')), 0.0, 100.0) / 100.0 b = clamp(float(content[2].strip('%')), 0.0, 100.0) / 100.0 rgba.fromhwb(h, w, b) color = rgba.get_rgb() if content[3].endswith('%'): alpha, alpha_dec = alpha_percent_normalize(content[3]) else: alpha, alpha_dec = alpha_dec_normalize(content[3]) elif m.group('webcolors'): try: if decode: color = csscolors.name2hex( m.group('webcolors').decode('utf-8')).lower() else: color = csscolors.name2hex(m.group('webcolors')).lower() except: pass return color, alpha, alpha_dec