Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static enum tp_gesture_state
- tp_gesture_handle_state_unknown(struct tp_dispatch *tp, uint64_t time)
- {
- struct tp_touch *first = tp->gesture.touches[0],
- *second = tp->gesture.touches[1];
- uint32_t dir1, dir2;
- int yres = tp->device->abs.absinfo_y->resolution;
- int vert_distance;
- /* for two-finger gestures, if the fingers stay unmoving for a
- * while, assume (slow) scroll */
- if (tp->gesture.finger_count == 2) {
- if (time > (tp->gesture.initial_time + DEFAULT_GESTURE_2FG_SCROLL_TIMEOUT)) {
- tp_gesture_set_scroll_buildup(tp);
- return GESTURE_STATE_SCROLL;
- }
- /* Else check if one finger is > 20mm below the others */
- vert_distance = abs(first->point.y - second->point.y);
- if (vert_distance > 20 * yres &&
- tp->gesture.finger_count > 2 &&
- tp->gesture.enabled) {
- tp_gesture_init_pinch(tp);
- return GESTURE_STATE_PINCH;
- }
- }
- /* Else wait for both fingers to have moved */
- dir1 = tp_gesture_get_direction(tp, first, tp->gesture.finger_count);
- dir2 = tp_gesture_get_direction(tp, second, tp->gesture.finger_count);
- printf("\n \n====== DIR 1 ======== : %f\n", (double) dir1 );
- printf("====== DIR 2 ========: %f\n \n", (double) dir2 );
- if (dir1 == UNDEFINED_DIRECTION || dir2 == UNDEFINED_DIRECTION)
- return GESTURE_STATE_UNKNOWN;
- /* If both touches are moving in the same direction assume
- * scroll or swipe */
- if (tp_gesture_same_directions(dir1, dir2)) {
- if (tp->gesture.finger_count == 2) {
- tp_gesture_set_scroll_buildup(tp);
- return GESTURE_STATE_SCROLL;
- } else if (tp->gesture.enabled) {
- return GESTURE_STATE_SWIPE;
- }
- } else {
- tp_gesture_init_pinch(tp);
- return GESTURE_STATE_PINCH;
- }
- return GESTURE_STATE_UNKNOWN;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement