5
#include "idogesturemanager.h"
7
static gint rotate = 0;
8
static gdouble scale = 1.0;
9
static gdouble translate[2] = { 200, 200 };
10
static gint in_touch = 0;
13
expose_event (GtkWidget *widget,
14
GdkEventExpose *event,
19
gint width = (in_touch > 0) ? 10 : 1;
21
cr = gdk_cairo_create (widget->window);
23
cairo_set_source_rgb (cr, 0, 0, 0);
24
cairo_set_line_width (cr, width);
26
radians = rotate * (G_PI / 180);
27
cairo_translate (cr, translate[0], translate[1]);
28
cairo_scale (cr, scale, scale);
29
cairo_rotate (cr, radians);
31
cairo_rectangle (cr, -50, -50, 100, 100);
32
cairo_stroke_preserve (cr);
33
cairo_set_source_rgb (cr, 1, 0, 1);
44
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
46
const GdkColor white = { 0, 0xffff, 0xffff, 0xffff };
48
gtk_window_set_title (GTK_WINDOW (window), "Touch Demo");
49
gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
50
g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window);
52
da = gtk_drawing_area_new ();
53
gtk_container_add (GTK_CONTAINER (window), da);
55
gtk_widget_modify_bg (da, GTK_STATE_NORMAL, &white);
57
g_signal_connect (da, "expose-event",
58
G_CALLBACK (expose_event), NULL);
64
gesture_start (GtkWindow *window,
65
IdoGestureEvent *event)
69
gtk_widget_queue_draw (GTK_WIDGET (window));
73
gesture_end (GtkWindow *window,
74
IdoGestureEvent *event)
78
gtk_widget_queue_draw (GTK_WIDGET (window));
82
rotate_update (GtkWindow *window,
83
IdoGestureEvent *event)
85
IdoEventGestureRotate *e = (IdoEventGestureRotate *)event;
87
rotate += e->angle_delta * 100;
89
gtk_widget_queue_draw (GTK_WIDGET (window));
93
pinch_update (GtkWindow *window,
94
IdoGestureEvent *event)
96
IdoEventGesturePinch *e = (IdoEventGesturePinch *)event;
98
scale += e->radius_delta / 100;
100
gtk_widget_queue_draw (GTK_WIDGET (window));
104
drag_update (GtkWindow *window,
105
IdoGestureEvent *event)
107
IdoEventGestureDrag *e = (IdoEventGestureDrag *)event;
109
translate[0] += e->delta_x;
110
translate[1] += e->delta_y;
112
gtk_widget_queue_draw (GTK_WIDGET (window));
116
window_mapped (GtkWidget *widget)
118
IdoGestureManager *manager = ido_gesture_manager_get ();
119
GtkWindow *window = GTK_WINDOW (widget);
121
ido_gesture_manager_register_window (manager,
129
ido_gesture_manager_register_window (manager,
137
ido_gesture_manager_register_window (manager,
147
abort_handler (int x)
149
g_print (" **** ABORT ****\n");
155
main (int argc, char **argv)
159
gtk_init (&argc, &argv);
161
/* Don't crash X if we're using some shitty Intel graphics like
162
* my Dell XT2 has in it. */
163
signal (SIGABRT, abort_handler);
165
window = create_window ();
167
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
168
g_signal_connect (window, "map-event", G_CALLBACK (window_mapped), NULL);
170
gtk_widget_show_all (window);