Lines Matching refs:indev

27 static void init_scroll_limits(lv_indev_t * indev);
30 static void scroll_limit_diff(lv_indev_t * indev, int32_t * diff_x, int32_t * diff_y);
47 void lv_indev_scroll_handler(lv_indev_t * indev) in lv_indev_scroll_handler() argument
49 if(indev->pointer.vect.x == 0 && indev->pointer.vect.y == 0) { in lv_indev_scroll_handler()
53 lv_obj_t * scroll_obj = indev->pointer.scroll_obj; in lv_indev_scroll_handler()
56 scroll_obj = lv_indev_find_scroll_obj(indev); in lv_indev_scroll_handler()
59 init_scroll_limits(indev); in lv_indev_scroll_handler()
61 lv_obj_remove_state(indev->pointer.act_obj, LV_STATE_PRESSED); in lv_indev_scroll_handler()
63 if(indev->reset_query) return; in lv_indev_scroll_handler()
93 lv_point_transform(&indev->pointer.vect, angle, scale_x, scale_y, &pivot, false); in lv_indev_scroll_handler()
98 if(indev->pointer.scroll_dir == LV_DIR_HOR) { in lv_indev_scroll_handler()
101 diff_x = elastic_diff(scroll_obj, indev->pointer.vect.x, sl, sr, LV_DIR_HOR); in lv_indev_scroll_handler()
106 diff_y = elastic_diff(scroll_obj, indev->pointer.vect.y, st, sb, LV_DIR_VER); in lv_indev_scroll_handler()
116 scroll_limit_diff(indev, &diff_x, &diff_y); in lv_indev_scroll_handler()
119 if(indev->reset_query) return; in lv_indev_scroll_handler()
120 indev->pointer.scroll_sum.x += diff_x; in lv_indev_scroll_handler()
121 indev->pointer.scroll_sum.y += diff_y; in lv_indev_scroll_handler()
124 void lv_indev_scroll_throw_handler(lv_indev_t * indev) in lv_indev_scroll_throw_handler() argument
126 lv_obj_t * scroll_obj = indev->pointer.scroll_obj; in lv_indev_scroll_throw_handler()
128 if(indev->pointer.scroll_dir == LV_DIR_NONE) return; in lv_indev_scroll_throw_handler()
130 int32_t scroll_throw = indev->scroll_throw; in lv_indev_scroll_throw_handler()
133 indev->pointer.scroll_throw_vect.y = 0; in lv_indev_scroll_throw_handler()
134 indev->pointer.scroll_throw_vect.x = 0; in lv_indev_scroll_throw_handler()
140 if(indev->pointer.scroll_dir == LV_DIR_VER) { in lv_indev_scroll_throw_handler()
141 indev->pointer.scroll_throw_vect.x = 0; in lv_indev_scroll_throw_handler()
144 indev->pointer.scroll_throw_vect.y = in lv_indev_scroll_throw_handler()
145 indev->pointer.scroll_throw_vect.y * (100 - scroll_throw) / 100; in lv_indev_scroll_throw_handler()
150indev->pointer.scroll_throw_vect.y = elastic_diff(scroll_obj, indev->pointer.scroll_throw_vect.y, … in lv_indev_scroll_throw_handler()
153 lv_obj_scroll_by_raw(scroll_obj, 0, indev->pointer.scroll_throw_vect.y); in lv_indev_scroll_throw_handler()
154 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
158 int32_t diff_y = lv_indev_scroll_throw_predict(indev, LV_DIR_VER); in lv_indev_scroll_throw_handler()
159 indev->pointer.scroll_throw_vect.y = 0; in lv_indev_scroll_throw_handler()
160 scroll_limit_diff(indev, NULL, &diff_y); in lv_indev_scroll_throw_handler()
163 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
166 else if(indev->pointer.scroll_dir == LV_DIR_HOR) { in lv_indev_scroll_throw_handler()
167 indev->pointer.scroll_throw_vect.y = 0; in lv_indev_scroll_throw_handler()
170 indev->pointer.scroll_throw_vect.x = in lv_indev_scroll_throw_handler()
171 indev->pointer.scroll_throw_vect.x * (100 - scroll_throw) / 100; in lv_indev_scroll_throw_handler()
176indev->pointer.scroll_throw_vect.x = elastic_diff(scroll_obj, indev->pointer.scroll_throw_vect.x, … in lv_indev_scroll_throw_handler()
179 lv_obj_scroll_by_raw(scroll_obj, indev->pointer.scroll_throw_vect.x, 0); in lv_indev_scroll_throw_handler()
180 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
184 int32_t diff_x = lv_indev_scroll_throw_predict(indev, LV_DIR_HOR); in lv_indev_scroll_throw_handler()
185 indev->pointer.scroll_throw_vect.x = 0; in lv_indev_scroll_throw_handler()
186 scroll_limit_diff(indev, &diff_x, NULL); in lv_indev_scroll_throw_handler()
189 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
194 if(indev->pointer.scroll_throw_vect.x == 0 && indev->pointer.scroll_throw_vect.y == 0) { in lv_indev_scroll_throw_handler()
203 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
207 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
219 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
223 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
228 lv_obj_send_event(scroll_obj, LV_EVENT_SCROLL_END, indev); in lv_indev_scroll_throw_handler()
229 if(indev->reset_query) return; in lv_indev_scroll_throw_handler()
231 indev->pointer.scroll_dir = LV_DIR_NONE; in lv_indev_scroll_throw_handler()
232 indev->pointer.scroll_obj = NULL; in lv_indev_scroll_throw_handler()
236 int32_t lv_indev_scroll_throw_predict(lv_indev_t * indev, lv_dir_t dir) in lv_indev_scroll_throw_predict() argument
238 if(indev == NULL) return 0; in lv_indev_scroll_throw_predict()
242 v = indev->pointer.scroll_throw_vect_ori.y; in lv_indev_scroll_throw_predict()
245 v = indev->pointer.scroll_throw_vect_ori.x; in lv_indev_scroll_throw_predict()
251 int32_t scroll_throw = indev->scroll_throw; in lv_indev_scroll_throw_predict()
267 lv_obj_t * lv_indev_find_scroll_obj(lv_indev_t * indev) in lv_indev_find_scroll_obj() argument
271 int32_t scroll_limit = indev->scroll_limit; in lv_indev_find_scroll_obj()
280 lv_obj_t * obj_act = indev->pointer.act_obj; in lv_indev_find_scroll_obj()
285 indev->pointer.scroll_sum.x += indev->pointer.vect.x; in lv_indev_find_scroll_obj()
286 indev->pointer.scroll_sum.y += indev->pointer.vect.y; in lv_indev_find_scroll_obj()
312 lv_point_t obj_scroll_sum = indev->pointer.scroll_sum; in lv_indev_find_scroll_obj()
415 indev->pointer.scroll_dir = hor_en ? LV_DIR_HOR : LV_DIR_VER; in lv_indev_find_scroll_obj()
429 indev->pointer.scroll_dir = dir_candidate; in lv_indev_find_scroll_obj()
430 indev->pointer.scroll_obj = obj_candidate; in lv_indev_find_scroll_obj()
431 indev->pointer.scroll_sum.x = 0; in lv_indev_find_scroll_obj()
432 indev->pointer.scroll_sum.y = 0; in lv_indev_find_scroll_obj()
442 static void init_scroll_limits(lv_indev_t * indev) in init_scroll_limits() argument
444 lv_obj_t * obj = indev->pointer.scroll_obj; in init_scroll_limits()
447 … lv_area_set(&indev->pointer.scroll_area, LV_COORD_MIN, LV_COORD_MIN, LV_COORD_MAX, LV_COORD_MAX); in init_scroll_limits()
453indev->pointer.scroll_area.y1 = find_snap_point_y(obj, obj->coords.y1 + 1, LV_COORD_MAX, 0); in init_scroll_limits()
454indev->pointer.scroll_area.y2 = find_snap_point_y(obj, LV_COORD_MIN, obj->coords.y1 - 1, 0); in init_scroll_limits()
457indev->pointer.scroll_area.y1 = find_snap_point_y(obj, obj->coords.y2, LV_COORD_MAX, 0); in init_scroll_limits()
458indev->pointer.scroll_area.y2 = find_snap_point_y(obj, LV_COORD_MIN, obj->coords.y2, 0); in init_scroll_limits()
462indev->pointer.scroll_area.y1 = find_snap_point_y(obj, y_mid + 1, LV_COORD_MAX, 0); in init_scroll_limits()
463indev->pointer.scroll_area.y2 = find_snap_point_y(obj, LV_COORD_MIN, y_mid - 1, 0); in init_scroll_limits()
467 indev->pointer.scroll_area.y1 = LV_COORD_MIN; in init_scroll_limits()
468 indev->pointer.scroll_area.y2 = LV_COORD_MAX; in init_scroll_limits()
474indev->pointer.scroll_area.x1 = find_snap_point_x(obj, obj->coords.x1, LV_COORD_MAX, 0); in init_scroll_limits()
475indev->pointer.scroll_area.x2 = find_snap_point_x(obj, LV_COORD_MIN, obj->coords.x1, 0); in init_scroll_limits()
478indev->pointer.scroll_area.x1 = find_snap_point_x(obj, obj->coords.x2, LV_COORD_MAX, 0); in init_scroll_limits()
479indev->pointer.scroll_area.x2 = find_snap_point_x(obj, LV_COORD_MIN, obj->coords.x2, 0); in init_scroll_limits()
483indev->pointer.scroll_area.x1 = find_snap_point_x(obj, x_mid + 1, LV_COORD_MAX, 0); in init_scroll_limits()
484indev->pointer.scroll_area.x2 = find_snap_point_x(obj, LV_COORD_MIN, x_mid - 1, 0); in init_scroll_limits()
488 indev->pointer.scroll_area.x1 = LV_COORD_MIN; in init_scroll_limits()
489 indev->pointer.scroll_area.x2 = LV_COORD_MAX; in init_scroll_limits()
496 if(indev->pointer.scroll_area.x1 == LV_COORD_MAX) indev->pointer.scroll_area.x1 = LV_COORD_MIN; in init_scroll_limits()
497 if(indev->pointer.scroll_area.y1 == LV_COORD_MAX) indev->pointer.scroll_area.y1 = LV_COORD_MIN; in init_scroll_limits()
500 if(indev->pointer.scroll_area.x1 == 0) indev->pointer.scroll_area.x1 = LV_COORD_MIN; in init_scroll_limits()
501 if(indev->pointer.scroll_area.x2 == 0) indev->pointer.scroll_area.x2 = LV_COORD_MAX; in init_scroll_limits()
502 if(indev->pointer.scroll_area.y1 == 0) indev->pointer.scroll_area.y1 = LV_COORD_MIN; in init_scroll_limits()
503 if(indev->pointer.scroll_area.y2 == 0) indev->pointer.scroll_area.y2 = LV_COORD_MAX; in init_scroll_limits()
618 static void scroll_limit_diff(lv_indev_t * indev, int32_t * diff_x, int32_t * diff_y) in scroll_limit_diff() argument
621 if(indev->pointer.scroll_sum.y + *diff_y < indev->pointer.scroll_area.y1) { in scroll_limit_diff()
622 *diff_y = indev->pointer.scroll_area.y1 - indev->pointer.scroll_sum.y; in scroll_limit_diff()
625 if(indev->pointer.scroll_sum.y + *diff_y > indev->pointer.scroll_area.y2) { in scroll_limit_diff()
626 *diff_y = indev->pointer.scroll_area.y2 - indev->pointer.scroll_sum.y; in scroll_limit_diff()
631 if(indev->pointer.scroll_sum.x + *diff_x < indev->pointer.scroll_area.x1) { in scroll_limit_diff()
632 *diff_x = indev->pointer.scroll_area.x1 - indev->pointer.scroll_sum.x; in scroll_limit_diff()
635 if(indev->pointer.scroll_sum.x + *diff_x > indev->pointer.scroll_area.x2) { in scroll_limit_diff()
636 *diff_x = indev->pointer.scroll_area.x2 - indev->pointer.scroll_sum.x; in scroll_limit_diff()