[gtk+/wip/events: 24/25] testgestures: Update for gestures
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/events: 24/25] testgestures: Update for gestures
- Date: Wed, 14 Mar 2012 18:43:46 +0000 (UTC)
commit 2bf2b5df5f61f2f591cf565c6bbb6f8a6d21181b
Author: Benjamin Otte <otte redhat com>
Date: Wed Mar 14 19:25:18 2012 +0100
testgestures: Update for gestures
tests/testgestures.c | 125 ++++++++++++++++++++++---------------------------
1 files changed, 56 insertions(+), 69 deletions(-)
---
diff --git a/tests/testgestures.c b/tests/testgestures.c
index 839a9a7..aaeee50 100644
--- a/tests/testgestures.c
+++ b/tests/testgestures.c
@@ -21,16 +21,12 @@
#include <gtk/gtk.h>
-typedef struct _SwipeData SwipeData;
-struct _SwipeData {
+typedef struct _AreaData AreaData;
+struct _AreaData {
double x_offset;
double y_offset;
double progress;
guint color;
-};
-
-typedef struct _PinchPanData PinchPanData;
-struct _PinchPanData {
cairo_matrix_t matrix;
cairo_matrix_t pending;
GdkPixbuf *pixbuf;
@@ -39,7 +35,7 @@ struct _PinchPanData {
static void
update_swipe (GtkEventRecognizer *recognizer,
GtkEventTracker *tracker,
- SwipeData *data)
+ AreaData *data)
{
GtkSwipeGesture *swipe = GTK_SWIPE_GESTURE (tracker);
GtkWidget *widget = gtk_event_tracker_get_widget (tracker);
@@ -57,7 +53,7 @@ update_swipe (GtkEventRecognizer *recognizer,
static void
finish_swipe (GtkEventRecognizer *recognizer,
GtkEventTracker *tracker,
- SwipeData *data)
+ AreaData *data)
{
GtkSwipeGesture *swipe = GTK_SWIPE_GESTURE (tracker);
GtkWidget *widget = gtk_event_tracker_get_widget (tracker);
@@ -81,7 +77,7 @@ finish_swipe (GtkEventRecognizer *recognizer,
static void
cancel_swipe (GtkEventRecognizer *recognizer,
GtkEventTracker *tracker,
- SwipeData *data)
+ AreaData *data)
{
GtkWidget *widget = gtk_event_tracker_get_widget (tracker);
@@ -91,39 +87,6 @@ cancel_swipe (GtkEventRecognizer *recognizer,
gtk_widget_queue_draw (widget);
}
-static gboolean
-draw_swipe (GtkWidget *widget,
- cairo_t *cr,
- SwipeData *data)
-{
- static const GdkRGBA colors[4] = {
- { 1, 0, 0, 1 },
- { 0, 1, 0, 1 },
- { 0, 0, 1, 1 },
- { 1, 1, 0, 1 },
- };
- int i, x, y, w, h;
-
- w = gtk_widget_get_allocated_width (widget);
- h = gtk_widget_get_allocated_height (widget);
- x = data->x_offset * w;
- y = data->y_offset * h;
-
- cairo_translate (cr, x, y);
-
- for (i = 0; i < 4; i++)
- {
- gdk_cairo_set_source_rgba (cr, &colors[data->color ^ i]);
- cairo_rectangle (cr,
- i % 2 ? (x > 0 ? -w : w) : 0,
- i / 2 ? (y > 0 ? -h : h) : 0,
- w, h);
- cairo_fill (cr);
- }
-
- return FALSE;
-}
-
static void
pinch_pan_get_matrix (cairo_matrix_t *matrix,
GtkPinchPanGesture *pinch)
@@ -142,12 +105,13 @@ pinch_pan_get_matrix (cairo_matrix_t *matrix,
static void
update_pinch_pan (GtkEventRecognizer *recognizer,
GtkEventTracker *tracker,
- PinchPanData *data)
+ AreaData *data)
{
GtkPinchPanGesture *pinch = GTK_PINCH_PAN_GESTURE (tracker);
GtkWidget *widget = gtk_event_tracker_get_widget (tracker);
- pinch_pan_get_matrix (&data->pending, pinch);
+ if (gtk_gesture_owns_all_sequences (GTK_GESTURE (tracker)))
+ pinch_pan_get_matrix (&data->pending, pinch);
gtk_widget_queue_draw (widget);
}
@@ -155,7 +119,7 @@ update_pinch_pan (GtkEventRecognizer *recognizer,
static void
finish_pinch_pan (GtkEventRecognizer *recognizer,
GtkEventTracker *tracker,
- PinchPanData *data)
+ AreaData *data)
{
GtkPinchPanGesture *pinch = GTK_PINCH_PAN_GESTURE (tracker);
GtkWidget *widget = gtk_event_tracker_get_widget (tracker);
@@ -170,7 +134,7 @@ finish_pinch_pan (GtkEventRecognizer *recognizer,
static void
cancel_pinch_pan (GtkEventRecognizer *recognizer,
GtkEventTracker *tracker,
- PinchPanData *data)
+ AreaData *data)
{
GtkWidget *widget = gtk_event_tracker_get_widget (tracker);
@@ -180,10 +144,39 @@ cancel_pinch_pan (GtkEventRecognizer *recognizer,
}
static gboolean
-draw_pinch_pan (GtkWidget *widget,
- cairo_t *cr,
- PinchPanData *data)
+draw_area (GtkWidget *widget,
+ cairo_t *cr,
+ AreaData *data)
{
+ static const GdkRGBA colors[4] = {
+ { 1, 0, 0, 1 },
+ { 0, 1, 0, 1 },
+ { 0, 0, 1, 1 },
+ { 1, 1, 0, 1 },
+ };
+ int i, x, y, w, h;
+
+ w = gtk_widget_get_allocated_width (widget);
+ h = gtk_widget_get_allocated_height (widget);
+ x = data->x_offset * w;
+ y = data->y_offset * h;
+
+ cairo_save (cr);
+
+ cairo_translate (cr, x, y);
+
+ for (i = 0; i < 4; i++)
+ {
+ gdk_cairo_set_source_rgba (cr, &colors[data->color ^ i]);
+ cairo_rectangle (cr,
+ i % 2 ? (x > 0 ? -w : w) : 0,
+ i / 2 ? (y > 0 ? -h : h) : 0,
+ w, h);
+ cairo_fill (cr);
+ }
+
+ cairo_restore (cr);
+
cairo_translate (cr,
gtk_widget_get_allocated_width (widget) / 2.0,
gtk_widget_get_allocated_height (widget) / 2.0);
@@ -204,8 +197,7 @@ main (int argc, char *argv[])
{
GtkEventRecognizer *recognizer;
GtkWidget *window, *area;
- SwipeData swipe_data = { 0, };
- PinchPanData pinch_pan_data = { { 0 }, };
+ AreaData area_data = { 0 };
gtk_init (&argc, &argv);
@@ -217,30 +209,25 @@ main (int argc, char *argv[])
gtk_widget_set_size_request (area, 400, 300);
recognizer = gtk_swipe_recognizer_new ();
- g_signal_connect (recognizer, "started", G_CALLBACK (update_swipe), &swipe_data);
- g_signal_connect (recognizer, "updated", G_CALLBACK (update_swipe), &swipe_data);
- g_signal_connect (recognizer, "finished", G_CALLBACK (finish_swipe), &swipe_data);
- g_signal_connect (recognizer, "cancelled", G_CALLBACK (cancel_swipe), &swipe_data);
-#if 0
+ g_signal_connect (recognizer, "started", G_CALLBACK (update_swipe), &area_data);
+ g_signal_connect (recognizer, "updated", G_CALLBACK (update_swipe), &area_data);
+ g_signal_connect (recognizer, "finished", G_CALLBACK (finish_swipe), &area_data);
+ g_signal_connect (recognizer, "cancelled", G_CALLBACK (cancel_swipe), &area_data);
gtk_widget_add_recognizer (area, recognizer);
-#endif
- cairo_matrix_init_identity (&pinch_pan_data.matrix);
- cairo_matrix_init_identity (&pinch_pan_data.pending);
- pinch_pan_data.pixbuf = gdk_pixbuf_new_from_file ("gnome-textfile.png", NULL);
- g_assert (pinch_pan_data.pixbuf);
+ cairo_matrix_init_identity (&area_data.matrix);
+ cairo_matrix_init_identity (&area_data.pending);
+ area_data.pixbuf = gdk_pixbuf_new_from_file ("gnome-textfile.png", NULL);
+ g_assert (area_data.pixbuf);
recognizer = gtk_pinch_pan_recognizer_new ();
- g_signal_connect (recognizer, "started", G_CALLBACK (update_pinch_pan), &pinch_pan_data);
- g_signal_connect (recognizer, "updated", G_CALLBACK (update_pinch_pan), &pinch_pan_data);
- g_signal_connect (recognizer, "finished", G_CALLBACK (finish_pinch_pan), &pinch_pan_data);
- g_signal_connect (recognizer, "cancelled", G_CALLBACK (cancel_pinch_pan), &pinch_pan_data);
-#if 1
+ g_signal_connect (recognizer, "started", G_CALLBACK (update_pinch_pan), &area_data);
+ g_signal_connect (recognizer, "updated", G_CALLBACK (update_pinch_pan), &area_data);
+ g_signal_connect (recognizer, "finished", G_CALLBACK (finish_pinch_pan), &area_data);
+ g_signal_connect (recognizer, "cancelled", G_CALLBACK (cancel_pinch_pan), &area_data);
gtk_widget_add_recognizer (area, recognizer);
-#endif
- g_signal_connect_after (area, "draw", G_CALLBACK (draw_swipe), &swipe_data);
- g_signal_connect_after (area, "draw", G_CALLBACK (draw_pinch_pan), &pinch_pan_data);
+ g_signal_connect_after (area, "draw", G_CALLBACK (draw_area), &area_data);
gtk_container_add (GTK_CONTAINER (window), area);
gtk_widget_show_all (window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]