Lines Matching refs:obj

60 static void lv_obj_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
61 static void lv_obj_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
64 static void draw_scrollbar(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx);
65 static lv_res_t scrollbar_init_draw_dsc(lv_obj_t * obj, lv_draw_rect_dsc_t * dsc);
67 static void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state);
216 lv_obj_t * obj = lv_obj_class_create_obj(MY_CLASS, parent); in lv_obj_create() local
217 lv_obj_class_init_obj(obj); in lv_obj_create()
218 return obj; in lv_obj_create()
229 void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f) in lv_obj_add_flag() argument
231 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_add_flag()
233 bool was_on_layout = lv_obj_is_layout_positioned(obj); in lv_obj_add_flag()
236 if(f & LV_OBJ_FLAG_HIDDEN) lv_obj_invalidate(obj); in lv_obj_add_flag()
238 obj->flags |= f; in lv_obj_add_flag()
241 if(lv_obj_has_state(obj, LV_STATE_FOCUSED)) { in lv_obj_add_flag()
242 lv_group_t * group = lv_obj_get_group(obj); in lv_obj_add_flag()
253 …if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLA… in lv_obj_add_flag()
254 lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); in lv_obj_add_flag()
255 lv_obj_mark_layout_as_dirty(obj); in lv_obj_add_flag()
260 lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area); in lv_obj_add_flag()
261 lv_obj_invalidate_area(obj, &hor_area); in lv_obj_add_flag()
262 lv_obj_invalidate_area(obj, &ver_area); in lv_obj_add_flag()
266 void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t f) in lv_obj_clear_flag() argument
268 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_clear_flag()
270 bool was_on_layout = lv_obj_is_layout_positioned(obj); in lv_obj_clear_flag()
273 lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area); in lv_obj_clear_flag()
274 lv_obj_invalidate_area(obj, &hor_area); in lv_obj_clear_flag()
275 lv_obj_invalidate_area(obj, &ver_area); in lv_obj_clear_flag()
278 obj->flags &= (~f); in lv_obj_clear_flag()
281 lv_obj_invalidate(obj); in lv_obj_clear_flag()
282 if(lv_obj_is_layout_positioned(obj)) { in lv_obj_clear_flag()
283 lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); in lv_obj_clear_flag()
284 lv_obj_mark_layout_as_dirty(obj); in lv_obj_clear_flag()
288 …if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLA… in lv_obj_clear_flag()
289 lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); in lv_obj_clear_flag()
294 void lv_obj_add_state(lv_obj_t * obj, lv_state_t state) in lv_obj_add_state() argument
296 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_add_state()
298 lv_state_t new_state = obj->state | state; in lv_obj_add_state()
299 if(obj->state != new_state) { in lv_obj_add_state()
300 lv_obj_set_state(obj, new_state); in lv_obj_add_state()
304 void lv_obj_clear_state(lv_obj_t * obj, lv_state_t state) in lv_obj_clear_state() argument
306 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_clear_state()
308 lv_state_t new_state = obj->state & (~state); in lv_obj_clear_state()
309 if(obj->state != new_state) { in lv_obj_clear_state()
310 lv_obj_set_state(obj, new_state); in lv_obj_clear_state()
318 bool lv_obj_has_flag(const lv_obj_t * obj, lv_obj_flag_t f) in lv_obj_has_flag() argument
320 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_has_flag()
322 return (obj->flags & f) == f ? true : false; in lv_obj_has_flag()
325 bool lv_obj_has_flag_any(const lv_obj_t * obj, lv_obj_flag_t f) in lv_obj_has_flag_any() argument
327 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_has_flag_any()
329 return (obj->flags & f) ? true : false; in lv_obj_has_flag_any()
332 lv_state_t lv_obj_get_state(const lv_obj_t * obj) in lv_obj_get_state() argument
334 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_get_state()
336 return obj->state; in lv_obj_get_state()
339 bool lv_obj_has_state(const lv_obj_t * obj, lv_state_t state) in lv_obj_has_state() argument
341 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_has_state()
343 return obj->state & state ? true : false; in lv_obj_has_state()
346 void * lv_obj_get_group(const lv_obj_t * obj) in lv_obj_get_group() argument
348 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_get_group()
350 if(obj->spec_attr) return obj->spec_attr->group_p; in lv_obj_get_group()
358 void lv_obj_allocate_spec_attr(lv_obj_t * obj) in lv_obj_allocate_spec_attr() argument
360 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_allocate_spec_attr()
362 if(obj->spec_attr == NULL) { in lv_obj_allocate_spec_attr()
365 obj->spec_attr = lv_mem_alloc(sizeof(_lv_obj_spec_attr_t)); in lv_obj_allocate_spec_attr()
366 LV_ASSERT_MALLOC(obj->spec_attr); in lv_obj_allocate_spec_attr()
367 if(obj->spec_attr == NULL) return; in lv_obj_allocate_spec_attr()
369 lv_memset_00(obj->spec_attr, sizeof(_lv_obj_spec_attr_t)); in lv_obj_allocate_spec_attr()
371 obj->spec_attr->scroll_dir = LV_DIR_ALL; in lv_obj_allocate_spec_attr()
372 obj->spec_attr->scrollbar_mode = LV_SCROLLBAR_MODE_AUTO; in lv_obj_allocate_spec_attr()
376 bool lv_obj_check_type(const lv_obj_t * obj, const lv_obj_class_t * class_p) in lv_obj_check_type() argument
378 if(obj == NULL) return false; in lv_obj_check_type()
379 return obj->class_p == class_p ? true : false; in lv_obj_check_type()
382 bool lv_obj_has_class(const lv_obj_t * obj, const lv_obj_class_t * class_p) in lv_obj_has_class() argument
384 const lv_obj_class_t * obj_class = obj->class_p; in lv_obj_has_class()
393 const lv_obj_class_t * lv_obj_get_class(const lv_obj_t * obj) in lv_obj_get_class() argument
395 return obj->class_p; in lv_obj_get_class()
398 bool lv_obj_is_valid(const lv_obj_t * obj) in lv_obj_is_valid() argument
404 if(disp->screens[i] == obj) return true; in lv_obj_is_valid()
405 bool found = obj_valid_child(disp->screens[i], obj); in lv_obj_is_valid()
419 static void lv_obj_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) in lv_obj_constructor() argument
424 lv_obj_t * parent = obj->parent; in lv_obj_constructor()
429 obj->coords.y1 = parent->coords.y1 + lv_obj_get_style_pad_top(parent, LV_PART_MAIN) - st; in lv_obj_constructor()
430 obj->coords.y2 = obj->coords.y1 - 1; in lv_obj_constructor()
431 obj->coords.x1 = parent->coords.x1 + lv_obj_get_style_pad_left(parent, LV_PART_MAIN) - sl; in lv_obj_constructor()
432 obj->coords.x2 = obj->coords.x1 - 1; in lv_obj_constructor()
436 obj->flags = LV_OBJ_FLAG_CLICKABLE; in lv_obj_constructor()
437 obj->flags |= LV_OBJ_FLAG_SNAPPABLE; in lv_obj_constructor()
438 if(parent) obj->flags |= LV_OBJ_FLAG_PRESS_LOCK; in lv_obj_constructor()
439 if(parent) obj->flags |= LV_OBJ_FLAG_SCROLL_CHAIN; in lv_obj_constructor()
440 obj->flags |= LV_OBJ_FLAG_CLICK_FOCUSABLE; in lv_obj_constructor()
441 obj->flags |= LV_OBJ_FLAG_SCROLLABLE; in lv_obj_constructor()
442 obj->flags |= LV_OBJ_FLAG_SCROLL_ELASTIC; in lv_obj_constructor()
443 obj->flags |= LV_OBJ_FLAG_SCROLL_MOMENTUM; in lv_obj_constructor()
444 obj->flags |= LV_OBJ_FLAG_SCROLL_WITH_ARROW; in lv_obj_constructor()
445 if(parent) obj->flags |= LV_OBJ_FLAG_GESTURE_BUBBLE; in lv_obj_constructor()
450 static void lv_obj_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) in lv_obj_destructor() argument
454 _lv_event_mark_deleted(obj); in lv_obj_destructor()
458 lv_obj_remove_style_all(obj); in lv_obj_destructor()
462 lv_anim_del(obj, NULL); in lv_obj_destructor()
465 lv_group_t * group = lv_obj_get_group(obj); in lv_obj_destructor()
466 if(group) lv_group_remove_obj(obj); in lv_obj_destructor()
468 if(obj->spec_attr) { in lv_obj_destructor()
469 if(obj->spec_attr->children) { in lv_obj_destructor()
470 lv_mem_free(obj->spec_attr->children); in lv_obj_destructor()
471 obj->spec_attr->children = NULL; in lv_obj_destructor()
473 if(obj->spec_attr->event_dsc) { in lv_obj_destructor()
474 lv_mem_free(obj->spec_attr->event_dsc); in lv_obj_destructor()
475 obj->spec_attr->event_dsc = NULL; in lv_obj_destructor()
478 lv_mem_free(obj->spec_attr); in lv_obj_destructor()
479 obj->spec_attr = NULL; in lv_obj_destructor()
486 lv_obj_t * obj = lv_event_get_target(e); in lv_obj_draw() local
490 if(lv_obj_get_style_clip_corner(obj, LV_PART_MAIN)) { in lv_obj_draw()
496 lv_coord_t r = lv_obj_get_style_radius(obj, LV_PART_MAIN); in lv_obj_draw()
497 lv_coord_t w = lv_obj_get_style_transform_width(obj, LV_PART_MAIN); in lv_obj_draw()
498 lv_coord_t h = lv_obj_get_style_transform_height(obj, LV_PART_MAIN); in lv_obj_draw()
500 lv_area_copy(&coords, &obj->coords); in lv_obj_draw()
511 if(lv_obj_get_style_bg_opa(obj, LV_PART_MAIN) < LV_OPA_MAX) { in lv_obj_draw()
516 if(lv_obj_get_style_opa(obj, LV_PART_MAIN) < LV_OPA_MAX) { in lv_obj_draw()
529 if(lv_obj_get_style_border_post(obj, LV_PART_MAIN)) { in lv_obj_draw()
533 lv_obj_init_draw_rect_dsc(obj, LV_PART_MAIN, &draw_dsc); in lv_obj_draw()
534 lv_coord_t w = lv_obj_get_style_transform_width(obj, LV_PART_MAIN); in lv_obj_draw()
535 lv_coord_t h = lv_obj_get_style_transform_height(obj, LV_PART_MAIN); in lv_obj_draw()
537 lv_area_copy(&coords, &obj->coords); in lv_obj_draw()
550 lv_event_send(obj, LV_EVENT_DRAW_PART_BEGIN, &part_dsc); in lv_obj_draw()
554 …bool clip_corner = (lv_obj_get_style_clip_corner(obj, LV_PART_MAIN) && draw_dsc.radius != 0) ? tru… in lv_obj_draw()
566 lv_draw_mask_radius_init(mp, &obj->coords, draw_dsc.radius, false); in lv_obj_draw()
568 lv_draw_mask_add(mp, obj + 8); in lv_obj_draw()
581 lv_event_send(obj, LV_EVENT_DRAW_PART_END, &part_dsc); in lv_obj_draw()
585 draw_scrollbar(obj, draw_ctx); in lv_obj_draw()
588 if(lv_obj_get_style_clip_corner(obj, LV_PART_MAIN)) { in lv_obj_draw()
589 lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8); in lv_obj_draw()
598 if(lv_obj_get_style_border_post(obj, LV_PART_MAIN)) { in lv_obj_draw()
605 lv_obj_init_draw_rect_dsc(obj, LV_PART_MAIN, &draw_dsc); in lv_obj_draw()
607 lv_coord_t w = lv_obj_get_style_transform_width(obj, LV_PART_MAIN); in lv_obj_draw()
608 lv_coord_t h = lv_obj_get_style_transform_height(obj, LV_PART_MAIN); in lv_obj_draw()
610 lv_area_copy(&coords, &obj->coords); in lv_obj_draw()
623 lv_event_send(obj, LV_EVENT_DRAW_PART_BEGIN, &part_dsc); in lv_obj_draw()
626 lv_event_send(obj, LV_EVENT_DRAW_PART_END, &part_dsc); in lv_obj_draw()
631 static void draw_scrollbar(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx) in draw_scrollbar() argument
636 lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area); in draw_scrollbar()
641 lv_res_t sb_res = scrollbar_init_draw_dsc(obj, &draw_dsc); in draw_scrollbar()
653 lv_event_send(obj, LV_EVENT_DRAW_PART_BEGIN, &part_dsc); in draw_scrollbar()
655 lv_event_send(obj, LV_EVENT_DRAW_PART_END, &part_dsc); in draw_scrollbar()
659 lv_event_send(obj, LV_EVENT_DRAW_PART_BEGIN, &part_dsc); in draw_scrollbar()
662 lv_event_send(obj, LV_EVENT_DRAW_PART_END, &part_dsc); in draw_scrollbar()
672 static lv_res_t scrollbar_init_draw_dsc(lv_obj_t * obj, lv_draw_rect_dsc_t * dsc) in scrollbar_init_draw_dsc() argument
675 dsc->bg_opa = lv_obj_get_style_bg_opa(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
677 dsc->bg_color = lv_obj_get_style_bg_color(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
680 dsc->border_opa = lv_obj_get_style_border_opa(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
682 dsc->border_width = lv_obj_get_style_border_width(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
684 dsc->border_color = lv_obj_get_style_border_color(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
692 dsc->shadow_opa = lv_obj_get_style_shadow_opa(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
694 dsc->shadow_width = lv_obj_get_style_shadow_width(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
696 dsc->shadow_spread = lv_obj_get_style_shadow_spread(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
697 dsc->shadow_color = lv_obj_get_style_shadow_color(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
704 lv_opa_t opa = lv_obj_get_style_opa_recursive(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
712 dsc->radius = lv_obj_get_style_radius(obj, LV_PART_SCROLLBAR); in scrollbar_init_draw_dsc()
729 lv_obj_t * obj = lv_event_get_current_target(e); in lv_obj_event() local
731 lv_obj_add_state(obj, LV_STATE_PRESSED); in lv_obj_event()
734 lv_obj_clear_state(obj, LV_STATE_PRESSED); in lv_obj_event()
737 if(lv_indev_get_scroll_obj(indev) == NULL && lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) { in lv_obj_event()
738 if(!(lv_obj_get_state(obj) & LV_STATE_CHECKED)) lv_obj_add_state(obj, LV_STATE_CHECKED); in lv_obj_event()
739 else lv_obj_clear_state(obj, LV_STATE_CHECKED); in lv_obj_event()
741 lv_res_t res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL); in lv_obj_event()
746 lv_obj_clear_state(obj, LV_STATE_PRESSED); in lv_obj_event()
749 uint32_t child_cnt = lv_obj_get_child_cnt(obj); in lv_obj_event()
751 lv_obj_t * child = obj->spec_attr->children[i]; in lv_obj_event()
756 if(lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) { in lv_obj_event()
759 lv_obj_add_state(obj, LV_STATE_CHECKED); in lv_obj_event()
762 lv_obj_clear_state(obj, LV_STATE_CHECKED); in lv_obj_event()
767 lv_res_t res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL); in lv_obj_event()
771 …else if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_WITH_ARROW) && !lv_obj_is… in lv_obj_event()
774 lv_coord_t sl = lv_obj_get_scroll_left(obj); in lv_obj_event()
775 lv_coord_t sr = lv_obj_get_scroll_right(obj); in lv_obj_event()
779 … lv_obj_scroll_to_y(obj, lv_obj_get_scroll_y(obj) + lv_obj_get_height(obj) / 4, anim_enable); in lv_obj_event()
782 … lv_obj_scroll_to_y(obj, lv_obj_get_scroll_y(obj) - lv_obj_get_height(obj) / 4, anim_enable); in lv_obj_event()
786 if(!((lv_obj_get_scroll_dir(obj) & LV_DIR_HOR) && (sl > 0 || sr > 0))) in lv_obj_event()
787 … lv_obj_scroll_to_y(obj, lv_obj_get_scroll_y(obj) + lv_obj_get_height(obj) / 4, anim_enable); in lv_obj_event()
789 … lv_obj_scroll_to_x(obj, lv_obj_get_scroll_x(obj) + lv_obj_get_width(obj) / 4, anim_enable); in lv_obj_event()
793 if(!((lv_obj_get_scroll_dir(obj) & LV_DIR_HOR) && (sl > 0 || sr > 0))) in lv_obj_event()
794 … lv_obj_scroll_to_y(obj, lv_obj_get_scroll_y(obj) - lv_obj_get_height(obj) / 4, anim_enable); in lv_obj_event()
796 … lv_obj_scroll_to_x(obj, lv_obj_get_scroll_x(obj) - lv_obj_get_width(obj) / 4, anim_enable); in lv_obj_event()
801 if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS)) { in lv_obj_event()
802 lv_obj_scroll_to_view_recursive(obj, LV_ANIM_ON); in lv_obj_event()
806 editing = lv_group_get_editing(lv_obj_get_group(obj)); in lv_obj_event()
819 lv_obj_add_state(obj, state); in lv_obj_event()
822 lv_obj_add_state(obj, state); in lv_obj_event()
823 lv_obj_clear_state(obj, LV_STATE_EDITED); in lv_obj_event()
827 lv_obj_add_state(obj, LV_STATE_SCROLLED); in lv_obj_event()
830 lv_obj_clear_state(obj, LV_STATE_SCROLLED); in lv_obj_event()
831 if(lv_obj_get_scrollbar_mode(obj) == LV_SCROLLBAR_MODE_ACTIVE) { in lv_obj_event()
833 lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area); in lv_obj_event()
834 lv_obj_invalidate_area(obj, &hor_area); in lv_obj_event()
835 lv_obj_invalidate_area(obj, &ver_area); in lv_obj_event()
839 lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED | LV_STATE_FOCUS_KEY); in lv_obj_event()
842 lv_coord_t align = lv_obj_get_style_align(obj, LV_PART_MAIN); in lv_obj_event()
843 uint16_t layout = lv_obj_get_style_layout(obj, LV_PART_MAIN); in lv_obj_event()
845 lv_obj_mark_layout_as_dirty(obj); in lv_obj_event()
849 uint32_t child_cnt = lv_obj_get_child_cnt(obj); in lv_obj_event()
851 lv_obj_t * child = obj->spec_attr->children[i]; in lv_obj_event()
856 lv_coord_t w = lv_obj_get_style_width(obj, LV_PART_MAIN); in lv_obj_event()
857 lv_coord_t h = lv_obj_get_style_height(obj, LV_PART_MAIN); in lv_obj_event()
858 lv_coord_t align = lv_obj_get_style_align(obj, LV_PART_MAIN); in lv_obj_event()
859 uint16_t layout = lv_obj_get_style_layout(obj, LV_PART_MAIN); in lv_obj_event()
861 lv_obj_mark_layout_as_dirty(obj); in lv_obj_event()
865 obj->readjust_scroll_after_layout = 1; in lv_obj_event()
866 lv_obj_mark_layout_as_dirty(obj); in lv_obj_event()
869 lv_coord_t d = lv_obj_calculate_ext_draw_size(obj, LV_PART_MAIN); in lv_obj_event()
883 static void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state) in lv_obj_set_state() argument
885 if(obj->state == new_state) return; in lv_obj_set_state()
887 LV_ASSERT_OBJ(obj, MY_CLASS); in lv_obj_set_state()
889 lv_state_t prev_state = obj->state; in lv_obj_set_state()
890 obj->state = new_state; in lv_obj_set_state()
892 _lv_style_state_cmp_t cmp_res = _lv_obj_style_state_compare(obj, prev_state, new_state); in lv_obj_set_state()
900 for(i = 0; i < obj->style_cnt && tsi < STYLE_TRANSITION_MAX; i++) { in lv_obj_set_state()
901 _lv_obj_style_t * obj_style = &obj->styles[i]; in lv_obj_set_state()
902 lv_state_t state_act = lv_obj_style_get_selector_state(obj->styles[i].selector); in lv_obj_set_state()
903 lv_part_t part_act = lv_obj_style_get_selector_part(obj->styles[i].selector); in lv_obj_set_state()
939 _lv_obj_style_create_transition(obj, part_act, prev_state, new_state, &ts[i]); in lv_obj_set_state()
945 lv_obj_invalidate(obj); in lv_obj_set_state()
948 lv_obj_refresh_style(obj, LV_PART_ANY, LV_STYLE_PROP_ANY); in lv_obj_set_state()
951 lv_obj_invalidate(obj); in lv_obj_set_state()
952 lv_obj_refresh_ext_draw_size(obj); in lv_obj_set_state()