手势计算
手势事件定义
1、window 窗口设置俘获touch event
2、window 接受 touch 事件
2.1、直接传给用户程序处理
2.2、转换成手势事件传给用户程序处理
2.3、(未完成)转换成普通键盘鼠标事件,并发送给 mousewp 冒泡处理
#define XK_FINGER1_MOVE 0x7A11 //两个值: x y 方向
#define XK_FINGER2_MOVE 0x7A21 //两个值:x y 方向
#define XK_FINGERS_MOVE 0x7A31 //两个值: x y 方向
#define XK_FINGER2_SCALE 0x7A22 //(x,y)表示拉伸的中心点,a表示拉伸的比例,a是浮点数
#define XK_FINGER2_ROTATE 0x7A23 //(x,y)表示旋转的中心点,a表示顺时针旋转弧度,a是浮点数
示例
static void get_gesture(void *obj, T_ID event, TTable *in, void *arg, TExist *exist)
{
Tint code, x, y;
TFloat a;
code = TTableGetInt(in, TStringID(code));
x = TTableGetInt(in, TStringID(x));
y = TTableGetInt(in, TStringID(y));
a = TTableGetFloat(in, TStringID(a));
switch(code)
{
case XK_FINGER1_MOVE:
case XK_FINGER2_MOVE:
TLogD(move offset: x=%d, y=%dn, x, y);
break;
case XK_FINGER2_SCALE:
TLogD(scale at point:%d, %d, %fn, x, y, a);
break;
case XK_FINGER2_ROTATE:
TLogD(rotate at point:%d, %d, %fn, x, y, a);
break;
}
TwUpdateShow();
return;
}
TObjectAddEventHandler(win, TW_WINDOW_EVENT_GESTURE, get_gesture, NULL);