Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamus_ <mail2samus@gmail.com>2010-03-21 12:12:49 (GMT)
committer Samus_ <mail2samus@gmail.com>2010-03-21 12:12:49 (GMT)
commit5be7ccacf36a085e48a02f69acf4bb8e00367ffb (patch)
tree29e489f4a2de2573a278addc42c27c09bc0663dc
parent75076e764ab3c2f7748d695fbb8be27c1edc8b56 (diff)
comments
-rwxr-xr-xfracciones.activity/gtkcake.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/fracciones.activity/gtkcake.py b/fracciones.activity/gtkcake.py
index 3477bbe..c81d5ec 100755
--- a/fracciones.activity/gtkcake.py
+++ b/fracciones.activity/gtkcake.py
@@ -77,10 +77,14 @@ class Cake(gtk.DrawingArea):
"""Enmascara la imagen de la torta y dibuja solo los trozos que no
fueron seleccionados
"""
+ # al crear un cairo.Context los cambios se graban en el Surface que se le pase al constructor
+ # por lo tanto necesitamos usar dummy_image para no alterar image que es propio a la clase
dummy_image = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
image_ctx = cairo.Context(dummy_image)
+ # ponemos la imagen como source_surface de modo que cairo no nos escriba arriba
image_ctx.set_source_surface(image)
image_ctx.paint()
+ # el metodo de enmascaramiento es dibujar en modo "borrar" ya que mask no quiso andar
image_ctx.set_operator(cairo.OPERATOR_CLEAR)
for index, selected in enumerate(self.selected_list):
if selected:
@@ -95,6 +99,7 @@ class Cake(gtk.DrawingArea):
angle_end)
image_ctx.close_path()
image_ctx.fill()
+ # cargamos la imagen con las partes borradas sobre el context general
context.set_source_surface(dummy_image)
context.paint()