Exemplo n.º 1
0
    def format_info(self, color):
        """ Format the selected color info """
        rgba = RGBA(color)

        try:
            web_color = webcolors.hex_to_name(color)
        except:
            web_color = None

        info = ['<h1 class="header">%s</h1>' % color]
        if web_color is not None:
            info.append('<strong>%s</strong><br><br>' % web_color)
        info.append('<a href="__palettes__">%s</a><br><br>' %
                    color_box(color, border_color, size=64))
        info.append('<span class="key">r:</span> %d ' % rgba.r +
                    '<span class="key">g:</span> %d ' % rgba.g +
                    '<span class="key">b:</span> %d<br>' % rgba.b)
        h, s, v = rgba.tohsv()
        info.append('<span class="key">h:</span> %.0f ' % (h * 360.0) +
                    '<span class="key">s:</span> %.0f ' % (s * 100.0) +
                    '<span class="key">v:</span> %.0f<br>' % (v * 100.0))
        h, l, s = rgba.tohls()
        info.append('<span class="key">h:</span> %.0f ' % (h * 360.0) +
                    '<span class="key">s:</span> %.0f ' % (s * 100.0) +
                    '<span class="key">l:</span> %.0f<br>' % (l * 100.0))
        return ''.join(info)
Exemplo n.º 2
0
    def format_info(self, color):
        """ Format the selected color info """
        rgba = RGBA(color)

        try:
            web_color = webcolors.hex_to_name(color)
        except:
            web_color = None

        info = ['<h1 class="header">%s</h1>' % color]
        if web_color is not None:
            info.append('<strong>%s</strong><br><br>' % web_color)
        info.append('<a href="__palettes__">%s</a><br><br>' % color_box(color, border_color, size=64))
        info.append(
            '<span class="key">r:</span> %d ' % rgba.r +
            '<span class="key">g:</span> %d ' % rgba.g +
            '<span class="key">b:</span> %d<br>' % rgba.b
        )
        h, s, v = rgba.tohsv()
        info.append(
            '<span class="key">h:</span> %.0f ' % (h * 360.0) +
            '<span class="key">s:</span> %.0f ' % (s * 100.0) +
            '<span class="key">v:</span> %.0f<br>' % (v * 100.0)
        )
        h, l, s = rgba.tohls()
        info.append(
            '<span class="key">h:</span> %.0f ' % (h * 360.0) +
            '<span class="key">s:</span> %.0f ' % (s * 100.0) +
            '<span class="key">l:</span> %.0f<br>' % (l * 100.0)
        )
        return ''.join(info)
Exemplo n.º 3
0
    def insert_color(self, target_color, convert=None):
        """Insert colors."""

        sels = self.view.sel()
        if (len(sels) == 1 and sels[0].size() == 0):
            point = sels[0].begin()
            insert_calc = InsertionCalc(self.view, point, target_color, convert)
            insert_calc.calc()
            if insert_calc.web_color:
                value = insert_calc.web_color
            elif insert_calc.convert_rgb:
                value = "%d, %d, %d" % (
                    int(target_color[1:3], 16),
                    int(target_color[3:5], 16),
                    int(target_color[5:7], 16)
                )
                if insert_calc.alpha:
                    value += ', %s' % insert_calc.alpha
                if insert_calc.format_override:
                    value = ("rgba(%s)" if insert_calc.alpha else "rgb(%s)") % value
            elif insert_calc.convert_hsl:
                hsl = RGBA(target_color)
                h, l, s = hsl.tohls()
                value = "%s, %s%%, %s%%" % (
                    util.fmt_float(h * 360.0),
                    util.fmt_float(s * 100.0),
                    util.fmt_float(l * 100.0)
                )
                if insert_calc.alpha:
                    value += ', %s' % insert_calc.alpha
                if insert_calc.format_override:
                    value = ("hsla(%s)" if insert_calc.alpha else "hsl(%s)") % value
            else:
                use_upper = ch_settings.get("upper_case_hex", False)
                value = target_color.upper() if use_upper else target_color.lower()
            self.view.sel().subtract(sels[0])
            self.view.sel().add(insert_calc.region)
            self.view.run_command("insert", {"characters": value})
        self.view.hide_popup()
