[clutter] test: interactive: port cairo flowers to ClutterCanvas



commit 25e157ea42eff3bade9d08d7d45309a5a86f7942
Author: Lionel Landwerlin <llandwerlin gmail com>
Date:   Sat Dec 5 23:15:17 2015 +0000

    test: interactive: port cairo flowers to ClutterCanvas
    
    https://bugzilla.gnome.org/show_bug.cgi?id=759074

 tests/interactive/test-cairo-flowers.c |   41 +++++++++++++++++++++++--------
 1 files changed, 30 insertions(+), 11 deletions(-)
---
diff --git a/tests/interactive/test-cairo-flowers.c b/tests/interactive/test-cairo-flowers.c
index f60a0f3..2594d68 100644
--- a/tests/interactive/test-cairo-flowers.c
+++ b/tests/interactive/test-cairo-flowers.c
@@ -25,8 +25,12 @@ Flower;
 
 static ClutterActor *stage = NULL;
 
-static ClutterActor *
-make_flower_actor (void)
+static gboolean
+draw_flower (ClutterCanvas *canvas,
+             cairo_t       *cr,
+             gint           width,
+             gint           height,
+             gpointer       user_data)
 {
   /* No science here, just a hack from toying */
   gint i, j;
@@ -53,18 +57,11 @@ make_flower_actor (void)
 
   gint idx, last_idx = -1;
 
-  ClutterActor *ctex;
-  cairo_t      *cr;
-
-  petal_size = PETAL_MIN + rand() % PETAL_VAR;
+  petal_size = GPOINTER_TO_INT (user_data);
   size = petal_size * 8;
 
   n_groups = rand() % 3 + 1;
 
-  ctex = clutter_cairo_texture_new (size, size);
-
-  cr = clutter_cairo_texture_create (CLUTTER_CAIRO_TEXTURE (ctex));
-
   cairo_set_tolerance (cr, 0.1);
 
   /* Clear */
@@ -133,7 +130,29 @@ make_flower_actor (void)
   cairo_arc(cr, 0, 0, petal_size, 0, M_PI * 2);
   cairo_fill(cr);
 
-  cairo_destroy(cr);
+  return TRUE;
+}
+
+static ClutterActor *
+make_flower_actor (void)
+{
+  gint petal_size = PETAL_MIN + rand() % PETAL_VAR;
+  gint size = petal_size * 8;
+  ClutterActor *ctex;
+  ClutterContent *canvas;
+
+  canvas = clutter_canvas_new ();
+  g_signal_connect (canvas, "draw",
+                    G_CALLBACK (draw_flower), GINT_TO_POINTER (petal_size));
+
+  clutter_canvas_set_size (CLUTTER_CANVAS (canvas), size, size);
+  ctex = g_object_new (CLUTTER_TYPE_ACTOR,
+                       "content", canvas,
+                       "width", (gfloat) size,
+                       "height", (gfloat) size,
+                       NULL);
+
+  g_object_unref (canvas);
 
   return ctex;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]