gcompris r3467 - branches/gcomprixogoo/src/anim-activity
- From: bcoudoin svn gnome org
- To: svn-commits-list gnome org
- Subject: gcompris r3467 - branches/gcomprixogoo/src/anim-activity
- Date: Sat, 5 Jul 2008 12:59:46 +0000 (UTC)
Author: bcoudoin
Date: Sat Jul 5 12:59:46 2008
New Revision: 3467
URL: http://svn.gnome.org/viewvc/gcompris?rev=3467&view=rev
Log:
implemented circle and filled circle
Modified:
branches/gcomprixogoo/src/anim-activity/AnimItem.py
branches/gcomprixogoo/src/anim-activity/anim.py
Modified: branches/gcomprixogoo/src/anim-activity/AnimItem.py
==============================================================================
--- branches/gcomprixogoo/src/anim-activity/AnimItem.py (original)
+++ branches/gcomprixogoo/src/anim-activity/AnimItem.py Sat Jul 5 12:59:46 2008
@@ -532,7 +532,7 @@
self.update()
#
-# The Filled rectangle
+# The Rectangle (filled or not)
#
class AnimItemRect(AnimItem):
@@ -610,7 +610,103 @@
return('x', 'y',
'width', 'height',
'fill_color_rgba',
- 'stroke_color_rgba')
+ 'stroke_color_rgba',
+ 'line_width')
+
+ def fill(self, fill, stroke):
+ gcompris.sound.play_ogg("sounds/paint1.wav")
+ if self.filled:
+ self.item.set_properties(fill_color_rgba = fill,
+ stroke_color_rgba = stroke)
+ else:
+ self.item.set_properties(stroke_color_rgba = stroke)
+
+#
+# The elliopse (filled or not)
+#
+class AnimItemEllipse(AnimItem):
+
+ center_x = 0
+ canter_y = 0
+ radius_x = 0
+ radius_y = 0
+ filled = False
+
+ def __init__(self, anim, center_x, center_y,
+ color_fill, color_stroke, line_width):
+ AnimItem.__init__(self, anim)
+ center_x, center_y = self.snap_to_grid(center_x, center_y)
+ self.center_x = center_x
+ self.center_y = center_y
+
+ self.item = \
+ goocanvas.Ellipse(
+ parent = self.rootitem,
+ center_x = self.center_x,
+ center_y = self.center_y,
+ radius_x = self.radius_x,
+ radius_y = self.radius_y,
+ stroke_color_rgba = color_stroke,
+ line_width = line_width)
+
+ if color_fill:
+ self.filled = True
+ self.item.set_properties(fill_color_rgba = color_fill)
+
+ self.item.set_data("AnimItem", self)
+ self.item.connect("button_press_event", anim.item_event)
+ self.item.connect("button_release_event", anim.item_event)
+ self.item.connect("motion_notify_event", anim.item_event)
+
+ # Fixme, should replace set_bounds in resize cases
+ def scale_bounds(self, p1, p2):
+ (x1, y1, x2, y2) = self.snap_obj_to_grid(p1, p2)
+ bounds = self.item.get_bounds()
+ sx = (x2 - x1) / (bounds.x2 - bounds.x1)
+ sy = (y2 - y1) / (bounds.y2 - bounds.y1)
+ print "sx=%f sy=%f" %(sx, sy)
+ self.item.scale(sx, sy)
+
+
+ def set_bounds(self, p1, p2):
+ (x1, y1, x2, y2) = self.snap_obj_to_grid(p1, p2)
+ radius_x = abs((x2 - x1) / 2)
+ radius_y = abs((y2 - y1) / 2)
+ center_x = x1 + radius_x
+ center_y = y1 + radius_y
+ self.item.set_properties(center_x = center_x,
+ center_y = center_y,
+ radius_x = radius_x,
+ radius_y = radius_y )
+
+ def get_x1y1(self):
+ x = self.item.get_property("center_x") - self.item.get_property("radius_x")
+ y = self.item.get_property("center_y") - self.item.get_property("radius_y")
+ return(x, y)
+
+ def get_x2y1(self):
+ x = self.item.get_property("center_x") + self.item.get_property("radius_x")
+ y = self.item.get_property("center_y") - self.item.get_property("radius_y")
+ return(x, y)
+
+ def get_x2y2(self):
+ x = self.item.get_property("center_x") + self.item.get_property("radius_x")
+ y = self.item.get_property("center_y") + self.item.get_property("radius_y")
+ return(x, y)
+
+ def get_x1y2(self):
+ x = self.item.get_property("center_x") - self.item.get_property("radius_x")
+ y = self.item.get_property("center_y") + self.item.get_property("radius_y")
+ return(x, y)
+
+ # Return the list of properties that have to be saved for
+ # this object
+ def get_properties(self):
+ return('center_x', 'center_y',
+ 'radius_x', 'radius_y',
+ 'fill_color_rgba',
+ 'stroke_color_rgba',
+ 'line_width')
def fill(self, fill, stroke):
gcompris.sound.play_ogg("sounds/paint1.wav")
Modified: branches/gcomprixogoo/src/anim-activity/anim.py
==============================================================================
--- branches/gcomprixogoo/src/anim-activity/anim.py (original)
+++ branches/gcomprixogoo/src/anim-activity/anim.py Sat Jul 5 12:59:46 2008
@@ -706,6 +706,20 @@
self.created_object.create_item_event(item,
target,
event)
+ elif self.tools[self.current_tool][0] == "FILL_CIRCLE":
+ self.created_object = AnimItemEllipse(self,
+ event.x, event.y,
+ self.color.fill, self.color.stroke, 2)
+ self.created_object.create_item_event(item,
+ target,
+ event)
+ elif self.tools[self.current_tool][0] == "CIRCLE":
+ self.created_object = AnimItemEllipse(self,
+ event.x, event.y,
+ None, self.color.stroke, 7)
+ self.created_object.create_item_event(item,
+ target,
+ event)
# We keep all object in a unique list
self.animlist.append(self.created_object)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]