Exemplo n.º 4
0
    def format_info(self, color, alpha=None):
        """Format the selected color info."""
        rgba = RGBA(color)

        try:
            web_color = csscolors.hex2name(rgba.get_rgb())
        except Exception:
            web_color = None

        color_picker = util.color_picker_available()
        s = sublime.load_settings('color_helper.sublime-settings')
        show_global_palettes = s.get('enable_global_user_palettes', True)
        show_project_palettes = s.get('enable_project_user_palettes', True)
        show_favorite_palette = s.get('enable_favorite_palette', True)
        show_current_palette = s.get('enable_current_file_palette', True)
        show_conversions = s.get('enable_color_conversions', True)
        show_picker = s.get('enable_color_picker', True)
        palettes_enabled = (
            show_global_palettes or show_project_palettes or
            show_favorite_palette or show_current_palette
        )
        click_color_box_to_pick = s.get('click_color_box_to_pick', 'none')

        if click_color_box_to_pick == 'color_picker' and color_picker and show_picker:
            color_box_wrapper = '\n\n[%s]' + ('(__color_picker__:%s)' % color)
        elif click_color_box_to_pick == 'palette_picker' and palettes_enabled:
            color_box_wrapper = '\n\n[%s](__palettes__)'
        else:
            color_box_wrapper = '\n\n%s'

        info = []

        if click_color_box_to_pick != 'palette_picker' and palettes_enabled:
            info.append(PALETTE_MENU)
        if click_color_box_to_pick != 'color_picker' and color_picker and show_picker:
            info.append(PICK_MENU % color)
        if show_global_palettes or show_project_palettes:
            info.append(ADD_COLOR_MENU % color.lower())
        if show_favorite_palette:
            if color in util.get_favs()['colors']:
                info.append(UNMARK_MENU % color.lower())
            else:
                info.append(MARK_MENU % color.lower())

        info.append(
            color_box_wrapper % mdpopups.color_box([color], '#cccccc', '#333333', height=64, width=192, border_size=2)
        )

        if show_conversions:
            info.append('\n\n---\n\n')
            if web_color:
                info.append(WEB_COLOR % (color, web_color))
            info.append(HEX_COLOR % (color, (color.lower() if not alpha else color[:-2].lower())))
            info.append(RGB_COLOR % (color, rgba.r, rgba.g, rgba.b))
            info.append(RGBA_COLOR % (color, rgba.r, rgba.g, rgba.b, alpha if alpha else '1'))
            h, l, s = rgba.tohls()
            info.append(
                HSL_COLOR % (color, util.fmt_float(h * 360.0), util.fmt_float(s * 100.0), util.fmt_float(l * 100.0))
            )
            info.append(
                HSLA_COLOR % (
                    color, util.fmt_float(h * 360.0), util.fmt_float(s * 100.0), util.fmt_float(l * 100.0),
                    alpha if alpha else '1'
                )
            )
        return ''.join(info)
Exemplo n.º 5
0
 def insert_color(self, target_color):
     sels = self.view.sel()
     if (len(sels) == 1 and sels[0].size() == 0):
         try:
             web_color = webcolors.hex_to_name(target_color)
         except:
             web_color = None
         point = sels[0].begin()
         visible = self.view.visible_region()
         start = point - 50
         end = point + 50
         convert_rgb = False
         convert_hsl = False
         alpha = None
         region = sublime.Region(point)
         if start < visible.begin():
             start = visible.begin()
         if end > visible.end():
             end = visible.end()
         bfr = self.view.substr(sublime.Region(start, end))
         ref = point - start
         found = False
         for m in COLOR_RE.finditer(bfr):
             if ref >= m.start(0) and ref < m.end(0):
                 found = True
                 if m.group('hex'):
                     region = sublime.Region(
                         m.start('hex') + start,
                         m.end('hex') + start)
                     break
                 elif m.group('rgb'):
                     if web_color:
                         region = sublime.Region(
                             m.start('rgb') + start,
                             m.end('rgb') + start)
                     else:
                         region = sublime.Region(
                             m.start('rgb_content') + start,
                             m.end('rgb_content') + start)
                         convert_rgb = True
                     break
                 elif m.group('rgba'):
                     web_color = None
                     region = sublime.Region(
                         m.start('rgba_content') + start,
                         m.end('rgba_content') + start)
                     convert_rgb = True
                     content = [
                         x.strip()
                         for x in m.group('rgba_content').split(',')
                     ]
                     alpha = content[3]
                     break
                 elif m.group('hsl'):
                     if web_color:
                         region = sublime.Region(
                             m.start('hsl') + start,
                             m.end('hsl') + start)
                     else:
                         region = sublime.Region(
                             m.start('hsl_content') + start,
                             m.end('hsl_content') + start)
                         convert_hsl = True
                     break
                 elif m.group('hsla'):
                     web_color = None
                     region = sublime.Region(
                         m.start('hsla_content') + start,
                         m.end('hsla_content') + start)
                     convert_hsl = True
                     content = [
                         x.strip().rstrip('%')
                         for x in m.group('hsla_content').split(',')
                     ]
                     alpha = content[3]
                     break
                 elif m.group('hash'):
                     region = sublime.Region(
                         m.start('hash') + start,
                         m.end('hash') + start)
                     break
                 elif m.group('rgb'):
                     if not web_color:
                         convert_rgb = True
                     break
                 elif m.group('rgba'):
                     convert_rgb = True
                     alpha = '1'
                     break
                 elif m.group('hsl'):
                     if not web_color:
                         convert_hsl = True
                     break
                 elif m.group('rgb'):
                     convert_hsl = True
                     alpha = '1'
                     break
                 else:
                     found = False
         if not found:
             word_region = self.view.word(sels[0])
             word = self.view.substr(word_region)
             try:
                 webcolors.name_to_hex(word).lower()
                 region = word_region
             except:
                 pass
         if web_color:
             value = web_color
         elif convert_rgb:
             value = "%d, %d, %d" % (int(
                 target_color[1:3], 16), int(
                     target_color[3:5], 16), int(target_color[5:7], 16))
             if alpha:
                 value += ', %s' % alpha
         elif convert_hsl:
             hsl = RGBA(target_color)
             h, l, s = hsl.tohls()
             value = "%d, %d%%, %d%%" % (int(
                 '%.0f' %
                 (h * 360.0)), int('%.0f' %
                                   (s * 100.0)), int('%.0f' % (l * 100.0)))
             if alpha:
                 value += ', %s' % alpha
         else:
             value = target_color
         self.view.sel().subtract(sels[0])
         self.view.sel().add(region)
         self.view.run_command("insert", {"characters": value})
     self.view.hide_popup()
