From 63e12fbd5ea5aef17a5b7aa26cb3c772cb0cb3db Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 13 Oct 2006 16:05:48 +0000 Subject: More work on links --- (limited to 'sugar') diff --git a/sugar/graphics/bubble.py b/sugar/graphics/bubble.py index dc7c635..8f2fa32 100644 --- a/sugar/graphics/bubble.py +++ b/sugar/graphics/bubble.py @@ -1,4 +1,7 @@ +import math + import gobject +import gtk import hippo class Bubble(hippo.CanvasBox, hippo.CanvasItem): @@ -11,7 +14,7 @@ class Bubble(hippo.CanvasBox, hippo.CanvasItem): def __init__(self, **kwargs): self._color = None - self._radius = 12 + self._radius = 8 hippo.CanvasBox.__init__(self, **kwargs) @@ -24,25 +27,34 @@ class Bubble(hippo.CanvasBox, hippo.CanvasItem): if pspec.name == 'color': return self._color - def _color_string_to_rgb(self, color_string): + def _string_to_rgb(self, color_string): col = gtk.gdk.color_parse(color_string) - return (col.red / 65535, col.green / 65535, col.blue / 65535) + return (col.red / 65535.0, col.green / 65535.0, col.blue / 65535.0) def do_paint_below_children(self, cr, damaged_box): - cairo_move_to(self._radius, 0); - cr.arc(width - self._radius, self._radius, + [width, height] = self.get_allocation() + + line_width = 3.0 + x = line_width + y = line_width + width -= line_width * 2 + height -= line_width * 2 + + cr.move_to(x + self._radius, y); + cr.arc(x + width - self._radius, y + self._radius, self._radius, math.pi * 1.5, math.pi * 2); - cr.arc(width - self._radius, height - self._radius, + cr.arc(x + width - self._radius, x + height - self._radius, self._radius, 0, math.pi * 0.5); - cr.arc(self._radius, height - self._radius, + cr.arc(x + self._radius, y + height - self._radius, self._radius, math.pi * 0.5, math.pi); - cr.arc(cr, self._radius, self._radius, self._radius, + cr.arc(x + self._radius, y + self._radius, self._radius, math.pi, math.pi * 1.5); - color = self._color.get_fill_color() - cr.set_source_rgb(cr, self._color_string_to_rgb(color)); - cairo_fill_preserve(cr); + color = self._string_to_rgb(self._color.get_fill_color()) + cr.set_source_rgb(*color) + cr.fill_preserve(); - color = self._color.get_stroke_color() - cr.set_source_rgb(cr, self._color_string_to_rgb(color)); - cairo_stroke(cr); + color = self._string_to_rgb(self._color.get_stroke_color()) + cr.set_source_rgb(*color) + cr.set_line_width(line_width) + cr.stroke(); -- cgit v0.9.1