diff options
author | Gonzalo Odiard <godiard@gmail.com> | 2014-07-10 15:37:11 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2014-07-10 15:37:11 (GMT) |
commit | 735871567090053d3c132e4396b8fec880ec70a6 (patch) | |
tree | 3ebd72a71f09272ebb6c4f2c6f9af67ddedb9ec9 | |
parent | cbdea15def11047f0c8e28eb0acb2b1478db1c10 (diff) |
Use black fonts to improve text readability
-rw-r--r-- | budgetscreen.py | 12 | ||||
-rw-r--r-- | chartscreen.py | 16 | ||||
-rw-r--r-- | colors.py | 20 | ||||
-rw-r--r-- | registerscreen.py | 6 |
4 files changed, 45 insertions, 9 deletions
diff --git a/budgetscreen.py b/budgetscreen.py index 48e952b..432a237 100644 --- a/budgetscreen.py +++ b/budgetscreen.py @@ -125,10 +125,18 @@ class BudgetScreen(Gtk.VBox): # If there is no category, display as Unknown if c is '': description = _('Unknown') - catbox = Gtk.Label(label=description) - catbox.set_padding(10, 0) color = colors.get_category_color_str(c) + if colors.is_too_light(color): + font_color = '#000000' + else: + font_color = '#FFFFFF' + + catbox = Gtk.Label() + catbox.set_markup( + '<span color="%s">%s</span>' % (font_color, description)) + + catbox.set_padding(10, 0) ebox = Gtk.EventBox() parse, color = Gdk.Color.parse(color) diff --git a/chartscreen.py b/chartscreen.py index 94f765d..139a48c 100644 --- a/chartscreen.py +++ b/chartscreen.py @@ -130,18 +130,24 @@ class ChartScreen(Gtk.VBox): # If there is no category, display as Unknown if c is '': description = _('Unknown') + + color = colors.get_category_color_str(c) + if colors.is_too_light(color): + font_color = '#000000' + else: + font_color = '#FFFFFF' + catlabel = Gtk.Label() catlabel.set_markup( - '<span size="x-large" color="white">%s</span>' % description) + '<span size="x-large" color="%s">%s</span>' % (font_color, + description)) catlabel.props.margin = 10 catgroup.add_widget(catlabel) - color = colors.get_category_color_str(c) - amountlabel = Gtk.Label() amountlabel.set_markup( - '<span size="x-large" color="white">%s</span>' % - locale.currency(self.category_total[c])) + '<span size="x-large" color="%s">%s</span>' % + (font_color, locale.currency(self.category_total[c]))) amountgroup.add_widget(amountlabel) hbox.pack_start(catlabel, True, True, 20) @@ -1,3 +1,5 @@ +import logging + CREDIT_COLOR = '#009900' DEBIT_COLOR = '#ff4040' @@ -41,3 +43,21 @@ def get_category_color_str(catname): color = get_category_color(catname) return "#%02x%02x%02x" % \ (int(color[0] * 255), int(color[1] * 255), int(color[2] * 255)) + + +def is_too_light(color): + return _luminance(color) > 96 + + +def _luminance(color): + ''' Calculate luminance value ''' + return int(color[1:3], 16) * 0.3 + int(color[3:5], 16) * 0.6 + \ + int(color[5:7], 16) * 0.1 + + +def test_luminances(): + for cat_color in CATEGORY_COLORS: + color = "#%02x%02x%02x" % \ + (int(cat_color[0] * 255), int(cat_color[1] * 255), + int(cat_color[2] * 255)) + logging.error('color %s luminance %s', color, _luminance(color)) diff --git a/registerscreen.py b/registerscreen.py index e5d9d46..0797e67 100644 --- a/registerscreen.py +++ b/registerscreen.py @@ -200,8 +200,10 @@ class RegisterScreen(Gtk.VBox): category = t['category'] cell_renderer.set_property('text', category) if category: - cell_renderer.set_property( - 'background', colors.get_category_color_str(category)) + category_color = colors.get_category_color_str(category) + cell_renderer.set_property('background', category_color) + if not colors.is_too_light(category_color): + cell_renderer.set_property('foreground', '#FFFFFF') else: cell_renderer.set_property('background', None) |