Exemplo n.º 6
0
 def insert_color(self, target_color):
     sels = self.view.sel()
     if (len(sels) == 1 and sels[0].size() == 0):
         try:
             web_color = webcolors.hex_to_name(target_color)
         except:
             web_color = None
         point = sels[0].begin()
         visible = self.view.visible_region()
         start = point - 50
         end = point + 50
         convert_rgb = False
         convert_hsl = False
         alpha = None
         region = sublime.Region(point)
         if start < visible.begin():
             start = visible.begin()
         if end > visible.end():
             end = visible.end()
         bfr = self.view.substr(sublime.Region(start, end))
         ref = point - start
         found = False
         for m in COLOR_RE.finditer(bfr):
             if ref >= m.start(0) and ref < m.end(0):
                 found = True
                 if m.group('hex'):
                     region = sublime.Region(m.start('hex') + start, m.end('hex') + start)
                     break
                 elif m.group('rgb'):
                     if web_color:
                         region = sublime.Region(m.start('rgb') + start, m.end('rgb') + start)
                     else:
                         region = sublime.Region(m.start('rgb_content') + start, m.end('rgb_content') + start)
                         convert_rgb = True
                     break
                 elif m.group('rgba'):
                     web_color = None
                     region = sublime.Region(m.start('rgba_content') + start, m.end('rgba_content') + start)
                     convert_rgb = True
                     content = [x.strip() for x in m.group('rgba_content').split(',')]
                     alpha = content[3]
                     break
                 elif m.group('hsl'):
                     if web_color:
                         region = sublime.Region(m.start('hsl') + start, m.end('hsl') + start)
                     else:
                         region = sublime.Region(m.start('hsl_content') + start, m.end('hsl_content') + start)
                         convert_hsl = True
                     break
                 elif m.group('hsla'):
                     web_color = None
                     region = sublime.Region(m.start('hsla_content') + start, m.end('hsla_content') + start)
                     convert_hsl = True
                     content = [x.strip().rstrip('%') for x in m.group('hsla_content').split(',')]
                     alpha = content[3]
                     break
                 elif m.group('hash'):
                     region = sublime.Region(m.start('hash') + start, m.end('hash') + start)
                     break
                 elif m.group('rgb'):
                     if not web_color:
                         convert_rgb = True
                     break
                 elif m.group('rgba'):
                     convert_rgb = True
                     alpha = '1'
                     break
                 elif m.group('hsl'):
                     if not web_color:
                         convert_hsl = True
                     break
                 elif m.group('rgb'):
                     convert_hsl = True
                     alpha = '1'
                     break
                 else:
                     found = False
         if not found:
             word_region = self.view.word(sels[0])
             word = self.view.substr(word_region)
             try:
                 webcolors.name_to_hex(word).lower()
                 region = word_region
             except:
                 pass
         if web_color:
             value = web_color
         elif convert_rgb:
             value = "%d, %d, %d" % (
                 int(target_color[1:3], 16),
                 int(target_color[3:5], 16),
                 int(target_color[5:7], 16)
             )
             if alpha:
                 value += ', %s' % alpha
         elif convert_hsl:
             hsl = RGBA(target_color)
             h, l, s = hsl.tohls()
             value = "%d, %d%%, %d%%" % (
                 int('%.0f' % (h * 360.0)),
                 int('%.0f' % (s * 100.0)),
                 int('%.0f' % (l * 100.0))
             )
             if alpha:
                 value += ', %s' % alpha
         else:
             value = target_color
         self.view.sel().subtract(sels[0])
         self.view.sel().add(region)
         self.view.run_command("insert", {"characters": value})
     self.view.hide_popup()