summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-08-19 21:01:29 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-08-19 21:01:29 +0200
commitbb964fa8bcebee82093cec8da8081eb1366aea96 (patch)
tree90658d533ebc36af93545f5efe03821db4743a29 /src
parentdc7f42807f0dac18ba4d7d0ec86fc2d651feadc3 (diff)
Make gesture inserter visible to all local files
Also remove the transformed flag in favor of a unit transformation. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src')
-rw-r--r--src/grail-inserter.c30
-rw-r--r--src/grail-inserter.h21
2 files changed, 30 insertions, 21 deletions
diff --git a/src/grail-inserter.c b/src/grail-inserter.c
index 9769d94..36ab570 100644
--- a/src/grail-inserter.c
+++ b/src/grail-inserter.c
@@ -28,18 +28,6 @@
28 28
29static const int MAX_GESTURE_ID = 0xfff; 29static const int MAX_GESTURE_ID = 0xfff;
30 30
31struct gesture_inserter {
32 struct slot_state state[DIM_INSTANCE];
33 grail_mask_t unused[DIM_INSTANCE_BYTES];
34 grail_mask_t fresh[DIM_INSTANCE_BYTES];
35 grail_mask_t used[DIM_INSTANCE_BYTES];
36 grail_time_t time;
37 int gestureid;
38 int transformed;
39 float scale_x, scale_y, scale_r;
40 float trans_x, trans_y;
41};
42
43static const int grail_main_type[DIM_GRAIL_TYPE] = { 31static const int grail_main_type[DIM_GRAIL_TYPE] = {
44 GRAIL_MAIN_DRAG, 32 GRAIL_MAIN_DRAG,
45 GRAIL_MAIN_PINCH, 33 GRAIL_MAIN_PINCH,
@@ -72,19 +60,15 @@ static const int grail_main_type[DIM_GRAIL_TYPE] = {
72static void transform_pos(const struct gesture_inserter *gin, 60static void transform_pos(const struct gesture_inserter *gin,
73 struct grail_coord *pos) 61 struct grail_coord *pos)
74{ 62{
75 if (gin->transformed) { 63 pos->x *= gin->scale_x;
76 pos->x *= gin->scale_x; 64 pos->x += gin->trans_x;
77 pos->x += gin->trans_x; 65 pos->y *= gin->scale_y;
78 pos->y *= gin->scale_y; 66 pos->y += gin->trans_y;
79 pos->y += gin->trans_y;
80 }
81} 67}
82 68
83static void transform_prop(const struct gesture_inserter *gin, int type, 69static void transform_prop(const struct gesture_inserter *gin, int type,
84 grail_prop_t *prop, int nprop) 70 grail_prop_t *prop, int nprop)
85{ 71{
86 if (!gin->transformed)
87 return;
88 switch (grail_main_type[type]) { 72 switch (grail_main_type[type]) {
89 case GRAIL_MAIN_DRAG: 73 case GRAIL_MAIN_DRAG:
90 prop[GRAIL_PROP_DRAG_DX] *= gin->scale_x; 74 prop[GRAIL_PROP_DRAG_DX] *= gin->scale_x;
@@ -218,6 +202,11 @@ int gin_init(struct grail *ge)
218 return -ENOMEM; 202 return -ENOMEM;
219 for (i = 0; i < DIM_INSTANCE; i++) 203 for (i = 0; i < DIM_INSTANCE; i++)
220 grail_mask_set(gin->unused, i); 204 grail_mask_set(gin->unused, i);
205 gin->scale_x = 1;
206 gin->scale_y = 1;
207 gin->scale_r = 1;
208 gin->trans_x = 1;
209 gin->trans_y = 1;
221 ge->gin = gin; 210 ge->gin = gin;
222 return 0; 211 return 0;
223} 212}
@@ -395,5 +384,4 @@ void grail_set_bbox(struct grail *ge,
395 gin->scale_r = sqrt((sx * sx + sy * sy) / 2); 384 gin->scale_r = sqrt((sx * sx + sy * sy) / 2);
396 gin->trans_x = tmin->x - dmin.x * sx; 385 gin->trans_x = tmin->x - dmin.x * sx;
397 gin->trans_y = tmin->y - dmin.y * sy; 386 gin->trans_y = tmin->y - dmin.y * sy;
398 gin->transformed = 1;
399} 387}
diff --git a/src/grail-inserter.h b/src/grail-inserter.h
index a81e431..f8ec5ca 100644
--- a/src/grail-inserter.h
+++ b/src/grail-inserter.h
@@ -46,6 +46,27 @@ struct slot_state {
46 struct gebuf buf; 46 struct gebuf buf;
47}; 47};
48 48
49struct gesture_inserter {
50 struct slot_state state[DIM_INSTANCE];
51 grail_mask_t unused[DIM_INSTANCE_BYTES];
52 grail_mask_t fresh[DIM_INSTANCE_BYTES];
53 grail_mask_t used[DIM_INSTANCE_BYTES];
54 grail_time_t time;
55 int gestureid;
56 float scale_x, scale_y, scale_r;
57 float trans_x, trans_y;
58};
59
60static inline float gin_prop_x(const struct gesture_inserter *gin, float x)
61{
62 return gin->scale_x * x + gin->trans_x;
63}
64
65static inline float gin_prop_y(const struct gesture_inserter *gin, float y)
66{
67 return gin->scale_y * y + gin->trans_y;
68}
69
49int gin_init(struct grail *ge); 70int gin_init(struct grail *ge);
50void gin_destroy(struct grail *ge); 71void gin_destroy(struct grail *ge);
51 72