diff options
author | Benjamin Berg <benjamin@sipsolutions.net> | 2009-02-10 17:00:49 (GMT) |
---|---|---|
committer | Benjamin Berg <benjamin@sipsolutions.net> | 2009-02-10 17:00:49 (GMT) |
commit | aa9be1c47fbd9eebfae6313a66cc7e7e74bace23 (patch) | |
tree | 8ecdd0eb0bff296cb0480dfbf87d3442e9697713 /src | |
parent | e7cd6a2a1f93916bdb9396a5629628e4ca73c219 (diff) |
Speed improvements for the launcher.
This patch makes the launcher set the background color on the pulsing icon,
so that a solid surface will be cached. It also changes some property lookups
and code that converts color formats (string<->touple) to speed everything up.
Diffstat (limited to 'src')
-rw-r--r-- | src/jarabe/view/launcher.py | 6 | ||||
-rw-r--r-- | src/jarabe/view/pulsingicon.py | 43 |
2 files changed, 25 insertions, 24 deletions
diff --git a/src/jarabe/view/launcher.py b/src/jarabe/view/launcher.py index fde7f78..6ddb04a 100644 --- a/src/jarabe/view/launcher.py +++ b/src/jarabe/view/launcher.py @@ -65,8 +65,10 @@ class LaunchBox(hippo.CanvasBox): background_color=style.COLOR_WHITE.get_int()) self._activity_id = activity_id - self._activity_icon = CanvasPulsingIcon(file_name=icon_path, - pulse_color=icon_color) + self._activity_icon = CanvasPulsingIcon( + file_name=icon_path, + pulse_color=icon_color, + background_color=style.COLOR_WHITE.get_gdk_color()) self.append(self._activity_icon, hippo.PACK_EXPAND) # FIXME support non-xo colors in CanvasPulsingIcon diff --git a/src/jarabe/view/pulsingicon.py b/src/jarabe/view/pulsingicon.py index 3627f3b..6847276 100644 --- a/src/jarabe/view/pulsingicon.py +++ b/src/jarabe/view/pulsingicon.py @@ -16,6 +16,7 @@ import math +import gtk import gobject from sugar.graphics.icon import Icon, CanvasIcon @@ -41,42 +42,40 @@ class Pulser(object): if self._pulse_hid is not None: gobject.source_remove(self._pulse_hid) self._pulse_hid = None - self._icon.xo_color = self._icon.base_color + self._icon.xo_color = self._icon.get_base_color() def update(self): - if self._icon.pulsing: - base_color = self._icon.base_color - pulse_color = self._icon.pulse_color + if self._icon.get_pulsing(): + base_color = self._icon.get_base_color() + pulse_color = self._icon.get_pulse_color() base_stroke = self._get_as_rgba(base_color.get_stroke_color()) pulse_stroke = self._get_as_rgba(pulse_color.get_stroke_color()) base_fill = self._get_as_rgba(base_color.get_fill_color()) pulse_fill = self._get_as_rgba(pulse_color.get_fill_color()) - self._icon.stroke_color = \ - self._get_color(base_stroke, pulse_stroke).get_svg() - self._icon.fill_color = \ - self._get_color(base_fill, pulse_fill).get_svg() + self._icon.set_stroke_color( + self._get_color_string(base_stroke, pulse_stroke)) + self._icon.set_fill_color( + self._get_color_string(base_fill, pulse_fill)) else: self._icon.xo_color = self._icon.base_color def _get_as_rgba(self, html_color): if html_color == 'none': - return Color('#FFFFFF', alpha=1.0).get_rgba() + return 1.0, 1.0, 1.0 else: - return Color(html_color).get_rgba() - - def _get_color(self, orig_color, target_color): - next_point = (orig_color[0] + - self._level * (target_color[0] - orig_color[0]), - orig_color[1] + - self._level * (target_color[1] - orig_color[1]), - orig_color[2] + - self._level * (target_color[2] - orig_color[2])) - - return Color('#%02x%02x%02x' % (int(next_point[0] * 255), - int(next_point[1] * 255), - int(next_point[2] * 255))) + color = gtk.gdk.color_parse(html_color) + return color.red / 65535.0, \ + color.green / 65535.0, \ + color.blue / 65535.0 + + def _get_color_string(self, orig_color, target_color): + r = orig_color[0] + self._level * (target_color[0] - orig_color[0]) + g = orig_color[1] + self._level * (target_color[1] - orig_color[1]) + b = orig_color[2] + self._level * (target_color[2] - orig_color[2]) + + return '#%02x%02x%02x' % (int(r * 255), int(g * 255), int(b * 255)) def __pulse_cb(self): self._phase += _STEP |