~oubiwann/libgrip/671558-pygrip

« back to all changes in this revision

Viewing changes to examples/rectangle-mover/gesture.c

  • Committer: Duncan McGreggor
  • Date: 2010-11-10 21:04:53 UTC
  • mfrom: (1.2.5 trunk)
  • Revision ID: duncan@ubuntu.com-20101110210453-meve3zlxvc2i00ao
Merged from trunk (gobject introspection).

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
 
5
5
#include "gropegesturemanager.h"
6
6
 
7
 
#include <geis/geis.h>
8
 
 
9
7
static gint    rotate = 0;
10
8
static gdouble scale = 1.0;
11
9
static gdouble translate[2] = { 200, 200 };
64
62
 
65
63
static void
66
64
gesture_start (GtkWindow         *window,
67
 
               guint32            type,
68
 
               GropeGestureEvent *event)
 
65
               GropeGestureEvent *event,
 
66
               gpointer           user_data)
69
67
{
70
68
  in_touch++;
71
69
 
74
72
 
75
73
static void
76
74
gesture_end (GtkWindow         *window,
77
 
             guint32   gesture_type,
78
 
             GropeGestureEvent *event)
 
75
             GropeGestureEvent *event,
 
76
             gpointer           user_data)
79
77
{
80
78
  in_touch--;
81
79
 
83
81
}
84
82
 
85
83
static void
86
 
gesture_update (GtkWindow         *window,
87
 
                guint32            gesture_type,
88
 
                GropeGestureEvent *event)
89
 
{
90
 
  if (gesture_type == GROPE_GESTURE_PINCH2)
91
 
    {
92
 
      GropeEventGesturePinch *e = (GropeEventGesturePinch *)event;
93
 
 
94
 
      scale += e->radius_delta / 100;
95
 
 
96
 
      gtk_widget_queue_draw (GTK_WIDGET (window));
97
 
    }
98
 
  else if (gesture_type == GROPE_GESTURE_DRAG2)
99
 
    {
100
 
      GropeEventGestureDrag *e = (GropeEventGestureDrag *)event;
101
 
 
102
 
      translate[0] += e->delta_x;
103
 
      translate[1] += e->delta_y;
104
 
 
105
 
      gtk_widget_queue_draw (GTK_WIDGET (window));
106
 
    }
107
 
  else if (gesture_type == GROPE_GESTURE_ROTATE2)
108
 
    {
109
 
      GropeEventGestureRotate *e = (GropeEventGestureRotate *)event;
110
 
 
111
 
      rotate += e->angle_delta * 100;
112
 
 
113
 
      gtk_widget_queue_draw (GTK_WIDGET (window));
114
 
    }
 
84
rotate_update (GtkWindow         *window,
 
85
               GropeGestureEvent *event,
 
86
               gpointer           user_data)
 
87
{
 
88
  GropeEventGestureRotate *e = (GropeEventGestureRotate *)event;
 
89
 
 
90
  rotate += e->angle_delta * 100;
 
91
 
 
92
  gtk_widget_queue_draw (GTK_WIDGET (window));
 
93
}
 
94
 
 
95
static void
 
96
pinch_update (GtkWindow         *window,
 
97
              GropeGestureEvent *event,
 
98
              gpointer           user_data)
 
99
{
 
100
  GropeEventGesturePinch *e = (GropeEventGesturePinch *)event;
 
101
 
 
102
  scale += e->radius_delta / 100;
 
103
 
 
104
  gtk_widget_queue_draw (GTK_WIDGET (window));
 
105
}
 
106
 
 
107
static void
 
108
drag_update (GtkWindow         *window,
 
109
             GropeGestureEvent *event,
 
110
             gpointer           user_data)
 
111
{
 
112
  GropeEventGestureDrag *e = (GropeEventGestureDrag *)event;
 
113
 
 
114
  translate[0] += e->delta_x;
 
115
  translate[1] += e->delta_y;
 
116
 
 
117
  gtk_widget_queue_draw (GTK_WIDGET (window));
115
118
}
116
119
 
117
120
static void
122
125
 
123
126
  grope_gesture_manager_register_window (manager,
124
127
                                         window,
125
 
                                         GROPE_GESTURE_PINCH2 | GROPE_GESTURE_ROTATE2 | GROPE_GESTURE_DRAG2,
126
 
                                         gesture_start,
127
 
                                         gesture_update,
128
 
                                         gesture_end);
 
128
                                         GROPE_GESTURE_PINCH,
 
129
                                         2,
 
130
                                         gesture_start,
 
131
                                         pinch_update,
 
132
                                         gesture_end,
 
133
                                         NULL, NULL);
 
134
 
 
135
  grope_gesture_manager_register_window (manager,
 
136
                                         window,
 
137
                                         GROPE_GESTURE_ROTATE,
 
138
                                         2,
 
139
                                         gesture_start,
 
140
                                         rotate_update,
 
141
                                         gesture_end,
 
142
                                         NULL, NULL);
 
143
 
 
144
  grope_gesture_manager_register_window (manager,
 
145
                                         window,
 
146
                                         GROPE_GESTURE_DRAG,
 
147
                                         2,
 
148
                                         gesture_start,
 
149
                                         drag_update,
 
150
                                         gesture_end,
 
151
                                         NULL, NULL);
129
152
}
130
153
 
131
154
static void
151
174
 
152
175
  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
153
176
  g_signal_connect (window, "map-event", G_CALLBACK (window_mapped), NULL);
154
 
 
 
177
 
155
178
  gtk_widget_show_all (window);
156
179
 
157
180
  gtk_main ();