From c295a04d6c6254c7bdf397fa2f0d59068bd8c6f4 Mon Sep 17 00:00:00 2001 From: Gabor Date: Fri, 7 Oct 2016 11:15:46 +0200 Subject: [PATCH] prototype argument renameing --- lv_misc/anim.c | 8 +- lv_obj/lv_dispi.c | 106 +++--- lv_obj/lv_dispi.h | 4 +- lv_obj/lv_obj.c | 800 ++++++++++++++++++++-------------------- lv_obj/lv_obj.h | 128 +++---- lv_obj/lv_refr.c | 74 ++-- lv_objx/lv_btn.c | 238 ++++++------ lv_objx/lv_btn.h | 35 +- lv_objx/lv_btnm.c | 185 +++++----- lv_objx/lv_btnm.h | 22 +- lv_objx/lv_cb.c | 91 +++-- lv_objx/lv_cb.h | 16 +- lv_objx/lv_chart.c | 375 +++++++++---------- lv_objx/lv_chart.h | 35 +- lv_objx/lv_img.c | 151 ++++---- lv_objx/lv_img.h | 42 ++- lv_objx/lv_label.c | 225 ++++++----- lv_objx/lv_label.h | 41 +- lv_objx/lv_led.c | 142 ++++--- lv_objx/lv_led.h | 25 +- lv_objx/lv_line.c | 178 ++++----- lv_objx/lv_line.h | 45 ++- lv_objx/lv_list.c | 148 ++++---- lv_objx/lv_list.h | 36 +- lv_objx/lv_objx_templ.c | 57 ++- lv_objx/lv_objx_templ.h | 6 +- lv_objx/lv_page.c | 275 +++++++------- lv_objx/lv_page.h | 36 +- lv_objx/lv_pb.c | 154 ++++---- lv_objx/lv_pb.h | 17 +- lv_objx/lv_rect.c | 782 ++++++++++++++++++++------------------- lv_objx/lv_rect.h | 40 +- lv_objx/lv_ta.c | 339 ++++++++--------- lv_objx/lv_ta.h | 31 +- 34 files changed, 2455 insertions(+), 2432 deletions(-) diff --git a/lv_misc/anim.c b/lv_misc/anim.c index 185178ae6..d82272e4f 100644 --- a/lv_misc/anim.c +++ b/lv_misc/anim.c @@ -59,12 +59,12 @@ void anim_init(void) */ void anim_create(anim_t * anim_p) { - anim_t * new_anim_dp = ll_ins_head(&anim_ll); - dm_assert(new_anim_dp); + anim_t * new_anim = ll_ins_head(&anim_ll); + dm_assert(new_anim); - memcpy(new_anim_dp, anim_p, sizeof(anim_t)); + memcpy(new_anim, anim_p, sizeof(anim_t)); - new_anim_dp->fp(new_anim_dp->p, new_anim_dp->start); + new_anim->fp(new_anim->p, new_anim->start); } diff --git a/lv_obj/lv_dispi.c b/lv_obj/lv_dispi.c index 79150094d..c699c78ca 100644 --- a/lv_obj/lv_dispi.c +++ b/lv_obj/lv_dispi.c @@ -31,7 +31,7 @@ static void dispi_task(void); static void dispi_proc_point(lv_dispi_t * dispi_p, cord_t x, cord_t y); static void dispi_proc_press(lv_dispi_t * dispi_p); static void disi_proc_release(lv_dispi_t * dispi_p); -static lv_obj_t* dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t* obj_dp); +static lv_obj_t * dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t * obj); static void dispi_drag(lv_dispi_t * dispi_p); static void dispi_drag_throw(lv_dispi_t * dispi_p); @@ -154,8 +154,8 @@ static void dispi_proc_point(lv_dispi_t * dispi_p, cord_t x, cord_t y) #endif /*Handle the reset query*/ if(lv_dispi_reset_now != false) { - dispi_p->act_obj_dp = NULL; - dispi_p->last_obj_dp = NULL; + dispi_p->act_obj = NULL; + dispi_p->last_obj = NULL; dispi_p->drag_in_prog = 0; dispi_p->long_press_sent = 0; dispi_p->press_time_stamp = 0; @@ -188,15 +188,15 @@ static void dispi_proc_point(lv_dispi_t * dispi_p, cord_t x, cord_t y) */ static void dispi_proc_press(lv_dispi_t * dispi_p) { - lv_obj_t* pr_obj_dp = dispi_p->act_obj_dp; + lv_obj_t * pr_obj = dispi_p->act_obj; /*If there is no last object then search*/ - if(dispi_p->act_obj_dp == NULL) { - pr_obj_dp = dispi_search_obj(dispi_p, lv_scr_act()); + if(dispi_p->act_obj == NULL) { + pr_obj = dispi_search_obj(dispi_p, lv_scr_act()); } /*If there is last object but it can not be dragged also search*/ - else if(lv_obj_get_drag(dispi_p->act_obj_dp) == false) {/*Now act_obj_dp != NULL*/ - pr_obj_dp = dispi_search_obj(dispi_p, lv_scr_act()); + else if(lv_obj_get_drag(dispi_p->act_obj) == false) {/*Now act_obj != NULL*/ + pr_obj = dispi_search_obj(dispi_p, lv_scr_act()); } /*If a dragable object was the last then keep it*/ else { @@ -204,18 +204,18 @@ static void dispi_proc_press(lv_dispi_t * dispi_p) } /*If a new object was found reset some variables and send a pressed signal*/ - if(pr_obj_dp != dispi_p->act_obj_dp) { + if(pr_obj != dispi_p->act_obj) { dispi_p->last_point.x = dispi_p->act_point.x; dispi_p->last_point.y = dispi_p->act_point.y; /*If a new object found the previous was lost, so send a signal*/ - if(dispi_p->act_obj_dp != NULL) { - dispi_p->act_obj_dp->signal_f(dispi_p->act_obj_dp, + if(dispi_p->act_obj != NULL) { + dispi_p->act_obj->signal_f(dispi_p->act_obj, LV_SIGNAL_PRESS_LOST, dispi_p); } - if(pr_obj_dp != NULL) { + if(pr_obj != NULL) { /* Save the time when the obj pressed. * It is necessary to count the long press time.*/ dispi_p->press_time_stamp = systick_get(); @@ -225,7 +225,7 @@ static void dispi_proc_press(lv_dispi_t * dispi_p) dispi_p->vect_sum.y = 0; /*Search for 'top' attribute*/ - lv_obj_t * i = pr_obj_dp; + lv_obj_t * i = pr_obj; lv_obj_t * last_top = NULL; while(i != NULL){ if(i->top_en != 0) last_top = i; @@ -234,36 +234,36 @@ static void dispi_proc_press(lv_dispi_t * dispi_p) if(last_top != NULL) { /*Move the last_top object to the foreground*/ - lv_obj_t * par_dp =lv_obj_get_parent(last_top); + lv_obj_t * par =lv_obj_get_parent(last_top); /*After list change it will be the new head*/ - ll_chg_list(&par_dp->child_ll, &par_dp->child_ll, last_top); + ll_chg_list(&par->child_ll, &par->child_ll, last_top); lv_obj_inv(last_top); } /*Send a signal about the press*/ - pr_obj_dp->signal_f(pr_obj_dp, LV_SIGNAL_PRESSED, dispi_p); + pr_obj->signal_f(pr_obj, LV_SIGNAL_PRESSED, dispi_p); } } /*The reset can be set in the signal function. * In case of reset query ignore the remaining parts.*/ if(lv_dispi_reset_qry == false) { - dispi_p->act_obj_dp = pr_obj_dp; /*Save the pressed object*/ - dispi_p->last_obj_dp = dispi_p->act_obj_dp; /*Refresh the last_obj*/ + dispi_p->act_obj = pr_obj; /*Save the pressed object*/ + dispi_p->last_obj = dispi_p->act_obj; /*Refresh the last_obj*/ /*Calculate the vector*/ dispi_p->vect.x = dispi_p->act_point.x - dispi_p->last_point.x; dispi_p->vect.y = dispi_p->act_point.y - dispi_p->last_point.y; /*If there is active object and it can be dragged run the drag*/ - if(dispi_p->act_obj_dp != NULL) { + if(dispi_p->act_obj != NULL) { dispi_drag(dispi_p); /*If there is no drag then check for long press time*/ if(dispi_p->drag_in_prog == 0 && dispi_p->long_press_sent == 0) { /*Send a signal about the long press if enough time elapsed*/ if(systick_elaps(dispi_p->press_time_stamp) > LV_DISPI_LONG_PRESS_TIME) { - pr_obj_dp->signal_f(pr_obj_dp, LV_SIGNAL_LONG_PRESS, dispi_p); + pr_obj->signal_f(pr_obj, LV_SIGNAL_LONG_PRESS, dispi_p); /*Mark the signal sending to do not send it again*/ dispi_p->long_press_sent = 1; @@ -280,17 +280,17 @@ static void dispi_proc_press(lv_dispi_t * dispi_p) static void disi_proc_release(lv_dispi_t * dispi_p) { /*Forgot the act obj and send a released signal */ - if(dispi_p->act_obj_dp != NULL) { - dispi_p->act_obj_dp->signal_f(dispi_p->act_obj_dp, + if(dispi_p->act_obj != NULL) { + dispi_p->act_obj->signal_f(dispi_p->act_obj, LV_SIGNAL_RELEASED, dispi_p); - dispi_p->act_obj_dp = NULL; + dispi_p->act_obj = NULL; dispi_p->press_time_stamp = 0; } /*The reset can be set in the signal function. * In case of reset query ignore the remaining parts.*/ - if(dispi_p->last_obj_dp != NULL && lv_dispi_reset_qry == false) { + if(dispi_p->last_obj != NULL && lv_dispi_reset_qry == false) { dispi_drag_throw(dispi_p); } } @@ -298,19 +298,19 @@ static void disi_proc_release(lv_dispi_t * dispi_p) /** * Search the most top, clickable object on the last point of a display input * @param dispi_p pointer to a display input - * @param obj_dp pointer to a start object, typically the screen + * @param obj pointer to a start object, typically the screen * @return pointer to the found object or NULL if there was no suitable object */ -static lv_obj_t* dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t* obj_dp) +static lv_obj_t * dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t * obj) { - lv_obj_t* found_p = NULL; + lv_obj_t * found_p = NULL; /*If the point is on this object*/ /*Check its children too*/ - if(area_is_point_on(&obj_dp->cords, &dispi_p->act_point)) { - lv_obj_t* i; + if(area_is_point_on(&obj->cords, &dispi_p->act_point)) { + lv_obj_t * i; - LL_READ(obj_dp->child_ll, i) { + LL_READ(obj->child_ll, i) { found_p = dispi_search_obj(dispi_p, i); /*If a child was found then break*/ @@ -321,14 +321,14 @@ static lv_obj_t* dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t* obj_dp) /*If then the children was not ok, but this obj is clickable * and it or its parent is not hidden then save this object*/ - if(found_p == NULL && lv_obj_get_click(obj_dp) != false) { - lv_obj_t * i = obj_dp; + if(found_p == NULL && lv_obj_get_click(obj) != false) { + lv_obj_t * i = obj; while(i != NULL) { if(lv_obj_get_hidden(i) == true) break; i = lv_obj_get_parent(i); } /*No parent found with hidden == true*/ - if(i == NULL) found_p = obj_dp; + if(i == NULL) found_p = obj; } } @@ -337,19 +337,19 @@ static lv_obj_t* dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t* obj_dp) } /** - * Handle the dragging of dispi_p->act_obj_dp + * Handle the dragging of dispi_p->act_obj * @param dispi_p pointer to a display input */ static void dispi_drag(lv_dispi_t * dispi_p) { - lv_obj_t* par_dp = lv_obj_get_parent(dispi_p->act_obj_dp); - lv_obj_t* drag_obj_dp = dispi_p->act_obj_dp; + lv_obj_t * par = lv_obj_get_parent(dispi_p->act_obj); + lv_obj_t * drag_obj = dispi_p->act_obj; - if(lv_obj_get_drag_parent(dispi_p->act_obj_dp) != false) { - drag_obj_dp = par_dp; + if(lv_obj_get_drag_parent(dispi_p->act_obj) != false) { + drag_obj = par; } - if(lv_obj_get_drag(drag_obj_dp) == false) return; + if(lv_obj_get_drag(drag_obj) == false) return; /*If still there is no drag then count the movement*/ if(dispi_p->drag_in_prog == 0) { @@ -361,7 +361,7 @@ static void dispi_drag(lv_dispi_t * dispi_p) abs(dispi_p->vect_sum.y) >= LV_DISPI_DRAG_LIMIT) { dispi_p->drag_in_prog = 1; - drag_obj_dp->signal_f(drag_obj_dp, + drag_obj->signal_f(drag_obj, LV_SIGNAL_DRAG_BEGIN, dispi_p); } } @@ -372,9 +372,9 @@ static void dispi_drag(lv_dispi_t * dispi_p) if(dispi_p->vect.x != 0 || dispi_p->vect.y != 0) { /*Get the coordinates of the object end modify them*/ - cord_t act_x = lv_obj_get_x(drag_obj_dp) + dispi_p->vect.x; - cord_t act_y = lv_obj_get_y(drag_obj_dp) + dispi_p->vect.y; - lv_obj_set_pos(drag_obj_dp, act_x, act_y); + cord_t act_x = lv_obj_get_x(drag_obj) + dispi_p->vect.x; + cord_t act_y = lv_obj_get_y(drag_obj) + dispi_p->vect.y; + lv_obj_set_pos(drag_obj, act_x, act_y); } } } @@ -388,17 +388,17 @@ static void dispi_drag_throw(lv_dispi_t * dispi_p) if(dispi_p->drag_in_prog == 0) return; /*Set new position if the vector is not zero*/ - lv_obj_t* par_dp = lv_obj_get_parent(dispi_p->last_obj_dp); - lv_obj_t* drag_obj_dp = dispi_p->last_obj_dp; + lv_obj_t * par = lv_obj_get_parent(dispi_p->last_obj); + lv_obj_t * drag_obj = dispi_p->last_obj; - if(lv_obj_get_drag_parent(dispi_p->last_obj_dp) != false) { - drag_obj_dp = par_dp; + if(lv_obj_get_drag_parent(dispi_p->last_obj) != false) { + drag_obj = par; } /*Return if the drag throw is not enabled*/ - if(lv_obj_get_drag_throw(drag_obj_dp) == false ){ + if(lv_obj_get_drag_throw(drag_obj) == false ){ dispi_p->drag_in_prog = 0; - drag_obj_dp->signal_f(drag_obj_dp, LV_SIGNAL_DRAG_END, dispi_p); + drag_obj->signal_f(drag_obj, LV_SIGNAL_DRAG_END, dispi_p); return; } @@ -410,13 +410,13 @@ static void dispi_drag_throw(lv_dispi_t * dispi_p) dispi_p->vect.y != 0) { /*Get the coordinates and modify them*/ - cord_t act_x = lv_obj_get_x(drag_obj_dp) + dispi_p->vect.x; - cord_t act_y = lv_obj_get_y(drag_obj_dp) + dispi_p->vect.y; - lv_obj_set_pos(drag_obj_dp, act_x, act_y); + cord_t act_x = lv_obj_get_x(drag_obj) + dispi_p->vect.x; + cord_t act_y = lv_obj_get_y(drag_obj) + dispi_p->vect.y; + lv_obj_set_pos(drag_obj, act_x, act_y); } /*If the vectors become 0 -> drag_in_prog = 0 and send a drag end signal*/ else { dispi_p->drag_in_prog = 0; - drag_obj_dp->signal_f(drag_obj_dp, LV_SIGNAL_DRAG_END, dispi_p); + drag_obj->signal_f(drag_obj, LV_SIGNAL_DRAG_END, dispi_p); } } diff --git a/lv_obj/lv_dispi.h b/lv_obj/lv_dispi.h index c5b217561..91b1aee97 100644 --- a/lv_obj/lv_dispi.h +++ b/lv_obj/lv_dispi.h @@ -25,8 +25,8 @@ typedef struct point_t last_point; point_t vect; point_t vect_sum; - lv_obj_t* act_obj_dp; - lv_obj_t* last_obj_dp; + lv_obj_t * act_obj; + lv_obj_t * last_obj; uint32_t press_time_stamp; /*Flags*/ diff --git a/lv_obj/lv_obj.c b/lv_obj/lv_obj.c index a3b76746a..296519e88 100644 --- a/lv_obj/lv_obj.c +++ b/lv_obj/lv_obj.c @@ -25,15 +25,15 @@ /********************** * STATIC PROTOTYPES **********************/ -static void lv_obj_pos_child_refr(lv_obj_t* obj_dp, cord_t x_diff, cord_t y_diff); -static void lv_style_refr_core(void * style_p, lv_obj_t* obj_dp); -static bool lv_obj_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static void lv_obj_pos_child_refr(lv_obj_t * obj, cord_t x_diff, cord_t y_diff); +static void lv_style_refr_core(void * style_p, lv_obj_t * obj); +static bool lv_obj_design(lv_obj_t * obj, const area_t * mask_p, lv_design_mode_t mode); /********************** * STATIC VARIABLES **********************/ -lv_obj_t* def_scr_dp = NULL; -lv_obj_t* act_scr_dp = NULL; +lv_obj_t * def_scr = NULL; +lv_obj_t * act_scr = NULL; ll_dsc_t scr_ll; lv_objs_t lv_objs_def = {.color = COLOR_MAKE(0xa0, 0xc0, 0xe0), .transp = 0}; @@ -72,11 +72,11 @@ void lv_init(void) /*Create the default screen*/ ll_init(&scr_ll, sizeof(lv_obj_t)); - def_scr_dp = lv_obj_create(NULL, NULL); - act_scr_dp = def_scr_dp; + def_scr = lv_obj_create(NULL, NULL); + act_scr = def_scr; /*Refresh the screen*/ - lv_obj_inv(act_scr_dp); + lv_obj_inv(act_scr); #if LV_DISPI_READ_PERIOD != 0 /*Init the display input handling*/ @@ -86,26 +86,26 @@ void lv_init(void) /** * Mark the object as invalid therefor it will be redrawn by 'lv_refr_task' - * @param obj_dp pointer to an object + * @param obj pointer to an object */ -void lv_obj_inv(lv_obj_t* obj_dp) +void lv_obj_inv(lv_obj_t * obj) { /*Invalidate the object only if it belongs to the 'act_scr'*/ - lv_obj_t* act_scr_p = lv_scr_act(); - if(lv_obj_get_scr(obj_dp) == act_scr_p) { + lv_obj_t * act_scr_p = lv_scr_act(); + if(lv_obj_get_scr(obj) == act_scr_p) { /*Truncate the recursively on the parents*/ area_t area_trunc; - lv_obj_t* par_dp = lv_obj_get_parent(obj_dp); + lv_obj_t * par = lv_obj_get_parent(obj); bool union_ok = true; /*Start with the original coordinates*/ - area_cpy(&area_trunc, &obj_dp->cords); + area_cpy(&area_trunc, &obj->cords); /*Check through all parents*/ - while(par_dp != NULL) { - union_ok = area_union(&area_trunc, &area_trunc, &par_dp->cords); + while(par != NULL) { + union_ok = area_union(&area_trunc, &area_trunc, &par->cords); if(union_ok == false) break; /*If no common parts with parent break;*/ - par_dp = lv_obj_get_parent(par_dp); + par = lv_obj_get_parent(par); } if(union_ok != false) lv_inv_area(&area_trunc); @@ -114,13 +114,13 @@ void lv_obj_inv(lv_obj_t* obj_dp) /** * Notify an object if its style is modified - * @param obj_dp pointer to an object + * @param obj pointer to an object */ -void lv_obj_refr_style(lv_obj_t* obj_dp) +void lv_obj_refr_style(lv_obj_t * obj) { - lv_obj_inv(obj_dp); - obj_dp->signal_f(obj_dp, LV_SIGNAL_STYLE_CHG, NULL); - lv_obj_inv(obj_dp); + lv_obj_inv(obj); + obj->signal_f(obj, LV_SIGNAL_STYLE_CHG, NULL); + lv_obj_inv(obj); } @@ -131,7 +131,7 @@ void lv_obj_refr_style(lv_obj_t* obj_dp) */ void lv_style_refr_all(void * style_p) { - lv_obj_t* i; + lv_obj_t * i; LL_READ(scr_ll, i) { lv_style_refr_core(style_p, i); } @@ -143,131 +143,131 @@ void lv_style_refr_all(void * style_p) /** * Create a basic object - * @param parent_dp pointer to a parent object. + * @param parent pointer to a parent object. * If NULL then a screen will be created - * @param copy_dp pointer to a base object, if not NULL then the new object will be copied from it + * @param copy pointer to a base object, if not NULL then the new object will be copied from it * @return pointer to the new object */ -lv_obj_t* lv_obj_create(lv_obj_t* parent_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy) { - lv_obj_t* new_obj_dp = NULL; + lv_obj_t * new_obj = NULL; /*Create a screen if the parent is NULL*/ - if(parent_dp == NULL) { - new_obj_dp = ll_ins_head(&scr_ll); + if(parent == NULL) { + new_obj = ll_ins_head(&scr_ll); - new_obj_dp->par_dp = NULL; /*Screens has no a parent*/ - ll_init(&(new_obj_dp->child_ll), sizeof(lv_obj_t)); + new_obj->par = NULL; /*Screens has no a parent*/ + ll_init(&(new_obj->child_ll), sizeof(lv_obj_t)); /*Set coordinates to full screen size*/ - new_obj_dp->cords.x1 = 0; - new_obj_dp->cords.y1 = 0; - new_obj_dp->cords.x2 = LV_HOR_RES - 1; - new_obj_dp->cords.y2 = LV_VER_RES - 1; + new_obj->cords.x1 = 0; + new_obj->cords.y1 = 0; + new_obj->cords.x2 = LV_HOR_RES - 1; + new_obj->cords.y2 = LV_VER_RES - 1; /*Set appearance*/ - new_obj_dp->style_p = lv_objs_get(LV_OBJS_SCR, NULL); - new_obj_dp->opa = OPA_COVER; + new_obj->style_p = lv_objs_get(LV_OBJS_SCR, NULL); + new_obj->opa = OPA_COVER; /*Set virtual functions*/ - lv_obj_set_signal_f(new_obj_dp, lv_obj_signal); - lv_obj_set_design_f(new_obj_dp, lv_obj_design); + lv_obj_set_signal_f(new_obj, lv_obj_signal); + lv_obj_set_design_f(new_obj, lv_obj_design); /*Set attributes*/ - new_obj_dp->click_en = 0; - new_obj_dp->drag_en = 0; - new_obj_dp->drag_throw_en = 0; - new_obj_dp->drag_parent = 0; - new_obj_dp->style_iso = 0; - new_obj_dp->hidden = 0; - new_obj_dp->top_en = 0; - new_obj_dp->ext_dp = NULL; + new_obj->click_en = 0; + new_obj->drag_en = 0; + new_obj->drag_throw_en = 0; + new_obj->drag_parent = 0; + new_obj->style_iso = 0; + new_obj->hidden = 0; + new_obj->top_en = 0; + new_obj->ext = NULL; } - /*parent_dp != NULL create normal obj. on parent*/ + /*parent != NULL create normal obj. on parent*/ else { - new_obj_dp = ll_ins_head(&(parent_dp)->child_ll); + new_obj = ll_ins_head(&(parent)->child_ll); - new_obj_dp->par_dp = parent_dp; /*Set the parent*/ - ll_init(&(new_obj_dp->child_ll), sizeof(lv_obj_t)); + new_obj->par = parent; /*Set the parent*/ + ll_init(&(new_obj->child_ll), sizeof(lv_obj_t)); /*Set coordinates left top corner of parent*/ - new_obj_dp->cords.x1 = parent_dp->cords.x1; - new_obj_dp->cords.y1 = parent_dp->cords.y1; - new_obj_dp->cords.x2 = parent_dp->cords.x1 + + new_obj->cords.x1 = parent->cords.x1; + new_obj->cords.y1 = parent->cords.y1; + new_obj->cords.x2 = parent->cords.x1 + LV_OBJ_DEF_WIDTH; - new_obj_dp->cords.y2 = parent_dp->cords.y1 + + new_obj->cords.y2 = parent->cords.y1 + LV_OBJ_DEF_HEIGHT; /*Set appearance*/ - new_obj_dp->style_p = lv_objs_get(LV_OBJS_DEF, NULL); - new_obj_dp->opa = OPA_COVER; + new_obj->style_p = lv_objs_get(LV_OBJS_DEF, NULL); + new_obj->opa = OPA_COVER; /*Set virtual functions*/ - lv_obj_set_signal_f(new_obj_dp, lv_obj_signal); - lv_obj_set_design_f(new_obj_dp, lv_obj_design); + lv_obj_set_signal_f(new_obj, lv_obj_signal); + lv_obj_set_design_f(new_obj, lv_obj_design); /*Set attributes*/ - new_obj_dp->click_en = 1; - new_obj_dp->drag_en = 0; - new_obj_dp->drag_throw_en = 0; - new_obj_dp->drag_parent = 0; - new_obj_dp->style_iso = 0; - new_obj_dp->hidden = 0; - new_obj_dp->top_en = 0; + new_obj->click_en = 1; + new_obj->drag_en = 0; + new_obj->drag_throw_en = 0; + new_obj->drag_parent = 0; + new_obj->style_iso = 0; + new_obj->hidden = 0; + new_obj->top_en = 0; - new_obj_dp->ext_dp = NULL; + new_obj->ext = NULL; } - if(copy_dp != NULL) { - area_cpy(&new_obj_dp->cords, ©_dp->cords); + if(copy != NULL) { + area_cpy(&new_obj->cords, ©->cords); /*Set attributes*/ - new_obj_dp->click_en = copy_dp->click_en; - new_obj_dp->drag_en = copy_dp->drag_en; - new_obj_dp->drag_throw_en = copy_dp->drag_throw_en; - new_obj_dp->drag_parent = copy_dp->drag_parent; - new_obj_dp->hidden = copy_dp->hidden; - new_obj_dp->top_en = copy_dp->top_en; + new_obj->click_en = copy->click_en; + new_obj->drag_en = copy->drag_en; + new_obj->drag_throw_en = copy->drag_throw_en; + new_obj->drag_parent = copy->drag_parent; + new_obj->hidden = copy->hidden; + new_obj->top_en = copy->top_en; - new_obj_dp->style_p = copy_dp->style_p; + new_obj->style_p = copy->style_p; - if(copy_dp->style_iso != 0) { - lv_obj_iso_style(new_obj_dp, dm_get_size(copy_dp->style_p)); + if(copy->style_iso != 0) { + lv_obj_iso_style(new_obj, dm_get_size(copy->style_p)); } - lv_obj_set_pos(new_obj_dp, lv_obj_get_x(copy_dp), lv_obj_get_y(copy_dp)); + lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy)); - new_obj_dp->opa = copy_dp->opa; + new_obj->opa = copy->opa; } /*Send a signal to the parent to notify it about the new child*/ - if(parent_dp != NULL) { - parent_dp->signal_f(parent_dp, LV_SIGNAL_CHILD_CHG, new_obj_dp); + if(parent != NULL) { + parent->signal_f(parent, LV_SIGNAL_CHILD_CHG, new_obj); /*Invalidate the area if not screen created*/ - lv_obj_inv(new_obj_dp); + lv_obj_inv(new_obj); } - return new_obj_dp; + return new_obj; } /** - * Delete 'obj_dp' and all of its children - * @param obj_dp + * Delete 'obj' and all of its children + * @param obj */ -void lv_obj_del(lv_obj_t* obj_dp) +void lv_obj_del(lv_obj_t * obj) { - lv_obj_inv(obj_dp); + lv_obj_inv(obj); /*Recursively delete the children*/ - lv_obj_t* i; - lv_obj_t* i_next; - i = ll_get_head(&(obj_dp->child_ll)); + lv_obj_t * i; + lv_obj_t * i_next; + i = ll_get_head(&(obj->child_ll)); while(i != NULL) { /*Get the next object before delete this*/ - i_next = ll_get_next(&(obj_dp->child_ll), i); + i_next = ll_get_next(&(obj->child_ll), i); /*Call the recursive del to the child too*/ lv_obj_del(i); @@ -277,47 +277,47 @@ void lv_obj_del(lv_obj_t* obj_dp) } /*Remove the object from parent's children list*/ - lv_obj_t* par_dp = lv_obj_get_parent(obj_dp); - if(par_dp == NULL) { /*It is a screen*/ - ll_rem(&scr_ll, obj_dp); + lv_obj_t * par = lv_obj_get_parent(obj); + if(par == NULL) { /*It is a screen*/ + ll_rem(&scr_ll, obj); } else { - ll_rem(&(par_dp->child_ll), obj_dp); + ll_rem(&(par->child_ll), obj); } /* All children deleted. * Now clean up the object specific data*/ - obj_dp->signal_f(obj_dp, LV_SIGNAL_CLEANUP, NULL); + obj->signal_f(obj, LV_SIGNAL_CLEANUP, NULL); /*Delete the base objects*/ - if(obj_dp->ext_dp != NULL) dm_free(obj_dp->ext_dp); - if(obj_dp->style_iso != 0) dm_free(obj_dp->style_p); - dm_free(obj_dp); /*Free the object itself*/ + if(obj->ext != NULL) dm_free(obj->ext); + if(obj->style_iso != 0) dm_free(obj->style_p); + dm_free(obj); /*Free the object itself*/ /* Reset all display input (dispi) because * the deleted object can be being pressed*/ lv_dispi_reset(); /*Send a signal to the parent to notify it about the child delete*/ - if(par_dp != NULL) { - par_dp->signal_f(par_dp, LV_SIGNAL_CHILD_CHG, NULL); + if(par != NULL) { + par->signal_f(par, LV_SIGNAL_CHILD_CHG, NULL); } } /** * Signal function of the basic object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param sign signal type * @param param parameter for the signal (depends on signal type) * @return false: the object become invalid (e.g. deleted) */ -bool lv_obj_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param) { bool valid = true; switch(sign) { case LV_SIGNAL_CHILD_CHG: /*Return 'invalid' if the child change signal is not enabled*/ - if(obj_dp->child_chg_off != 0) valid = false; + if(obj->child_chg_off != 0) valid = false; break; default: break; @@ -367,13 +367,13 @@ lv_objs_t * lv_objs_get(lv_objs_builtin_t style, lv_objs_t * copy_p) /** * Load a new screen - * @param scr_dp pointer to a screen + * @param scr pointer to a screen */ -void lv_scr_load(lv_obj_t* scr_dp) +void lv_scr_load(lv_obj_t * scr) { - act_scr_dp = scr_dp; + act_scr = scr; - lv_obj_inv(act_scr_dp); + lv_obj_inv(act_scr); } /*-------------------- @@ -382,28 +382,28 @@ void lv_scr_load(lv_obj_t* scr_dp) /** * Set a new parent for an object. Its relative position will be the same. - * @param obj_dp pointer to an object - * @param parent_dp pointer to the new parent object + * @param obj pointer to an object + * @param parent pointer to the new parent object */ -void lv_obj_set_parent(lv_obj_t* obj_dp, lv_obj_t* parent_dp) +void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent) { - lv_obj_inv(obj_dp); + lv_obj_inv(obj); point_t old_pos; - old_pos.x = lv_obj_get_x(obj_dp); - old_pos.y = lv_obj_get_y(obj_dp); + old_pos.x = lv_obj_get_x(obj); + old_pos.y = lv_obj_get_y(obj); - ll_chg_list(&obj_dp->par_dp->child_ll, &parent_dp->child_ll, obj_dp); - obj_dp->par_dp = parent_dp; - lv_obj_set_pos(obj_dp, old_pos.x, old_pos.y); + ll_chg_list(&obj->par->child_ll, &parent->child_ll, obj); + obj->par = parent; + lv_obj_set_pos(obj, old_pos.x, old_pos.y); /*Notify the original parent because one of its children is lost*/ - obj_dp->par_dp->signal_f(obj_dp->par_dp, LV_SIGNAL_CHILD_CHG, NULL); + obj->par->signal_f(obj->par, LV_SIGNAL_CHILD_CHG, NULL); /*Notify the new parent about the child*/ - parent_dp->signal_f(parent_dp, LV_SIGNAL_CHILD_CHG, obj_dp); + parent->signal_f(parent, LV_SIGNAL_CHILD_CHG, obj); - lv_obj_inv(obj_dp); + lv_obj_inv(obj); } /*------------------------------------------- @@ -412,21 +412,21 @@ void lv_obj_set_parent(lv_obj_t* obj_dp, lv_obj_t* parent_dp) /** * Set relative the position of an object (relative to the parent) - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param x new distance from the left side of the parent * @param y new distance from the top of the parent */ -void lv_obj_set_pos(lv_obj_t* obj_dp, cord_t x, cord_t y) +void lv_obj_set_pos(lv_obj_t * obj, cord_t x, cord_t y) { /*Convert x and y to absolute coordinates*/ - lv_obj_t* par_dp = obj_dp->par_dp; - x = x + par_dp->cords.x1; - y = y + par_dp->cords.y1; + lv_obj_t * par = obj->par; + x = x + par->cords.x1; + y = y + par->cords.y1; /*Calculate and set the movement*/ point_t diff; - diff.x = x - obj_dp->cords.x1; - diff.y = y - obj_dp->cords.y1; + diff.x = x - obj->cords.x1; + diff.y = y - obj->cords.y1; /* Do nothing if the position is not changed */ /* It is very important else recursive positioning can @@ -434,195 +434,195 @@ void lv_obj_set_pos(lv_obj_t* obj_dp, cord_t x, cord_t y) if(diff.x == 0 && diff.y == 0) return; /*Invalidate the original area*/ - lv_obj_inv(obj_dp); + lv_obj_inv(obj); /*Save the original coordinates*/ area_t ori; - lv_obj_get_cords(obj_dp, &ori); + lv_obj_get_cords(obj, &ori); - obj_dp->cords.x1 += diff.x; - obj_dp->cords.y1 += diff.y; - obj_dp->cords.x2 += diff.x; - obj_dp->cords.y2 += diff.y; + obj->cords.x1 += diff.x; + obj->cords.y1 += diff.y; + obj->cords.x2 += diff.x; + obj->cords.y2 += diff.y; - lv_obj_pos_child_refr(obj_dp, diff.x, diff.y); + lv_obj_pos_child_refr(obj, diff.x, diff.y); /*Inform the object about its new coordinates*/ - obj_dp->signal_f(obj_dp, LV_SIGNAL_CORD_CHG, &ori); + obj->signal_f(obj, LV_SIGNAL_CORD_CHG, &ori); /*Send a signal to the parent too*/ - par_dp->signal_f(par_dp, LV_SIGNAL_CHILD_CHG, obj_dp); + par->signal_f(par, LV_SIGNAL_CHILD_CHG, obj); /*Invalidate the new area*/ - lv_obj_inv(obj_dp); + lv_obj_inv(obj); } /** * Set relative the position of an object (relative to the parent). * The coordinates will be upscaled to compensate LV_DOWNSCALE. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param x new distance from the left side of the parent. (will be multiplied with LV_DOWNSCALE) * @param y new distance from the top of the parent. (will be multiplied with LV_DOWNSCALE) */ -void lv_obj_set_pos_us(lv_obj_t* obj_dp, cord_t x, cord_t y) +void lv_obj_set_pos_us(lv_obj_t * obj, cord_t x, cord_t y) { - lv_obj_set_pos(obj_dp, x * LV_DOWNSCALE, y * LV_DOWNSCALE); + lv_obj_set_pos(obj, x * LV_DOWNSCALE, y * LV_DOWNSCALE); } /** * Set the x coordinate of a object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param x new distance from the left side from the parent */ -void lv_obj_set_x(lv_obj_t* obj_dp, cord_t x) +void lv_obj_set_x(lv_obj_t * obj, cord_t x) { - lv_obj_set_pos(obj_dp, x, lv_obj_get_y(obj_dp)); + lv_obj_set_pos(obj, x, lv_obj_get_y(obj)); } /** * Set the x coordinate of a object. * The coordinate will be upscaled to compensate LV_DOWNSCALE. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param x new distance from the left side from the parent. (will be multiplied with LV_DOWNSCALE) */ -void lv_obj_set_x_us(lv_obj_t* obj_dp, cord_t x) +void lv_obj_set_x_us(lv_obj_t * obj, cord_t x) { - lv_obj_set_pos(obj_dp, x * LV_DOWNSCALE, lv_obj_get_y(obj_dp)); + lv_obj_set_pos(obj, x * LV_DOWNSCALE, lv_obj_get_y(obj)); } /** * Set the y coordinate of a object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param y new distance from the top of the parent */ -void lv_obj_set_y(lv_obj_t* obj_dp, cord_t y) +void lv_obj_set_y(lv_obj_t * obj, cord_t y) { - lv_obj_set_pos(obj_dp, lv_obj_get_x(obj_dp), y); + lv_obj_set_pos(obj, lv_obj_get_x(obj), y); } /** * Set the y coordinate of a object. * The coordinate will be upscaled to compensate LV_DOWNSCALE. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param y new distance from the top of the parent. (will be multiplied with LV_DOWNSCALE) */ -void lv_obj_set_y_us(lv_obj_t* obj_dp, cord_t y) +void lv_obj_set_y_us(lv_obj_t * obj, cord_t y) { - lv_obj_set_pos(obj_dp, lv_obj_get_x(obj_dp), y * LV_DOWNSCALE); + lv_obj_set_pos(obj, lv_obj_get_x(obj), y * LV_DOWNSCALE); } /** * Set the size of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param w new width * @param h new height */ -void lv_obj_set_size(lv_obj_t* obj_dp, cord_t w, cord_t h) +void lv_obj_set_size(lv_obj_t * obj, cord_t w, cord_t h) { /* Do nothing if the size is not changed */ /* It is very important else recursive resizing can * occur without size change*/ - if(lv_obj_get_width(obj_dp) == w && lv_obj_get_height(obj_dp) == h) { + if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { return; } /*Invalidate the original area*/ - lv_obj_inv(obj_dp); + lv_obj_inv(obj); /*Save the original coordinates*/ area_t ori; - lv_obj_get_cords(obj_dp, &ori); + lv_obj_get_cords(obj, &ori); //Set the length and height - obj_dp->cords.x2 = obj_dp->cords.x1 + w - 1; - obj_dp->cords.y2 = obj_dp->cords.y1 + h - 1; + obj->cords.x2 = obj->cords.x1 + w - 1; + obj->cords.y2 = obj->cords.y1 + h - 1; /*Send a signal to the object with its new coordinates*/ - obj_dp->signal_f(obj_dp, LV_SIGNAL_CORD_CHG, &ori); + obj->signal_f(obj, LV_SIGNAL_CORD_CHG, &ori); /*Send a signal to the parent too*/ - lv_obj_t* par_dp = lv_obj_get_parent(obj_dp); - if(par_dp != NULL) par_dp->signal_f(par_dp, LV_SIGNAL_CHILD_CHG, obj_dp); + lv_obj_t * par = lv_obj_get_parent(obj); + if(par != NULL) par->signal_f(par, LV_SIGNAL_CHILD_CHG, obj); /*Invalidate the new area*/ - lv_obj_inv(obj_dp); + lv_obj_inv(obj); } /** * Set the size of an object. The coordinates will be upscaled to compensate LV_DOWNSCALE. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param w new width (will be multiplied with LV_DOWNSCALE) * @param h new height (will be multiplied with LV_DOWNSCALE) */ -void lv_obj_set_size_us(lv_obj_t* obj_dp, cord_t w, cord_t h) +void lv_obj_set_size_us(lv_obj_t * obj, cord_t w, cord_t h) { - lv_obj_set_size(obj_dp, w * LV_DOWNSCALE, h * LV_DOWNSCALE); + lv_obj_set_size(obj, w * LV_DOWNSCALE, h * LV_DOWNSCALE); } /** * Set the width of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param w new width */ -void lv_obj_set_width(lv_obj_t* obj_dp, cord_t w) +void lv_obj_set_width(lv_obj_t * obj, cord_t w) { - lv_obj_set_size(obj_dp, w, lv_obj_get_height(obj_dp)); + lv_obj_set_size(obj, w, lv_obj_get_height(obj)); } /** * Set the width of an object. The width will be upscaled to compensate LV_DOWNSCALE - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param w new width (will be multiplied with LV_DOWNSCALE) */ -void lv_obj_set_width_us(lv_obj_t* obj_dp, cord_t w) +void lv_obj_set_width_us(lv_obj_t * obj, cord_t w) { - lv_obj_set_size(obj_dp, w * LV_DOWNSCALE, lv_obj_get_height(obj_dp)); + lv_obj_set_size(obj, w * LV_DOWNSCALE, lv_obj_get_height(obj)); } /** * Set the height of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param h new height */ -void lv_obj_set_height(lv_obj_t* obj_dp, cord_t h) +void lv_obj_set_height(lv_obj_t * obj, cord_t h) { - lv_obj_set_size(obj_dp, lv_obj_get_width(obj_dp), h); + lv_obj_set_size(obj, lv_obj_get_width(obj), h); } /** * Set the height of an object. The height will be upscaled to compensate LV_DOWNSCALE - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param h new height (will be multiplied with LV_DOWNSCALE) */ -void lv_obj_set_height_us(lv_obj_t* obj_dp, cord_t h) +void lv_obj_set_height_us(lv_obj_t * obj, cord_t h) { - lv_obj_set_size(obj_dp, lv_obj_get_width(obj_dp), h * LV_DOWNSCALE); + lv_obj_set_size(obj, lv_obj_get_width(obj), h * LV_DOWNSCALE); } /** * Align an object to an other object. - * @param obj_dp pointer to an object to align - * @param base_dp pointer to an object (if NULL the parent is used). 'obj_dp' will be aligned to it. + * @param obj pointer to an object to align + * @param base pointer to an object (if NULL the parent is used). 'obj' will be aligned to it. * @param align type of alignment (see 'lv_align_t' enum) * @param x_mod x coordinate shift after alignment * @param y_mod y coordinate shift after alignment */ -void lv_obj_align(lv_obj_t* obj_dp,lv_obj_t* base_dp, lv_align_t align, cord_t x_mod, cord_t y_mod) +void lv_obj_align(lv_obj_t * obj,lv_obj_t * base, lv_align_t align, cord_t x_mod, cord_t y_mod) { - cord_t new_x = lv_obj_get_x(obj_dp); - cord_t new_y = lv_obj_get_y(obj_dp); + cord_t new_x = lv_obj_get_x(obj); + cord_t new_y = lv_obj_get_y(obj); - if(base_dp == NULL) { - base_dp = lv_obj_get_parent(obj_dp); + if(base == NULL) { + base = lv_obj_get_parent(obj); } switch(align) { case LV_ALIGN_CENTER: - new_x = lv_obj_get_width(base_dp) / 2 - lv_obj_get_width(obj_dp) / 2; - new_y = lv_obj_get_height(base_dp) / 2 - lv_obj_get_height(obj_dp) / 2; + new_x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2; + new_y = lv_obj_get_height(base) / 2 - lv_obj_get_height(obj) / 2; break; case LV_ALIGN_IN_TOP_LEFT: @@ -630,126 +630,126 @@ void lv_obj_align(lv_obj_t* obj_dp,lv_obj_t* base_dp, lv_align_t align, cord_t x new_y = 0; break; case LV_ALIGN_IN_TOP_MID: - new_x = lv_obj_get_width(base_dp) / 2 - lv_obj_get_width(obj_dp) / 2; + new_x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2; new_y = 0; break; case LV_ALIGN_IN_TOP_RIGHT: - new_x = lv_obj_get_width(base_dp) - lv_obj_get_width(obj_dp); + new_x = lv_obj_get_width(base) - lv_obj_get_width(obj); new_y = 0; break; case LV_ALIGN_IN_BOTTOM_LEFT: new_x = 0; - new_y = lv_obj_get_height(base_dp) - lv_obj_get_height(obj_dp); + new_y = lv_obj_get_height(base) - lv_obj_get_height(obj); break; case LV_ALIGN_IN_BOTTOM_MID: - new_x = lv_obj_get_width(base_dp) / 2 - lv_obj_get_width(obj_dp) / 2; - new_y = lv_obj_get_height(base_dp) - lv_obj_get_height(obj_dp); + new_x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2; + new_y = lv_obj_get_height(base) - lv_obj_get_height(obj); break; case LV_ALIGN_IN_BOTTOM_RIGHT: - new_x = lv_obj_get_width(base_dp) - lv_obj_get_width(obj_dp); - new_y = lv_obj_get_height(base_dp) - lv_obj_get_height(obj_dp); + new_x = lv_obj_get_width(base) - lv_obj_get_width(obj); + new_y = lv_obj_get_height(base) - lv_obj_get_height(obj); break; case LV_ALIGN_IN_LEFT_MID: new_x = 0; - new_y = lv_obj_get_height(base_dp) / 2 - lv_obj_get_height(obj_dp) / 2; + new_y = lv_obj_get_height(base) / 2 - lv_obj_get_height(obj) / 2; break; case LV_ALIGN_IN_RIGHT_MID: - new_x = lv_obj_get_width(base_dp) - lv_obj_get_width(obj_dp); - new_y = lv_obj_get_height(base_dp) / 2 - lv_obj_get_height(obj_dp) / 2; + new_x = lv_obj_get_width(base) - lv_obj_get_width(obj); + new_y = lv_obj_get_height(base) / 2 - lv_obj_get_height(obj) / 2; break; case LV_ALIGN_OUT_TOP_LEFT: new_x = 0; - new_y = -lv_obj_get_height(obj_dp); + new_y = -lv_obj_get_height(obj); break; case LV_ALIGN_OUT_TOP_MID: - new_x = lv_obj_get_width(base_dp) / 2 - lv_obj_get_width(obj_dp) / 2; - new_y = - lv_obj_get_height(obj_dp); + new_x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2; + new_y = - lv_obj_get_height(obj); break; case LV_ALIGN_OUT_TOP_RIGHT: - new_x = lv_obj_get_width(base_dp) - lv_obj_get_width(obj_dp); - new_y = - lv_obj_get_height(obj_dp); + new_x = lv_obj_get_width(base) - lv_obj_get_width(obj); + new_y = - lv_obj_get_height(obj); break; case LV_ALIGN_OUT_BOTTOM_LEFT: new_x = 0; - new_y = lv_obj_get_height(base_dp); + new_y = lv_obj_get_height(base); break; case LV_ALIGN_OUT_BOTTOM_MID: - new_x = lv_obj_get_width(base_dp) / 2 - lv_obj_get_width(obj_dp) / 2; - new_y = lv_obj_get_height(base_dp); + new_x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2; + new_y = lv_obj_get_height(base); break; case LV_ALIGN_OUT_BOTTOM_RIGHT: - new_x = lv_obj_get_width(base_dp) - lv_obj_get_width(obj_dp); - new_y = lv_obj_get_height(base_dp); + new_x = lv_obj_get_width(base) - lv_obj_get_width(obj); + new_y = lv_obj_get_height(base); break; case LV_ALIGN_OUT_LEFT_TOP: - new_x = - lv_obj_get_width(obj_dp); + new_x = - lv_obj_get_width(obj); new_y = 0; break; case LV_ALIGN_OUT_LEFT_MID: - new_x = - lv_obj_get_width(obj_dp); - new_y = lv_obj_get_height(base_dp) / 2 - lv_obj_get_height(obj_dp) / 2; + new_x = - lv_obj_get_width(obj); + new_y = lv_obj_get_height(base) / 2 - lv_obj_get_height(obj) / 2; break; case LV_ALIGN_OUT_LEFT_BOTTOM: - new_x = - lv_obj_get_width(obj_dp); - new_y = lv_obj_get_height(base_dp) - lv_obj_get_height(obj_dp); + new_x = - lv_obj_get_width(obj); + new_y = lv_obj_get_height(base) - lv_obj_get_height(obj); break; case LV_ALIGN_OUT_RIGHT_TOP: - new_x = lv_obj_get_width(base_dp); + new_x = lv_obj_get_width(base); new_y = 0; break; case LV_ALIGN_OUT_RIGHT_MID: - new_x = lv_obj_get_width(base_dp); - new_y = lv_obj_get_height(base_dp) / 2 - lv_obj_get_height(obj_dp) / 2; + new_x = lv_obj_get_width(base); + new_y = lv_obj_get_height(base) / 2 - lv_obj_get_height(obj) / 2; break; case LV_ALIGN_OUT_RIGHT_BOTTOM: - new_x = lv_obj_get_width(base_dp); - new_y = lv_obj_get_height(base_dp) - lv_obj_get_height(obj_dp); + new_x = lv_obj_get_width(base); + new_y = lv_obj_get_height(base) - lv_obj_get_height(obj); break; } - /*Bring together the coordination system of base_dp and obj_dp*/ - lv_obj_t* par_dp = lv_obj_get_parent(obj_dp); - cord_t base_abs_x = base_dp->cords.x1; - cord_t base_abs_y = base_dp->cords.y1; - cord_t par_abs_x = par_dp->cords.x1; - cord_t par_abs_y = par_dp->cords.y1; + /*Bring together the coordination system of base and obj*/ + lv_obj_t * par = lv_obj_get_parent(obj); + cord_t base_abs_x = base->cords.x1; + cord_t base_abs_y = base->cords.y1; + cord_t par_abs_x = par->cords.x1; + cord_t par_abs_y = par->cords.y1; new_x += x_mod + base_abs_x; new_y += y_mod + base_abs_y; new_x -= par_abs_x; new_y -= par_abs_y; - lv_obj_set_pos(obj_dp, new_x, new_y); + lv_obj_set_pos(obj, new_x, new_y); } /** * Align an object to an other object. The coordinates will be upscaled to compensate LV_DOWNSCALE. - * @param obj_dp pointer to an object to align - * @param base_dp pointer to an object (if NULL the parent is used). 'obj_dp' will be aligned to it. + * @param obj pointer to an object to align + * @param base pointer to an object (if NULL the parent is used). 'obj' will be aligned to it. * @param align type of alignment (see 'lv_align_t' enum) * @param x_mod x coordinate shift after alignment (will be multiplied with LV_DOWNSCALE) * @param y_mod y coordinate shift after alignment (will be multiplied with LV_DOWNSCALE) */ -void lv_obj_align_us(lv_obj_t* obj_dp,lv_obj_t* base_dp, lv_align_t align, cord_t x_mod, cord_t y_mod) +void lv_obj_align_us(lv_obj_t * obj,lv_obj_t * base, lv_align_t align, cord_t x_mod, cord_t y_mod) { - lv_obj_align(obj_dp, base_dp, align, x_mod * LV_DOWNSCALE, y_mod * LV_DOWNSCALE); + lv_obj_align(obj, base, align, x_mod * LV_DOWNSCALE, y_mod * LV_DOWNSCALE); } /*--------------------- @@ -758,20 +758,20 @@ void lv_obj_align_us(lv_obj_t* obj_dp,lv_obj_t* base_dp, lv_align_t align, cord_ /** * Set a new style for an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param style_p pointer to the new style */ -void lv_obj_set_style(lv_obj_t* obj_dp, void * style_p) +void lv_obj_set_style(lv_obj_t * obj, void * style_p) { - if(obj_dp->style_iso != 0) { - dm_free(obj_dp->style_p); + if(obj->style_iso != 0) { + dm_free(obj->style_p); } - obj_dp->style_p = style_p; + obj->style_p = style_p; /*Send a style change signal to the object*/ - obj_dp->signal_f(obj_dp, LV_SIGNAL_STYLE_CHG, NULL); - lv_obj_inv(obj_dp); + obj->signal_f(obj, LV_SIGNAL_STYLE_CHG, NULL); + lv_obj_inv(obj); } /** @@ -779,51 +779,51 @@ void lv_obj_set_style(lv_obj_t* obj_dp, void * style_p) * for this object which can be freely modified independently from the style of the * other objects. */ -void * lv_obj_iso_style(lv_obj_t * obj_dp, uint32_t style_size) +void * lv_obj_iso_style(lv_obj_t * obj, uint32_t style_size) { - if(obj_dp->style_iso != 0) return obj_dp->style_p; + if(obj->style_iso != 0) return obj->style_p; - void * ori_style_p = lv_obj_get_style(obj_dp); - void * iso_style_dp = dm_alloc(style_size); - dm_assert(iso_style_dp); - memcpy(iso_style_dp, ori_style_p, style_size); + void * ori_style_p = lv_obj_get_style(obj); + void * iso_style = dm_alloc(style_size); + dm_assert(iso_style); + memcpy(iso_style, ori_style_p, style_size); - obj_dp->style_iso = 1; - obj_dp->style_p = iso_style_dp; + obj->style_iso = 1; + obj->style_p = iso_style; - lv_obj_refr_style(obj_dp); + lv_obj_refr_style(obj); - return obj_dp->style_p; + return obj->style_p; } /** * Set the opacity of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param opa 0 (transparent) .. 255(fully cover) */ -void lv_obj_set_opa(lv_obj_t* obj_dp, uint8_t opa) +void lv_obj_set_opa(lv_obj_t * obj, uint8_t opa) { - obj_dp->opa = opa; + obj->opa = opa; - lv_obj_inv(obj_dp); + lv_obj_inv(obj); } /** * Set the opacity of an object and all of its children - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param opa 0 (transparent) .. 255(fully cover) */ -void lv_obj_set_opar(lv_obj_t* obj_dp, uint8_t opa) +void lv_obj_set_opar(lv_obj_t * obj, uint8_t opa) { - lv_obj_t* i; + lv_obj_t * i; - LL_READ(obj_dp->child_ll, i) { + LL_READ(obj->child_ll, i) { lv_obj_set_opar(i, opa); } - obj_dp->opa = opa; + obj->opa = opa; - lv_obj_inv(obj_dp); + lv_obj_inv(obj); } /*----------------- @@ -832,91 +832,91 @@ void lv_obj_set_opar(lv_obj_t* obj_dp, uint8_t opa) /** * Hide an object. It won't be visible and clickable. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param hidden_en true: hide the object */ -void lv_obj_set_hidden(lv_obj_t* obj_dp, bool hidden_en) +void lv_obj_set_hidden(lv_obj_t * obj, bool hidden_en) { - obj_dp->hidden = hidden_en == false ? 0 : 1; + obj->hidden = hidden_en == false ? 0 : 1; - lv_obj_t * par_dp = lv_obj_get_parent(obj_dp); - par_dp->signal_f(par_dp, LV_SIGNAL_CHILD_CHG, obj_dp); + lv_obj_t * par = lv_obj_get_parent(obj); + par->signal_f(par, LV_SIGNAL_CHILD_CHG, obj); - lv_obj_inv(obj_dp); + lv_obj_inv(obj); } /** * Enable or disable the clicking of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param click_en true: make the object clickable */ -void lv_obj_set_click(lv_obj_t* obj_dp, bool click_en) +void lv_obj_set_click(lv_obj_t * obj, bool click_en) { - obj_dp->click_en = (click_en == true ? 1 : 0); + obj->click_en = (click_en == true ? 1 : 0); } /** * Enable to bring this object to the foreground if it * or any of its children is clicked - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param top_en true: enable the auto top feature */ -void lv_obj_set_top(lv_obj_t* obj_dp, bool top_en) +void lv_obj_set_top(lv_obj_t * obj, bool top_en) { - obj_dp->top_en= (top_en == true ? 1 : 0); + obj->top_en= (top_en == true ? 1 : 0); } /** * Enable the dragging of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param drag_en true: make the object dragable */ -void lv_obj_set_drag(lv_obj_t* obj_dp, bool drag_en) +void lv_obj_set_drag(lv_obj_t * obj, bool drag_en) { - obj_dp->drag_en = (drag_en == true ? 1 : 0); + obj->drag_en = (drag_en == true ? 1 : 0); } /** * Enable the throwing of an object after is is dragged - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param dragthr_en true: enable the drag throw */ -void lv_obj_set_drag_throw(lv_obj_t* obj_dp, bool dragthr_en) +void lv_obj_set_drag_throw(lv_obj_t * obj, bool dragthr_en) { - obj_dp->drag_throw_en = (dragthr_en == true ? 1 : 0); + obj->drag_throw_en = (dragthr_en == true ? 1 : 0); } /** * Enable to use parent for drag related operations. * If trying to drag the object the parent will be moved instead - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param dragpar_en true: enable the 'drag parent' for the object */ -void lv_obj_set_drag_parent(lv_obj_t* obj_dp, bool dragpar_en) +void lv_obj_set_drag_parent(lv_obj_t * obj, bool dragpar_en) { - obj_dp->drag_parent = (dragpar_en == true ? 1 : 0); + obj->drag_parent = (dragpar_en == true ? 1 : 0); } /** * Set the signal function of an object. * Always call the previous signal function in the new. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param fp the new signal function */ -void lv_obj_set_signal_f(lv_obj_t* obj_dp, lv_signal_f_t fp) +void lv_obj_set_signal_f(lv_obj_t * obj, lv_signal_f_t fp) { - obj_dp->signal_f = fp; + obj->signal_f = fp; } /** * Set a new design function for an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param fp the new design function */ -void lv_obj_set_design_f(lv_obj_t* obj_dp, lv_design_f_t fp) +void lv_obj_set_design_f(lv_obj_t * obj, lv_design_f_t fp) { - obj_dp->design_f = fp; + obj->design_f = fp; } /*---------------- @@ -925,52 +925,52 @@ void lv_obj_set_design_f(lv_obj_t* obj_dp, lv_design_f_t fp) /** * Allocate a new ext. data for an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param ext_size the size of the new ext. data * @return Normal pointer to the allocated ext */ -void * lv_obj_alloc_ext(lv_obj_t* obj_dp, uint16_t ext_size) +void * lv_obj_alloc_ext(lv_obj_t * obj, uint16_t ext_size) { - obj_dp->ext_dp = dm_realloc(obj_dp->ext_dp, ext_size); + obj->ext = dm_realloc(obj->ext, ext_size); - return (void*)obj_dp->ext_dp; + return (void*)obj->ext; } /** * Set an application specific number for an object. * It can help to identify objects in the application. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param free_num the new free number */ -void lv_obj_set_free_num(lv_obj_t* obj_dp, uint8_t free_num) +void lv_obj_set_free_num(lv_obj_t * obj, uint8_t free_num) { - obj_dp->free_num = free_num; + obj->free_num = free_num; } #if LV_OBJ_FREE_P != 0 /** * Set an application specific pointer for an object. * It can help to identify objects in the application. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param free_p the new free pinter */ -void lv_obj_set_free_p(lv_obj_t* obj_dp, void * free_p) +void lv_obj_set_free_p(lv_obj_t * obj, void * free_p) { - obj_dp->free_p = free_p; + obj->free_p = free_p; } #endif /** * Animate an object - * @param obj_dp pointer to an object to animate + * @param obj pointer to an object to animate * @param type type of animation from 'lv_anim_builtin_t'. 'OR' it with ANIM_IN or ANIM_OUT * @param time time of animation in milliseconds * @param delay delay before the animation in milliseconds * @param cb a function to call when the animation is ready */ -void lv_obj_anim(lv_obj_t * obj_dp, lv_anim_builtin_t type, uint16_t time, uint16_t delay, void (*cb) (lv_obj_t *)) +void lv_obj_anim(lv_obj_t * obj, lv_anim_builtin_t type, uint16_t time, uint16_t delay, void (*cb) (lv_obj_t *)) { - lv_obj_t * par_dp = lv_obj_get_parent(obj_dp); + lv_obj_t * par = lv_obj_get_parent(obj); /*Get the direction*/ bool out = (type & ANIM_DIR_MASK) == ANIM_IN ? false : true; @@ -979,7 +979,7 @@ void lv_obj_anim(lv_obj_t * obj_dp, lv_anim_builtin_t type, uint16_t time, uint1 if(type == LV_ANIM_NONE) return; anim_t a; - a.p = obj_dp; + a.p = obj; a.time = time; a.act_time = (int32_t)-delay; a.end_cb = (void(*)(void*))cb; @@ -988,26 +988,26 @@ void lv_obj_anim(lv_obj_t * obj_dp, lv_anim_builtin_t type, uint16_t time, uint1 switch(type) { case LV_ANIM_FLOAT_LEFT: a.fp = (void(*)(void *, int32_t))lv_obj_set_x; - a.start = -lv_obj_get_width(obj_dp); - a.end = lv_obj_get_x(obj_dp); + a.start = -lv_obj_get_width(obj); + a.end = lv_obj_get_x(obj); a.path_p = anim_path_lin; break; case LV_ANIM_FLOAT_RIGHT: a.fp = (void(*)(void *, int32_t))lv_obj_set_x; - a.start = lv_obj_get_width(par_dp); - a.end = lv_obj_get_x(obj_dp); + a.start = lv_obj_get_width(par); + a.end = lv_obj_get_x(obj); a.path_p = anim_path_lin; break; case LV_ANIM_FLOAT_TOP: a.fp = (void(*)(void * , int32_t))lv_obj_set_y; - a.start = -lv_obj_get_height(obj_dp); - a.end = lv_obj_get_y(obj_dp); + a.start = -lv_obj_get_height(obj); + a.end = lv_obj_get_y(obj); a.path_p = anim_path_lin; break; case LV_ANIM_FLOAT_BOTTOM: a.fp = (void(*)(void * , int32_t))lv_obj_set_y; - a.start = lv_obj_get_height(par_dp); - a.end = lv_obj_get_y(obj_dp); + a.start = lv_obj_get_height(par); + a.end = lv_obj_get_y(obj); a.path_p = anim_path_lin; break; case LV_ANIM_FADE: @@ -1019,13 +1019,13 @@ void lv_obj_anim(lv_obj_t * obj_dp, lv_anim_builtin_t type, uint16_t time, uint1 case LV_ANIM_GROW_H: a.fp = (void(*)(void * , int32_t))lv_obj_set_width; a.start = 0; - a.end = lv_obj_get_width(obj_dp); + a.end = lv_obj_get_width(obj); a.path_p = anim_path_lin; break; case LV_ANIM_GROW_V: a.fp = (void(*)(void * , int32_t))lv_obj_set_height; a.start = 0; - a.end = lv_obj_get_height(obj_dp); + a.end = lv_obj_get_height(obj); a.path_p = anim_path_lin; break; default: @@ -1053,26 +1053,26 @@ void lv_obj_anim(lv_obj_t * obj_dp, lv_anim_builtin_t type, uint16_t time, uint1 * Return with the actual screen * @return pointer to to the actual screen object */ -lv_obj_t* lv_scr_act(void) +lv_obj_t * lv_scr_act(void) { - return act_scr_dp; + return act_scr; } /** * Return with the screen of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return pointer to a screen */ -lv_obj_t* lv_obj_get_scr(lv_obj_t* obj_dp) +lv_obj_t * lv_obj_get_scr(lv_obj_t * obj) { - lv_obj_t* par_dp = obj_dp; - lv_obj_t* act_p; + lv_obj_t * par = obj; + lv_obj_t * act_p; do { - act_p = par_dp; - par_dp = lv_obj_get_parent(act_p); + act_p = par; + par = lv_obj_get_parent(act_p); } - while(par_dp != NULL); + while(par != NULL); return act_p; } @@ -1084,27 +1084,27 @@ lv_obj_t* lv_obj_get_scr(lv_obj_t* obj_dp) /** * Returns with the parent of an object - * @param obj_dp pointer to an object - * @return pointer to the parent of 'obj_dp' + * @param obj pointer to an object + * @return pointer to the parent of 'obj' */ -lv_obj_t* lv_obj_get_parent(lv_obj_t * obj_dp) +lv_obj_t * lv_obj_get_parent(lv_obj_t * obj) { - return obj_dp->par_dp; + return obj->par; } /** * Iterate through the children of an object - * @param obj_dp pointer to an object - * @param child_dp NULL at first call to get the next children + * @param obj pointer to an object + * @param child NULL at first call to get the next children * and the previous return value later - * @return the child after 'act_child_dp' or NULL if no more child + * @return the child after 'act_child' or NULL if no more child */ -lv_obj_t * lv_obj_get_child(lv_obj_t * obj_dp, lv_obj_t * child_dp) +lv_obj_t * lv_obj_get_child(lv_obj_t * obj, lv_obj_t * child) { - if(child_dp == NULL) { - return ll_get_head(&obj_dp->child_ll); + if(child == NULL) { + return ll_get_head(&obj->child_ll); } else { - return ll_get_next(&obj_dp->child_ll, child_dp); + return ll_get_next(&obj->child_ll, child); } return NULL; @@ -1116,61 +1116,61 @@ lv_obj_t * lv_obj_get_child(lv_obj_t * obj_dp, lv_obj_t * child_dp) /** * Copy the coordinates of an object to an area - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param cords_p pointer to an area to store the coordinates */ -void lv_obj_get_cords(lv_obj_t* obj_dp, area_t * cords_p) +void lv_obj_get_cords(lv_obj_t * obj, area_t * cords_p) { - area_cpy(cords_p, &obj_dp->cords); + area_cpy(cords_p, &obj->cords); } /** * Get the x coordinate of object - * @param obj_dp pointer to an object - * @return distance of 'obj_dp' from the left side of its parent + * @param obj pointer to an object + * @return distance of 'obj' from the left side of its parent */ -cord_t lv_obj_get_x(lv_obj_t* obj_dp) +cord_t lv_obj_get_x(lv_obj_t * obj) { cord_t rel_x; - lv_obj_t* parent_dp = lv_obj_get_parent(obj_dp); - rel_x = obj_dp->cords.x1 - parent_dp->cords.x1; + lv_obj_t * parent = lv_obj_get_parent(obj); + rel_x = obj->cords.x1 - parent->cords.x1; return rel_x; } /** * Get the y coordinate of object - * @param obj_dp pointer to an object - * @return distance of 'obj_dp' from the top of its parent + * @param obj pointer to an object + * @return distance of 'obj' from the top of its parent */ -cord_t lv_obj_get_y(lv_obj_t* obj_dp) +cord_t lv_obj_get_y(lv_obj_t * obj) { cord_t rel_y; - lv_obj_t* parent_dp = lv_obj_get_parent(obj_dp); - rel_y = obj_dp->cords.y1 - parent_dp->cords.y1; + lv_obj_t * parent = lv_obj_get_parent(obj); + rel_y = obj->cords.y1 - parent->cords.y1; return rel_y; } /** * Get the width of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return the width */ -cord_t lv_obj_get_width(lv_obj_t* obj_dp) +cord_t lv_obj_get_width(lv_obj_t * obj) { - return area_get_width(&obj_dp->cords); + return area_get_width(&obj->cords); } /** * Get the height of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return the height */ -cord_t lv_obj_get_height(lv_obj_t* obj_dp) +cord_t lv_obj_get_height(lv_obj_t * obj) { - return area_get_height(&obj_dp->cords); + return area_get_height(&obj->cords); } /*----------------- @@ -1179,22 +1179,22 @@ cord_t lv_obj_get_height(lv_obj_t* obj_dp) /** * Get the style pointer of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return pointer to a style */ -void * lv_obj_get_style(lv_obj_t* obj_dp) +void * lv_obj_get_style(lv_obj_t * obj) { - return obj_dp->style_p; + return obj->style_p; } /** * Get the opacity of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return 0 (transparent) .. 255 (fully cover) */ -opa_t lv_obj_get_opa(lv_obj_t* obj_dp) +opa_t lv_obj_get_opa(lv_obj_t * obj) { - return obj_dp->opa; + return obj->opa; } /*----------------- @@ -1203,82 +1203,82 @@ opa_t lv_obj_get_opa(lv_obj_t* obj_dp) /** * Get the hidden attribute of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return true: the object is hidden */ -bool lv_obj_get_hidden(lv_obj_t* obj_dp) +bool lv_obj_get_hidden(lv_obj_t * obj) { - return obj_dp->hidden == 0 ? false : true; + return obj->hidden == 0 ? false : true; } /** * Get the click enable attribute of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return true: the object is clickable */ -bool lv_obj_get_click(lv_obj_t* obj_dp) +bool lv_obj_get_click(lv_obj_t * obj) { - return obj_dp->click_en == 0 ? false : true;; + return obj->click_en == 0 ? false : true;; } /** * Get the top enable attribute of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return true: the auto top feture is enabled */ -bool lv_obj_get_top(lv_obj_t* obj_dp) +bool lv_obj_get_top(lv_obj_t * obj) { - return obj_dp->top_en == 0 ? false : true;; + return obj->top_en == 0 ? false : true;; } /** * Get the drag enable attribute of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return true: the object is dragable */ -bool lv_obj_get_drag(lv_obj_t* obj_dp) +bool lv_obj_get_drag(lv_obj_t * obj) { - return obj_dp->drag_en == 0 ? false : true; + return obj->drag_en == 0 ? false : true; } /** * Get the drag thow enable attribute of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return true: drag throw is enabled */ -bool lv_obj_get_drag_throw(lv_obj_t* obj_dp) +bool lv_obj_get_drag_throw(lv_obj_t * obj) { - return obj_dp->drag_throw_en == 0 ? false : true; + return obj->drag_throw_en == 0 ? false : true; } /** * Get the drag parent attribute of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return true: drag parent is enabled */ -bool lv_obj_get_drag_parent(lv_obj_t* obj_dp) +bool lv_obj_get_drag_parent(lv_obj_t * obj) { - return obj_dp->drag_parent == 0 ? false : true; + return obj->drag_parent == 0 ? false : true; } /** * Get the signal function of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return the signal function */ -lv_signal_f_t lv_obj_get_signal_f(lv_obj_t* obj_dp) +lv_signal_f_t lv_obj_get_signal_f(lv_obj_t * obj) { - return obj_dp->signal_f; + return obj->signal_f; } /** * Get the design function of an object - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return the design function */ -lv_design_f_t lv_obj_get_design_f(lv_obj_t* obj_dp) +lv_design_f_t lv_obj_get_design_f(lv_obj_t * obj) { - return obj_dp->design_f; + return obj->design_f; } @@ -1288,35 +1288,35 @@ lv_design_f_t lv_obj_get_design_f(lv_obj_t* obj_dp) /** * Get the ext pointer - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return the ext pointer but not the dynamic version * Use it as ext->data1, and NOT da(ext)->data1 */ -void * lv_obj_get_ext(lv_obj_t* obj_dp) +void * lv_obj_get_ext(lv_obj_t * obj) { - return obj_dp->ext_dp; + return obj->ext; } /** * Get the free number - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return the free number */ -uint8_t lv_obj_get_free_num(lv_obj_t* obj_dp) +uint8_t lv_obj_get_free_num(lv_obj_t * obj) { - return obj_dp->free_num; + return obj->free_num; } #if LV_OBJ_FREE_P != 0 /** * Get the free pointer - * @param obj_dp pointer to an object + * @param obj pointer to an object * @return the free pointer */ -void * lv_obj_get_free_p(lv_obj_t* obj_dp) +void * lv_obj_get_free_p(lv_obj_t * obj) { - return obj_dp->free_p; + return obj->free_p; } #endif @@ -1326,30 +1326,30 @@ void * lv_obj_get_free_p(lv_obj_t* obj_dp) /** * Handle the drawing related tasks of the base objects. - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) * LV_DESIGN_DRAW: draw the object (always return 'true') * @param return true/false, depends on 'mode' */ -static bool lv_obj_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_obj_design(lv_obj_t * obj, const area_t * mask_p, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { bool cover; - cover = area_is_in(mask_p, &obj_dp->cords); + cover = area_is_in(mask_p, &obj->cords); return cover; } else if(mode == LV_DESIGN_DRAW_MAIN) { - lv_objs_t * objs_p = lv_obj_get_style(obj_dp); + lv_objs_t * objs_p = lv_obj_get_style(obj); - opa_t opa = lv_obj_get_opa(obj_dp); + opa_t opa = lv_obj_get_opa(obj); color_t color = objs_p->color; /*Simply draw a rectangle*/ #if LV_VDB_SIZE == 0 - lv_rfill(&obj_dp->cords, mask_p, color, opa); + lv_rfill(&obj->cords, mask_p, color, opa); #else - lv_vfill(&obj_dp->cords, mask_p, color, opa); + lv_vfill(&obj->cords, mask_p, color, opa); #endif } return true; @@ -1357,14 +1357,14 @@ static bool lv_obj_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mo /** * Reposition the children of an object. (Called recursively) - * @param obj_dp pointer to an object which children will be repositioned + * @param obj pointer to an object which children will be repositioned * @param x_diff x coordinate shift * @param y_diff y coordinate shift */ -static void lv_obj_pos_child_refr(lv_obj_t* obj_dp, cord_t x_diff, cord_t y_diff) +static void lv_obj_pos_child_refr(lv_obj_t * obj, cord_t x_diff, cord_t y_diff) { - lv_obj_t* i; - LL_READ(obj_dp->child_ll, i) { + lv_obj_t * i; + LL_READ(obj->child_ll, i) { i->cords.x1 += x_diff; i->cords.y1 += y_diff; i->cords.x2 += x_diff; @@ -1377,12 +1377,12 @@ static void lv_obj_pos_child_refr(lv_obj_t* obj_dp, cord_t x_diff, cord_t y_diff /** * Refresh the style of all children of an object. (Called recursively) * @param style_p refresh objects only with this style. (ignore is if NULL) - * @param obj_dp pointer to an object + * @param obj pointer to an object */ -static void lv_style_refr_core(void * style_p, lv_obj_t* obj_dp) +static void lv_style_refr_core(void * style_p, lv_obj_t * obj) { - lv_obj_t* i; - LL_READ(obj_dp->child_ll, i) { + lv_obj_t * i; + LL_READ(obj->child_ll, i) { if(i->style_p == style_p || style_p == NULL) { i->signal_f(i, LV_SIGNAL_STYLE_CHG, NULL); lv_obj_inv(i); diff --git a/lv_obj/lv_obj.h b/lv_obj/lv_obj.h index e20b8c76e..732d0035d 100644 --- a/lv_obj/lv_obj.h +++ b/lv_obj/lv_obj.h @@ -59,7 +59,7 @@ typedef enum LV_DESIGN_COVER_CHK, }lv_design_mode_t; -typedef bool (* lv_design_f_t) (struct __LV_OBJ_T* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +typedef bool (* lv_design_f_t) (struct __lv_obj_t * obj, const area_t * mask_p, lv_design_mode_t mode); typedef enum { @@ -75,11 +75,11 @@ typedef enum LV_SIGNAL_STYLE_CHG, }lv_signal_t; -typedef bool (* lv_signal_f_t) (struct __LV_OBJ_T* obj_dp, lv_signal_t sign, void * param); +typedef bool (* lv_signal_f_t) (struct __lv_obj_t * obj, lv_signal_t sign, void * param); typedef struct __LV_OBJ_T { - struct __LV_OBJ_T* par_dp; + struct __lv_obj_t * par; ll_dsc_t child_ll; area_t cords; @@ -87,7 +87,7 @@ typedef struct __LV_OBJ_T lv_signal_f_t signal_f; lv_design_f_t design_f; - void * ext_dp; /*The object attributes can be extended here*/ + void * ext; /*The object attributes can be extended here*/ void * style_p; /*Object specific style*/ #if LV_OBJ_FREE_P != 0 @@ -165,86 +165,86 @@ typedef enum * GLOBAL PROTOTYPES **********************/ void lv_init(void); -void lv_obj_inv(lv_obj_t* obj_dp); -void lv_obj_refr_style(lv_obj_t* obj_dp); +void lv_obj_inv(lv_obj_t * obj); +void lv_obj_refr_style(lv_obj_t * obj); void lv_style_refr_all(void * style_p); /*Create and delete*/ -lv_obj_t* lv_obj_create(lv_obj_t* parent_dp, lv_obj_t * copy_dp); -void lv_obj_del(lv_obj_t* obj_dp); +lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy); +void lv_obj_del(lv_obj_t * obj); /*Virtual functions*/ -bool lv_obj_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); +bool lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param); /*SETTER FUNCTIONS*/ /*Parent/children set*/ -void lv_obj_set_parent(lv_obj_t* obj_dp, lv_obj_t* parent_dp); +void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent); /*Coordinate set (set_cord_f will be called)*/ -void lv_obj_set_pos(lv_obj_t* obj_dp, cord_t x, cord_t y); -void lv_obj_set_pos_us(lv_obj_t* obj_dp, cord_t x, cord_t y); -void lv_obj_set_x(lv_obj_t* obj_dp, cord_t x); -void lv_obj_set_x_us(lv_obj_t* obj_dp, cord_t x); -void lv_obj_set_y(lv_obj_t* obj_dp, cord_t y); -void lv_obj_set_y_us(lv_obj_t* obj_dp, cord_t y); -void lv_obj_set_size(lv_obj_t* obj_dp, cord_t w, cord_t h); -void lv_obj_set_size_us(lv_obj_t* obj_dp, cord_t w, cord_t h); -void lv_obj_set_width(lv_obj_t* obj_dp, cord_t w); -void lv_obj_set_width_us(lv_obj_t* obj_dp, cord_t w); -void lv_obj_set_height(lv_obj_t* obj_dp, cord_t h); -void lv_obj_set_height_us(lv_obj_t* obj_dp, cord_t h); -void lv_obj_align(lv_obj_t* obj_dp,lv_obj_t* base_dp, lv_align_t align, cord_t x_mod, cord_t y_mod); -void lv_obj_align_us(lv_obj_t* obj_dp,lv_obj_t* base_dp, lv_align_t align, cord_t x_mod, cord_t y_mod); +void lv_obj_set_pos(lv_obj_t * obj, cord_t x, cord_t y); +void lv_obj_set_pos_us(lv_obj_t * obj, cord_t x, cord_t y); +void lv_obj_set_x(lv_obj_t * obj, cord_t x); +void lv_obj_set_x_us(lv_obj_t * obj, cord_t x); +void lv_obj_set_y(lv_obj_t * obj, cord_t y); +void lv_obj_set_y_us(lv_obj_t * obj, cord_t y); +void lv_obj_set_size(lv_obj_t * obj, cord_t w, cord_t h); +void lv_obj_set_size_us(lv_obj_t * obj, cord_t w, cord_t h); +void lv_obj_set_width(lv_obj_t * obj, cord_t w); +void lv_obj_set_width_us(lv_obj_t * obj, cord_t w); +void lv_obj_set_height(lv_obj_t * obj, cord_t h); +void lv_obj_set_height_us(lv_obj_t * obj, cord_t h); +void lv_obj_align(lv_obj_t * obj,lv_obj_t * base, lv_align_t align, cord_t x_mod, cord_t y_mod); +void lv_obj_align_us(lv_obj_t * obj,lv_obj_t * base, lv_align_t align, cord_t x_mod, cord_t y_mod); /*Appearance set*/ -void lv_obj_set_hidden(lv_obj_t* obj_dp, bool hidden_en); -void lv_obj_set_opa(lv_obj_t* obj_dp, opa_t opa); -void lv_obj_set_opar(lv_obj_t* obj_dp, opa_t opa); +void lv_obj_set_hidden(lv_obj_t * obj, bool hidden_en); +void lv_obj_set_opa(lv_obj_t * obj, opa_t opa); +void lv_obj_set_opar(lv_obj_t * obj, opa_t opa); /*Attribute set*/ -void lv_obj_set_click(lv_obj_t* obj_dp, bool click_en); -void lv_obj_set_top(lv_obj_t* obj_dp, bool click_en); -void lv_obj_set_drag(lv_obj_t* obj_dp, bool drag_en); -void lv_obj_set_drag_throw(lv_obj_t* obj_dp, bool dragthr_en); -void lv_obj_set_drag_parent(lv_obj_t* obj_dp, bool dragpar_en); -void lv_obj_set_signal_f(lv_obj_t* obj_dp, lv_signal_f_t fp); -void lv_obj_set_design_f(lv_obj_t* obj_dp, lv_design_f_t fp); +void lv_obj_set_click(lv_obj_t * obj, bool click_en); +void lv_obj_set_top(lv_obj_t * obj, bool click_en); +void lv_obj_set_drag(lv_obj_t * obj, bool drag_en); +void lv_obj_set_drag_throw(lv_obj_t * obj, bool dragthr_en); +void lv_obj_set_drag_parent(lv_obj_t * obj, bool dragpar_en); +void lv_obj_set_signal_f(lv_obj_t * obj, lv_signal_f_t fp); +void lv_obj_set_design_f(lv_obj_t * obj, lv_design_f_t fp); /*Other set*/ -void * lv_obj_alloc_ext(lv_obj_t* obj_dp, uint16_t ext_size); -void lv_obj_set_style(lv_obj_t* obj_dp, void * style_p); -void * lv_obj_iso_style(lv_obj_t * obj_dp, uint32_t style_size); -void lv_obj_set_free_num(lv_obj_t* obj_dp, uint8_t free_num); -void lv_obj_set_free_p(lv_obj_t* obj_dp, void * free_p); -void lv_obj_anim(lv_obj_t * obj_dp, lv_anim_builtin_t anim, uint16_t time, uint16_t delay, void (*cb) (lv_obj_t *)); +void * lv_obj_alloc_ext(lv_obj_t * obj, uint16_t ext_size); +void lv_obj_set_style(lv_obj_t * obj, void * style_p); +void * lv_obj_iso_style(lv_obj_t * obj, uint32_t style_size); +void lv_obj_set_free_num(lv_obj_t * obj, uint8_t free_num); +void lv_obj_set_free_p(lv_obj_t * obj, void * free_p); +void lv_obj_anim(lv_obj_t * obj, lv_anim_builtin_t anim, uint16_t time, uint16_t delay, void (*cb) (lv_obj_t *)); /*GETTER FUNCTIONS*/ /*Screen get*/ -lv_obj_t* lv_scr_act(void); -void lv_scr_load(lv_obj_t* scr_dp); +lv_obj_t * lv_scr_act(void); +void lv_scr_load(lv_obj_t * scr); /*Parent/children get*/ -lv_obj_t* lv_obj_get_scr(lv_obj_t* obj_dp); -lv_obj_t* lv_obj_get_parent(lv_obj_t* obj_dp); -lv_obj_t * lv_obj_get_child(lv_obj_t * obj_dp, lv_obj_t * child_dp); +lv_obj_t * lv_obj_get_scr(lv_obj_t * obj); +lv_obj_t * lv_obj_get_parent(lv_obj_t * obj); +lv_obj_t * lv_obj_get_child(lv_obj_t * obj, lv_obj_t * child); /*Coordinate get*/ -void lv_obj_get_cords(lv_obj_t* obj_dp, area_t * cords_p); -cord_t lv_obj_get_x(lv_obj_t* obj_dp); -cord_t lv_obj_get_y(lv_obj_t* obj_dp); -cord_t lv_obj_get_width(lv_obj_t* obj_dp); -cord_t lv_obj_get_height(lv_obj_t* obj_dp); +void lv_obj_get_cords(lv_obj_t * obj, area_t * cords_p); +cord_t lv_obj_get_x(lv_obj_t * obj); +cord_t lv_obj_get_y(lv_obj_t * obj); +cord_t lv_obj_get_width(lv_obj_t * obj); +cord_t lv_obj_get_height(lv_obj_t * obj); /*Appearance get*/ -bool lv_obj_get_hidden(lv_obj_t* obj_dp); -opa_t lv_obj_get_opa(lv_obj_t* obj_dp); +bool lv_obj_get_hidden(lv_obj_t * obj); +opa_t lv_obj_get_opa(lv_obj_t * obj); /*Attribute get*/ -bool lv_obj_get_click(lv_obj_t* obj_dp); -bool lv_obj_get_top(lv_obj_t* obj_dp); -bool lv_obj_get_drag(lv_obj_t* obj_dp); -bool lv_obj_get_drag_throw(lv_obj_t* obj_dp); -bool lv_obj_get_drag_parent(lv_obj_t* obj_dp); +bool lv_obj_get_click(lv_obj_t * obj); +bool lv_obj_get_top(lv_obj_t * obj); +bool lv_obj_get_drag(lv_obj_t * obj); +bool lv_obj_get_drag_throw(lv_obj_t * obj); +bool lv_obj_get_drag_parent(lv_obj_t * obj); /*Virtual functions get*/ -lv_design_f_t lv_obj_get_design_f(lv_obj_t* obj_dp); -lv_signal_f_t lv_obj_get_signal_f(lv_obj_t* obj_dp); +lv_design_f_t lv_obj_get_design_f(lv_obj_t * obj); +lv_signal_f_t lv_obj_get_signal_f(lv_obj_t * obj); /*Other get*/ -void * lv_obj_get_ext(lv_obj_t* obj_dp); -void * lv_obj_get_style(lv_obj_t* obj_dp); -uint8_t lv_obj_get_free_num(lv_obj_t* obj_dp); +void * lv_obj_get_ext(lv_obj_t * obj); +void * lv_obj_get_style(lv_obj_t * obj); +uint8_t lv_obj_get_free_num(lv_obj_t * obj); lv_objs_t * lv_objs_get(lv_objs_builtin_t style, lv_objs_t * copy_p); @@ -252,7 +252,7 @@ lv_objs_t * lv_objs_get(lv_objs_builtin_t style, lv_objs_t * copy_p); * MACROS **********************/ -#define LV_SA(obj_dp, style_type) ((style_type *) obj_dp->style_p) -#define LV_EA(obj_dp, ext_type) ((ext_type *) obj_dp->ext_dp) +#define LV_SA(obj, style_type) ((style_type *) obj->style_p) +#define LV_EA(obj, ext_type) ((ext_type *) obj->ext) #endif diff --git a/lv_obj/lv_refr.c b/lv_obj/lv_refr.c index f21d554b5..c46d25c9d 100644 --- a/lv_obj/lv_refr.c +++ b/lv_obj/lv_refr.c @@ -38,9 +38,9 @@ static void lv_refr_area_no_vdb(const area_t * area_p); static void lv_refr_area_with_vdb(const area_t * area_p); static void lv_refr_area_part_vdb(const area_t * area_p); #endif -static lv_obj_t* lv_refr_get_top_obj(const area_t * area_p, lv_obj_t* obj_dp); -static void lv_refr_make(lv_obj_t* top_p, const area_t * mask_p); -static void lv_refr_obj(lv_obj_t* obj_dp, const area_t * mask_ori_p); +static lv_obj_t * lv_refr_get_top_obj(const area_t * area_p, lv_obj_t * obj); +static void lv_refr_make(lv_obj_t * top_p, const area_t * mask_p); +static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p); /********************** * STATIC VARIABLES @@ -219,7 +219,7 @@ static void lv_refr_areas(lv_join_t * area_a, uint32_t area_num) */ static void lv_refr_area_no_vdb(const area_t * area_p) { - lv_obj_t* top_p; + lv_obj_t * top_p; /*Get top object which is not covered by others*/ top_p = lv_refr_get_top_obj(area_p, lv_scr_act()); @@ -283,7 +283,7 @@ static void lv_refr_area_with_vdb(const area_t * area_p) static void lv_refr_area_part_vdb(const area_t * area_p) { lv_vdb_t * vdb_p = lv_vdb_get(); - lv_obj_t* top_p; + lv_obj_t * top_p; /*Get the new mask from the original area and the act. VDB It will be a part of 'area_p'*/ @@ -305,21 +305,21 @@ static void lv_refr_area_part_vdb(const area_t * area_p) /** * Search the most top object which fully covers an area * @param area_p pointer to an area - * @param obj_dp the first object to start the searching (typically a screen) + * @param obj the first object to start the searching (typically a screen) * @return */ -static lv_obj_t* lv_refr_get_top_obj(const area_t * area_p, lv_obj_t* obj_dp) +static lv_obj_t * lv_refr_get_top_obj(const area_t * area_p, lv_obj_t * obj) { - lv_obj_t* i; - lv_obj_t* found_p = NULL; + lv_obj_t * i; + lv_obj_t * found_p = NULL; /*If this object is fully cover the draw area check the children too */ - if(obj_dp->opa == OPA_COVER && - obj_dp->hidden == 0 && - LV_SA(obj_dp, lv_objs_t)->transp == 0 && - obj_dp->design_f(obj_dp, area_p, LV_DESIGN_COVER_CHK) != false) + if(obj->opa == OPA_COVER && + obj->hidden == 0 && + LV_SA(obj, lv_objs_t)->transp == 0 && + obj->design_f(obj, area_p, LV_DESIGN_COVER_CHK) != false) { - LL_READ(obj_dp->child_ll, i) { + LL_READ(obj->child_ll, i) { found_p = lv_refr_get_top_obj(area_p, i); /*If a children is ok then break*/ @@ -330,7 +330,7 @@ static lv_obj_t* lv_refr_get_top_obj(const area_t * area_p, lv_obj_t* obj_dp) /*If there is no better children use this object*/ if(found_p == NULL) { - found_p = obj_dp; + found_p = obj; } } @@ -342,7 +342,7 @@ static lv_obj_t* lv_refr_get_top_obj(const area_t * area_p, lv_obj_t* obj_dp) * @param top_p pointer to an objects. Start the drawing from it. * @param mask_p pointer to an area, the objects will be drawn only here */ -static void lv_refr_make(lv_obj_t* top_p, const area_t * mask_p) +static void lv_refr_make(lv_obj_t * top_p, const area_t * mask_p) { /* Normally always will be a top_obj (at least the screen) * but in special cases (e.g. if the screen has alpha) it won't. @@ -353,60 +353,60 @@ static void lv_refr_make(lv_obj_t* top_p, const area_t * mask_p) lv_refr_obj(top_p, mask_p); /*Draw the 'younger' objects because they can be on top_obj */ - lv_obj_t* par_dp; - lv_obj_t* i; - lv_obj_t* border_p = top_p; + lv_obj_t * par; + lv_obj_t * i; + lv_obj_t * border_p = top_p; - par_dp = lv_obj_get_parent(top_p); + par = lv_obj_get_parent(top_p); /*Do until not reach the screen*/ - while(par_dp != NULL) { + while(par != NULL) { /*object before border_p has to be redrawn*/ - i = ll_get_prev(&(par_dp->child_ll), border_p); + i = ll_get_prev(&(par->child_ll), border_p); while(i != NULL) { /*Refresh the objects*/ lv_refr_obj(i, mask_p); - i = ll_get_prev(&(par_dp->child_ll), i); + i = ll_get_prev(&(par->child_ll), i); } /*The new border will be there last parents, *so the 'younger' brothers of parent will be refreshed*/ - border_p = par_dp; + border_p = par; /*Go a level deeper*/ - par_dp = lv_obj_get_parent(par_dp); + par = lv_obj_get_parent(par); } } /** * Refresh an object an all of its children. (Called recursively) - * @param obj_dp pointer to an object to refresh + * @param obj pointer to an object to refresh * @param mask_ori_p pointer to an area, the objects will be drawn only here */ -static void lv_refr_obj(lv_obj_t* obj_dp, const area_t * mask_ori_p) +static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p) { /*Do not refresh hidden objects*/ - if(obj_dp->hidden != 0) return; + if(obj->hidden != 0) return; bool union_ok; /* Store the return value of area_union */ /* Truncate the original mask to the coordinates of the parent * because the parent and its children are visible only here */ area_t mask_parent; - union_ok = area_union(&mask_parent, mask_ori_p, &obj_dp->cords); + union_ok = area_union(&mask_parent, mask_ori_p, &obj->cords); /*Draw the parent and its children only if they ore on 'mask_parent'*/ if(union_ok != false) { /* Redraw the object */ - if(obj_dp->opa != OPA_TRANSP && LV_SA(obj_dp, lv_objs_t)->transp == 0) { - obj_dp->design_f(obj_dp, &mask_parent, LV_DESIGN_DRAW_MAIN); + if(obj->opa != OPA_TRANSP && LV_SA(obj, lv_objs_t)->transp == 0) { + obj->design_f(obj, &mask_parent, LV_DESIGN_DRAW_MAIN); } - area_t mask_child; /*Mask from obj_dp and its child*/ - lv_obj_t* child_p; - LL_READ_BACK(obj_dp->child_ll, child_p) + area_t mask_child; /*Mask from obj and its child*/ + lv_obj_t * child_p; + LL_READ_BACK(obj->child_ll, child_p) { - /* Get the union (common parts) of original mask (from obj_dp) + /* Get the union (common parts) of original mask (from obj) * and its child */ union_ok = area_union(&mask_child, &mask_parent, &child_p->cords); @@ -418,8 +418,8 @@ static void lv_refr_obj(lv_obj_t* obj_dp, const area_t * mask_ori_p) } /* If all the children are redrawn call make 'post draw' design */ - if(obj_dp->opa != OPA_TRANSP && LV_SA(obj_dp, lv_objs_t)->transp == 0) { - obj_dp->design_f(obj_dp, &mask_parent, LV_DESIGN_DRAW_POST); + if(obj->opa != OPA_TRANSP && LV_SA(obj, lv_objs_t)->transp == 0) { + obj->design_f(obj, &mask_parent, LV_DESIGN_DRAW_POST); } } } diff --git a/lv_objx/lv_btn.c b/lv_objx/lv_btn.c index e44678c69..b454a7968 100644 --- a/lv_objx/lv_btn.c +++ b/lv_objx/lv_btn.c @@ -24,8 +24,8 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_btn_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); -static void lv_btn_style_load(lv_obj_t * obj_dp, lv_rects_t * rects_p); +static bool lv_btn_design(lv_obj_t * btn, const area_t * mask, lv_design_mode_t mode); +static void lv_btn_style_load(lv_obj_t * btn, lv_rects_t * rects); static void lv_btns_init(void); /********************** @@ -45,127 +45,127 @@ static lv_btns_t lv_btns_border; /** * Create a button objects - * @param par_dp pointer to an object, it will be the parent of the new button - * @param copy_dp pointer to a button object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new button + * @param copy pointer to a button object, if not NULL then the new object will be copied from it * @return pointer to the created button */ -lv_obj_t* lv_btn_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_btn_create(lv_obj_t * par, lv_obj_t * copy) { - lv_obj_t* new_obj_dp; + lv_obj_t * new_btn; - new_obj_dp = lv_rect_create(par_dp, copy_dp); + new_btn = lv_rect_create(par, copy); /*Allocate the extended data*/ - lv_obj_alloc_ext(new_obj_dp, sizeof(lv_btn_ext_t)); - lv_obj_set_signal_f(new_obj_dp, lv_btn_signal); - lv_obj_set_design_f(new_obj_dp, lv_btn_design); + lv_obj_alloc_ext(new_btn, sizeof(lv_btn_ext_t)); + lv_obj_set_signal_f(new_btn, lv_btn_signal); + lv_obj_set_design_f(new_btn, lv_btn_design); - lv_btn_ext_t * btn_ext_dp = lv_obj_get_ext(new_obj_dp); - btn_ext_dp->lpr_exec = 0; + lv_btn_ext_t * ext = lv_obj_get_ext(new_btn); + ext->lpr_exec = 0; /*If no copy do the basic initialization*/ - if(copy_dp == NULL) + if(copy == NULL) { - btn_ext_dp->state = LV_BTN_STATE_REL; - btn_ext_dp->pr_action = NULL; - btn_ext_dp->rel_action = NULL; - btn_ext_dp->lpr_action = NULL; - btn_ext_dp->tgl = 0; - lv_obj_set_style(new_obj_dp, lv_btns_get(LV_BTNS_DEF, NULL)); - lv_rect_set_layout(new_obj_dp, LV_RECT_LAYOUT_CENTER); + ext->state = LV_BTN_STATE_REL; + ext->pr_action = NULL; + ext->rel_action = NULL; + ext->lpr_action = NULL; + ext->tgl = 0; + lv_obj_set_style(new_btn, lv_btns_get(LV_BTNS_DEF, NULL)); + lv_rect_set_layout(new_btn, LV_RECT_LAYOUT_CENTER); } - /*Copy 'copy_dp'*/ + /*Copy 'copy'*/ else{ - lv_btn_ext_t * ori_btn_ext = lv_obj_get_ext(copy_dp); - btn_ext_dp->state = ori_btn_ext->state; - btn_ext_dp->pr_action = ori_btn_ext->pr_action; - btn_ext_dp->rel_action = ori_btn_ext->rel_action; - btn_ext_dp->lpr_action = ori_btn_ext->lpr_action; - btn_ext_dp->tgl = ori_btn_ext->tgl; + lv_btn_ext_t * ori_btn_ext = lv_obj_get_ext(copy); + ext->state = ori_btn_ext->state; + ext->pr_action = ori_btn_ext->pr_action; + ext->rel_action = ori_btn_ext->rel_action; + ext->lpr_action = ori_btn_ext->lpr_action; + ext->tgl = ori_btn_ext->tgl; } - return new_obj_dp; + return new_btn; } /** * Signal function of the button - * @param obj_dp pointer to a button object + * @param btn pointer to a button object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_btn_signal(lv_obj_t * obj_dp, lv_signal_t sign, void* param) +bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void* param) { bool valid; /* Include the ancient signal function */ - valid = lv_rect_signal(obj_dp, sign, param); + valid = lv_rect_signal(btn, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ if(valid != false) { - lv_btn_state_t state = lv_btn_get_state(obj_dp); - lv_btn_ext_t * btn_ext_dp = lv_obj_get_ext(obj_dp); - bool tgl = lv_btn_get_tgl(obj_dp); + lv_btn_state_t state = lv_btn_get_state(btn); + lv_btn_ext_t * ext = lv_obj_get_ext(btn); + bool tgl = lv_btn_get_tgl(btn); switch (sign){ case LV_SIGNAL_PRESSED: /*Refresh the state*/ - if(btn_ext_dp->state == LV_BTN_STATE_REL) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_PR); - } else if(btn_ext_dp->state == LV_BTN_STATE_TGL_REL) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_TGL_PR); + if(ext->state == LV_BTN_STATE_REL) { + lv_btn_set_state(btn, LV_BTN_STATE_PR); + } else if(ext->state == LV_BTN_STATE_TGL_REL) { + lv_btn_set_state(btn, LV_BTN_STATE_TGL_PR); } - lv_obj_inv(obj_dp); + lv_obj_inv(btn); - btn_ext_dp->lpr_exec = 0; + ext->lpr_exec = 0; /*Call the press action, here 'param' is the caller dispi*/ - if(btn_ext_dp->pr_action != NULL && state != LV_BTN_STATE_INA) { - valid = btn_ext_dp->pr_action(obj_dp, param); + if(ext->pr_action != NULL && state != LV_BTN_STATE_INA) { + valid = ext->pr_action(btn, param); } break; case LV_SIGNAL_PRESS_LOST: /*Refresh the state*/ - if(btn_ext_dp->state == LV_BTN_STATE_PR) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_REL); - } else if(btn_ext_dp->state == LV_BTN_STATE_TGL_PR) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_TGL_REL); + if(ext->state == LV_BTN_STATE_PR) { + lv_btn_set_state(btn, LV_BTN_STATE_REL); + } else if(ext->state == LV_BTN_STATE_TGL_PR) { + lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL); } - lv_obj_inv(obj_dp); + lv_obj_inv(btn); break; case LV_SIGNAL_RELEASED: /*If not dragged and it was not long press action then *change state and run the action*/ - if(lv_dispi_is_dragging(param) == false && btn_ext_dp->lpr_exec == 0) { - if(btn_ext_dp->state == LV_BTN_STATE_PR && tgl == false) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_REL); - } else if(btn_ext_dp->state == LV_BTN_STATE_TGL_PR && tgl == false) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_TGL_REL); - } else if(btn_ext_dp->state == LV_BTN_STATE_PR && tgl == true) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_TGL_REL); - } else if(btn_ext_dp->state == LV_BTN_STATE_TGL_PR && tgl == true) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_REL); + if(lv_dispi_is_dragging(param) == false && ext->lpr_exec == 0) { + if(ext->state == LV_BTN_STATE_PR && tgl == false) { + lv_btn_set_state(btn, LV_BTN_STATE_REL); + } else if(ext->state == LV_BTN_STATE_TGL_PR && tgl == false) { + lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL); + } else if(ext->state == LV_BTN_STATE_PR && tgl == true) { + lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL); + } else if(ext->state == LV_BTN_STATE_TGL_PR && tgl == true) { + lv_btn_set_state(btn, LV_BTN_STATE_REL); } - if(btn_ext_dp->rel_action != NULL && state != LV_BTN_STATE_INA) { - valid = btn_ext_dp->rel_action(obj_dp, param); + if(ext->rel_action != NULL && state != LV_BTN_STATE_INA) { + valid = ext->rel_action(btn, param); } } else { /*If dragged change back the state*/ - if(btn_ext_dp->state == LV_BTN_STATE_PR) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_REL); - } else if(btn_ext_dp->state == LV_BTN_STATE_TGL_PR) { - lv_btn_set_state(obj_dp, LV_BTN_STATE_TGL_REL); + if(ext->state == LV_BTN_STATE_PR) { + lv_btn_set_state(btn, LV_BTN_STATE_REL); + } else if(ext->state == LV_BTN_STATE_TGL_PR) { + lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL); } } - lv_obj_inv(obj_dp); + lv_obj_inv(btn); break; case LV_SIGNAL_LONG_PRESS: /*Call the long press action, here 'param' is the caller dispi*/ - if(btn_ext_dp->lpr_action != NULL && state != LV_BTN_STATE_INA) { - btn_ext_dp->lpr_exec = 1; - valid = btn_ext_dp->lpr_action(obj_dp, param); + if(ext->lpr_action != NULL && state != LV_BTN_STATE_INA) { + ext->lpr_exec = 1; + valid = ext->lpr_action(btn, param); } break; default: @@ -183,63 +183,63 @@ bool lv_btn_signal(lv_obj_t * obj_dp, lv_signal_t sign, void* param) /** * Enable the toggled states - * @param obj_dp pointer to a button object + * @param btn pointer to a button object * @param tgl true: enable toggled states, false: disable */ -void lv_btn_set_tgl(lv_obj_t* obj_dp, bool tgl) +void lv_btn_set_tgl(lv_obj_t * btn, bool tgl) { - lv_btn_ext_t * btn_p = lv_obj_get_ext(obj_dp); + lv_btn_ext_t * ext = lv_obj_get_ext(btn); - btn_p->tgl = tgl != false ? 1 : 0; + ext->tgl = tgl != false ? 1 : 0; } /** * Set the state of the button - * @param obj_dp pointer to a button object + * @param btn pointer to a button object * @param state the new state of the button (from lv_btn_state_t enum) */ -void lv_btn_set_state(lv_obj_t* obj_dp, lv_btn_state_t state) +void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state) { - lv_btn_ext_t * btn_p = lv_obj_get_ext(obj_dp); + lv_btn_ext_t * ext = lv_obj_get_ext(btn); - btn_p->state = state; - lv_obj_inv(obj_dp); + ext->state = state; + lv_obj_inv(btn); } /** * Set a function to call when the button is pressed - * @param obj_dp pointer to a button object + * @param btn pointer to a button object * @param pr_action pointer to function */ -void lv_btn_set_pr_action(lv_obj_t* obj_dp, bool (*pr_action)(lv_obj_t*, lv_dispi_t *)) +void lv_btn_set_pr_action(lv_obj_t * btn, bool (*pr_action)(lv_obj_t *, lv_dispi_t *)) { - lv_btn_ext_t * btn_p = lv_obj_get_ext(obj_dp); + lv_btn_ext_t * ext = lv_obj_get_ext(btn); - btn_p->pr_action = pr_action; + ext->pr_action = pr_action; } /** * Set a function to call when the button is released - * @param obj_dp pointer to a button object + * @param btn pointer to a button object * @param pr_action pointer to function */ -void lv_btn_set_rel_action(lv_obj_t* obj_dp, bool (*rel_action)(lv_obj_t*, lv_dispi_t *)) +void lv_btn_set_rel_action(lv_obj_t * btn, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)) { - lv_btn_ext_t * btn_p = lv_obj_get_ext(obj_dp); + lv_btn_ext_t * btn_p = lv_obj_get_ext(btn); btn_p->rel_action = rel_action; } /** * Set a function to call when the button is long pressed - * @param obj_dp pointer to a button object + * @param btn pointer to a button object * @param pr_action pointer to function */ -void lv_btn_set_lpr_action(lv_obj_t* obj_dp, bool (*lpr_action)(lv_obj_t*, lv_dispi_t *)) +void lv_btn_set_lpr_action(lv_obj_t * btn, bool (*lpr_action)(lv_obj_t *, lv_dispi_t *)) { - lv_btn_ext_t * btn_p = lv_obj_get_ext(obj_dp); + lv_btn_ext_t * ext = lv_obj_get_ext(btn); - btn_p->lpr_action = lpr_action; + ext->lpr_action = lpr_action; } /*===================== @@ -248,35 +248,35 @@ void lv_btn_set_lpr_action(lv_obj_t* obj_dp, bool (*lpr_action)(lv_obj_t*, lv_di /** * Get the current state of the button - * @param obj_dp pointer to a button object + * @param btn pointer to a button object * @return the state of the button (from lv_btn_state_t enum) */ -lv_btn_state_t lv_btn_get_state(lv_obj_t* obj_dp) +lv_btn_state_t lv_btn_get_state(lv_obj_t * btn) { - lv_btn_ext_t * btn_p = lv_obj_get_ext(obj_dp); + lv_btn_ext_t * ext = lv_obj_get_ext(btn); - return btn_p->state; + return ext->state; } /** * Get the toggle enable attribute of the button - * @param obj_dp pointer to a button object + * @param btn pointer to a button object * @return ture: toggle enabled, false: disabled */ -bool lv_btn_get_tgl(lv_obj_t* obj_dp) +bool lv_btn_get_tgl(lv_obj_t * btn) { - lv_btn_ext_t * btn_p = lv_obj_get_ext(obj_dp); + lv_btn_ext_t * ext = lv_obj_get_ext(btn); - return btn_p->tgl != 0 ? true : false; + return ext->tgl != 0 ? true : false; } /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_btns_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_btns_t style */ -lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy_p) +lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy) { static bool style_inited = false; @@ -286,7 +286,7 @@ lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy_p) style_inited = true; } - lv_btns_t *style_p; + lv_btns_t * style_p; switch(style) { case LV_BTNS_DEF: @@ -302,9 +302,9 @@ lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy_p) style_p = &lv_btns_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_btns_t)); - else memcpy(copy_p, &lv_btns_def, sizeof(lv_btns_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_btns_t)); + else memcpy(copy, &lv_btns_def, sizeof(lv_btns_t)); } return style_p; @@ -316,7 +316,7 @@ lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy_p) /** * Handle the drawing related tasks of the buttons - * @param obj_dp pointer to an object + * @param btn pointer to a button object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -324,9 +324,9 @@ lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_btn_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_btn_design(lv_obj_t * btn, const area_t * mask, lv_design_mode_t mode) { - lv_btns_t * btns_p = lv_obj_get_style(obj_dp); + lv_btns_t * btns_p = lv_obj_get_style(btn); /* Because of the radius it is not sure the area is covered*/ if(mode == LV_DESIGN_COVER_CHK) { @@ -334,47 +334,47 @@ static bool lv_btn_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mod area_t area_tmp; /*Check horizontally without radius*/ - lv_obj_get_cords(obj_dp, &area_tmp); + lv_obj_get_cords(btn, &area_tmp); area_tmp.x1 += r; area_tmp.x2 -= r; - if(area_is_in(mask_p, &area_tmp) == true) return true; + if(area_is_in(mask, &area_tmp) == true) return true; /*Check vertically without radius*/ - lv_obj_get_cords(obj_dp, &area_tmp); + lv_obj_get_cords(btn, &area_tmp); area_tmp.y1 += r; area_tmp.y2 -= r; - if(area_is_in(mask_p, &area_tmp) == true) return true; + if(area_is_in(mask, &area_tmp) == true) return true; return false; } else if(mode == LV_DESIGN_DRAW_MAIN) { - opa_t opa = lv_obj_get_opa(obj_dp); + opa_t opa = lv_obj_get_opa(btn); area_t area; - lv_obj_get_cords(obj_dp, &area); + lv_obj_get_cords(btn, &area); lv_rects_t rects_tmp; - lv_btn_style_load(obj_dp, &rects_tmp); + lv_btn_style_load(btn, &rects_tmp); /*Draw the rectangle*/ - lv_draw_rect(&area, mask_p, &rects_tmp, opa); + lv_draw_rect(&area, mask, &rects_tmp, opa); } return true; } /** * Load the corresponding style according to the state to 'rects' in 'lv_btns_t' - * @param obj_dp pointer to a button object + * @param obj pointer to a button object */ -static void lv_btn_style_load(lv_obj_t * obj_dp, lv_rects_t * rects_p) +static void lv_btn_style_load(lv_obj_t * btn, lv_rects_t * rects) { - lv_btn_state_t state = lv_btn_get_state(obj_dp); - lv_btns_t * btns_p = lv_obj_get_style(obj_dp); + lv_btn_state_t state = lv_btn_get_state(btn); + lv_btns_t * ext = lv_obj_get_style(btn); /*Load the style*/ - memcpy(rects_p, &btns_p->rects, sizeof(lv_rects_t)); - rects_p->objs.color = btns_p->mcolor[state]; - rects_p->gcolor = btns_p->gcolor[state]; - rects_p->bcolor = btns_p->bcolor[state]; + memcpy(rects, &ext->rects, sizeof(lv_rects_t)); + rects->objs.color = ext->mcolor[state]; + rects->gcolor = ext->gcolor[state]; + rects->bcolor = ext->bcolor[state]; } /** diff --git a/lv_objx/lv_btn.h b/lv_objx/lv_btn.h index ecd294293..7ebee8283 100644 --- a/lv_objx/lv_btn.h +++ b/lv_objx/lv_btn.h @@ -33,14 +33,17 @@ typedef enum LV_BTN_STATE_NUM, }lv_btn_state_t; +/*Style of button*/ typedef struct { - lv_rects_t rects; /*To be compatible with the ancestor*/ + lv_rects_t rects; /*Style of ancestor*/ + /*New style element for this type */ color_t mcolor[LV_BTN_STATE_NUM]; color_t gcolor[LV_BTN_STATE_NUM]; color_t bcolor[LV_BTN_STATE_NUM]; }lv_btns_t; +/*Built-in styles of button*/ typedef enum { LV_BTNS_DEF, @@ -48,12 +51,14 @@ typedef enum LV_BTNS_BORDER, }lv_btns_builtin_t; +/*Data of button*/ typedef struct { - lv_rect_ext_t rect_ext; - bool (*pr_action)(lv_obj_t*, lv_dispi_t *); - bool (*rel_action)(lv_obj_t*, lv_dispi_t *); - bool (*lpr_action)(lv_obj_t*, lv_dispi_t *); + lv_rect_ext_t rect_ext; /*Ext. of ancestor*/ + /*New data for this type */ + bool (*pr_action)(lv_obj_t *, lv_dispi_t *); + bool (*rel_action)(lv_obj_t *, lv_dispi_t *); + bool (*lpr_action)(lv_obj_t *, lv_dispi_t *); lv_btn_state_t state; uint8_t tgl :1; /*1: Toggle enabled*/ @@ -64,19 +69,19 @@ typedef struct * GLOBAL PROTOTYPES **********************/ /*Create function*/ -lv_obj_t* lv_btn_create(lv_obj_t* par_dp, lv_obj_t * c_dp); +lv_obj_t * lv_btn_create(lv_obj_t * par, lv_obj_t * copy); -bool lv_btn_signal(lv_obj_t * obj_dp, lv_signal_t sign, void * param); -lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy_p); +bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void * param); +lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy); -void lv_btn_set_tgl(lv_obj_t* obj_dp, bool tgl); -void lv_btn_set_state(lv_obj_t* obj_dp, lv_btn_state_t state); -void lv_btn_set_pr_action(lv_obj_t* obi_p, bool (*pr_action)(lv_obj_t*, lv_dispi_t *)); -void lv_btn_set_rel_action(lv_obj_t* obj_dp, bool (*rel_action)(lv_obj_t*, lv_dispi_t *)); -void lv_btn_set_lpr_action(lv_obj_t* obj_dp, bool (*lpr_action)(lv_obj_t*, lv_dispi_t *)); +void lv_btn_set_tgl(lv_obj_t * btn, bool tgl); +void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state); +void lv_btn_set_pr_action(lv_obj_t * btn, bool (*pr_action)(lv_obj_t *, lv_dispi_t *)); +void lv_btn_set_rel_action(lv_obj_t * btn, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)); +void lv_btn_set_lpr_action(lv_obj_t * btn, bool (*lpr_action)(lv_obj_t *, lv_dispi_t *)); -bool lv_btn_get_tgl(lv_obj_t* obj_dp); -lv_btn_state_t lv_btn_get_state(lv_obj_t* obj_dp); +bool lv_btn_get_tgl(lv_obj_t * btn); +lv_btn_state_t lv_btn_get_state(lv_obj_t * btn); /********************** * MACROS diff --git a/lv_objx/lv_btnm.c b/lv_objx/lv_btnm.c index fe3850e86..61dafb7d9 100644 --- a/lv_objx/lv_btnm.c +++ b/lv_objx/lv_btnm.c @@ -24,11 +24,11 @@ **********************/ #if 0 /*Not necessary*/ -static bool lv_btnm_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_btnm_design(lv_obj_t * btnm, const area_t * mask, lv_design_mode_t mode); #endif static uint8_t lv_btnm_get_width_unit(const char * btn_str); -static void lv_btnm_create_btns(lv_obj_t * obj_dp, const char ** map_p); -static bool lv_btnm_btn_release_action(lv_obj_t * obj_dp, lv_dispi_t * dispi_p); +static void lv_btnm_create_btns(lv_obj_t * btnm, const char ** map); +static bool lv_btnm_btn_release_action(lv_obj_t * btnm, lv_dispi_t * dispi); static void lv_btnms_init(void); /********************** @@ -53,52 +53,52 @@ static const char * lv_btnm_def_map[] = {"Btn1","Btn2", "Btn3","\n", /** * Create a button matrix objects - * @param par_dp pointer to an object, it will be the parent of the new button matrix - * @param copy_dp pointer to a button matrix object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new button matrix + * @param copy pointer to a button matrix object, if not NULL then the new object will be copied from it * @return pointer to the created button matrix */ -lv_obj_t* lv_btnm_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_btnm_create(lv_obj_t * par, lv_obj_t * copy) { /*Create the ancestor object*/ - lv_obj_t* new_obj_dp = lv_rect_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + lv_obj_t * new_btnm = lv_rect_create(par, copy); + dm_assert(new_btnm); /*Allocate the object type specific extended data*/ - lv_btnm_ext_t * ext_dp = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_btnm_ext_t)); - dm_assert(ext_dp); + lv_btnm_ext_t * ext = lv_obj_alloc_ext(new_btnm, sizeof(lv_btnm_ext_t)); + dm_assert(ext); - lv_obj_set_signal_f(new_obj_dp, lv_btnm_signal); + lv_obj_set_signal_f(new_btnm, lv_btnm_signal); /* Keep the rectangle design function - * lv_obj_set_design_f(new_obj_dp, lv_btnm_design); */ + * lv_obj_set_design_f(new_obj, lv_btnm_design); */ /*Init the new button matrix object*/ - if(copy_dp == NULL) { - lv_obj_set_size(new_obj_dp, LV_HOR_RES / 2, LV_VER_RES / 2); - lv_obj_set_style(new_obj_dp, lv_btnms_get(LV_BTNMS_DEF, NULL)); - lv_btnm_set_map(new_obj_dp, lv_btnm_def_map); + if(copy == NULL) { + lv_obj_set_size(new_btnm, LV_HOR_RES / 2, LV_VER_RES / 2); + lv_obj_set_style(new_btnm, lv_btnms_get(LV_BTNMS_DEF, NULL)); + lv_btnm_set_map(new_btnm, lv_btnm_def_map); } /*Copy an existing object*/ else { } - return new_obj_dp; + return new_btnm; } /** * Signal function of the button matrix - * @param obj_dp pointer to a button matrix object + * @param btnm pointer to a button matrix object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable * @return true: the object is still valid (not deleted), false: the object become invalid */ -bool lv_btnm_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_btnm_signal(lv_obj_t * btnm, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_rect_signal(obj_dp, sign, param); + valid = lv_rect_signal(btnm, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ @@ -109,7 +109,7 @@ bool lv_btnm_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) break; case LV_SIGNAL_STYLE_CHG: case LV_SIGNAL_CORD_CHG: - lv_btnm_set_map(obj_dp, LV_EA(obj_dp, lv_btnm_ext_t)->map_p); + lv_btnm_set_map(btnm, LV_EA(btnm, lv_btnm_ext_t)->map_p); break; default: break; @@ -125,46 +125,46 @@ bool lv_btnm_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Set a new map. Buttons will be created/deleted according to the map. - * @param obj_dp pointer to a button matrix object - * @param map_p pointer a string array. Tha last string hast be: "". - * Use "\n" to begin a new line. - * Use "\003" octal numbers to set relative - * the width of a button. (max. 9 -> \011) - * (e.g. const char * str[] = {"a", "b", "\n", "\004c", "d", ""}). + * @param btnm pointer to a button matrix object + * @param map pointer a string array. Tha last string hast be: "". + * Use "\n" to begin a new line. + * Use "\003" octal numbers to set relative + * the width of a button. (max. 9 -> \011) + * (e.g. const char * str[] = {"a", "b", "\n", "\004c", "d", ""}). */ -void lv_btnm_set_map(lv_obj_t * obj_dp, const char ** map_p) +void lv_btnm_set_map(lv_obj_t * btnm, const char ** map) { - if(map_p == NULL) return; + if(map == NULL) return; - LV_EA(obj_dp, lv_btnm_ext_t)->map_p = map_p; + LV_EA(btnm, lv_btnm_ext_t)->map_p = map; /*Analyze the map and create the required number of buttons*/ - lv_btnm_create_btns(obj_dp, map_p); + lv_btnm_create_btns(btnm, map); /*Set size and positions of the buttons*/ - lv_btnms_t * btnms_p = lv_obj_get_style(obj_dp); - cord_t max_w = lv_obj_get_width(obj_dp) - 2 * btnms_p->rects.hpad; - cord_t max_h = lv_obj_get_height(obj_dp) - 2 * btnms_p->rects.vpad; - cord_t act_y = btnms_p->rects.vpad; + lv_btnms_t * btnms = lv_obj_get_style(btnm); + cord_t max_w = lv_obj_get_width(btnm) - 2 * btnms->bg.hpad; + cord_t max_h = lv_obj_get_height(btnm) - 2 * btnms->bg.vpad; + cord_t act_y = btnms->bg.vpad; uint8_t btn_cnt_tot = 0; /*Used to set free number of the buttons*/ /*Count the lines to calculate button height*/ uint8_t line_cnt = 1; uint8_t li; - for(li = 0; strlen(map_p[li]) != 0; li++) { - if(strcmp(map_p[li], "\n") == 0) line_cnt ++; + for(li = 0; strlen(map[li]) != 0; li++) { + if(strcmp(map[li], "\n") == 0) line_cnt ++; } - cord_t btn_h = max_h - ((line_cnt - 1) * btnms_p->rects.opad); + cord_t btn_h = max_h - ((line_cnt - 1) * btnms->bg.opad); btn_h = btn_h / line_cnt; /* Count the units and the buttons in a line * (A button can be 1,2,3... unit wide)*/ uint16_t unit_cnt; uint16_t btn_cnt; - const char ** map_p_tmp = map_p; - lv_obj_t * btn_dp; - btn_dp = ll_get_head(&obj_dp->child_ll); + const char ** map_p_tmp = map; + lv_obj_t * btn; + btn = ll_get_head(&btnm->child_ll); /*Count the units and the buttons in a line*/ while(1) { @@ -179,29 +179,29 @@ void lv_btnm_set_map(lv_obj_t * obj_dp, const char ** map_p) /*Only deal with the non empty lines*/ if(btn_cnt != 0) { /*Calculate the unit width*/ - cord_t unit_w = max_w - ((btn_cnt-1) * btnms_p->rects.opad); + cord_t unit_w = max_w - ((btn_cnt-1) * btnms->bg.opad); unit_w = unit_w / unit_cnt; /*Set the button size and positions and set the texts*/ uint16_t i; - lv_obj_t * label_dp; - cord_t act_x = btnms_p->rects.hpad; + lv_obj_t * label; + cord_t act_x = btnms->bg.hpad; for(i = 0; i < btn_cnt; i++) { - lv_obj_set_size(btn_dp, unit_w * lv_btnm_get_width_unit(map_p_tmp[i]), btn_h); - lv_obj_align(btn_dp, NULL, LV_ALIGN_IN_TOP_LEFT, act_x, act_y); - lv_obj_set_free_num(btn_dp, btn_cnt_tot); - lv_obj_set_style(btn_dp, &btnms_p->btns); - act_x += lv_obj_get_width(btn_dp) + btnms_p->rects.opad; + lv_obj_set_size(btn, unit_w * lv_btnm_get_width_unit(map_p_tmp[i]), btn_h); + lv_obj_align(btn, NULL, LV_ALIGN_IN_TOP_LEFT, act_x, act_y); + lv_obj_set_free_num(btn, btn_cnt_tot); + lv_obj_set_style(btn, &btnms->btn); + act_x += lv_obj_get_width(btn) + btnms->bg.opad; - label_dp = lv_obj_get_child(btn_dp, NULL); /*Get the label on the button (the only child)*/ - lv_obj_set_style(label_dp, &btnms_p->labels); - lv_label_set_text(label_dp, map_p_tmp[i]); + label = lv_obj_get_child(btn, NULL); /*Get the label on the button (the only child)*/ + lv_obj_set_style(label, &btnms->btn_label); + lv_label_set_text(label, map_p_tmp[i]); - btn_dp = ll_get_next(&obj_dp->child_ll, btn_dp); /*Go to the next button*/ + btn = ll_get_next(&btnm->child_ll, btn); /*Go to the next button*/ btn_cnt_tot ++; } } - act_y += btn_h + btnms_p->rects.opad; + act_y += btn_h + btnms->bg.opad; if(strlen(map_p_tmp[btn_cnt]) == 0) break; /*Break on end of map*/ map_p_tmp = &map_p_tmp[btn_cnt + 1]; /*Set the map to the next line*/ } @@ -210,12 +210,12 @@ void lv_btnm_set_map(lv_obj_t * obj_dp, const char ** map_p) /** * Set a new callback function for the buttons (It will be called when a button is released) - * @param obj_dp: pointer to button matrix object + * @param btnm: pointer to button matrix object * @param cb pointer to a callback function */ -void lv_btnm_set_cb(lv_obj_t * obj_dp, lv_btnm_callback_t cb) +void lv_btnm_set_cb(lv_obj_t * btnm, lv_btnm_callback_t cb) { - LV_EA(obj_dp, lv_btnm_ext_t)->cb = cb; + LV_EA(btnm, lv_btnm_ext_t)->cb = cb; } /*===================== @@ -224,32 +224,32 @@ void lv_btnm_set_cb(lv_obj_t * obj_dp, lv_btnm_callback_t cb) /** * Get the current map of a button matrix - * @param obj_dp pointer to a button matrix object + * @param btnm pointer to a button matrix object * @return the current map */ -const char ** lv_btnm_get_map(lv_obj_t * obj_dp) +const char ** lv_btnm_get_map(lv_obj_t * btnm) { - return LV_EA(obj_dp, lv_btnm_ext_t)->map_p; + return LV_EA(btnm, lv_btnm_ext_t)->map_p; } /** * Get a the callback function of the buttons on a button matrix - * @param obj_dp: pointer to button matrix object + * @param btnm: pointer to button matrix object * @return pointer to the callback function */ -lv_btnm_callback_t lv_btnm_get_cb(lv_obj_t * obj_dp) +lv_btnm_callback_t lv_btnm_get_cb(lv_obj_t * btnm) { - return LV_EA(obj_dp, lv_btnm_ext_t)->cb; + return LV_EA(btnm, lv_btnm_ext_t)->cb; } /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_btnms_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_btnms_t style */ -lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy_p) +lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy) { static bool style_inited = false; @@ -269,9 +269,9 @@ lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy_p) style_p = &lv_btnms_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_btnms_t)); - else memcpy(copy_p, &lv_btnms_def, sizeof(lv_btnms_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_btnms_t)); + else memcpy(copy, &lv_btnms_def, sizeof(lv_btnms_t)); } return style_p; @@ -284,7 +284,7 @@ lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy_p) #if 0 /*Not necessary*/ /** * Handle the drawing related tasks of the button matrixs - * @param obj_dp pointer to an object + * @param obj pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -292,14 +292,13 @@ lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_btnm_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_btnm_design(lv_obj_t * obj, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ return false; } - /*Draw the object*/ return true; @@ -313,23 +312,23 @@ static bool lv_btnm_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mo static void lv_btnms_init(void) { /*Default style*/ - lv_rects_get(LV_RECTS_DEF, &lv_btnms_def.rects); /*Background rectangle style*/ - lv_btns_get(LV_BTNS_DEF, &lv_btnms_def.btns); /*Button style*/ - lv_labels_get(LV_LABELS_BTN, &lv_btnms_def.labels); /*BUtton label style*/ + lv_rects_get(LV_RECTS_DEF, &lv_btnms_def.bg); /*Background rectangle style*/ + lv_btns_get(LV_BTNS_DEF, &lv_btnms_def.btn); /*Button style*/ + lv_labels_get(LV_LABELS_BTN, &lv_btnms_def.btn_label); /*BUtton label style*/ } /** * Create the required number of buttons according to a map - * @param obj_dp pointer to button matrix object + * @param btnm pointer to button matrix object * @param map_p pointer to a string array */ -static void lv_btnm_create_btns(lv_obj_t * obj_dp, const char ** map_p) +static void lv_btnm_create_btns(lv_obj_t * btnm, const char ** map) { /*Count the buttons in the map*/ uint16_t btn_cnt = 0; uint16_t i = 0; - while(strlen(map_p[i]) != 0) { - if(strcmp(map_p[i], "\n") != 0) { /*Not count line breaks*/ + while(strlen(map[i]) != 0) { + if(strcmp(map[i], "\n") != 0) { /*Not count line breaks*/ btn_cnt ++; } i++; @@ -337,23 +336,23 @@ static void lv_btnm_create_btns(lv_obj_t * obj_dp, const char ** map_p) /*Get the current number of children of the button matrix*/ uint16_t child_cnt = 0; - lv_obj_t * child_dp = NULL; + lv_obj_t * child = NULL; while(1) { - child_dp = lv_obj_get_child(obj_dp, child_dp); - if(child_dp != NULL) child_cnt ++; + child = lv_obj_get_child(btnm, child); + if(child != NULL) child_cnt ++; else break; } /*Create or delete buttons to finally get 'btn_cnt' children*/ if(child_cnt < btn_cnt) { /*Create buttons*/ for(i = 0; i < btn_cnt - child_cnt; i++) { - lv_obj_t * btn_dp = lv_btn_create(obj_dp, NULL); - lv_btn_set_rel_action(btn_dp, lv_btnm_btn_release_action); - lv_label_create(btn_dp, NULL); + lv_obj_t * btn = lv_btn_create(btnm, NULL); + lv_btn_set_rel_action(btn, lv_btnm_btn_release_action); + lv_label_create(btn, NULL); } } else if(child_cnt > btn_cnt) { /*Delete buttons*/ for(i = 0; i < child_cnt - btn_cnt; i++) { - lv_obj_del(lv_obj_get_child(obj_dp, NULL)); + lv_obj_del(lv_obj_get_child(btnm, NULL)); } } } @@ -374,18 +373,18 @@ static uint8_t lv_btnm_get_width_unit(const char * btn_str) /** * Called when button is released - * @param obj_dp pointer to the released button - * @param dispi_p pointer to the caller display input. + * @param btn pointer to the released button of the button matrix + * @param dispi pointer to the caller display input. * @return true: if the button remains valid (the button matrix or the button is not deleted) */ -static bool lv_btnm_btn_release_action(lv_obj_t * obj_dp, lv_dispi_t * dispi_p) +static bool lv_btnm_btn_release_action(lv_obj_t * btn, lv_dispi_t * dispi) { - lv_obj_t * btnm_dp = lv_obj_get_parent(obj_dp); - lv_btnm_ext_t * ext_dp = lv_obj_get_ext(btnm_dp); - uint8_t id = lv_obj_get_free_num(obj_dp); + lv_obj_t * btnm = lv_obj_get_parent(btn); + lv_btnm_ext_t * ext = lv_obj_get_ext(btnm); + uint8_t id = lv_obj_get_free_num(btn); bool ret; - if(ext_dp->cb != NULL) { - ret = ext_dp->cb(btnm_dp, obj_dp, id); /*Call the set callback function*/ + if(ext->cb != NULL) { + ret = ext->cb(btnm, btn, id); /*Call the set callback function*/ } return ret; diff --git a/lv_objx/lv_btnm.h b/lv_objx/lv_btnm.h index 0d85921b7..387f57861 100644 --- a/lv_objx/lv_btnm.h +++ b/lv_objx/lv_btnm.h @@ -35,10 +35,10 @@ /*Style of button matrix*/ typedef struct { - lv_rects_t rects; /*Style of ancestor*/ + lv_rects_t bg; /*Style of ancestor*/ /*New style element for this type */ - lv_btns_t btns; - lv_labels_t labels; + lv_btns_t btn; + lv_labels_t btn_label; }lv_btnms_t; /*Built-in styles of button matrix*/ @@ -54,7 +54,7 @@ typedef bool (*lv_btnm_callback_t) (lv_obj_t *, lv_obj_t *, uint16_t); /*Data of button matrix*/ typedef struct { - lv_rect_ext_t rect; /*Ext. of ancestor*/ + lv_rect_ext_t bg; /*Ext. of ancestor*/ /*New data for this type */ const char ** map_p; /*Pointer to the current map*/ lv_btnm_callback_t cb; @@ -63,15 +63,15 @@ typedef struct /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t* lv_btnm_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_btnm_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy_p); +lv_obj_t * lv_btnm_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_btnm_signal(lv_obj_t * btnm, lv_signal_t sign, void * param); +lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy); -void lv_btnm_set_map(lv_obj_t * obj_dp, const char ** map_p); -void lv_btnm_set_cb(lv_obj_t * obj_dp, lv_btnm_callback_t cb); +void lv_btnm_set_map(lv_obj_t * btnm, const char ** map); +void lv_btnm_set_cb(lv_obj_t * btnm, lv_btnm_callback_t cb); -const char ** lv_btnm_get_map(lv_obj_t * obj_dp); -lv_btnm_callback_t lv_btnm_get_cb(lv_obj_t * obj_dp); +const char ** lv_btnm_get_map(lv_obj_t * btnm); +lv_btnm_callback_t lv_btnm_get_cb(lv_obj_t * btnm); /********************** * MACROS **********************/ diff --git a/lv_objx/lv_cb.c b/lv_objx/lv_cb.c index 196fca2a7..5dc7c0da8 100644 --- a/lv_objx/lv_cb.c +++ b/lv_objx/lv_cb.c @@ -23,7 +23,7 @@ * STATIC PROTOTYPES **********************/ #if 0 /*The ancestor design function is used */ -static bool lv_cb_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_cb_design(lv_obj_t * cb, const area_t * mask, lv_design_mode_t mode); #endif static void lv_cbs_init(void); @@ -48,61 +48,61 @@ static lv_cbs_t lv_cbs_def = /** * Create a check box objects - * @param par_dp pointer to an object, it will be the parent of the new check box - * @param copy_dp pointer to a check box object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new check box + * @param copy pointer to a check box object, if not NULL then the new object will be copied from it * @return pointer to the created check box */ -lv_obj_t * lv_cb_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_cb_create(lv_obj_t * par, lv_obj_t * copy) { /*Create the ancestor basic object*/ - lv_obj_t* new_obj_dp = lv_btn_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + lv_obj_t * new_cb = lv_btn_create(par, copy); + dm_assert(new_cb); - lv_cb_ext_t * ext = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_cb_ext_t)); + lv_cb_ext_t * ext = lv_obj_alloc_ext(new_cb, sizeof(lv_cb_ext_t)); dm_assert(ext); - lv_obj_set_signal_f(new_obj_dp, lv_cb_signal); + lv_obj_set_signal_f(new_cb, lv_cb_signal); /*Init the new checkbox object*/ - if(copy_dp == NULL) { - lv_rect_set_layout(new_obj_dp, LV_RECT_LAYOUT_ROW_M); - lv_rect_set_fit(new_obj_dp, true, true); - lv_btn_set_tgl(new_obj_dp, true); + if(copy == NULL) { + lv_rect_set_layout(new_cb, LV_RECT_LAYOUT_ROW_M); + lv_rect_set_fit(new_cb, true, true); + lv_btn_set_tgl(new_cb, true); - ext->bullet = lv_btn_create(new_obj_dp, NULL); + ext->bullet = lv_btn_create(new_cb, NULL); lv_obj_set_click(ext->bullet, false); - ext->label = lv_label_create(new_obj_dp, NULL); + ext->label = lv_label_create(new_cb, NULL); lv_label_set_text(ext->label, "Check box"); - lv_obj_set_style(new_obj_dp, lv_cbs_get(LV_CBS_DEF, NULL)); + lv_obj_set_style(new_cb, lv_cbs_get(LV_CBS_DEF, NULL)); } else { - lv_cb_ext_t * copy_ext = lv_obj_get_ext(copy_dp); - ext->bullet = lv_btn_create(new_obj_dp, copy_ext->bullet); - ext->label = lv_label_create(new_obj_dp, copy_ext->label); + lv_cb_ext_t * copy_ext = lv_obj_get_ext(copy); + ext->bullet = lv_btn_create(new_cb, copy_ext->bullet); + ext->label = lv_label_create(new_cb, copy_ext->label); } - lv_obj_align_us(new_obj_dp, NULL, LV_ALIGN_CENTER, 0, 0); + lv_obj_align_us(new_cb, NULL, LV_ALIGN_CENTER, 0, 0); - return new_obj_dp; + return new_cb; } /** * Signal function of the check box - * @param obj_dp pointer to a check box object + * @param cb pointer to a check box object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_cb_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_cb_signal(lv_obj_t * cb, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_btn_signal(obj_dp, sign, param); + valid = lv_btn_signal(cb, sign, param); - lv_cb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - lv_cbs_t * style_p = lv_obj_get_style(obj_dp); + lv_cb_ext_t * ext = lv_obj_get_ext(cb); + lv_cbs_t * cbs = lv_obj_get_style(cb); /* The object can be deleted so check its validity and then * make the object specific signal handling */ @@ -112,12 +112,12 @@ bool lv_cb_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) case LV_SIGNAL_RELEASED: case LV_SIGNAL_LONG_PRESS: case LV_SIGNAL_PRESS_LOST: - lv_btn_set_state(ext_dp->bullet, lv_btn_get_state(obj_dp)); + lv_btn_set_state(ext->bullet, lv_btn_get_state(cb)); break; case LV_SIGNAL_STYLE_CHG: - lv_obj_set_size(ext_dp->bullet, style_p->bullet_size, style_p->bullet_size); - lv_obj_set_style(ext_dp->bullet, &style_p->bullet); - lv_obj_set_style(ext_dp->label, &style_p->label); + lv_obj_set_size(ext->bullet, cbs->bullet_size, cbs->bullet_size); + lv_obj_set_style(ext->bullet, &cbs->bullet); + lv_obj_set_style(ext->label, &cbs->label); break; case LV_SIGNAL_CLEANUP: /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/ @@ -137,13 +137,13 @@ bool lv_cb_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Set the text of a check box - * @param obj_dp pointer to a check box + * @param cb pointer to a check box * @param txt the text of the check box */ -void lv_cb_set_text(lv_obj_t * obj_dp, const char * txt) +void lv_cb_set_text(lv_obj_t * cb, const char * txt) { - lv_cb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - lv_label_set_text(ext_dp->label, txt); + lv_cb_ext_t * ext = lv_obj_get_ext(cb); + lv_label_set_text(ext->label, txt); } @@ -153,22 +153,22 @@ void lv_cb_set_text(lv_obj_t * obj_dp, const char * txt) /** * Get the text of a check box - * @param obj_dp pointer to check box object + * @param cb pointer to check box object * @return pointer to the text of the check box */ -const char * lv_cb_get_text(lv_obj_t * obj_dp) +const char * lv_cb_get_text(lv_obj_t * cb) { - lv_cb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - return lv_label_get_text(ext_dp->label); + lv_cb_ext_t * ext = lv_obj_get_ext(cb); + return lv_label_get_text(ext->label); } /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_cbs_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_cbs_t style */ -lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy_p) +lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy) { static bool style_inited = false; @@ -188,9 +188,9 @@ lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy_p) style_p = &lv_cbs_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_cbs_t)); - else memcpy(copy_p, &lv_cbs_def, sizeof(lv_cbs_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_cbs_t)); + else memcpy(copy, &lv_cbs_def, sizeof(lv_cbs_t)); } return style_p; @@ -202,7 +202,7 @@ lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy_p) #if 0 /*The ancestor design function is used */ /** * Handle the drawing related tasks of the check boxes - * @param obj_dp pointer to an object + * @param cb pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -210,14 +210,13 @@ lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_cb_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_cb_design(lv_obj_t * cb, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ return false; } - /*Draw the object*/ return true; @@ -231,7 +230,7 @@ static void lv_cbs_init(void) /*Default style*/ /*Bg style*/ - lv_rects_get(LV_RECTS_TRANSP, &lv_cbs_def.bg); + lv_btns_get(LV_RECTS_TRANSP, &lv_cbs_def.bg); lv_cbs_def.bg.rects.hpad = 0 * LV_STYLE_MULT; lv_cbs_def.bg.rects.vpad = 0 * LV_STYLE_MULT; lv_cbs_def.bg.rects.opad = 5 * LV_STYLE_MULT; diff --git a/lv_objx/lv_cb.h b/lv_objx/lv_cb.h index 03fcd0110..27a18bcaa 100644 --- a/lv_objx/lv_cb.h +++ b/lv_objx/lv_cb.h @@ -27,7 +27,8 @@ /*Style of check box*/ typedef struct { - lv_btns_t bg; + lv_btns_t bg; /*Style of ancestor*/ + /*New style element for this type */ lv_btns_t bullet; lv_labels_t label; cord_t bullet_size; @@ -42,7 +43,8 @@ typedef enum /*Data of check box*/ typedef struct { - lv_btn_ext_t btn_ext; + lv_btn_ext_t bg_btn; /*Ext. of ancestor*/ + /*New data for this type */ lv_obj_t * bullet; lv_obj_t * label; }lv_cb_ext_t; @@ -50,11 +52,11 @@ typedef struct /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t* lv_cb_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_cb_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -void lv_cb_set_text(lv_obj_t * obj_dp, const char * txt); -const char * lv_cb_get_text(lv_obj_t * obj_dp); -lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy_p); +lv_obj_t * lv_cb_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_cb_signal(lv_obj_t * cb, lv_signal_t sign, void * param); +void lv_cb_set_text(lv_obj_t * cb, const char * txt); +const char * lv_cb_get_text(lv_obj_t * cb); +lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy); /********************** * MACROS diff --git a/lv_objx/lv_chart.c b/lv_objx/lv_chart.c index 08427eb11..53fe49457 100644 --- a/lv_objx/lv_chart.c +++ b/lv_objx/lv_chart.c @@ -28,12 +28,12 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_chart_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_chart_design(lv_obj_t * chart, const area_t * mask, lv_design_mode_t mode); static void lv_charts_init(void); -static void lv_chart_draw_div(lv_obj_t* obj_dp, const area_t * mask_p); -static void lv_chart_draw_lines(lv_obj_t* obj_dp, const area_t * mask_p); -static void lv_chart_draw_points(lv_obj_t* obj_dp, const area_t * mask_p); -static void lv_chart_draw_cols(lv_obj_t* obj_dp, const area_t * mask_p); +static void lv_chart_draw_div(lv_obj_t * chart, const area_t * mask); +static void lv_chart_draw_lines(lv_obj_t * chart, const area_t * mask); +static void lv_chart_draw_points(lv_obj_t * chart, const area_t * mask); +static void lv_chart_draw_cols(lv_obj_t * chart, const area_t * mask); /********************** @@ -56,77 +56,77 @@ static lv_design_f_t ancestor_design_fp; /** * Create a chart background objects - * @param par_dp pointer to an object, it will be the parent of the new chart background - * @param copy_dp pointer to a chart background object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new chart background + * @param copy pointer to a chart background object, if not NULL then the new object will be copied from it * @return pointer to the created chart background */ -lv_obj_t* lv_chart_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_chart_create(lv_obj_t * par, lv_obj_t * copy) { /*Create the ancestor basic object*/ - lv_obj_t * new_obj_dp = lv_rect_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + lv_obj_t * new_chart = lv_rect_create(par, copy); + dm_assert(new_chart); /*Allocate the object type specific extended data*/ - lv_chart_ext_t * ext_dp = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_chart_ext_t)); - dm_assert(ext_dp); + lv_chart_ext_t * ext = lv_obj_alloc_ext(new_chart, sizeof(lv_chart_ext_t)); + dm_assert(ext); if(ancestor_design_fp == NULL) { - ancestor_design_fp = lv_obj_get_design_f(new_obj_dp); + ancestor_design_fp = lv_obj_get_design_f(new_chart); } - ll_init(&ext_dp->dl_ll, sizeof(cord_t *)); - ext_dp->dl_num = 0; + ll_init(&ext->dl_ll, sizeof(cord_t *)); + ext->dl_num = 0; - lv_obj_set_signal_f(new_obj_dp, lv_chart_signal); - lv_obj_set_design_f(new_obj_dp, lv_chart_design); + lv_obj_set_signal_f(new_chart, lv_chart_signal); + lv_obj_set_design_f(new_chart, lv_chart_design); /*Init the new chart background object*/ - if(copy_dp == NULL) { - ext_dp->type = LV_CHART_LINE; - lv_obj_set_style(new_obj_dp, lv_charts_get(LV_CHARTS_DEF, NULL)); - ext_dp->ymin = LV_CHART_YMIN_DEF; - ext_dp->ymax = LV_CHART_YMAX_DEF; - ext_dp->hdiv_num = LV_CHART_HDIV_DEF; - ext_dp->vdiv_num = LV_CHART_VDIV_DEF; - ext_dp->pnum = LV_CHART_PNUM_DEF; + if(copy == NULL) { + ext->type = LV_CHART_LINE; + lv_obj_set_style(new_chart, lv_charts_get(LV_CHARTS_DEF, NULL)); + ext->ymin = LV_CHART_YMIN_DEF; + ext->ymax = LV_CHART_YMAX_DEF; + ext->hdiv_num = LV_CHART_HDIV_DEF; + ext->vdiv_num = LV_CHART_VDIV_DEF; + ext->pnum = LV_CHART_PNUM_DEF; } else { - lv_chart_ext_t * ext_copy_dp = lv_obj_get_ext(copy_dp); - ext_dp->type = ext_copy_dp->type; - ext_dp->ymin = ext_copy_dp->ymin; - ext_dp->ymax = ext_copy_dp->ymax; - ext_dp->hdiv_num = ext_copy_dp->hdiv_num; - ext_dp->vdiv_num = ext_copy_dp->vdiv_num; - ext_dp->pnum = ext_copy_dp->pnum; + lv_chart_ext_t * ext_copy = lv_obj_get_ext(copy); + ext->type = ext_copy->type; + ext->ymin = ext_copy->ymin; + ext->ymax = ext_copy->ymax; + ext->hdiv_num = ext_copy->hdiv_num; + ext->vdiv_num = ext_copy->vdiv_num; + ext->pnum = ext_copy->pnum; } - return new_obj_dp; + return new_chart; } /** * Signal function of the chart background - * @param obj_dp pointer to a chart background object + * @param chart pointer to a chart background object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_chart_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_chart_signal(lv_obj_t * chart, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_rect_signal(obj_dp, sign, param); + valid = lv_rect_signal(chart, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ if(valid != false) { cord_t ** datal; - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); switch(sign) { case LV_SIGNAL_CLEANUP: - LL_READ(ext_dp->dl_ll, datal) { + LL_READ(ext->dl_ll, datal) { dm_free(*datal); } - ll_clear(&ext_dp->dl_ll); + ll_clear(&ext->dl_ll); break; default: @@ -137,35 +137,40 @@ bool lv_chart_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) return valid; } -cord_t * lv_chart_add_dataline(lv_obj_t* obj_dp) +/** + * Allocate and add a data line t the chart + * @param chart pointer to a chart object + * @return pointer to the allocated data lie (an array for the data points) + */ +cord_t * lv_chart_add_dataline(lv_obj_t * chart) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - cord_t ** dl_dp = ll_ins_head(&ext_dp->dl_ll); - cord_t def = (ext_dp->ymax - ext_dp->ymin) >> 2; /*1/4 range as default value*/ + lv_chart_ext_t * ext = lv_obj_get_ext(chart); + cord_t ** dl = ll_ins_head(&ext->dl_ll); + cord_t def = (ext->ymax - ext->ymin) >> 2; /*1/4 range as default value*/ - if(dl_dp == NULL) return NULL; + if(dl == NULL) return NULL; - *dl_dp = dm_alloc(sizeof(cord_t) * ext_dp->pnum); + *dl = dm_alloc(sizeof(cord_t) * ext->pnum); uint16_t i; - cord_t * p_tmp = *dl_dp; - for(i = 0; i < ext_dp->pnum; i++) { + cord_t * p_tmp = *dl; + for(i = 0; i < ext->pnum; i++) { *p_tmp = def; p_tmp++; } - ext_dp->dl_num++; + ext->dl_num++; - return *dl_dp; + return *dl; } /** * Refresh a chart if its data line has changed - * @param obj_dp pionter to chart object + * @param chart pointer to chart object */ -void lv_chart_refr(lv_obj_t * obj_dp) +void lv_chart_refr(lv_obj_t * chart) { - lv_obj_inv(obj_dp); + lv_obj_inv(chart); } /*===================== * Setter functions @@ -173,88 +178,88 @@ void lv_chart_refr(lv_obj_t * obj_dp) /** * Set the number of horizontal and vertical division lines - * @param obj_dp pointer to a graph background object + * @param chart pointer to a graph background object * @param hdiv number of horizontal division lines * @param vdiv number of vertical division lines */ -void lv_chart_set_hvdiv(lv_obj_t * obj_dp, uint8_t hdiv, uint8_t vdiv) +void lv_chart_set_hvdiv(lv_obj_t * chart, uint8_t hdiv, uint8_t vdiv) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); - ext_dp->hdiv_num = hdiv; - ext_dp->vdiv_num = vdiv; + ext->hdiv_num = hdiv; + ext->vdiv_num = vdiv; - lv_obj_inv(obj_dp); + lv_obj_inv(chart); } /** * Set the minimal and maximal x and y values - * @param obj_dp pointer to a graph background object + * @param chart pointer to a graph background object * @param xmin x minimum value * @param xmax x maximum value * @param ymin y minimum value * @param ymax y maximum value */ -void lv_chart_set_range(lv_obj_t * obj_dp, cord_t ymin, cord_t ymax) +void lv_chart_set_range(lv_obj_t * chart, cord_t ymin, cord_t ymax) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); - ext_dp->ymin = ymin; - ext_dp->ymax = ymax; + ext->ymin = ymin; + ext->ymax = ymax; - lv_chart_refr(obj_dp); + lv_chart_refr(chart); } /** * Set a new type for a chart - * @param obj_dp pointer to a chart object - * @param type ew type of the chart (from 'lv_chart_type_t' enum) + * @param chart pointer to a chart object + * @param type new type of the chart (from 'lv_chart_type_t' enum) */ -void lv_chart_set_type(lv_obj_t * obj_dp, lv_chart_type_t type) +void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - ext_dp->type = type; + lv_chart_ext_t * ext = lv_obj_get_ext(chart); + ext->type = type; - lv_chart_refr(obj_dp); + lv_chart_refr(chart); } /** * Set the number of points on a data line on a chart - * @param obj_dp pointer r to chart object + * @param chart pointer r to chart object * @param pnum new number of points on the data lines */ -void lv_chart_set_pnum(lv_obj_t * obj_dp, uint16_t pnum) +void lv_chart_set_pnum(lv_obj_t * chart, uint16_t pnum) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); cord_t ** y_data; if(pnum < 1) pnum = 1; - LL_READ_BACK(ext_dp->dl_ll, y_data) { + LL_READ_BACK(ext->dl_ll, y_data) { *y_data = dm_realloc(*y_data, sizeof(cord_t) * pnum); } - ext_dp->pnum = pnum; - lv_chart_refr(obj_dp); + ext->pnum = pnum; + lv_chart_refr(chart); } /** * Shift all data right and set the most right data on a data line - * @param obj_dp pointer to chart object - * @param dl_p pointer to a data line on 'obj_dp' + * @param chart pointer to chart object + * @param dl pointer to a data line on 'chart' * @param y the new value of the most right data */ -void lv_chart_set_next(lv_obj_t * obj_dp, cord_t * dl_p, cord_t y) +void lv_chart_set_next(lv_obj_t * chart, cord_t * dl, cord_t y) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); uint16_t i; - for(i = 0; i < ext_dp->pnum - 1; i++) { - dl_p[i] = dl_p[i + 1]; + for(i = 0; i < ext->pnum - 1; i++) { + dl[i] = dl[i + 1]; } - dl_p[ext_dp->pnum - 1] = y; - lv_chart_refr(obj_dp); + dl[ext->pnum - 1] = y; + lv_chart_refr(chart); } @@ -265,10 +270,10 @@ void lv_chart_set_next(lv_obj_t * obj_dp, cord_t * dl_p, cord_t y) /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_charts_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_charts_t style */ -lv_charts_t * lv_charts_get(lv_charts_builtin_t style, lv_charts_t * copy_p) +lv_charts_t * lv_charts_get(lv_charts_builtin_t style, lv_charts_t * copy) { static bool style_inited = false; @@ -288,9 +293,9 @@ lv_charts_t * lv_charts_get(lv_charts_builtin_t style, lv_charts_t * copy_p) style_p = &lv_charts_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_charts_t)); - else memcpy(copy_p, &lv_charts_def, sizeof(lv_charts_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_charts_t)); + else memcpy(copy, &lv_charts_def, sizeof(lv_charts_t)); } return style_p; @@ -298,26 +303,26 @@ lv_charts_t * lv_charts_get(lv_charts_builtin_t style, lv_charts_t * copy_p) /** * Get the type of a chart - * @param obj_dp pointer to chart object + * @param chart pointer to chart object * @return type of the chart (from 'lv_chart_t' enum) */ -lv_chart_type_t lv_chart_get_type(lv_obj_t * obj_dp) +lv_chart_type_t lv_chart_get_type(lv_obj_t * chart) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); - return ext_dp->type; + return ext->type; } /** * Get the data point number per data line on chart - * @param obj_dp pointer to chart object + * @param chart pointer to chart object * @return point number on each data line */ -uint16_t lv_chart_get_pnum(lv_obj_t * obj_dp) +uint16_t lv_chart_get_pnum(lv_obj_t * chart) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); - return ext_dp->pnum; + return ext->pnum; } /********************** @@ -327,7 +332,7 @@ uint16_t lv_chart_get_pnum(lv_obj_t * obj_dp) /** * Handle the drawing related tasks of the chart backgrounds - * @param obj_dp pointer to an object + * @param chart pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -335,30 +340,30 @@ uint16_t lv_chart_get_pnum(lv_obj_t * obj_dp) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_chart_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_chart_design(lv_obj_t * chart, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ - return ancestor_design_fp(obj_dp, mask_p, mode); + return ancestor_design_fp(chart, mask, mode); } else if(mode == LV_DESIGN_DRAW_MAIN) { /*Draw the rectangle ancient*/ - ancestor_design_fp(obj_dp, mask_p, mode); + ancestor_design_fp(chart, mask, mode); /*Draw the object*/ - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); - lv_chart_draw_div(obj_dp, mask_p); + lv_chart_draw_div(chart, mask); - switch(ext_dp->type) { + switch(ext->type) { case LV_CHART_LINE: - lv_chart_draw_lines(obj_dp, mask_p); + lv_chart_draw_lines(chart, mask); break; case LV_CHART_COL: - lv_chart_draw_cols(obj_dp, mask_p); + lv_chart_draw_cols(chart, mask); break; case LV_CHART_POINT: - lv_chart_draw_points(obj_dp, mask_p); + lv_chart_draw_points(chart, mask); break; default: break; @@ -369,59 +374,58 @@ static bool lv_chart_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_m /** * Draw the division lines on chart background - * @param obj_dp pointer to chart object - * @param mask_p mask, inherited from the design function + * @param chart pointer to chart object + * @param mask mask, inherited from the design function */ -static void lv_chart_draw_div(lv_obj_t* obj_dp, const area_t * mask_p) +static void lv_chart_draw_div(lv_obj_t * chart, const area_t * mask) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - lv_charts_t * style_p = lv_obj_get_style(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); + lv_charts_t * style = lv_obj_get_style(chart); uint8_t div_i; point_t p1; point_t p2; - cord_t w = lv_obj_get_width(obj_dp); - cord_t h = lv_obj_get_height(obj_dp); - opa_t div_opa = (uint16_t)lv_obj_get_opa(obj_dp) * style_p->div_line_opa / 100; - cord_t x_ofs = lv_obj_get_x(obj_dp); - cord_t y_ofs = lv_obj_get_y(obj_dp); + cord_t w = lv_obj_get_width(chart); + cord_t h = lv_obj_get_height(chart); + opa_t div_opa = (uint16_t)lv_obj_get_opa(chart) * style->div_line_opa / 100; + cord_t x_ofs = lv_obj_get_x(chart); + cord_t y_ofs = lv_obj_get_y(chart); p1.x = 0 + x_ofs; p2.x = w + x_ofs; - for(div_i = 1; div_i <= ext_dp->hdiv_num; div_i ++) { - p1.y = (int32_t)((int32_t)h * div_i) / (ext_dp->hdiv_num + 1); + for(div_i = 1; div_i <= ext->hdiv_num; div_i ++) { + p1.y = (int32_t)((int32_t)h * div_i) / (ext->hdiv_num + 1); p1.y += y_ofs; p2.y = p1.y; - lv_draw_line(&p1, &p2, mask_p, &style_p->div_lines, div_opa); + lv_draw_line(&p1, &p2, mask, &style->div_line, div_opa); } p1.y = 0 + y_ofs; p2.y = h + y_ofs; - for(div_i = 1; div_i <= ext_dp->vdiv_num; div_i ++) { - p1.x = (int32_t)((int32_t)w * div_i) / (ext_dp->vdiv_num + 1); + for(div_i = 1; div_i <= ext->vdiv_num; div_i ++) { + p1.x = (int32_t)((int32_t)w * div_i) / (ext->vdiv_num + 1); p1.x += x_ofs; p2.x = p1.x; - lv_draw_line(&p1, &p2, mask_p, &style_p->div_lines, div_opa); + lv_draw_line(&p1, &p2, mask, &style->div_line, div_opa); } } /** * Draw the data lines as lines on a chart - * @param obj_dp pointer to chart object - * @param mask_p mask, inherited from the design function + * @param obj pointer to chart object */ -static void lv_chart_draw_lines(lv_obj_t* obj_dp, const area_t * mask_p) +static void lv_chart_draw_lines(lv_obj_t * chart, const area_t * mask) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - lv_charts_t * style_p = lv_obj_get_style(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); + lv_charts_t * style_p = lv_obj_get_style(chart); uint8_t i; point_t p1; point_t p2; - cord_t w = lv_obj_get_width(obj_dp); - cord_t h = lv_obj_get_height(obj_dp); - opa_t opa = (uint16_t)lv_obj_get_opa(obj_dp) * style_p->data_opa / 100; - cord_t x_ofs = lv_obj_get_x(obj_dp); - cord_t y_ofs = lv_obj_get_y(obj_dp); + cord_t w = lv_obj_get_width(chart); + cord_t h = lv_obj_get_height(chart); + opa_t opa = (uint16_t)lv_obj_get_opa(chart) * style_p->data_opa / 100; + cord_t x_ofs = lv_obj_get_x(chart); + cord_t y_ofs = lv_obj_get_y(chart); int32_t y_tmp; cord_t ** y_data; uint8_t dl_cnt = 0; @@ -429,28 +433,27 @@ static void lv_chart_draw_lines(lv_obj_t* obj_dp, const area_t * mask_p) lv_lines_get(LV_LINES_CHART, &lines); /*Go through all data lines*/ - LL_READ_BACK(ext_dp->dl_ll, y_data) { - + LL_READ_BACK(ext->dl_ll, y_data) { lines.objs.color = style_p->color[dl_cnt]; lines.width = style_p->width; p1.x = 0 + x_ofs; p2.x = 0 + x_ofs; - y_tmp = (int32_t)((int32_t) (*y_data)[0] - ext_dp->ymin) * h; - y_tmp = y_tmp / (ext_dp->ymax - ext_dp->ymin); + y_tmp = (int32_t)((int32_t) (*y_data)[0] - ext->ymin) * h; + y_tmp = y_tmp / (ext->ymax - ext->ymin); p2.y = h - y_tmp + y_ofs; - for(i = 1; i < ext_dp->pnum; i ++) { + for(i = 1; i < ext->pnum; i ++) { p1.x = p2.x; p1.y = p2.y; - p2.x = (w / (ext_dp->pnum - 1)) * i + x_ofs; + p2.x = (w / (ext->pnum - 1)) * i + x_ofs; - y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext_dp->ymin) * h; - y_tmp = y_tmp / (ext_dp->ymax - ext_dp->ymin); + y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext->ymin) * h; + y_tmp = y_tmp / (ext->ymax - ext->ymin); p2.y = h - y_tmp + y_ofs; - lv_draw_line(&p1, &p2, mask_p, &lines, opa); + lv_draw_line(&p1, &p2, mask, &lines, opa); } dl_cnt++; } @@ -458,21 +461,21 @@ static void lv_chart_draw_lines(lv_obj_t* obj_dp, const area_t * mask_p) /** * Draw the data lines as points on a chart - * @param obj_dp pointer to chart object - * @param mask_p mask, inherited from the design function + * @param chart pointer to chart object + * @param mask mask, inherited from the design function */ -static void lv_chart_draw_points(lv_obj_t* obj_dp, const area_t * mask_p) +static void lv_chart_draw_points(lv_obj_t * chart, const area_t * mask) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - lv_charts_t * style_p = lv_obj_get_style(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); + lv_charts_t * style_p = lv_obj_get_style(chart); uint8_t i; area_t cir_a; - cord_t w = lv_obj_get_width(obj_dp); - cord_t h = lv_obj_get_height(obj_dp); - opa_t opa = (uint16_t)lv_obj_get_opa(obj_dp) * style_p->data_opa / 100; - cord_t x_ofs = lv_obj_get_x(obj_dp); - cord_t y_ofs = lv_obj_get_y(obj_dp); + cord_t w = lv_obj_get_width(chart); + cord_t h = lv_obj_get_height(chart); + opa_t opa = (uint16_t)lv_obj_get_opa(chart) * style_p->data_opa / 100; + cord_t x_ofs = lv_obj_get_x(chart); + cord_t y_ofs = lv_obj_get_y(chart); int32_t y_tmp; cord_t ** y_data; uint8_t dl_cnt = 0; @@ -485,22 +488,22 @@ static void lv_chart_draw_points(lv_obj_t* obj_dp, const area_t * mask_p) rects.round = LV_RECT_CIRCLE; /*Go through all data lines*/ - LL_READ_BACK(ext_dp->dl_ll, y_data) { + LL_READ_BACK(ext->dl_ll, y_data) { rects.objs.color = style_p->color[dl_cnt]; rects.gcolor = color_mix(COLOR_BLACK, style_p->color[dl_cnt], style_p->dark_eff); - for(i = 0; i < ext_dp->pnum; i ++) { - cir_a.x1 = (w / (ext_dp->pnum - 1)) * i + x_ofs; + for(i = 0; i < ext->pnum; i ++) { + cir_a.x1 = (w / (ext->pnum - 1)) * i + x_ofs; cir_a.x2 = cir_a.x1 + rad; cir_a.x1 -= rad; - y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext_dp->ymin) * h; - y_tmp = y_tmp / (ext_dp->ymax - ext_dp->ymin); + y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext->ymin) * h; + y_tmp = y_tmp / (ext->ymax - ext->ymin); cir_a.y1 = h - y_tmp + y_ofs; cir_a.y2 = cir_a.y1 + rad; cir_a.y1 -= rad; - lv_draw_rect(&cir_a, mask_p, &rects, opa); + lv_draw_rect(&cir_a, mask, &rects, opa); } dl_cnt++; } @@ -508,57 +511,57 @@ static void lv_chart_draw_points(lv_obj_t* obj_dp, const area_t * mask_p) /** * Draw the data lines as columns on a chart - * @param obj_dp pointer to chart object - * @param mask_p mask, inherited from the design function + * @param chart pointer to chart object + * @param mask mask, inherited from the design function */ -static void lv_chart_draw_cols(lv_obj_t* obj_dp, const area_t * mask_p) +static void lv_chart_draw_cols(lv_obj_t * chart, const area_t * mask) { - lv_chart_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - lv_charts_t * style_p = lv_obj_get_style(obj_dp); + lv_chart_ext_t * ext = lv_obj_get_ext(chart); + lv_charts_t * style_p = lv_obj_get_style(chart); uint8_t i; area_t col_a; area_t col_mask; bool mask_ret; - cord_t w = lv_obj_get_width(obj_dp); - cord_t h = lv_obj_get_height(obj_dp); - opa_t opa = (uint16_t)lv_obj_get_opa(obj_dp) * style_p->data_opa / 100; + cord_t w = lv_obj_get_width(chart); + cord_t h = lv_obj_get_height(chart); + opa_t opa = (uint16_t)lv_obj_get_opa(chart) * style_p->data_opa / 100; int32_t y_tmp; cord_t ** y_data; uint8_t dl_cnt = 0; lv_rects_t rects; - cord_t x_ofs = w / ((ext_dp->dl_num + 1) * ext_dp->pnum) / 2; /*Shift with a half col.*/ + cord_t x_ofs = w / ((ext->dl_num + 1) * ext->pnum) / 2; /*Shift with a half col.*/ lv_rects_get(LV_RECTS_DEF, &rects); rects.bwidth = 0; rects.empty = 0; rects.round = 0; - col_a.y2 = obj_dp->cords.y2; + col_a.y2 = chart->cords.y2; /*Go through all data lines*/ - LL_READ_BACK(ext_dp->dl_ll, y_data) { + LL_READ_BACK(ext->dl_ll, y_data) { rects.objs.color = style_p->color[dl_cnt]; rects.gcolor = color_mix(COLOR_BLACK, style_p->color[dl_cnt], style_p->dark_eff); - for(i = 0; i < ext_dp->pnum; i ++) { + for(i = 0; i < ext->pnum; i ++) { /*Calculate the x coordinates. Suppose (dl_num + 1) * pnum columns */ - col_a.x1 = (int32_t)((int32_t)w * (i * (ext_dp->dl_num + 1) + dl_cnt)) / - (ext_dp->pnum * (ext_dp->dl_num + 1)) + obj_dp->cords.x1; - col_a.x2 = (int32_t)((int32_t)w * (i * (ext_dp->dl_num + 1) + dl_cnt + 1 )) / - (ext_dp->pnum * (ext_dp->dl_num + 1)) + obj_dp->cords.x1 - 1; + col_a.x1 = (int32_t)((int32_t)w * (i * (ext->dl_num + 1) + dl_cnt)) / + (ext->pnum * (ext->dl_num + 1)) + chart->cords.x1; + col_a.x2 = (int32_t)((int32_t)w * (i * (ext->dl_num + 1) + dl_cnt + 1 )) / + (ext->pnum * (ext->dl_num + 1)) + chart->cords.x1 - 1; col_a.x1 += x_ofs; col_a.x2 += x_ofs; - y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext_dp->ymin) * h; - y_tmp = y_tmp / (ext_dp->ymax - ext_dp->ymin); - col_a.y1 = h - y_tmp + obj_dp->cords.y1; + y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext->ymin) * h; + y_tmp = y_tmp / (ext->ymax - ext->ymin); + col_a.y1 = h - y_tmp + chart->cords.y1; - mask_ret = area_union(&col_mask, mask_p, &col_a); + mask_ret = area_union(&col_mask, mask, &col_a); if(mask_ret != false) { - lv_draw_rect(&obj_dp->cords, &col_mask, &rects, opa); + lv_draw_rect(&chart->cords, &col_mask, &rects, opa); } } dl_cnt++; @@ -572,15 +575,15 @@ static void lv_charts_init(void) { /*Default style*/ /* Background */ - lv_rects_get(LV_RECTS_DEF, &lv_charts_def.bg_rects); - lv_charts_def.bg_rects.objs.color = COLOR_MAKE(0x60, 0x80, 0xA0); - lv_charts_def.bg_rects.gcolor = COLOR_WHITE; - lv_charts_def.bg_rects.bcolor = COLOR_BLACK; + lv_rects_get(LV_RECTS_DEF, &lv_charts_def.bg); + lv_charts_def.bg.objs.color = COLOR_MAKE(0x60, 0x80, 0xA0); + lv_charts_def.bg.gcolor = COLOR_WHITE; + lv_charts_def.bg.bcolor = COLOR_BLACK; /* Div. line */ - lv_lines_get(LV_LINES_DECOR, &lv_charts_def.div_lines); - lv_charts_def.div_lines.width = 1 * LV_STYLE_MULT; - lv_charts_def.div_lines.objs.color = COLOR_BLACK; + lv_lines_get(LV_LINES_DECOR, &lv_charts_def.div_line); + lv_charts_def.div_line.width = 1 * LV_STYLE_MULT; + lv_charts_def.div_line.objs.color = COLOR_BLACK; lv_charts_def.div_line_opa = OPA_COVER; /*Data lines*/ diff --git a/lv_objx/lv_chart.h b/lv_objx/lv_chart.h index a2ee0f3c6..630ed1c9d 100644 --- a/lv_objx/lv_chart.h +++ b/lv_objx/lv_chart.h @@ -35,11 +35,12 @@ typedef enum /*Style of chart background*/ typedef struct { - lv_rects_t bg_rects; - lv_lines_t div_lines; + lv_rects_t bg; /*Style of ancestor*/ + /*New style element for this type */ + lv_lines_t div_line; uint8_t div_line_opa; /*Percentage of obj. opacity*/ color_t color[LV_CHART_DL_NUM]; /*Line/Point/Col color */ - uint16_t width; /*Line width or point radius*/ + uint16_t width; /*Line width or point radius*/ opa_t data_opa; /*Line/Point/Col opacity in the percentage of obj. opacity*/ uint8_t dark_eff; /*Dark effect on the bottom of ó points and columns*/ }lv_charts_t; @@ -53,12 +54,12 @@ typedef enum /*Data of chart background*/ typedef struct { - lv_rect_ext_t rect_ext; + lv_rect_ext_t bg; /*Ext. of ancestor*/ + /*New data for this type */ cord_t ymin; cord_t ymax; uint8_t hdiv_num; uint8_t vdiv_num; - ll_dsc_t dl_ll; /*Linked list for the data line pointers (stores cord_t * )*/ uint16_t pnum; /*Point number in a data line*/ uint8_t type :2; /*Line, column or point chart*/ @@ -68,22 +69,22 @@ typedef struct /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t* lv_chart_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_chart_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -lv_charts_t * lv_charts_get(lv_charts_builtin_t style, lv_charts_t * copy_p); +lv_obj_t * lv_chart_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_chart_signal(lv_obj_t * chart, lv_signal_t sign, void * param); +lv_charts_t * lv_charts_get(lv_charts_builtin_t style, lv_charts_t * copy); -cord_t * lv_chart_add_dataline(lv_obj_t* obj_dp); +cord_t * lv_chart_add_dataline(lv_obj_t * chart); -void lv_chart_refr(lv_obj_t * obj_dp); +void lv_chart_refr(lv_obj_t * chart); -void lv_chart_set_type(lv_obj_t * obj_dp, lv_chart_type_t type); -void lv_chart_set_hvdiv(lv_obj_t * obj_dp, uint8_t hdiv, uint8_t vdiv); -void lv_chart_set_range(lv_obj_t * obj_dp, cord_t ymin, cord_t ymax); -void lv_chart_set_pnum(lv_obj_t * obj_dp, uint16_t pnum); -void lv_chart_set_next(lv_obj_t * obj_dp, cord_t * dl_p, cord_t y); +void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type); +void lv_chart_set_hvdiv(lv_obj_t * chart, uint8_t hdiv, uint8_t vdiv); +void lv_chart_set_range(lv_obj_t * chart, cord_t ymin, cord_t ymax); +void lv_chart_set_pnum(lv_obj_t * chart, uint16_t pnum); +void lv_chart_set_next(lv_obj_t * chart, cord_t * dl, cord_t y); -lv_chart_type_t lv_chart_get_type(lv_obj_t * obj_dp); -uint16_t lv_chart_get_pnum(lv_obj_t * obj_dp); +lv_chart_type_t lv_chart_get_type(lv_obj_t * chart); +uint16_t lv_chart_get_pnum(lv_obj_t * chart); /********************** * MACROS diff --git a/lv_objx/lv_img.c b/lv_objx/lv_img.c index 60e90f027..72f7d7cd5 100644 --- a/lv_objx/lv_img.c +++ b/lv_objx/lv_img.c @@ -25,7 +25,7 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_img_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_img_design(lv_obj_t * img, const area_t * mask, lv_design_mode_t mode); static void lv_imgs_init(void); /********************** @@ -45,68 +45,67 @@ static lv_imgs_t lv_imgs_dark; /** * Create an image objects - * @param par_dp pointer to an object, it will be the parent of the new button - * @param copy_dp pointer to a rectangle object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new button + * @param copy pointer to a rectangle object, if not NULL then the new object will be copied from it * @return pointer to the created image */ -lv_obj_t* lv_img_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_img_create(lv_obj_t * par, lv_obj_t * copy) { - lv_obj_t* new_obj_dp = NULL; + lv_obj_t * new_img = NULL; /*Create a basic object*/ - new_obj_dp = lv_obj_create(par_dp, NULL); + new_img = lv_obj_create(par, NULL); /*Extend the basic object to image object*/ - lv_obj_alloc_ext(new_obj_dp, sizeof(lv_img_ext_t)); + lv_obj_alloc_ext(new_img, sizeof(lv_img_ext_t)); /*Init the new object*/ - lv_obj_set_signal_f(new_obj_dp, lv_img_signal); - lv_obj_set_design_f(new_obj_dp, lv_img_design); + lv_obj_set_signal_f(new_img, lv_img_signal); + lv_obj_set_design_f(new_img, lv_img_design); - lv_img_ext_t * img_ext_dp = lv_obj_get_ext(new_obj_dp); + lv_img_ext_t * img_ext = lv_obj_get_ext(new_img); - if(copy_dp == NULL) { - img_ext_dp->fn_dp = NULL; - img_ext_dp->w = lv_obj_get_width(new_obj_dp); - img_ext_dp->h = lv_obj_get_height(new_obj_dp); - img_ext_dp->transp = 0; + if(copy == NULL) { + img_ext->fn = NULL; + img_ext->w = lv_obj_get_width(new_img); + img_ext->h = lv_obj_get_height(new_img); + img_ext->transp = 0; /*Enable auto size for non screens*/ - if(par_dp != NULL) { - img_ext_dp->auto_size = 1; + if(par != NULL) { + img_ext->auto_size = 1; } else { - img_ext_dp->auto_size = 0; + img_ext->auto_size = 0; } - lv_obj_set_style(new_obj_dp, lv_imgs_get(LV_IMGS_DEF, NULL)); + lv_obj_set_style(new_img, lv_imgs_get(LV_IMGS_DEF, NULL)); } else { - img_ext_dp->auto_size = LV_EA(copy_dp, lv_img_ext_t)->auto_size; - lv_img_set_file(new_obj_dp, LV_EA(copy_dp, lv_img_ext_t)->fn_dp); + img_ext->auto_size = LV_EA(copy, lv_img_ext_t)->auto_size; + lv_img_set_file(new_img, LV_EA(copy, lv_img_ext_t)->fn); } - - return new_obj_dp; + return new_img; } /** * Signal function of the image - * @param obj_dp pointer to animage object + * @param img pointer to animage object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_img_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * param) { bool valid = true; /* Include the ancient signal function */ - valid = lv_obj_signal(obj_dp, sign, param); + valid = lv_obj_signal(img, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ if(valid != false) { - lv_img_ext_t * img_p = lv_obj_get_ext(obj_dp); + lv_img_ext_t * img_p = lv_obj_get_ext(img); switch(sign) { case LV_SIGNAL_CLEANUP: - dm_free(img_p->fn_dp); + dm_free(img_p->fn); break; default: break; @@ -119,10 +118,10 @@ bool lv_img_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Return with a pointer to built-in style and/or copy it to a variable * @param style a style name from lv_imgs_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_imgs_t style */ -lv_imgs_t * lv_imgs_get(lv_imgs_builtin_t style, lv_imgs_t * copy_p) +lv_imgs_t * lv_imgs_get(lv_imgs_builtin_t style, lv_imgs_t * copy) { static bool style_inited = false; @@ -148,9 +147,9 @@ lv_imgs_t * lv_imgs_get(lv_imgs_builtin_t style, lv_imgs_t * copy_p) style_p = &lv_imgs_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_imgs_t)); - else memcpy(copy_p, &lv_imgs_def, sizeof(lv_imgs_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_imgs_t)); + else memcpy(copy, &lv_imgs_def, sizeof(lv_imgs_t)); } return style_p; @@ -159,14 +158,14 @@ lv_imgs_t * lv_imgs_get(lv_imgs_builtin_t style, lv_imgs_t * copy_p) /** * Create a file to the RAMFS from a picture data * @param fn file name of the new file (e.g. "pic1", will be available at "U:/pic1") - * @param data_p pointer to a color map with lv_img_raw_header_t header + * @param data pointer to a color map with lv_img_raw_header_t header * @return result of the file operation. FS_RES_OK or any error from fs_res_t */ -fs_res_t lv_img_create_file(const char * fn, const color_int_t * data_p) +fs_res_t lv_img_create_file(const char * fn, const color_int_t * data) { - const lv_img_raw_header_t * raw_p = (lv_img_raw_header_t *) data_p; + const lv_img_raw_header_t * raw_p = (lv_img_raw_header_t *) data; fs_res_t res; - res = ufs_create_const(fn, data_p, raw_p->w * raw_p->h * sizeof(color_t)); + res = ufs_create_const(fn, data, raw_p->w * raw_p->h * sizeof(color_t)); return res; } @@ -177,12 +176,12 @@ fs_res_t lv_img_create_file(const char * fn, const color_int_t * data_p) /** * Set a file to the image - * @param obj_dp pointer to an image object + * @param img pointer to an image object * @param fn file name in the RAMFS to set as picture (e.g. "U:/pic1"). */ -void lv_img_set_file(lv_obj_t* obj_dp, const char * fn) +void lv_img_set_file(lv_obj_t * img, const char * fn) { - lv_img_ext_t * img_ext_p = lv_obj_get_ext(obj_dp); + lv_img_ext_t * ext = lv_obj_get_ext(img); fs_file_t file; fs_res_t res; @@ -196,43 +195,43 @@ void lv_img_set_file(lv_obj_t* obj_dp, const char * fn) if(res != FS_RES_OK || rn != sizeof(header)) { /*Create a dummy header*/ - header.w = lv_obj_get_width(obj_dp); - header.h = lv_obj_get_height(obj_dp); + header.w = lv_obj_get_width(img); + header.h = lv_obj_get_height(img); header.transp = 0; } fs_close(&file); - img_ext_p->w = header.w; - img_ext_p->h = header.h; - img_ext_p->transp = header.transp; + ext->w = header.w; + ext->h = header.h; + ext->transp = header.transp; #if LV_UPSCALE_MAP != 0 - img_ext_p->w *= LV_DOWNSCALE; - img_ext_p->h *= LV_DOWNSCALE; + ext->w *= LV_DOWNSCALE; + ext->h *= LV_DOWNSCALE; #endif if(fn != NULL) { - img_ext_p->fn_dp = dm_realloc(img_ext_p->fn_dp, strlen(fn) + 1); - strcpy(img_ext_p->fn_dp, fn); + ext->fn = dm_realloc(ext->fn, strlen(fn) + 1); + strcpy(ext->fn, fn); } else { - img_ext_p->fn_dp = NULL; + ext->fn = NULL; } - - if(lv_img_get_auto_size(obj_dp) != false) { - lv_obj_set_size(obj_dp, img_ext_p->w, img_ext_p->h); + if(lv_img_get_auto_size(img) != false) { + lv_obj_set_size(img, ext->w, ext->h); } } /** - * Enable the auto size feature. If enabled the object size will be same as the picture size. - * @param obj_dp pointer to an image - * @param en true: auto size enable, false: auto size disable + * Enable the auto size feature. + * If enabled the object size will be same as the picture size. + * @param img pointer to an image + * @param autotosize true: auto size enable, false: auto size disable */ -void lv_img_set_auto_size(lv_obj_t* obj_dp, bool en) +void lv_img_set_auto_size(lv_obj_t * img, bool autotosize) { - lv_img_ext_t * img_ext_p = lv_obj_get_ext(obj_dp); + lv_img_ext_t * ext = lv_obj_get_ext(img); - img_ext_p->auto_size = (en == false ? 0 : 1); + ext->auto_size = (autotosize == false ? 0 : 1); } /*===================== @@ -241,14 +240,14 @@ void lv_img_set_auto_size(lv_obj_t* obj_dp, bool en) /** * Get the auto size enable attribute - * @param obj_dp pinter to an image + * @param img pointer to an image * @return true: auto size is enabled, false: auto size is disabled */ -bool lv_img_get_auto_size(lv_obj_t* obj_dp) +bool lv_img_get_auto_size(lv_obj_t * img) { - lv_img_ext_t * img_ext_p = lv_obj_get_ext(obj_dp); + lv_img_ext_t * ext = lv_obj_get_ext(img); - return img_ext_p->auto_size == 0 ? false : true; + return ext->auto_size == 0 ? false : true; } /********************** @@ -257,7 +256,7 @@ bool lv_img_get_auto_size(lv_obj_t* obj_dp) /** * Handle the drawing related tasks of the images - * @param obj_dp pointer to an object + * @param img pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -265,33 +264,33 @@ bool lv_img_get_auto_size(lv_obj_t* obj_dp) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_img_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_img_design(lv_obj_t * img, const area_t * mask, lv_design_mode_t mode) { - lv_imgs_t * imgs_p = lv_obj_get_style(obj_dp); - lv_img_ext_t * ext_p = lv_obj_get_ext(obj_dp); + lv_imgs_t * imgs_p = lv_obj_get_style(img); + lv_img_ext_t * ext = lv_obj_get_ext(img); if(mode == LV_DESIGN_COVER_CHK) { - if(ext_p->transp == 0) { + if(ext->transp == 0) { bool cover; - cover = area_is_in(mask_p, &obj_dp->cords); + cover = area_is_in(mask, &img->cords); return cover; } else return false; } else if(mode == LV_DESIGN_DRAW_MAIN) { area_t cords; - lv_obj_get_cords(obj_dp, &cords); - opa_t opa = lv_obj_get_opa(obj_dp); + lv_obj_get_cords(img, &cords); + opa_t opa = lv_obj_get_opa(img); area_t cords_tmp; cords_tmp.y1 = cords.y1; - cords_tmp.y2 = cords.y1 + ext_p->h - 1; + cords_tmp.y2 = cords.y1 + ext->h - 1; - for(; cords_tmp.y1 < cords.y2; cords_tmp.y1 += ext_p->h, cords_tmp.y2 += ext_p->h) { + for(; cords_tmp.y1 < cords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { cords_tmp.x1 = cords.x1; - cords_tmp.x2 = cords.x1 + ext_p->w - 1; - for(; cords_tmp.x1 < cords.x2; cords_tmp.x1 += ext_p->w, cords_tmp.x2 += ext_p->w) { - lv_draw_img(&cords_tmp, mask_p, imgs_p, opa, ext_p->fn_dp); + cords_tmp.x2 = cords.x1 + ext->w - 1; + for(; cords_tmp.x1 < cords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { + lv_draw_img(&cords_tmp, mask, imgs_p, opa, ext->fn); } } } diff --git a/lv_objx/lv_img.h b/lv_objx/lv_img.h index 7644ccee7..eefb6eb38 100644 --- a/lv_objx/lv_img.h +++ b/lv_objx/lv_img.h @@ -18,26 +18,20 @@ /********************* * DEFINES *********************/ -#define LV_IMG_DECLARE(var_name) extern const color_int_t var_name[]; /********************** * TYPEDEFS **********************/ + +/*Style of template*/ typedef struct { - lv_objs_t objs; + lv_objs_t objs; /*Style of ancestor*/ + /*New style element for this type */ opa_t recolor_opa; }lv_imgs_t; -typedef struct -{ - char* fn_dp; - cord_t w; - cord_t h; - uint8_t auto_size :1; - uint8_t transp :1; /*Transp. bit in the images header (library handles this)*/ -}lv_img_ext_t; - +/*Built-in styles of template*/ typedef enum { LV_IMGS_DEF, @@ -45,6 +39,19 @@ typedef enum LV_IMGS_DARK, }lv_imgs_builtin_t; +/*Data of template*/ +typedef struct +{ + /*No ext. because inherited from the base object*/ /*Ext. of ancestor*/ + /*New data for this type */ + char* fn; + cord_t w; + cord_t h; + uint8_t auto_size :1; + uint8_t transp :1; /*Transp. bit in the images header (library handles this)*/ +}lv_img_ext_t; + +/*Image header*/ typedef struct { uint16_t w; @@ -58,20 +65,21 @@ typedef struct * GLOBAL PROTOTYPES **********************/ /*Create function*/ -lv_obj_t* lv_img_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); +lv_obj_t * lv_img_create(lv_obj_t * par, lv_obj_t * copy); -bool lv_img_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -void lv_img_set_file(lv_obj_t* obj_p, const char * fn); +bool lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * param); +void lv_img_set_file(lv_obj_t * img, const char * fn); fs_res_t lv_img_create_file(const char * fn, const color_int_t * data_p); -void lv_img_set_auto_size(lv_obj_t* obj_dp, bool en); +void lv_img_set_auto_size(lv_obj_t * img, bool autotosize); -bool lv_img_get_auto_size(lv_obj_t* obj_dp); +bool lv_img_get_auto_size(lv_obj_t * img); -lv_imgs_t * lv_imgs_get(lv_imgs_builtin_t style, lv_imgs_t * copy_p); +lv_imgs_t * lv_imgs_get(lv_imgs_builtin_t style, lv_imgs_t * copy); /********************** * MACROS **********************/ +#define LV_IMG_DECLARE(var_name) extern const color_int_t var_name[]; #endif diff --git a/lv_objx/lv_label.c b/lv_objx/lv_label.c index 23676d815..530cca7ff 100644 --- a/lv_objx/lv_label.c +++ b/lv_objx/lv_label.c @@ -26,7 +26,7 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_label_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_label_design(lv_obj_t * label, const area_t * mask, lv_design_mode_t mode); static void lv_labels_init(void); /********************** @@ -47,67 +47,67 @@ static lv_labels_t lv_labels_txt; /** * Create a label objects - * @param par_dp pointer to an object, it will be the parent of the new label - * @param copy_dp pointer to a button object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new label + * @param copy pointer to a button object, if not NULL then the new object will be copied from it * @return pointer to the created button */ -lv_obj_t* lv_label_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_label_create(lv_obj_t * par, lv_obj_t * copy) { /*Create a basic object*/ - lv_obj_t* new_obj = lv_obj_create(par_dp, copy_dp); - dm_assert(new_obj); + lv_obj_t * new_label = lv_obj_create(par, copy); + dm_assert(new_label); /*Extend the basic object to a label object*/ - lv_obj_alloc_ext(new_obj, sizeof(lv_label_ext_t)); + lv_obj_alloc_ext(new_label, sizeof(lv_label_ext_t)); - lv_label_ext_t * label_p = lv_obj_get_ext(new_obj); - label_p->txt_dp = NULL; + lv_label_ext_t * label_p = lv_obj_get_ext(new_label); + label_p->txt = NULL; - lv_obj_set_design_f(new_obj, lv_label_design); - lv_obj_set_signal_f(new_obj, lv_label_signal); + lv_obj_set_design_f(new_label, lv_label_design); + lv_obj_set_signal_f(new_label, lv_label_signal); /*Init the new label*/ - if(copy_dp == NULL) { - lv_obj_set_opa(new_obj, OPA_COVER); - lv_obj_set_click(new_obj, false); - lv_obj_set_style(new_obj, lv_labels_get(LV_LABELS_DEF, NULL)); - lv_label_set_fixw(new_obj, false); - lv_label_set_text(new_obj, "Text"); + if(copy == NULL) { + lv_obj_set_opa(new_label, OPA_COVER); + lv_obj_set_click(new_label, false); + lv_obj_set_style(new_label, lv_labels_get(LV_LABELS_DEF, NULL)); + lv_label_set_fixw(new_label, false); + lv_label_set_text(new_label, "Text"); } - /*Copy 'ori_dp' if not NULL*/ + /*Copy 'copy' if not NULL*/ else { - lv_label_set_fixw(new_obj, lv_label_get_fixw(copy_dp)); - lv_label_set_text(new_obj, lv_label_get_text(copy_dp)); + lv_label_set_fixw(new_label, lv_label_get_fixw(copy)); + lv_label_set_text(new_label, lv_label_get_text(copy)); } - return new_obj; + return new_label; } /** * Signal function of the label - * @param obj_dp pointer to a label object + * @param label pointer to a label object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_label_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_label_signal(lv_obj_t * label, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_obj_signal(obj_dp, sign, param); + valid = lv_obj_signal(label, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ if(valid != false) { - lv_label_ext_t * label_p = lv_obj_get_ext(obj_dp); + lv_label_ext_t * label_p = lv_obj_get_ext(label); /*No signal handling*/ switch(sign) { case LV_SIGNAL_CLEANUP: - dm_free(label_p->txt_dp); - label_p->txt_dp = NULL; + dm_free(label_p->txt); + label_p->txt = NULL; break; case LV_SIGNAL_STYLE_CHG: - lv_label_set_text(obj_dp, NULL); + lv_label_set_text(label, NULL); break; default: @@ -124,27 +124,26 @@ bool lv_label_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Set a new text for a label - * @param obj_dp pointer to a label object + * @param label pointer to a label object * @param text '\0' terminated character string. If NULL then refresh with the current text. */ -void lv_label_set_text(lv_obj_t * obj_dp, const char * text) +void lv_label_set_text(lv_obj_t * label, const char * text) { - - lv_obj_inv(obj_dp); + lv_obj_inv(label); - lv_label_ext_t * label_ext_dp = lv_obj_get_ext(obj_dp); + lv_label_ext_t * ext = lv_obj_get_ext(label); - if(text == label_ext_dp->txt_dp) text = NULL; + if(text == ext->txt) text = NULL; if(text != NULL) { uint32_t len = strlen(text) + 1; - if(label_ext_dp->txt_dp != NULL) { - dm_free(label_ext_dp->txt_dp); + if(ext->txt != NULL) { + dm_free(ext->txt); } - label_ext_dp->txt_dp = dm_alloc(len); - strcpy(label_ext_dp->txt_dp, text); + ext->txt = dm_alloc(len); + strcpy(ext->txt, text); } else { - text = label_ext_dp->txt_dp; + text = ext->txt; } /*If 'text" still NULL then nothing to do: return*/ @@ -152,30 +151,30 @@ void lv_label_set_text(lv_obj_t * obj_dp, const char * text) uint32_t line_start = 0; uint32_t new_line_start = 0; - cord_t max_length = lv_obj_get_width(obj_dp); - lv_labels_t * labels_p = lv_obj_get_style(obj_dp); - const font_t * font_p = font_get(labels_p->font); - uint8_t letter_height = font_get_height(font_p); + cord_t max_length = lv_obj_get_width(label); + lv_labels_t * labels = lv_obj_get_style(label); + const font_t * font = font_get(labels->font); + uint8_t letter_height = font_get_height(font); cord_t new_height = 0; cord_t longest_line = 0; cord_t act_line_length; /*If the fix width is not enabled the set the max length to very big */ - if(label_ext_dp->fixw == 0) { + if(ext->fixw == 0) { max_length = LV_CORD_MAX; } /*Calc. the height and longest line*/; while (text[line_start] != '\0') { - new_line_start += txt_get_next_line(&text[line_start], font_p, labels_p->letter_space, max_length); + new_line_start += txt_get_next_line(&text[line_start], font, labels->letter_space, max_length); new_height += letter_height; - new_height += labels_p->line_space; + new_height += labels->line_space; /*If no fix width then calc. the longest line */ - if(label_ext_dp->fixw == false) { + if(ext->fixw == false) { act_line_length = txt_get_width(&text[line_start], new_line_start - line_start, - font_p, labels_p->letter_space); + font, labels->letter_space); if(act_line_length > longest_line) { longest_line = act_line_length; } @@ -185,29 +184,29 @@ void lv_label_set_text(lv_obj_t * obj_dp, const char * text) } /*Correction with the last line space*/ - new_height -= labels_p->line_space; + new_height -= labels->line_space; - if(label_ext_dp->fixw == 0) { + if(ext->fixw == 0) { /*Refresh the full size */ - lv_obj_set_size(obj_dp, longest_line, new_height); + lv_obj_set_size(label, longest_line, new_height); } else { /*With fix width only the height can change*/ - lv_obj_set_height(obj_dp, new_height); + lv_obj_set_height(label, new_height); } - lv_obj_inv(obj_dp); + lv_obj_inv(label); } /** * Set the fix width attribute * If enabled the text will be automatically broken to fit to the size - * @param obj_dp pointer to a label object + * @param label pointer to a label object * @param fixw true: enable fix width for the label */ -void lv_label_set_fixw(lv_obj_t * obj_dp, bool fixw) +void lv_label_set_fixw(lv_obj_t * label, bool fixw) { - lv_label_ext_t * ext_p = lv_obj_get_ext(obj_dp); - ext_p->fixw = fixw == false ? 0 : 1; + lv_label_ext_t * ext = lv_obj_get_ext(label); + ext->fixw = fixw == false ? 0 : 1; } /*===================== @@ -216,56 +215,56 @@ void lv_label_set_fixw(lv_obj_t * obj_dp, bool fixw) /** * Get the text of a label - * @param obj_dp pointer to a label object + * @param label pointer to a label object * @return the text of the label */ -const char * lv_label_get_text(lv_obj_t* obj_dp) +const char * lv_label_get_text(lv_obj_t * label) { - lv_label_ext_t * label_p = lv_obj_get_ext(obj_dp); + lv_label_ext_t * ext = lv_obj_get_ext(label); - return label_p->txt_dp; + return ext->txt; } /** * Get the fix width attribute of a label - * @param obj_dp pointer to a label object + * @param label pointer to a label object * @return true: fix width is enabled */ -bool lv_label_get_fixw(lv_obj_t * obj_dp) +bool lv_label_get_fixw(lv_obj_t * label) { - lv_label_ext_t * ext_p = lv_obj_get_ext(obj_dp); - return ext_p->fixw == 0 ? false: true; + lv_label_ext_t * ext = lv_obj_get_ext(label); + return ext->fixw == 0 ? false: true; } /** * Get the relative x and y coordinates of a letter - * @param obj_dp pointer to a label object + * @param label pointer to a label object * @param index index of the letter (0 ... text length) - * @param pos_p store the result here (E.g. index = 0 gives 0;0 coordinates) + * @param pos store the result here (E.g. index = 0 gives 0;0 coordinates) */ -void lv_label_get_letter_pos(lv_obj_t * obj_dp, uint16_t index, point_t * pos_p) +void lv_label_get_letter_pos(lv_obj_t * label, uint16_t index, point_t * pos) { - const char * text = lv_label_get_text(obj_dp); - lv_label_ext_t * ext_p = lv_obj_get_ext(obj_dp); + const char * text = lv_label_get_text(label); + lv_label_ext_t * ext = lv_obj_get_ext(label); uint32_t line_start = 0; uint32_t new_line_start = 0; - cord_t max_length = lv_obj_get_width(obj_dp); - lv_labels_t * labels_p = lv_obj_get_style(obj_dp); - const font_t * font_p = font_get(labels_p->font); - uint8_t letter_height = font_get_height(font_p); + cord_t max_length = lv_obj_get_width(label); + lv_labels_t * labels = lv_obj_get_style(label); + const font_t * font = font_get(labels->font); + uint8_t letter_height = font_get_height(font); cord_t y = 0; /*If the fix width is not enabled the set the max length to very big */ - if(ext_p->fixw == 0) { + if(ext->fixw == 0) { max_length = LV_CORD_MAX; } /*Search the line of the index letter */; while (text[new_line_start] != '\0') { - new_line_start += txt_get_next_line(&text[line_start], font_p, labels_p->letter_space, max_length); + new_line_start += txt_get_next_line(&text[line_start], font, labels->letter_space, max_length); if(index < new_line_start || text[new_line_start] == '\0') break; /*The line of 'index' letter begins at 'line_start'*/ - y += letter_height + labels_p->line_space; + y += letter_height + labels->line_space; line_start = new_line_start; } @@ -273,65 +272,65 @@ void lv_label_get_letter_pos(lv_obj_t * obj_dp, uint16_t index, point_t * pos_p) cord_t x = 0; uint32_t i; for(i = line_start; i < index; i++) { - x += font_get_width(font_p, text[i]) + labels_p->letter_space; + x += font_get_width(font, text[i]) + labels->letter_space; } - if(labels_p->mid != 0) { + if(labels->mid != 0) { cord_t line_w; line_w = txt_get_width(&text[line_start], new_line_start - line_start, - font_p, labels_p->letter_space); - x += lv_obj_get_width(obj_dp) / 2 - line_w / 2; + font, labels->letter_space); + x += lv_obj_get_width(label) / 2 - line_w / 2; } - pos_p->x = x; - pos_p->y = y; + pos->x = x; + pos->y = y; } /** * Get the index of letter on a relative point of a label - * @param obj_dp pointer to label object - * @param pos_p pointer to point with coordinates on a the label + * @param label pointer to label object + * @param pos pointer to point with coordinates on a the label * @return the index of the letter on the 'pos_p' point (E.g. on 0;0 is the 0. letter) */ -uint16_t lv_label_get_letter_on(lv_obj_t * obj_dp, point_t * pos_p) +uint16_t lv_label_get_letter_on(lv_obj_t * label, point_t * pos) { - const char * text = lv_label_get_text(obj_dp); - lv_label_ext_t * ext_p = lv_obj_get_ext(obj_dp); + const char * text = lv_label_get_text(label); + lv_label_ext_t * ext = lv_obj_get_ext(label); uint32_t line_start = 0; uint32_t new_line_start = 0; - cord_t max_length = lv_obj_get_width(obj_dp); - lv_labels_t * labels_p = lv_obj_get_style(obj_dp); - const font_t * font_p = font_get(labels_p->font); - uint8_t letter_height = font_get_height(font_p); + cord_t max_length = lv_obj_get_width(label); + lv_labels_t * labels = lv_obj_get_style(label); + const font_t * font = font_get(labels->font); + uint8_t letter_height = font_get_height(font); cord_t y = 0; /*If the fix width is not enabled the set the max length to very big */ - if(ext_p->fixw == 0) { + if(ext->fixw == 0) { max_length = LV_CORD_MAX; } /*Search the line of the index letter */; while (text[line_start] != '\0') { - new_line_start += txt_get_next_line(&text[line_start], font_p, labels_p->letter_space, max_length); - if(pos_p->y <= y + letter_height + labels_p->line_space) break; /*The line is found ('line_start')*/ - y += letter_height + labels_p->line_space; + new_line_start += txt_get_next_line(&text[line_start], font, labels->letter_space, max_length); + if(pos->y <= y + letter_height + labels->line_space) break; /*The line is found ('line_start')*/ + y += letter_height + labels->line_space; line_start = new_line_start; } /*Calculate the x coordinate*/ cord_t x = 0; - if(labels_p->mid != 0) { + if(labels->mid != 0) { cord_t line_w; line_w = txt_get_width(&text[line_start], new_line_start - line_start, - font_p, labels_p->letter_space); - x += lv_obj_get_width(obj_dp) / 2 - line_w / 2; + font, labels->letter_space); + x += lv_obj_get_width(label) / 2 - line_w / 2; } uint32_t i; for(i = line_start; i < new_line_start-1; i++) { - x += font_get_width(font_p, text[i]) + labels_p->letter_space; - if(pos_p->x < x) break; + x += font_get_width(font, text[i]) + labels->letter_space; + if(pos->x < x) break; } @@ -342,10 +341,10 @@ uint16_t lv_label_get_letter_on(lv_obj_t * obj_dp, point_t * pos_p) /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_labels_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_labels_t style */ -lv_labels_t * lv_labels_get(lv_labels_builtin_t style, lv_labels_t * copy_p) +lv_labels_t * lv_labels_get(lv_labels_builtin_t style, lv_labels_t * copy) { static bool style_inited = false; @@ -374,9 +373,9 @@ lv_labels_t * lv_labels_get(lv_labels_builtin_t style, lv_labels_t * copy_p) style_p = &lv_labels_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_labels_t)); - else memcpy(copy_p, &lv_labels_def, sizeof(lv_labels_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_labels_t)); + else memcpy(copy, &lv_labels_def, sizeof(lv_labels_t)); } return style_p; @@ -389,7 +388,7 @@ lv_labels_t * lv_labels_get(lv_labels_builtin_t style, lv_labels_t * copy_p) /** * Handle the drawing related tasks of the labels - * @param obj_dp pointer to an object + * @param label pointer to a label object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -397,19 +396,19 @@ lv_labels_t * lv_labels_get(lv_labels_builtin_t style, lv_labels_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_label_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_label_design(lv_obj_t * label, const area_t * mask, lv_design_mode_t mode) { /* A label never covers an area */ if(mode == LV_DESIGN_COVER_CHK) return false; else if(mode == LV_DESIGN_DRAW_MAIN) { /*TEST: draw a background for the label*/ - /*lv_vfill(&obj_dp->cords, mask_p, COLOR_LIME, OPA_COVER); */ + /*lv_vfill(&obj->cords, mask_p, COLOR_LIME, OPA_COVER); */ area_t cords; - lv_obj_get_cords(obj_dp, &cords); - opa_t opa= lv_obj_get_opa(obj_dp); - const char * txt = lv_label_get_text(obj_dp); - lv_draw_label(&cords, mask_p, lv_obj_get_style(obj_dp), opa, txt); + lv_obj_get_cords(label, &cords); + opa_t opa= lv_obj_get_opa(label); + const char * txt = lv_label_get_text(label); + lv_draw_label(&cords, mask, lv_obj_get_style(label), opa, txt); } return true; } diff --git a/lv_objx/lv_label.h b/lv_objx/lv_label.h index 6ef27c26d..26100cc3b 100644 --- a/lv_objx/lv_label.h +++ b/lv_objx/lv_label.h @@ -23,21 +23,18 @@ * TYPEDEFS **********************/ +/*Style of label*/ typedef struct { - lv_objs_t objs; + lv_objs_t objs; /*Style of ancestor*/ + /*New style element for this type */ font_types_t font; uint16_t letter_space; uint16_t line_space; uint8_t mid :1; }lv_labels_t; -typedef struct -{ - char * txt_dp; - uint8_t fixw :1; -}lv_label_ext_t; - +/*Built-in styles of label*/ typedef enum { LV_LABELS_DEF, @@ -45,24 +42,30 @@ typedef enum LV_LABELS_TXT, LV_LABELS_TITLE, }lv_labels_builtin_t; + +/*Data of label*/ +typedef struct +{ + /*Inherited from 'base_obj' so no inherited ext.*/ /*Ext. of ancestor*/ + /*New data for this type */ + char * txt; + uint8_t fixw :1; +}lv_label_ext_t; /********************** * GLOBAL PROTOTYPES **********************/ /*Create function*/ -lv_obj_t* lv_label_create(lv_obj_t* par_dp, lv_obj_t * ori_dp); +lv_obj_t * lv_label_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_label_signal(lv_obj_t * label, lv_signal_t sign, void * param); +lv_labels_t * lv_labels_get(lv_labels_builtin_t style, lv_labels_t * copy); -bool lv_label_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); - - -void lv_label_set_text(lv_obj_t* obj_dp, const char * text); -void lv_label_set_fixw(lv_obj_t * obj_dp, bool fixw); -const char * lv_label_get_text(lv_obj_t* obj_dp); -bool lv_label_get_fixw(lv_obj_t * obj_dp); -void lv_label_get_letter_pos(lv_obj_t * obj_dp, uint16_t index, point_t * pos_p); -uint16_t lv_label_get_letter_on(lv_obj_t * obj_dp, point_t * pos_p); - -lv_labels_t * lv_labels_get(lv_labels_builtin_t style, lv_labels_t * copy_p); +void lv_label_set_text(lv_obj_t * label, const char * text); +void lv_label_set_fixw(lv_obj_t * label, bool fixw); +const char * lv_label_get_text(lv_obj_t * label); +bool lv_label_get_fixw(lv_obj_t * label); +void lv_label_get_letter_pos(lv_obj_t * label, uint16_t index, point_t * pos); +uint16_t lv_label_get_letter_on(lv_obj_t * label, point_t * pos); /********************** * MACROS diff --git a/lv_objx/lv_led.c b/lv_objx/lv_led.c index aa8f952e0..259aeddfd 100644 --- a/lv_objx/lv_led.c +++ b/lv_objx/lv_led.c @@ -3,12 +3,6 @@ * */ -/*Search an replace: led -> object normal name with lower case (e.g. button, label etc.) - * led -> object short name with lower case(e.g. btn, label etc) - * LED -> object short name with upper case (e.g. BTN, LABEL etc.) - * - */ - /********************* * INCLUDES *********************/ @@ -33,7 +27,7 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_led_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_led_design(lv_obj_t * led, const area_t * mask, lv_design_mode_t mode); static void lv_leds_init(void); /********************** @@ -57,51 +51,51 @@ static lv_leds_t lv_leds_green; /** * Create a led objects - * @param par_dp pointer to an object, it will be the parent of the new led - * @param copy_dp pointer to a led object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new led + * @param copy pointer to a led object, if not NULL then the new object will be copied from it * @return pointer to the created led */ -lv_obj_t* lv_led_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_led_create(lv_obj_t * par, lv_obj_t * copy) { /*Create the ancestor basic object*/ - lv_obj_t* new_obj_dp = lv_rect_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + lv_obj_t * new_led = lv_rect_create(par, copy); + dm_assert(new_led); /*Allocate the object type specific extended data*/ - lv_led_ext_t * ext_dp = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_led_ext_t)); - dm_assert(ext_dp); + lv_led_ext_t * ext = lv_obj_alloc_ext(new_led, sizeof(lv_led_ext_t)); + dm_assert(ext); - lv_obj_set_signal_f(new_obj_dp, lv_led_signal); - lv_obj_set_design_f(new_obj_dp, lv_led_design); + lv_obj_set_signal_f(new_led, lv_led_signal); + lv_obj_set_design_f(new_led, lv_led_design); /*Init the new led object*/ - if(copy_dp == NULL) { - ext_dp->bright = LV_LED_BRIGHTNESS_DEF; - lv_obj_set_style(new_obj_dp, lv_leds_get(LV_LEDS_DEF, NULL)); - lv_obj_set_size_us(new_obj_dp, 40, 40); + if(copy == NULL) { + ext->bright = LV_LED_BRIGHTNESS_DEF; + lv_obj_set_style(new_led, lv_leds_get(LV_LEDS_DEF, NULL)); + lv_obj_set_size_us(new_led, 40, 40); } /*Copy an existing object*/ else { - lv_led_ext_t * copy_ext_p = lv_obj_get_ext(copy_dp); - ext_dp->bright = copy_ext_p->bright; + lv_led_ext_t * copy_ext = lv_obj_get_ext(copy); + ext->bright = copy_ext->bright; } - return new_obj_dp; + return new_led; } /** * Signal function of the led - * @param obj_dp pointer to a led object + * @param led pointer to a led object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable * @return true: the object is still valid (not deleted), false: the object become invalid */ -bool lv_led_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_led_signal(lv_obj_t * led, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_rect_signal(obj_dp, sign, param); + valid = lv_rect_signal(led, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ @@ -124,47 +118,47 @@ bool lv_led_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Set the brightness of a LED object - * @param obj_dp pointer to a LED object + * @param led pointer to a LED object * @param bright 0 (max. dark) ... 255 (max. light) */ -void lv_led_set_bright(lv_obj_t * obj_dp, uint8_t bright) +void lv_led_set_bright(lv_obj_t * led, uint8_t bright) { /*Set the brightness*/ - lv_led_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - ext_dp->bright = bright; + lv_led_ext_t * ext = lv_obj_get_ext(led); + ext->bright = bright; /*Invalidate the object there fore it will be redrawn*/ - lv_obj_inv(obj_dp); + lv_obj_inv(led); } /** * Light on a LED - * @param obj_dp pointer to a LED object + * @param led pointer to a LED object */ -void lv_led_on(lv_obj_t * obj_dp) +void lv_led_on(lv_obj_t * led) { - lv_led_set_bright(obj_dp, LV_LED_BRIGHTNESS_ON); + lv_led_set_bright(led, LV_LED_BRIGHTNESS_ON); } /** * Light off a LED - * @param obj_dp pointer to a LED object + * @param led pointer to a LED object */ -void lv_led_off(lv_obj_t * obj_dp) +void lv_led_off(lv_obj_t * led) { - lv_led_set_bright(obj_dp, LV_LED_BRIGHTNESS_OFF); + lv_led_set_bright(led, LV_LED_BRIGHTNESS_OFF); } /** * Toggle the state of a LED - * @param obj_dp pointer to a LED object + * @param led pointer to a LED object */ -void lv_led_tgl(lv_obj_t * obj_dp) +void lv_led_tgl(lv_obj_t * led) { - uint8_t bright = lv_led_get_bright(obj_dp); - if(bright > 60) lv_led_off(obj_dp); - else lv_led_on(obj_dp); + uint8_t bright = lv_led_get_bright(led); + if(bright > 60) lv_led_off(led); + else lv_led_on(led); } /*===================== @@ -173,22 +167,22 @@ void lv_led_tgl(lv_obj_t * obj_dp) /** * Get the brightness of a LEd object - * @param obj_dp pointer to LED object + * @param led pointer to LED object * @return bright 0 (max. dark) ... 255 (max. light) */ -uint8_t lv_led_get_bright(lv_obj_t * obj_dp) +uint8_t lv_led_get_bright(lv_obj_t * led) { - lv_led_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - return ext_dp->bright; + lv_led_ext_t * ext = lv_obj_get_ext(led); + return ext->bright; } /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_leds_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_leds_t style */ -lv_leds_t * lv_leds_get(lv_leds_builtin_t style, lv_leds_t * copy_p) +lv_leds_t * lv_leds_get(lv_leds_builtin_t style, lv_leds_t * copy) { static bool style_inited = false; @@ -212,9 +206,9 @@ lv_leds_t * lv_leds_get(lv_leds_builtin_t style, lv_leds_t * copy_p) style_p = &lv_leds_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_leds_t)); - else memcpy(copy_p, &lv_leds_def, sizeof(lv_leds_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_leds_t)); + else memcpy(copy, &lv_leds_def, sizeof(lv_leds_t)); } return style_p; @@ -226,7 +220,7 @@ lv_leds_t * lv_leds_get(lv_leds_builtin_t style, lv_leds_t * copy_p) /** * Handle the drawing related tasks of the leds - * @param obj_dp pointer to an object + * @param led pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -234,27 +228,27 @@ lv_leds_t * lv_leds_get(lv_leds_builtin_t style, lv_leds_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_led_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_led_design(lv_obj_t * led, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ return false; } else if(mode == LV_DESIGN_DRAW_MAIN) { /*Make darker colors in a temporary style according to the brightness*/ - lv_led_ext_t * led_ext_p = lv_obj_get_ext(obj_dp); - lv_leds_t * leds_p = lv_obj_get_style(obj_dp); + lv_led_ext_t * ext = lv_obj_get_ext(led); + lv_leds_t * style = lv_obj_get_style(led); lv_leds_t leds_tmp; - memcpy(&leds_tmp, leds_p, sizeof(leds_tmp)); + memcpy(&leds_tmp, style, sizeof(leds_tmp)); - leds_tmp.rects.objs.color = color_mix(leds_tmp.rects.objs.color, COLOR_BLACK, led_ext_p->bright); - leds_tmp.rects.gcolor = color_mix(leds_tmp.rects.gcolor, COLOR_BLACK, led_ext_p->bright); + leds_tmp.bg_rect.objs.color = color_mix(leds_tmp.bg_rect.objs.color, COLOR_BLACK, ext->bright); + leds_tmp.bg_rect.gcolor = color_mix(leds_tmp.bg_rect.gcolor, COLOR_BLACK, ext->bright); - opa_t opa = lv_obj_get_opa(obj_dp); + opa_t opa = lv_obj_get_opa(led); area_t area; - lv_obj_get_cords(obj_dp, &area); + lv_obj_get_cords(led, &area); - lv_draw_rect(&area, mask_p, &leds_tmp.rects, opa); + lv_draw_rect(&area, mask, &leds_tmp.bg_rect, opa); } return true; } @@ -265,22 +259,22 @@ static bool lv_led_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mod static void lv_leds_init(void) { /*Default style*/ - lv_rects_get(LV_RECTS_DEF, &lv_leds_def.rects); - lv_leds_def.rects.objs.color = COLOR_RED; - lv_leds_def.rects.gcolor = COLOR_MARRON, - lv_leds_def.rects.bcolor = COLOR_WHITE; - lv_leds_def.rects.bwidth = 4 * LV_STYLE_MULT; - lv_leds_def.rects.bopa = 50; - lv_leds_def.rects.round = LV_RECT_CIRCLE; - lv_leds_def.rects.hpad = 0; - lv_leds_def.rects.vpad = 0; - lv_leds_def.rects.opad = 0; + lv_rects_get(LV_RECTS_DEF, &lv_leds_def.bg_rect); + lv_leds_def.bg_rect.objs.color = COLOR_RED; + lv_leds_def.bg_rect.gcolor = COLOR_MARRON, + lv_leds_def.bg_rect.bcolor = COLOR_WHITE; + lv_leds_def.bg_rect.bwidth = 4 * LV_STYLE_MULT; + lv_leds_def.bg_rect.bopa = 50; + lv_leds_def.bg_rect.round = LV_RECT_CIRCLE; + lv_leds_def.bg_rect.hpad = 0; + lv_leds_def.bg_rect.vpad = 0; + lv_leds_def.bg_rect.opad = 0; /* Green style */ memcpy(&lv_leds_green, &lv_leds_def, sizeof(lv_leds_t)); - lv_leds_green.rects.objs.color = COLOR_LIME; - lv_leds_green.rects.gcolor = COLOR_GREEN; - lv_leds_green.rects.bcolor = COLOR_WHITE; + lv_leds_green.bg_rect.objs.color = COLOR_LIME; + lv_leds_green.bg_rect.gcolor = COLOR_GREEN; + lv_leds_green.bg_rect.bcolor = COLOR_WHITE; } #endif diff --git a/lv_objx/lv_led.h b/lv_objx/lv_led.h index d2622033d..71dcdc946 100644 --- a/lv_objx/lv_led.h +++ b/lv_objx/lv_led.h @@ -3,13 +3,6 @@ * */ - -/*Search an replace: led -> object normal name with lower case (e.g. button, label etc.) - * led -> object short name with lower case(e.g. btn, label etc) - * LED -> object short name with upper case (e.g. BTN, LABEL etc.) - * - */ - #ifndef LV_LED_H #define LV_LED_H @@ -32,7 +25,7 @@ /*Style of led*/ typedef struct { - lv_rects_t rects;/*Style of ancestor*/ + lv_rects_t bg_rect;/*Style of ancestor*/ /*New style element for this type */ }lv_leds_t; @@ -55,16 +48,16 @@ typedef struct /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t* lv_led_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_led_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -lv_leds_t * lv_leds_get(lv_leds_builtin_t style, lv_leds_t * copy_p); +lv_obj_t * lv_led_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_led_signal(lv_obj_t * led, lv_signal_t sign, void * param); +lv_leds_t * lv_leds_get(lv_leds_builtin_t style, lv_leds_t * copy); -void lv_led_set_bright(lv_obj_t * obj_dp, uint8_t bright); -uint8_t lv_led_get_bright(lv_obj_t * obj_dp); +void lv_led_set_bright(lv_obj_t * led, uint8_t bright); +uint8_t lv_led_get_bright(lv_obj_t * led); -void lv_led_on(lv_obj_t * obj_dp); -void lv_led_off(lv_obj_t * obj_dp); -void lv_led_tgl(lv_obj_t * obj_dp); +void lv_led_on(lv_obj_t * led); +void lv_led_off(lv_obj_t * led); +void lv_led_tgl(lv_obj_t * led); /********************** diff --git a/lv_objx/lv_line.c b/lv_objx/lv_line.c index d190f7f1b..7694f1264 100644 --- a/lv_objx/lv_line.c +++ b/lv_objx/lv_line.c @@ -33,7 +33,7 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_line_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_line_design(lv_obj_t * line, const area_t * mask, lv_design_mode_t mode); static void lv_lines_init(void); /********************** @@ -53,55 +53,55 @@ static lv_lines_t lv_lines_chart; /** * Create a line objects - * @param par_dp pointer to an object, it will be the parent of the new line + * @param par pointer to an object, it will be the parent of the new line * @return pointer to the created line */ -lv_obj_t* lv_line_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_line_create(lv_obj_t * par, lv_obj_t * copy) { /*Create a basic object*/ - lv_obj_t* new_obj_dp = lv_obj_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + lv_obj_t * new_line = lv_obj_create(par, copy); + dm_assert(new_line); /*Extend the basic object to rectangle object*/ - lv_line_ext_t *ext_p = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_line_ext_t)); - lv_obj_set_design_f(new_obj_dp, lv_line_design); - lv_obj_set_signal_f(new_obj_dp, lv_line_signal); + lv_line_ext_t * ext = lv_obj_alloc_ext(new_line, sizeof(lv_line_ext_t)); + lv_obj_set_design_f(new_line, lv_line_design); + lv_obj_set_signal_f(new_line, lv_line_signal); /*Init the new rectangle*/ - if(copy_dp == NULL) { - ext_p->point_num = 0; - ext_p->point_p = NULL; - ext_p->auto_size = 1; - ext_p->y_inv = 0; - ext_p->upscale = 0; - lv_obj_set_style(new_obj_dp, lv_lines_get(LV_LINES_DEF, NULL)); + if(copy == NULL) { + ext->point_num = 0; + ext->point_p = NULL; + ext->auto_size = 1; + ext->y_inv = 0; + ext->upscale = 0; + lv_obj_set_style(new_line, lv_lines_get(LV_LINES_DEF, NULL)); } - /*Copy 'copy_p' is not NULL*/ + /*Copy an existing object*/ else { - lv_line_set_auto_size(new_obj_dp,lv_line_get_auto_size(copy_dp)); - lv_line_set_y_inv(new_obj_dp,lv_line_get_y_inv(copy_dp)); - lv_line_set_auto_size(new_obj_dp,lv_line_get_auto_size(copy_dp)); - lv_line_set_upscale(new_obj_dp,lv_line_get_upscale(copy_dp)); - lv_line_set_points(new_obj_dp, LV_EA(copy_dp, lv_line_ext_t)->point_p, - LV_EA(copy_dp, lv_line_ext_t)->point_num); + lv_line_set_auto_size(new_line,lv_line_get_auto_size(copy)); + lv_line_set_y_inv(new_line,lv_line_get_y_inv(copy)); + lv_line_set_auto_size(new_line,lv_line_get_auto_size(copy)); + lv_line_set_upscale(new_line,lv_line_get_upscale(copy)); + lv_line_set_points(new_line, LV_EA(copy, lv_line_ext_t)->point_p, + LV_EA(copy, lv_line_ext_t)->point_num); } - return new_obj_dp; + return new_line; } /** * Signal function of the line - * @param obj_dp pointer to a line object + * @param line pointer to a line object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_line_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_line_signal(lv_obj_t * line, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_obj_signal(obj_dp, sign, param); + valid = lv_obj_signal(line, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ @@ -121,23 +121,23 @@ bool lv_line_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Set an array of points. The line object will connect these points. - * @param obj_dp pointer to a line object + * @param line pointer to a line object * @param point_a an array of points. Only the address is saved, * so the array can be a local variable which will be destroyed * @param point_num number of points in 'point_a' */ -void lv_line_set_points(lv_obj_t* obj_dp, const point_t * point_a, uint16_t point_num) +void lv_line_set_points(lv_obj_t * line, const point_t * point_a, uint16_t point_num) { - lv_line_ext_t * ext_p = lv_obj_get_ext(obj_dp); - ext_p->point_p = point_a; - ext_p->point_num = point_num; + lv_line_ext_t * ext = lv_obj_get_ext(line); + ext->point_p = point_a; + ext->point_num = point_num; uint8_t us = 1; - if(ext_p->upscale != 0) { + if(ext->upscale != 0) { us = LV_DOWNSCALE; } - if(point_num > 0 && ext_p->auto_size != 0) { + if(point_num > 0 && ext->auto_size != 0) { uint16_t i; cord_t xmax = LV_CORD_MIN; cord_t ymax = LV_CORD_MIN; @@ -146,26 +146,26 @@ void lv_line_set_points(lv_obj_t* obj_dp, const point_t * point_a, uint16_t poin ymax = max(point_a[i].y * us, ymax); } - lv_lines_t * lines_p = lv_obj_get_style(obj_dp); - lv_obj_set_size(obj_dp, xmax + lines_p->width, ymax + lines_p->width); + lv_lines_t * lines = lv_obj_get_style(line); + lv_obj_set_size(line, xmax + lines->width, ymax + lines->width); } } /** * Enable (or disable) the auto-size option. The size of the object will fit to its points. * (set width to x max and height to y max) - * @param obj_dp pointer to a line object - * @param en true: auto size is enabled, false: auto size is disabled + * @param line pointer to a line object + * @param autosize true: auto size is enabled, false: auto size is disabled */ -void lv_line_set_auto_size(lv_obj_t * obj_dp, bool en) +void lv_line_set_auto_size(lv_obj_t * line, bool autosize) { - lv_line_ext_t * line_p = lv_obj_get_ext(obj_dp); + lv_line_ext_t * ext = lv_obj_get_ext(line); - line_p->auto_size = en == false ? 0 : 1; + ext->auto_size = autosize == false ? 0 : 1; /*Refresh the object*/ - if(en != false) { - lv_line_set_points(obj_dp, line_p->point_p, line_p->point_num); + if(autosize != false) { + lv_line_set_points(line, ext->point_p, ext->point_num); } } @@ -173,31 +173,31 @@ void lv_line_set_auto_size(lv_obj_t * obj_dp, bool en) * Enable (or disable) the y coordinate inversion. * If enabled then y will be subtracted from the height of the object, * therefore the y=0 coordinate will be on the bottom. - * @param obj_dp pointer to a line object - * @param en true: enable the y inversion, false:disable the y inversion + * @param line pointer to a line object + * @param yinv true: enable the y inversion, false:disable the y inversion */ -void lv_line_set_y_inv(lv_obj_t * obj_dp, bool en) +void lv_line_set_y_inv(lv_obj_t * line, bool yinv) { - lv_line_ext_t * line_p = lv_obj_get_ext(obj_dp); + lv_line_ext_t * ext = lv_obj_get_ext(line); - line_p->y_inv = en == false ? 0 : 1; + ext->y_inv = yinv == false ? 0 : 1; - lv_obj_inv(obj_dp); + lv_obj_inv(line); } /** * Enable (or disable) the point coordinate upscaling (compensate LV_DOWNSCALE). - * @param obj_dp pointer to a line object - * @param en true: enable the point coordinate upscaling + * @param line pointer to a line object + * @param unscale true: enable the point coordinate upscaling */ -void lv_line_set_upscale(lv_obj_t * obj_dp, bool en) +void lv_line_set_upscale(lv_obj_t * line, bool unscale) { - lv_line_ext_t * ext_p = lv_obj_get_ext(obj_dp); + lv_line_ext_t * ext = lv_obj_get_ext(line); - ext_p->upscale = en == false ? 0 : 1; + ext->upscale = unscale == false ? 0 : 1; /*Refresh to point to handle auto size*/ - lv_line_set_points(obj_dp, ext_p->point_p, ext_p->point_num); + lv_line_set_points(line, ext->point_p, ext->point_num); } /*===================== @@ -206,47 +206,47 @@ void lv_line_set_upscale(lv_obj_t * obj_dp, bool en) /** * Get the auto size attribute - * @param obj_dp pointer to a line object + * @param line pointer to a line object * @return true: auto size is enabled, false: disabled */ -bool lv_line_get_auto_size(lv_obj_t * obj_dp) +bool lv_line_get_auto_size(lv_obj_t * line) { - lv_line_ext_t * line_p = lv_obj_get_ext(obj_dp); + lv_line_ext_t * ext = lv_obj_get_ext(line); - return line_p->auto_size == 0 ? false : true; + return ext->auto_size == 0 ? false : true; } /** * Get the y inversion attribute - * @param obj_dp pointer to a line object + * @param line pointer to a line object * @return true: y inversion is enabled, false: disabled */ -bool lv_line_get_y_inv(lv_obj_t * obj_dp) +bool lv_line_get_y_inv(lv_obj_t * line) { - lv_line_ext_t * line_p = lv_obj_get_ext(obj_dp); + lv_line_ext_t * ext = lv_obj_get_ext(line); - return line_p->y_inv == 0 ? false : true; + return ext->y_inv == 0 ? false : true; } /** * Get the point upscale enable attribute - * @param obj_dp pointer to a line object + * @param obj pointer to a line object * @return true: point coordinate upscale is enabled, false: disabled */ -bool lv_line_get_upscale(lv_obj_t * obj_dp) +bool lv_line_get_upscale(lv_obj_t * line) { - lv_line_ext_t * ext_p = lv_obj_get_ext(obj_dp); + lv_line_ext_t * ext = lv_obj_get_ext(line); - return ext_p->upscale == 0 ? false : true; + return ext->upscale == 0 ? false : true; } /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_lines_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_lines_t style */ -lv_lines_t * lv_lines_get(lv_lines_builtin_t style, lv_lines_t * copy_p) +lv_lines_t * lv_lines_get(lv_lines_builtin_t style, lv_lines_t * copy) { static bool style_inited = false; @@ -272,9 +272,9 @@ lv_lines_t * lv_lines_get(lv_lines_builtin_t style, lv_lines_t * copy_p) style_p = &lv_lines_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_lines_t)); - else memcpy(copy_p, &lv_lines_def, sizeof(lv_lines_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_lines_t)); + else memcpy(copy, &lv_lines_def, sizeof(lv_lines_t)); } return style_p; @@ -285,7 +285,7 @@ lv_lines_t * lv_lines_get(lv_lines_builtin_t style, lv_lines_t * copy_p) /** * Handle the drawing related tasks of the lines - * @param obj_dp pointer to an object + * @param line pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -293,45 +293,45 @@ lv_lines_t * lv_lines_get(lv_lines_builtin_t style, lv_lines_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_line_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_line_design(lv_obj_t * line, const area_t * mask, lv_design_mode_t mode) { /*A line never covers an area*/ if(mode == LV_DESIGN_COVER_CHK) return false; else if(mode == LV_DESIGN_DRAW_MAIN) { - lv_line_ext_t * ext_p = lv_obj_get_ext(obj_dp); + lv_line_ext_t * ext = lv_obj_get_ext(line); - if(ext_p->point_num == 0 || ext_p->point_p == NULL) return false; + if(ext->point_num == 0 || ext->point_p == NULL) return false; - lv_lines_t * lines_p = lv_obj_get_style(obj_dp); + lv_lines_t * lines = lv_obj_get_style(line); - opa_t opa = lv_obj_get_opa(obj_dp); + opa_t opa = lv_obj_get_opa(line); area_t area; - lv_obj_get_cords(obj_dp, &area); + lv_obj_get_cords(line, &area); cord_t x_ofs = area.x1; cord_t y_ofs = area.y1; point_t p1; point_t p2; - cord_t h = lv_obj_get_height(obj_dp); + cord_t h = lv_obj_get_height(line); uint16_t i; uint8_t us = 1; - if(ext_p->upscale != 0) { + if(ext->upscale != 0) { us = LV_DOWNSCALE; } /*Read all pints and draw the lines*/ - for (i = 0; i < ext_p->point_num - 1; i++) { + for (i = 0; i < ext->point_num - 1; i++) { - p1.x = ext_p->point_p[i].x * us + x_ofs; - p2.x = ext_p->point_p[i + 1].x * us + x_ofs; + p1.x = ext->point_p[i].x * us + x_ofs; + p2.x = ext->point_p[i + 1].x * us + x_ofs; - if(ext_p->y_inv == 0) { - p1.y = ext_p->point_p[i].y * us + y_ofs; - p2.y = ext_p->point_p[i + 1].y * us + y_ofs; + if(ext->y_inv == 0) { + p1.y = ext->point_p[i].y * us + y_ofs; + p2.y = ext->point_p[i + 1].y * us + y_ofs; } else { - p1.y = h - ext_p->point_p[i].y * us + y_ofs; - p2.y = h - ext_p->point_p[i + 1].y * us + y_ofs; + p1.y = h - ext->point_p[i].y * us + y_ofs; + p2.y = h - ext->point_p[i + 1].y * us + y_ofs; } - lv_draw_line(&p1, &p2, mask_p, lines_p, opa); + lv_draw_line(&p1, &p2, mask, lines, opa); } } return true; diff --git a/lv_objx/lv_line.h b/lv_objx/lv_line.h index 94ba86136..67bc3b487 100644 --- a/lv_objx/lv_line.h +++ b/lv_objx/lv_line.h @@ -21,21 +21,15 @@ /********************** * TYPEDEFS **********************/ +/*Style of line*/ typedef struct { - const point_t * point_p; - uint16_t point_num; - uint8_t auto_size :1; - uint8_t y_inv :1; - uint8_t upscale :1; -}lv_line_ext_t; - -typedef struct -{ - lv_objs_t objs; + lv_objs_t objs; /*Style of ancestor*/ + /*New style element for this type */ uint16_t width; }lv_lines_t; +/*Built-in styles of line*/ typedef enum { LV_LINES_DEF, @@ -43,19 +37,30 @@ typedef enum LV_LINES_CHART, }lv_lines_builtin_t; +/*Data of line*/ +typedef struct +{ + /*Inherited from 'base_obj' so inherited ext.*/ /*Ext. of ancestor*/ + const point_t * point_array; + uint16_t point_num; + uint8_t auto_size :1; + uint8_t y_inv :1; + uint8_t upscale :1; +}lv_line_ext_t; + /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t* lv_line_create(lv_obj_t * par_dp, lv_obj_t * copy_dp); -bool lv_line_signal(lv_obj_t * obj_dp, lv_signal_t sign, void * param); -lv_lines_t * lv_lines_get(lv_lines_builtin_t style, lv_lines_t * copy_p); -void lv_line_set_points(lv_obj_t * obj_dp, const point_t * point_a, uint16_t point_num); -void lv_line_set_auto_size(lv_obj_t * obj_dp, bool en); -void lv_line_set_y_inv(lv_obj_t * obj_dp, bool en); -void lv_line_set_upscale(lv_obj_t * obj_dp, bool en); -bool lv_line_get_auto_size(lv_obj_t * obj_dp); -bool lv_line_get_y_inv(lv_obj_t * obj_dp); -bool lv_line_get_upscale(lv_obj_t * obj_dp); +lv_obj_t * lv_line_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_line_signal(lv_obj_t * line, lv_signal_t sign, void * param); +lv_lines_t * lv_lines_get(lv_lines_builtin_t style, lv_lines_t * copy); +void lv_line_set_points(lv_obj_t * line, const point_t * point_a, uint16_t point_num); +void lv_line_set_auto_size(lv_obj_t * line, bool autosize); +void lv_line_set_y_inv(lv_obj_t * line, bool yinv); +void lv_line_set_upscale(lv_obj_t * line, bool unscale); +bool lv_line_get_auto_size(lv_obj_t * line); +bool lv_line_get_y_inv(lv_obj_t * line); +bool lv_line_get_upscale(lv_obj_t * line); /********************** * MACROS diff --git a/lv_objx/lv_list.c b/lv_objx/lv_list.c index 755f11d9e..a45fec574 100644 --- a/lv_objx/lv_list.c +++ b/lv_objx/lv_list.c @@ -26,7 +26,7 @@ * STATIC PROTOTYPES **********************/ #if 0 -static bool lv_list_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_list_design(lv_obj_t * list, const area_t * mask, lv_design_mode_t mode); #endif static void lv_lists_init(void); @@ -50,45 +50,45 @@ static lv_lists_t lv_lists_tight; /** * Create a list objects - * @param par_dp pointer to an object, it will be the parent of the new list - * @param copy_dp pointer to a list object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new list + * @param copy pointer to a list object, if not NULL then the new object will be copied from it * @return pointer to the created list */ -lv_obj_t* lv_list_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_list_create(lv_obj_t * par, lv_obj_t * copy) { /*Create the ancestor basic object*/ - lv_obj_t * new_obj_dp = lv_page_create(par_dp, copy_dp); - dm_assert(new_obj_dp); - lv_list_ext_t * ext_p= lv_obj_alloc_ext(new_obj_dp, sizeof(lv_list_ext_t)); + lv_obj_t * new_list = lv_page_create(par, copy); + dm_assert(new_list); + lv_list_ext_t * ext = lv_obj_alloc_ext(new_list, sizeof(lv_list_ext_t)); - lv_obj_set_signal_f(new_obj_dp, lv_list_signal); + lv_obj_set_signal_f(new_list, lv_list_signal); /*Init the new list object*/ - if(copy_dp == NULL) { - ext_p->fit = LV_LIST_FIT_LONGEST; - lv_obj_set_size_us(new_obj_dp, 100, 150); - lv_obj_set_style(new_obj_dp, lv_lists_get(LV_LISTS_DEF, NULL)); - lv_rect_set_layout(LV_EA(new_obj_dp, lv_list_ext_t)->page_ext.scrolling_dp, LV_LIST_LAYOUT_DEF); + if(copy == NULL) { + ext ->fit = LV_LIST_FIT_LONGEST; + lv_obj_set_size_us(new_list, 100, 150); + lv_obj_set_style(new_list, lv_lists_get(LV_LISTS_DEF, NULL)); + lv_rect_set_layout(LV_EA(new_list, lv_list_ext_t)->page_ext.scrolling, LV_LIST_LAYOUT_DEF); } else { - lv_list_ext_t * copy_ext_dp = lv_obj_get_ext(copy_dp); - ext_p->fit = copy_ext_dp->fit; + lv_list_ext_t * copy_ext = lv_obj_get_ext(copy); + ext ->fit = copy_ext->fit; } - return new_obj_dp; + return new_list; } /** * Signal function of the list - * @param obj_dp pointer to a list object + * @param list pointer to a list object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_list_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_list_signal(lv_obj_t * list, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_page_signal(obj_dp, sign, param); + valid = lv_page_signal(list, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ @@ -104,48 +104,48 @@ bool lv_list_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Add a list element to the list - * @param obj_dp pointer to list object + * @param list pointer to list object * @param img_fn file name of an image before the text (NULL if unused) * @param txt text of the list element (NULL if unused) * @param rel_action pointer to release action function (like with lv_btn) * @return pointer to the new list element which can be customized (a button) */ -lv_obj_t * lv_list_add(lv_obj_t * obj_dp, const char * img_fn, const char * txt, bool (*rel_action)(lv_obj_t*, lv_dispi_t *)) +lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)) { - lv_lists_t * lists_p = lv_obj_get_style(obj_dp); - lv_list_ext_t * ext_p = lv_obj_get_ext(obj_dp); + lv_lists_t * lists = lv_obj_get_style(list); + lv_list_ext_t * ext = lv_obj_get_ext(list); /*Create a list element with the image an the text*/ lv_obj_t * liste; - liste = lv_btn_create(obj_dp, NULL); - lv_obj_set_style(liste, &lists_p->liste_btns); + liste = lv_btn_create(list, NULL); + lv_obj_set_style(liste, &lists->liste_btn); lv_btn_set_rel_action(liste, rel_action); lv_page_glue_obj(liste, true); - lv_rect_set_layout(liste, lists_p->liste_layout); + lv_rect_set_layout(liste, lists->liste_layout); lv_rect_set_fit(liste, true, true); /*hor. fit might be disabled later*/ if(img_fn != NULL) { lv_obj_t * img = lv_img_create(liste, NULL); lv_img_set_file(img, img_fn); - lv_obj_set_style(img, &lists_p->liste_imgs); + lv_obj_set_style(img, &lists->liste_img); lv_obj_set_click(img, false); } if(txt != NULL) { lv_obj_t * label = lv_label_create(liste, NULL); lv_label_set_text(label, txt); - lv_obj_set_style(label,&lists_p->liste_labels); + lv_obj_set_style(label,&lists->liste_label); lv_obj_set_click(label, false); } /*Make the size adjustment*/ - if(ext_p->fit == LV_LIST_FIT_HOLDER) { + if(ext->fit == LV_LIST_FIT_HOLDER) { /*Now the width will be adjusted*/ lv_rect_set_fit(liste, false, true); - cord_t w = lv_obj_get_width(obj_dp); - w -= lists_p->pages.bg_rects.hpad * 2; + cord_t w = lv_obj_get_width(list); + w -= lists->bg_page.bg_rects.hpad * 2; lv_obj_set_width(liste, w); - } else if(ext_p->fit == LV_LIST_FIT_LONGEST) { + } else if(ext->fit == LV_LIST_FIT_LONGEST) { /*In this case the width will be adjusted*/ lv_rect_set_fit(liste, false, true); @@ -174,45 +174,45 @@ lv_obj_t * lv_list_add(lv_obj_t * obj_dp, const char * img_fn, const char * txt, /** * Move the list elements up by one - * @param obj_dp pointer a to list object + * @param list pointer a to list object */ -void lv_list_up(lv_obj_t * obj_dp) +void lv_list_up(lv_obj_t * list) { /*Search the first list element which 'y' coordinate is below the parent * and position the list to show this element on the bottom*/ - lv_obj_t * h = lv_obj_get_parent(obj_dp); + lv_obj_t * h = lv_obj_get_parent(list); lv_obj_t * e; lv_obj_t * e_prev = NULL; - e = lv_obj_get_child(obj_dp, NULL); + e = lv_obj_get_child(list, NULL); while(e != NULL) { if(e->cords.y2 <= h->cords.y2) { if(e_prev != NULL) - lv_obj_set_y(obj_dp, lv_obj_get_height(h) - + lv_obj_set_y(list, lv_obj_get_height(h) - (lv_obj_get_y(e_prev) + lv_obj_get_height(e_prev))); break; } e_prev = e; - e = lv_obj_get_child(obj_dp, e); + e = lv_obj_get_child(list, e); } } /** * Move the list elements down by one - * @param obj_dp pointer to a list object + * @param list pointer to a list object */ -void lv_list_down(lv_obj_t * obj_dp) +void lv_list_down(lv_obj_t * list) { /*Search the first list element which 'y' coordinate is above the parent * and position the list to show this element on the top*/ - lv_obj_t * h = lv_obj_get_parent(obj_dp); + lv_obj_t * h = lv_obj_get_parent(list); lv_obj_t * e; - e = lv_obj_get_child(obj_dp, NULL); + e = lv_obj_get_child(list, NULL); while(e != NULL) { if(e->cords.y1 < h->cords.y1) { - lv_obj_set_y(obj_dp, -lv_obj_get_y(e)); + lv_obj_set_y(list, -lv_obj_get_y(e)); break; } - e = lv_obj_get_child(obj_dp, e); + e = lv_obj_get_child(list, e); } } @@ -222,14 +222,14 @@ void lv_list_down(lv_obj_t * obj_dp) /** * Set the list element fitting of a list - * @param obj_dp pointer to a list object + * @param list pointer to a list object * @param fit type of fitting (from lv_list_fit_t) */ -void lv_list_set_fit(lv_obj_t * obj_dp, lv_list_fit_t fit) +void lv_list_set_fit(lv_obj_t * list, lv_list_fit_t fit) { - lv_list_ext_t * ext_p = lv_obj_get_ext(obj_dp); + lv_list_ext_t * ext = lv_obj_get_ext(list); - ext_p->fit = fit; + ext->fit = fit; } @@ -239,12 +239,12 @@ void lv_list_set_fit(lv_obj_t * obj_dp, lv_list_fit_t fit) /** * Get the fit type of a list - * @param obj_dp pointer to list object + * @param list pointer to list object * @return the fit (from lv_list_fit_t) */ -lv_list_fit_t lv_list_get_fit(lv_obj_t * obj_dp) +lv_list_fit_t lv_list_get_fit(lv_obj_t * list) { - return LV_EA(obj_dp, lv_list_ext_t)->fit; + return LV_EA(list, lv_list_ext_t)->fit; } @@ -254,7 +254,7 @@ lv_list_fit_t lv_list_get_fit(lv_obj_t * obj_dp) * @param copy_p copy the style to this variable. (NULL if unused) * @return pointer to an lv_lists_t style */ -lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * copy_p) +lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * list) { static bool style_inited = false; @@ -278,9 +278,9 @@ lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * copy_p) style_p = &lv_lists_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_lists_t)); - else memcpy(copy_p, &lv_lists_def, sizeof(lv_lists_t)); + if(list != NULL) { + if(style_p != NULL) memcpy(list, style_p, sizeof(lv_lists_t)); + else memcpy(list, &lv_lists_def, sizeof(lv_lists_t)); } return style_p; @@ -294,7 +294,7 @@ lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * copy_p) #if 0 /*A new design function is not necessary*/ /** * Handle the drawing related tasks of the lists - * @param obj_dp pointer to an object + * @param list pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -302,7 +302,7 @@ lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_list_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_list_design(lv_obj_t * list, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ @@ -321,32 +321,32 @@ static bool lv_list_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mo static void lv_lists_init(void) { /*Default style*/ - lv_pages_get(LV_PAGES_TRANSP, &lv_lists_def.pages); - lv_lists_def.pages.bg_rects.vpad = 0 * LV_STYLE_MULT; - lv_lists_def.pages.bg_rects.hpad = 0 * LV_STYLE_MULT; - lv_lists_def.pages.bg_rects.opad = 0 * LV_STYLE_MULT; + lv_pages_get(LV_PAGES_TRANSP, &lv_lists_def.bg_page); + lv_lists_def.bg_page.bg_rects.vpad = 0 * LV_STYLE_MULT; + lv_lists_def.bg_page.bg_rects.hpad = 0 * LV_STYLE_MULT; + lv_lists_def.bg_page.bg_rects.opad = 0 * LV_STYLE_MULT; - lv_lists_def.pages.scrable_rects.vpad = 10 * LV_STYLE_MULT; - lv_lists_def.pages.scrable_rects.hpad = 10 * LV_STYLE_MULT; - lv_lists_def.pages.scrable_rects.opad = 5 * LV_STYLE_MULT; + lv_lists_def.bg_page.scrable_rects.vpad = 10 * LV_STYLE_MULT; + lv_lists_def.bg_page.scrable_rects.hpad = 10 * LV_STYLE_MULT; + lv_lists_def.bg_page.scrable_rects.opad = 5 * LV_STYLE_MULT; - lv_btns_get(LV_BTNS_DEF, &lv_lists_def.liste_btns); /*List element button style*/ + lv_btns_get(LV_BTNS_DEF, &lv_lists_def.liste_btn); /*List element button style*/ - lv_labels_get(LV_LABELS_BTN, &lv_lists_def.liste_labels); /*List element label style*/ - lv_lists_def.liste_labels.mid = 0; + lv_labels_get(LV_LABELS_BTN, &lv_lists_def.liste_label); /*List element label style*/ + lv_lists_def.liste_label.mid = 0; - lv_imgs_get(LV_IMGS_DEF, &lv_lists_def.liste_imgs); /*Lit element image style*/ + lv_imgs_get(LV_IMGS_DEF, &lv_lists_def.liste_img); /*Lit element image style*/ lv_lists_def.liste_layout = LV_RECT_LAYOUT_ROW_M; memcpy(&lv_lists_tight, &lv_lists_def, sizeof(lv_lists_t)); - lv_lists_tight.pages.bg_rects.vpad = 0 * LV_STYLE_MULT; - lv_lists_tight.pages.bg_rects.hpad = 0 * LV_STYLE_MULT; - lv_lists_tight.pages.bg_rects.opad = 0 * LV_STYLE_MULT; + lv_lists_tight.bg_page.bg_rects.vpad = 0 * LV_STYLE_MULT; + lv_lists_tight.bg_page.bg_rects.hpad = 0 * LV_STYLE_MULT; + lv_lists_tight.bg_page.bg_rects.opad = 0 * LV_STYLE_MULT; - lv_lists_tight.pages.scrable_rects.vpad = 0 * LV_STYLE_MULT; - lv_lists_tight.pages.scrable_rects.hpad = 0 * LV_STYLE_MULT; - lv_lists_tight.pages.scrable_rects.opad = 0 * LV_STYLE_MULT; + lv_lists_tight.bg_page.scrable_rects.vpad = 0 * LV_STYLE_MULT; + lv_lists_tight.bg_page.scrable_rects.hpad = 0 * LV_STYLE_MULT; + lv_lists_tight.bg_page.scrable_rects.opad = 0 * LV_STYLE_MULT; } #endif diff --git a/lv_objx/lv_list.h b/lv_objx/lv_list.h index 804d540a3..2050258f1 100644 --- a/lv_objx/lv_list.h +++ b/lv_objx/lv_list.h @@ -26,17 +26,18 @@ * TYPEDEFS **********************/ -/*Style of LIST*/ +/*Style of list*/ typedef struct { - lv_pages_t pages; /*Ancestor page style*/ - lv_btns_t liste_btns; - lv_labels_t liste_labels; - lv_imgs_t liste_imgs; + lv_pages_t bg_page; /*Style of ancestor*/ + /*New style element for this type */ + lv_btns_t liste_btn; + lv_labels_t liste_label; + lv_imgs_t liste_img; lv_rect_layout_t liste_layout; }lv_lists_t; -/*Built-in styles of LISTATE*/ +/*Built-in styles of list*/ typedef enum { LV_LISTS_DEF, @@ -51,27 +52,26 @@ typedef enum LV_LIST_FIT_LONGEST, }lv_list_fit_t; - -/*Data of LIST*/ +/*Data of list*/ typedef struct { - lv_page_ext_t page_ext; + lv_page_ext_t page_ext; /*Ext. of ancestor*/ + /*New data for this type */ uint8_t fit; /*Width adjustment of list elements (from lv_list_adjsut_t)*/ }lv_list_ext_t; - /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t* lv_list_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_list_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -lv_obj_t * lv_list_add(lv_obj_t * obj_dp, const char * img_fn, const char * txt, bool (*rel_action)(lv_obj_t*, lv_dispi_t *)); -lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * copy_p); +lv_obj_t * lv_list_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_list_signal(lv_obj_t * list, lv_signal_t sign, void * param); +lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)); +lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * copy); -void lv_list_down(lv_obj_t * obj_dp); -void lv_list_up(lv_obj_t * obj_dp); -void lv_list_set_fit(lv_obj_t * obj_dp, lv_list_fit_t fit); -lv_list_fit_t lv_list_get_fit(lv_obj_t * obj_dp); +void lv_list_down(lv_obj_t * list); +void lv_list_up(lv_obj_t * list); +void lv_list_set_fit(lv_obj_t * list, lv_list_fit_t fit); +lv_list_fit_t lv_list_get_fit(lv_obj_t * list); /********************** * MACROS diff --git a/lv_objx/lv_objx_templ.c b/lv_objx/lv_objx_templ.c index 175c9a398..b9c112891 100644 --- a/lv_objx/lv_objx_templ.c +++ b/lv_objx/lv_objx_templ.c @@ -28,14 +28,13 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_templ_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_templ_design(lv_obj_t * templ, const area_t * mask, lv_design_mode_t mode); static void lv_temps_init(void); /********************** * STATIC VARIABLES **********************/ -static lv_templs_t lv_templs_def = -{ /*Create a default style*/ }; +static lv_templs_t lv_templs_def; /*Default template style*/ /********************** * MACROS @@ -51,50 +50,50 @@ static lv_templs_t lv_templs_def = /** * Create a template objects - * @param par_dp pointer to an object, it will be the parent of the new template - * @param copy_dp pointer to a template object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new template + * @param copy pointer to a template object, if not NULL then the new object will be copied from it * @return pointer to the created template */ -lv_obj_t * lv_templ_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_templ_create(lv_obj_t * par, lv_obj_t * copy) { - /*Create the ancestor object*/ - lv_obj_t* new_obj_dp = lv_obj_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + /*Create the ancestor templect*/ + lv_templ_t * new_templ = lv_templ_create(par, copy); + dm_assert(new_templ); - /*Allocate the object type specific extended data*/ - lv_templ_ext_t * ext_dp = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_templ_ext_t)); - dm_assert(ext_dp); + /*Allocate the templect type specific extended data*/ + lv_templ_ext_t * ext = lv_templ_alloc_ext(new_templ, sizeof(lv_templ_ext_t)); + dm_assert(ext); /*The signal and design functions are not copied so set them here*/ - lv_obj_set_signal_f(new_obj_dp, lv_templ_signal); - lv_obj_set_design_f(new_obj_dp, lv_templ_design); + lv_templ_set_signal_f(new_templ, lv_templ_signal); + lv_templ_set_design_f(new_templ, lv_templ_design); - /*Init the new template object*/ - if(copy_dp == NULL) { + /*Init the new template templect*/ + if(copy == NULL) { } - /*Copy an existing object*/ + /*Copy an existing templect*/ else { - lv_templ_ext_t * copy_ext_dp = lv_obj_get_ext(copy_dp); + lv_templ_ext_t * copy_ext = lv_templ_get_ext(copy); } - return new_obj_dp; + return new_templ; } /** * Signal function of the template - * @param obj_dp pointer to a template object + * @param templ pointer to a template object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable * @return true: the object is still valid (not deleted), false: the object become invalid */ -bool lv_templ_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_templ_signal(lv_obj_t * templ, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ /* TODO update it to the ancestor's signal function*/ - valid = lv_obj_signal(obj_dp, sign, param); + valid = lv_obj_signal(templ, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ @@ -123,10 +122,10 @@ bool lv_templ_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_templs_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_templs_t style */ -lv_templs_t * lv_templs_get(lv_templs_builtin_t style, lv_templs_t * copy_p) +lv_templs_t * lv_templs_get(lv_templs_builtin_t style, lv_templs_t * copy) { static bool style_inited = false; @@ -146,9 +145,9 @@ lv_templs_t * lv_templs_get(lv_templs_builtin_t style, lv_templs_t * copy_p) style_p = &lv_templs_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_templs_t)); - else memcpy(copy_p, &lv_templs_def, sizeof(lv_templs_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_templs_t)); + else memcpy(copy, &lv_templs_def, sizeof(lv_templs_t)); } return style_p; @@ -161,7 +160,7 @@ lv_templs_t * lv_templs_get(lv_templs_builtin_t style, lv_templs_t * copy_p) /** * Handle the drawing related tasks of the templates - * @param obj_dp pointer to an object + * @param templ pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -169,7 +168,7 @@ lv_templs_t * lv_templs_get(lv_templs_builtin_t style, lv_templs_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_templ_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_templ_design(lv_obj_t * templ, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ diff --git a/lv_objx/lv_objx_templ.h b/lv_objx/lv_objx_templ.h index 17c1f588b..49becd1af 100644 --- a/lv_objx/lv_objx_templ.h +++ b/lv_objx/lv_objx_templ.h @@ -52,9 +52,9 @@ typedef struct /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t * lv_templ_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_templ_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -lv_templs_t * lv_templs_get(lv_templs_builtin_t style, lv_templs_t * copy_p); +lv_obj_t * lv_templ_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_templ_signal(lv_obj_t * templ, lv_signal_t sign, void * param); +lv_templs_t * lv_templs_get(lv_templs_builtin_t style, lv_templs_t * copy); /********************** * MACROS diff --git a/lv_objx/lv_page.c b/lv_objx/lv_page.c index 2c89a0207..577c9dc07 100644 --- a/lv_objx/lv_page.c +++ b/lv_objx/lv_page.c @@ -26,10 +26,10 @@ /********************** * STATIC PROTOTYPES **********************/ -static void lv_page_sb_refresh(lv_obj_t* main_dp); -static bool lv_page_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); -static bool lv_scrolling_signal(lv_obj_t* obj_dp, lv_signal_t sign, void* param); -static void lv_pages_init(void);; +static void lv_page_sb_refresh(lv_obj_t * main); +static bool lv_page_design(lv_obj_t * page, const area_t * mask, lv_design_mode_t mode); +static bool lv_scrolling_signal(lv_obj_t * page, lv_signal_t sign, void* param); +static void lv_pages_init(void); /********************** * STATIC VARIABLES @@ -52,108 +52,108 @@ static lv_design_f_t ancestor_design_f; /** * Create a page objects - * @param par_dp pointer to an object, it will be the parent of the new page - * @param copy_dp pointer to a page object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new page + * @param copy pointer to a page object, if not NULL then the new object will be copied from it * @return pointer to the created page */ -lv_obj_t* lv_page_create(lv_obj_t * par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_page_create(lv_obj_t * par, lv_obj_t * copy) { /*Create the ancestor object*/ - lv_obj_t * new_obj_dp = lv_rect_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + lv_obj_t * new_page = lv_rect_create(par, copy); + dm_assert(new_page); /*Allocate the object type specific extended data*/ - lv_page_ext_t * ext_dp = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_page_ext_t)); - dm_assert(ext_dp); + lv_page_ext_t * ext = lv_obj_alloc_ext(new_page, sizeof(lv_page_ext_t)); + dm_assert(ext); if(ancestor_design_f == NULL) { - ancestor_design_f = lv_obj_get_design_f(new_obj_dp); + ancestor_design_f = lv_obj_get_design_f(new_page); } /*Init the new page object*/ - if(copy_dp == NULL) { - lv_pages_t * style = lv_pages_get(LV_PAGES_DEF, NULL); - ext_dp->scrolling_dp = lv_rect_create(new_obj_dp, NULL); - lv_obj_set_signal_f(ext_dp->scrolling_dp, lv_scrolling_signal); - lv_obj_set_drag(ext_dp->scrolling_dp, true); - lv_obj_set_drag_throw(ext_dp->scrolling_dp, true); - lv_rect_set_fit(ext_dp->scrolling_dp, true, true); - lv_obj_set_style(ext_dp->scrolling_dp, &style->scrable_rects); + if(copy == NULL) { + lv_pages_t * pages = lv_pages_get(LV_PAGES_DEF, NULL); + ext->scrolling = lv_rect_create(new_page, NULL); + lv_obj_set_signal_f(ext->scrolling, lv_scrolling_signal); + lv_obj_set_drag(ext->scrolling, true); + lv_obj_set_drag_throw(ext->scrolling, true); + lv_rect_set_fit(ext->scrolling, true, true); + lv_obj_set_style(ext->scrolling, &pages->scrable_rects); - /* Add the signal function only if 'scrolling_dp' is created + /* Add the signal function only if 'scrolling' is created * because everything has to be ready before any signal is received*/ - lv_obj_set_signal_f(new_obj_dp, lv_page_signal); - lv_obj_set_design_f(new_obj_dp, lv_page_design); - lv_obj_set_style(new_obj_dp, style); + lv_obj_set_signal_f(new_page, lv_page_signal); + lv_obj_set_design_f(new_page, lv_page_design); + lv_obj_set_style(new_page, pages); } else { - lv_page_ext_t * copy_ext_dp = lv_obj_get_ext(copy_dp); - ext_dp->scrolling_dp = lv_rect_create(new_obj_dp, copy_ext_dp->scrolling_dp); - lv_obj_set_signal_f(ext_dp->scrolling_dp, lv_scrolling_signal); + lv_page_ext_t * copy_ext = lv_obj_get_ext(copy); + ext->scrolling = lv_rect_create(new_page, copy_ext->scrolling); + lv_obj_set_signal_f(ext->scrolling, lv_scrolling_signal); - /* Add the signal function only if 'scrolling_dp' is created + /* Add the signal function only if 'scrolling' is created * because everything has to be ready before any signal is received*/ - lv_obj_set_signal_f(new_obj_dp, lv_page_signal); - lv_obj_set_design_f(new_obj_dp, lv_page_design); - lv_obj_set_style(new_obj_dp, lv_obj_get_style(copy_dp)); + lv_obj_set_signal_f(new_page, lv_page_signal); + lv_obj_set_design_f(new_page, lv_page_design); + lv_obj_set_style(new_page, lv_obj_get_style(copy)); } - lv_page_sb_refresh(new_obj_dp); + lv_page_sb_refresh(new_page); - return new_obj_dp; + return new_page; } /** * Signal function of the page - * @param obj_dp pointer to a page object + * @param page pointer to a page object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_page_signal(lv_obj_t* obj_dp, lv_signal_t sign, void* param) +bool lv_page_signal(lv_obj_t * page, lv_signal_t sign, void * param) { bool obj_valid = true; /* Include the ancient signal function */ - obj_valid = lv_rect_signal(obj_dp, sign, param); + obj_valid = lv_rect_signal(page, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ if(obj_valid != false) { - lv_page_ext_t * page_ext_p = lv_obj_get_ext(obj_dp); - lv_pages_t * pages_p = lv_obj_get_style(obj_dp); + lv_page_ext_t * ext = lv_obj_get_ext(page); + lv_pages_t * pages = lv_obj_get_style(page); lv_obj_t * child; switch(sign) { case LV_SIGNAL_CHILD_CHG: /*Be sure, only scrollable object is on the page*/ - child = lv_obj_get_child(obj_dp, NULL); + child = lv_obj_get_child(page, NULL); while(child != NULL) { - if(child != page_ext_p->scrolling_dp) { + if(child != ext->scrolling) { lv_obj_t * tmp = child; - child = lv_obj_get_child(obj_dp, child); /*Get the next child before move this*/ - lv_obj_set_parent(tmp, page_ext_p->scrolling_dp); + child = lv_obj_get_child(page, child); /*Get the next child before move this*/ + lv_obj_set_parent(tmp, ext->scrolling); } else { - child = lv_obj_get_child(obj_dp, child); + child = lv_obj_get_child(page, child); } } break; case LV_SIGNAL_STYLE_CHG: - area_set_height(&page_ext_p->sbh, pages_p->sb_width); - area_set_width(&page_ext_p->sbv, pages_p->sb_width); - lv_obj_set_style(page_ext_p->scrolling_dp, &pages_p->scrable_rects); + area_set_height(&ext->sbh, pages->sb_width); + area_set_width(&ext->sbv, pages->sb_width); + lv_obj_set_style(ext->scrolling, &pages->scrable_rects); - if(pages_p->sb_mode == LV_PAGE_SB_MODE_ON) { - page_ext_p->sbh_draw = 1; - page_ext_p->sbv_draw = 1; + if(pages->sb_mode == LV_PAGE_SB_MODE_ON) { + ext->sbh_draw = 1; + ext->sbv_draw = 1; } else { - page_ext_p->sbh_draw = 0; - page_ext_p->sbv_draw = 0; + ext->sbh_draw = 0; + ext->sbv_draw = 0; } - lv_page_sb_refresh(obj_dp); + lv_page_sb_refresh(page); break; case LV_SIGNAL_CORD_CHG: - lv_page_sb_refresh(obj_dp); + lv_page_sb_refresh(page); break; default: break; @@ -166,16 +166,16 @@ bool lv_page_signal(lv_obj_t* obj_dp, lv_signal_t sign, void* param) /** * Signal function of the scrollable part of a page - * @param obj_dp pointer to the scrollable object + * @param scrolling pointer to the scrollable object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -static bool lv_scrolling_signal(lv_obj_t* obj_dp, lv_signal_t sign, void* param) +static bool lv_scrolling_signal(lv_obj_t * scrolling, lv_signal_t sign, void* param) { bool obj_valid = true; /* Include the ancient signal function */ - obj_valid = lv_rect_signal(obj_dp, sign, param); + obj_valid = lv_rect_signal(scrolling, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ @@ -187,18 +187,18 @@ static bool lv_scrolling_signal(lv_obj_t* obj_dp, lv_signal_t sign, void* param) bool refr_y = false; area_t page_cords; area_t obj_cords; - lv_obj_t * page_p = lv_obj_get_parent(obj_dp); - lv_pages_t * pages_p = lv_obj_get_style(page_p); - lv_page_ext_t * page_ext_dp = lv_obj_get_ext(page_p); - cord_t hpad = pages_p->bg_rects.hpad; - cord_t vpad = pages_p->bg_rects.vpad; + lv_obj_t * page = lv_obj_get_parent(scrolling); + lv_pages_t * pages = lv_obj_get_style(page); + lv_page_ext_t * page_ext = lv_obj_get_ext(page); + cord_t hpad = pages->bg_rects.hpad; + cord_t vpad = pages->bg_rects.vpad; switch(sign) { case LV_SIGNAL_CORD_CHG: - new_x = lv_obj_get_x(obj_dp); - new_y = lv_obj_get_y(obj_dp); - lv_obj_get_cords(obj_dp, &obj_cords); - lv_obj_get_cords(page_p, &page_cords); + new_x = lv_obj_get_x(scrolling); + new_y = lv_obj_get_y(scrolling); + lv_obj_get_cords(scrolling, &obj_cords); + lv_obj_get_cords(page, &page_cords); /*scrollable width smaller then page width? -> align to left*/ if(area_get_width(&obj_cords) + 2 * hpad < area_get_width(&page_cords)) { @@ -236,31 +236,31 @@ static bool lv_scrolling_signal(lv_obj_t* obj_dp, lv_signal_t sign, void* param) } } if(refr_x != false || refr_y != false) { - lv_obj_set_pos(obj_dp, new_x, new_y); + lv_obj_set_pos(scrolling, new_x, new_y); } - lv_page_sb_refresh(page_p); + lv_page_sb_refresh(page); break; case LV_SIGNAL_DRAG_BEGIN: - if(pages_p->sb_mode == LV_PAGE_SB_MODE_AUTO ) { - if(area_get_height(&page_ext_dp->sbv) < lv_obj_get_height(obj_dp) - pages_p->sb_width) { - page_ext_dp->sbv_draw = 1; - lv_inv_area(&page_ext_dp->sbv); + if(pages->sb_mode == LV_PAGE_SB_MODE_AUTO ) { + if(area_get_height(&page_ext->sbv) < lv_obj_get_height(scrolling) - pages->sb_width) { + page_ext->sbv_draw = 1; + lv_inv_area(&page_ext->sbv); } - if(area_get_width(&page_ext_dp->sbh) < lv_obj_get_width(obj_dp) - pages_p->sb_width) { - page_ext_dp->sbh_draw = 1; - lv_inv_area(&page_ext_dp->sbh); + if(area_get_width(&page_ext->sbh) < lv_obj_get_width(scrolling) - pages->sb_width) { + page_ext->sbh_draw = 1; + lv_inv_area(&page_ext->sbh); } } break; case LV_SIGNAL_DRAG_END: - if(pages_p->sb_mode == LV_PAGE_SB_MODE_AUTO) { - page_ext_dp->sbh_draw = 0; - page_ext_dp->sbv_draw = 0; - lv_inv_area(&page_ext_dp->sbh); - lv_inv_area(&page_ext_dp->sbv); + if(pages->sb_mode == LV_PAGE_SB_MODE_AUTO) { + page_ext->sbh_draw = 0; + page_ext->sbv_draw = 0; + lv_inv_area(&page_ext->sbh); + lv_inv_area(&page_ext->sbv); } break; default: @@ -278,13 +278,13 @@ static bool lv_scrolling_signal(lv_obj_t* obj_dp, lv_signal_t sign, void* param) /** * Glue the object to the page. After it the page can be moved (dragged) with this object too. - * @param obj_dp pointer to an object on a page - * @param en true: enable glue, false: disable glue + * @param page pointer to an object on a page + * @param glue true: enable glue, false: disable glue */ -void lv_page_glue_obj(lv_obj_t* obj_dp, bool en) +void lv_page_glue_obj(lv_obj_t * page, bool glue) { - lv_obj_set_drag_parent(obj_dp, en); - lv_obj_set_drag(obj_dp, en); + lv_obj_set_drag_parent(page, glue); + lv_obj_set_drag(page, glue); } @@ -295,10 +295,10 @@ void lv_page_glue_obj(lv_obj_t* obj_dp, bool en) /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_pages_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_pages_t style */ -lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * to_copy) +lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * copy) { static bool style_inited = false; @@ -321,9 +321,9 @@ lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * to_copy) style_p = &lv_pages_def; } - if(to_copy != NULL) { - if(style_p != NULL) memcpy(to_copy, style_p, sizeof(lv_pages_t)); - else memcpy(to_copy, &lv_pages_def, sizeof(lv_pages_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_pages_t)); + else memcpy(copy, &lv_pages_def, sizeof(lv_pages_t)); } return style_p; @@ -335,7 +335,7 @@ lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * to_copy) /** * Handle the drawing related tasks of the pages - * @param obj_dp pointer to an object + * @param page pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -343,24 +343,24 @@ lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * to_copy) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_page_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_page_design(lv_obj_t * page, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { - return ancestor_design_f(obj_dp, mask_p, mode); + return ancestor_design_f(page, mask, mode); } else if(mode == LV_DESIGN_DRAW_MAIN) { - ancestor_design_f(obj_dp, mask_p, mode); + ancestor_design_f(page, mask, mode); } else if(mode == LV_DESIGN_DRAW_POST) { /*Draw the scroll bars finally*/ - lv_page_ext_t * page_ext_dp = lv_obj_get_ext(obj_dp); - lv_pages_t * pages_p = lv_obj_get_style(obj_dp); - opa_t sb_opa = lv_obj_get_opa(obj_dp) * pages_p->sb_opa /100; + lv_page_ext_t * ext = lv_obj_get_ext(page); + lv_pages_t * style = lv_obj_get_style(page); + opa_t sb_opa = lv_obj_get_opa(page) * style->sb_opa /100; /*Draw the scrollbars*/ - if(page_ext_dp->sbh_draw != 0) { - lv_draw_rect(&page_ext_dp->sbh, mask_p, &pages_p->sb_rects, sb_opa); + if(ext->sbh_draw != 0) { + lv_draw_rect(&ext->sbh, mask, &style->sb_rects, sb_opa); } - if(page_ext_dp->sbv_draw != 0) { - lv_draw_rect(&page_ext_dp->sbv, mask_p, &pages_p->sb_rects, sb_opa); + if(ext->sbv_draw != 0) { + lv_draw_rect(&ext->sbv, mask, &style->sb_rects, sb_opa); } } @@ -368,68 +368,63 @@ static bool lv_page_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mo } /** - * Handle the drawing related tasks of the pages - * @param obj_dp pointer to an object - * @param mask the object will be drawn only in this area - * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area - * (return 'true' if yes) - * LV_DESIGN_DRAW: draw the object (always return 'true') - * @param return true/false, depends on 'mode' + * Refresh the position and size of the scroll bars. + * @param page pointer to a page object */ -static void lv_page_sb_refresh(lv_obj_t* page_dp) +static void lv_page_sb_refresh(lv_obj_t * page) { - lv_page_ext_t * page_ext_dp = lv_obj_get_ext(page_dp); - lv_pages_t * pages_p = lv_obj_get_style(page_dp); - lv_obj_t* scrolling_dp = page_ext_dp->scrolling_dp; + lv_page_ext_t * page_ext = lv_obj_get_ext(page); + lv_pages_t * pages = lv_obj_get_style(page); + lv_obj_t * scrolling = page_ext->scrolling; cord_t size_tmp; - cord_t scrolling_w = lv_obj_get_width(scrolling_dp); - cord_t scrolling_h = lv_obj_get_height(scrolling_dp); - cord_t hpad = pages_p->bg_rects.hpad; - cord_t vpad = pages_p->bg_rects.vpad; - cord_t obj_w = lv_obj_get_width(page_dp); - cord_t obj_h = lv_obj_get_height(page_dp); - cord_t page_x0 = page_dp->cords.x1; - cord_t page_y0 = page_dp->cords.y1; + cord_t scrolling_w = lv_obj_get_width(scrolling); + cord_t scrolling_h = lv_obj_get_height(scrolling); + cord_t hpad = pages->bg_rects.hpad; + cord_t vpad = pages->bg_rects.vpad; + cord_t obj_w = lv_obj_get_width(page); + cord_t obj_h = lv_obj_get_height(page); + cord_t page_x0 = page->cords.x1; + cord_t page_y0 = page->cords.y1; - lv_inv_area(&page_ext_dp->sbh); - lv_inv_area(&page_ext_dp->sbv); + lv_inv_area(&page_ext->sbh); + lv_inv_area(&page_ext->sbv); /*Horizontal scrollbar*/ if(scrolling_w <= obj_w - 2 * hpad) { /*Full sized scroll bar*/ - area_set_width(&page_ext_dp->sbh, obj_w - pages_p->sb_width); - area_set_pos(&page_ext_dp->sbh, page_x0, page_y0 + obj_h - pages_p->sb_width); + area_set_width(&page_ext->sbh, obj_w - pages->sb_width); + area_set_pos(&page_ext->sbh, page_x0, page_y0 + obj_h - pages->sb_width); } else { - if(pages_p->sb_mode == LV_PAGE_SB_MODE_ON) { - page_ext_dp->sbh_draw = 1; + if(pages->sb_mode == LV_PAGE_SB_MODE_ON) { + page_ext->sbh_draw = 1; } - size_tmp = (((obj_w - hpad) * (obj_w - pages_p->sb_width)) / scrolling_w); - area_set_width(&page_ext_dp->sbh, size_tmp); + size_tmp = (((obj_w - hpad) * (obj_w - pages->sb_width)) / scrolling_w); + area_set_width(&page_ext->sbh, size_tmp); - area_set_pos(&page_ext_dp->sbh, page_x0 + - ( -(lv_obj_get_x(scrolling_dp) - hpad) * (obj_w - size_tmp - pages_p->sb_width)) / + area_set_pos(&page_ext->sbh, page_x0 + + ( -(lv_obj_get_x(scrolling) - hpad) * (obj_w - size_tmp - pages->sb_width)) / (scrolling_w - obj_w + 2 * hpad), - page_y0 + obj_h - pages_p->sb_width); + page_y0 + obj_h - pages->sb_width); } /*Vertical scrollbar*/ if(scrolling_h <= obj_h - 2 * vpad) { /*Full sized scroll bar*/ - area_set_height(&page_ext_dp->sbv, obj_h - pages_p->sb_width); - area_set_pos(&page_ext_dp->sbv, page_x0 + obj_w - pages_p->sb_width, 0); + area_set_height(&page_ext->sbv, obj_h - pages->sb_width); + area_set_pos(&page_ext->sbv, page_x0 + obj_w - pages->sb_width, 0); } else { - if(pages_p->sb_mode == LV_PAGE_SB_MODE_ON) { - page_ext_dp->sbv_draw = 1; + if(pages->sb_mode == LV_PAGE_SB_MODE_ON) { + page_ext->sbv_draw = 1; } - size_tmp = (((obj_h - vpad) * (obj_h - pages_p->sb_width)) / scrolling_h); - area_set_height(&page_ext_dp->sbv, size_tmp); + size_tmp = (((obj_h - vpad) * (obj_h - pages->sb_width)) / scrolling_h); + area_set_height(&page_ext->sbv, size_tmp); - area_set_pos(&page_ext_dp->sbv, page_x0 + obj_w - pages_p->sb_width, + area_set_pos(&page_ext->sbv, page_x0 + obj_w - pages->sb_width, page_y0 + - (-(lv_obj_get_y(scrolling_dp) - vpad) * (obj_h - size_tmp - pages_p->sb_width)) / + (-(lv_obj_get_y(scrolling) - vpad) * (obj_h - size_tmp - pages->sb_width)) / (scrolling_h - obj_h + 2 * vpad)); } - lv_inv_area(&page_ext_dp->sbh); - lv_inv_area(&page_ext_dp->sbv); + lv_inv_area(&page_ext->sbh); + lv_inv_area(&page_ext->sbv); } /** diff --git a/lv_objx/lv_page.h b/lv_objx/lv_page.h index 51b80611b..76abc1587 100644 --- a/lv_objx/lv_page.h +++ b/lv_objx/lv_page.h @@ -29,6 +29,7 @@ typedef enum LV_PAGE_SB_MODE_AUTO, }lv_page_sb_mode_t; +/*Style of page*/ typedef struct { lv_rects_t bg_rects; /*Style of ancestor*/ @@ -40,32 +41,35 @@ typedef struct uint8_t sb_opa; }lv_pages_t; - -typedef struct -{ - lv_rect_ext_t rect_ext; /*Ext. of ancestor*/ - /*New data for this type */ - lv_obj_t * scrolling_dp; /*The scrollable object on the background*/ - area_t sbh; /*Horizontal scrollbar*/ - area_t sbv; /*Vertical scrollbar*/ - uint8_t sbh_draw :1; /*1: horizontal scrollbar is visible now*/ - uint8_t sbv_draw :1; /*1: vertical scrollbar is visible now*/ -}lv_page_ext_t; - +/*Built-in styles of page*/ typedef enum { LV_PAGES_DEF, LV_PAGES_TRANSP, }lv_pages_builtin_t; +/*Data of page*/ +typedef struct +{ + lv_rect_ext_t rect_ext; /*Ext. of ancestor*/ + /*New data for this type */ + lv_obj_t * scrolling; /*The scrollable object on the background*/ + area_t sbh; /*Horizontal scrollbar*/ + area_t sbv; /*Vertical scrollbar*/ + uint8_t sbh_draw :1; /*1: horizontal scrollbar is visible now*/ + uint8_t sbv_draw :1; /*1: vertical scrollbar is visible now*/ +}lv_page_ext_t; + + + /********************** * GLOBAL PROTOTYPES **********************/ /*Create function*/ -lv_obj_t* lv_page_create(lv_obj_t* par_dp, lv_obj_t * ori_dp); -void lv_page_glue_obj(lv_obj_t* page_p, bool en); -lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * to_copy); -bool lv_page_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); +lv_obj_t * lv_page_create(lv_obj_t * par, lv_obj_t * copy); +void lv_page_glue_obj(lv_obj_t * page, bool glue); +lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * copy); +bool lv_page_signal(lv_obj_t * page, lv_signal_t sign, void * param); /********************** * MACROS diff --git a/lv_objx/lv_pb.c b/lv_objx/lv_pb.c index bfba40435..87d7bdbfd 100644 --- a/lv_objx/lv_pb.c +++ b/lv_objx/lv_pb.c @@ -28,14 +28,14 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_pb_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_pb_design(lv_obj_t * pb, const area_t * mask, lv_design_mode_t mode); static void lv_pbs_init(void); /********************** * STATIC VARIABLES **********************/ -static lv_design_f_t ancestor_design_fp; static lv_pbs_t lv_pbs_def; +static lv_design_f_t ancestor_design_fp; /********************** * MACROS @@ -51,78 +51,78 @@ static lv_pbs_t lv_pbs_def; /** * Create a progress bar objects - * @param par_dp pointer to an object, it will be the parent of the new progress bar - * @param copy_dp pointer to a progress bar object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new progress bar + * @param copy pointer to a progress bar object, if not NULL then the new object will be copied from it * @return pointer to the created progress bar */ -lv_obj_t* lv_pb_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_pb_create(lv_obj_t * par, lv_obj_t * copy) { /*Create the ancestor basic object*/ - lv_obj_t* new_obj_dp = lv_rect_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + lv_obj_t * new_pb = lv_rect_create(par, copy); + dm_assert(new_pb); /*Allocate the object type specific extended data*/ - lv_pb_ext_t * ext_dp = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_pb_ext_t)); - dm_assert(ext_dp); + lv_pb_ext_t * ext = lv_obj_alloc_ext(new_pb, sizeof(lv_pb_ext_t)); + dm_assert(ext); /* Save the rectangle design function. * It will be used in the progress bar design function*/ if(ancestor_design_fp == NULL) { - ancestor_design_fp = lv_obj_get_design_f(new_obj_dp); + ancestor_design_fp = lv_obj_get_design_f(new_pb); } /*Init the new progress bar object*/ - if(copy_dp == NULL) { - ext_dp->format_dp = dm_alloc(strlen(LV_PB_DEF_FORMAT) + 1); - strcpy(ext_dp->format_dp, LV_PB_DEF_FORMAT); - ext_dp->min_value = 0; - ext_dp->max_value = 100; - ext_dp->act_value = 0; + if(copy == NULL) { + ext->format = dm_alloc(strlen(LV_PB_DEF_FORMAT) + 1); + strcpy(ext->format, LV_PB_DEF_FORMAT); + ext->min_value = 0; + ext->max_value = 100; + ext->act_value = 0; - lv_label_create(new_obj_dp, NULL); + lv_label_create(new_pb, NULL); - lv_rect_set_layout(new_obj_dp, LV_RECT_LAYOUT_CENTER); - lv_obj_set_signal_f(new_obj_dp, lv_pb_signal); - lv_obj_set_style(new_obj_dp, lv_pbs_get(LV_PBS_DEF, NULL)); - lv_obj_set_design_f(new_obj_dp, lv_pb_design); + lv_rect_set_layout(new_pb, LV_RECT_LAYOUT_CENTER); + lv_obj_set_signal_f(new_pb, lv_pb_signal); + lv_obj_set_style(new_pb, lv_pbs_get(LV_PBS_DEF, NULL)); + lv_obj_set_design_f(new_pb, lv_pb_design); - lv_pb_set_value(new_obj_dp, ext_dp->act_value); + lv_pb_set_value(new_pb, ext->act_value); } else { - lv_pb_ext_t * ext_copy_dp = lv_obj_get_ext(copy_dp); - ext_dp->format_dp = dm_alloc(strlen(ext_copy_dp->format_dp) + 1); - strcpy(ext_dp->format_dp, ext_copy_dp->format_dp); - ext_dp->min_value = ext_copy_dp->min_value; - ext_dp->max_value = ext_copy_dp->max_value; - ext_dp->act_value = ext_copy_dp->act_value; + lv_pb_ext_t * ext_copy = lv_obj_get_ext(copy); + ext->format = dm_alloc(strlen(ext_copy->format) + 1); + strcpy(ext->format, ext_copy->format); + ext->min_value = ext_copy->min_value; + ext->max_value = ext_copy->max_value; + ext->act_value = ext_copy->act_value; } - return new_obj_dp; + return new_pb; } /** * Signal function of the progress bar - * @param obj_dp pointer to a progress bar object + * @param pb pointer to a progress bar object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_pb_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_pb_signal(lv_obj_t * pb, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_rect_signal(obj_dp, sign, param); + valid = lv_rect_signal(pb, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ if(valid != false) { - lv_pb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_pb_ext_t * ext = lv_obj_get_ext(pb); switch(sign) { case LV_SIGNAL_CORD_CHG: - lv_pb_set_value(obj_dp, ext_dp->act_value); + lv_pb_set_value(pb, ext->act_value); break; case LV_SIGNAL_CLEANUP: - dm_free(ext_dp->format_dp); + dm_free(ext->format); break; default: break; @@ -138,51 +138,51 @@ bool lv_pb_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Set a new value on the progress bar - * @param obj_dp pointer to a progress bar object + * @param pb pointer to a progress bar object * @param value new value */ -void lv_pb_set_value(lv_obj_t * obj_dp, uint16_t value) +void lv_pb_set_value(lv_obj_t * pb, uint16_t value) { - lv_pb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - ext_dp->act_value = value > ext_dp->max_value ? ext_dp->max_value : value; + lv_pb_ext_t * ext = lv_obj_get_ext(pb); + ext->act_value = value > ext->max_value ? ext->max_value : value; char buf[LV_PB_TXT_MAX_LENGTH]; - sprintf(buf, ext_dp->format_dp, ext_dp->act_value); - lv_label_set_text(lv_obj_get_child(obj_dp, NULL), buf); + sprintf(buf, ext->format, ext->act_value); + lv_label_set_text(lv_obj_get_child(pb, NULL), buf); - lv_obj_inv(obj_dp); + lv_obj_inv(pb); } /** * Set minimum and the maximum values of a progress bar - * @param obj_dp pointer to he progress bar object + * @param pb pointer to he progress bar object * @param min minimum value * @param max maximum value */ -void lv_pb_set_min_max_value(lv_obj_t * obj_dp, uint16_t min, uint16_t max) +void lv_pb_set_min_max_value(lv_obj_t * pb, uint16_t min, uint16_t max) { - lv_pb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - ext_dp->max_value = max; - ext_dp->max_value = max; - if(ext_dp->act_value > max) { - ext_dp->act_value = max; - lv_pb_set_value(obj_dp, ext_dp->act_value); + lv_pb_ext_t * ext = lv_obj_get_ext(pb); + ext->max_value = max; + ext->max_value = max; + if(ext->act_value > max) { + ext->act_value = max; + lv_pb_set_value(pb, ext->act_value); } - lv_obj_inv(obj_dp); + lv_obj_inv(pb); } /** * Set format string for the label of the progress bar - * @param obj_dp pointer to progress bar object + * @param pb pointer to progress bar object * @param format a printf-like format string with one number (e.g. "Loading (%d)") */ -void lv_pb_set_format(lv_obj_t * obj_dp, const char * format) +void lv_pb_set_format(lv_obj_t * pb, const char * format) { - lv_pb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - dm_free(ext_dp->format_dp); - ext_dp->format_dp = dm_alloc(strlen(format) + 1); - strcpy(ext_dp->format_dp, format); - lv_pb_set_value(obj_dp, ext_dp->act_value); + lv_pb_ext_t * ext = lv_obj_get_ext(pb); + dm_free(ext->format); + ext->format = dm_alloc(strlen(format) + 1); + strcpy(ext->format, format); + lv_pb_set_value(pb, ext->act_value); } /*===================== @@ -191,22 +191,22 @@ void lv_pb_set_format(lv_obj_t * obj_dp, const char * format) /** * Get the value of a progress bar - * @param obj_dp pointer to a progress bar object + * @param pb pointer to a progress bar object * @return the value of the progress bar */ -uint16_t lv_pb_get_value(lv_obj_t * obj_dp) +uint16_t lv_pb_get_value(lv_obj_t * pb) { - lv_pb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); - return ext_dp->act_value; + lv_pb_ext_t * ext = lv_obj_get_ext(pb); + return ext->act_value; } /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_pbs_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_pbs_t style */ -lv_pbs_t * lv_pbs_get(lv_pbs_builtin_t style, lv_pbs_t * copy_p) +lv_pbs_t * lv_pbs_get(lv_pbs_builtin_t style, lv_pbs_t * copy) { static bool style_inited = false; @@ -226,9 +226,9 @@ lv_pbs_t * lv_pbs_get(lv_pbs_builtin_t style, lv_pbs_t * copy_p) style_p = &lv_pbs_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_pbs_t)); - else memcpy(copy_p, &lv_pbs_def, sizeof(lv_pbs_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_pbs_t)); + else memcpy(copy, &lv_pbs_def, sizeof(lv_pbs_t)); } return style_p; @@ -241,7 +241,7 @@ lv_pbs_t * lv_pbs_get(lv_pbs_builtin_t style, lv_pbs_t * copy_p) /** * Handle the drawing related tasks of the progress bars - * @param obj_dp pointer to an object + * @param pb pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -249,26 +249,26 @@ lv_pbs_t * lv_pbs_get(lv_pbs_builtin_t style, lv_pbs_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_pb_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_pb_design(lv_obj_t * pb, const area_t * mask, lv_design_mode_t mode) { if(ancestor_design_fp == NULL) return false; if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ - return ancestor_design_fp(obj_dp, mask_p, mode); + return ancestor_design_fp(pb, mask, mode); } else if(mode == LV_DESIGN_DRAW_MAIN) { - ancestor_design_fp(obj_dp, mask_p, mode); + ancestor_design_fp(pb, mask, mode); - lv_pb_ext_t * ext_dp = lv_obj_get_ext(obj_dp); + lv_pb_ext_t * ext = lv_obj_get_ext(pb); area_t bar_area; uint32_t tmp; - area_cpy(&bar_area, &obj_dp->cords); - tmp = (uint32_t)ext_dp->act_value * lv_obj_get_width(obj_dp); - tmp = (uint32_t) tmp / (ext_dp->max_value - ext_dp->min_value); + area_cpy(&bar_area, &pb->cords); + tmp = (uint32_t)ext->act_value * lv_obj_get_width(pb); + tmp = (uint32_t) tmp / (ext->max_value - ext->min_value); bar_area.x2 = bar_area.x1 + (cord_t) tmp; - lv_pbs_t * style_p = lv_obj_get_style(obj_dp); - lv_draw_rect(&bar_area, mask_p, &style_p->bar, OPA_COVER); + lv_pbs_t * style_p = lv_obj_get_style(pb); + lv_draw_rect(&bar_area, mask, &style_p->bar, OPA_COVER); } return true; } diff --git a/lv_objx/lv_pb.h b/lv_objx/lv_pb.h index d786881ee..ef7e69506 100644 --- a/lv_objx/lv_pb.h +++ b/lv_objx/lv_pb.h @@ -41,22 +41,23 @@ typedef enum /*Data of progress bar*/ typedef struct { - lv_rect_ext_t rect_ext; + lv_rect_ext_t rect_ext; /*Ext. of ancestor*/ + /*New data for this type */ uint16_t act_value; uint16_t min_value; uint16_t max_value; - char * format_dp; /*Format string of the label*/ + char * format; /*Format string of the label*/ }lv_pb_ext_t; /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t* lv_pb_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_pb_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -void lv_pb_set_value(lv_obj_t * obj_dp, uint16_t value); -void lv_pb_set_min_max_value(lv_obj_t * obj_dp, uint16_t min, uint16_t max); -void lv_pb_set_format(lv_obj_t * obj_dp, const char * format); -uint16_t lv_pb_get_value(lv_obj_t * obj_dp); +lv_obj_t * lv_pb_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_pb_signal(lv_obj_t * obj, lv_signal_t sign, void * param); +void lv_pb_set_value(lv_obj_t * obj, uint16_t value); +void lv_pb_set_min_max_value(lv_obj_t * obj, uint16_t min, uint16_t max); +void lv_pb_set_format(lv_obj_t * obj, const char * format); +uint16_t lv_pb_get_value(lv_obj_t * obj); lv_pbs_t * lv_pbs_get(lv_pbs_builtin_t style, lv_pbs_t * copy_p); /********************** diff --git a/lv_objx/lv_rect.c b/lv_objx/lv_rect.c index 912376ed6..357f20744 100644 --- a/lv_objx/lv_rect.c +++ b/lv_objx/lv_rect.c @@ -6,20 +6,22 @@ /********************* * INCLUDES *********************/ +#include "lv_conf.h" + +#if USE_LV_RECT != 0 -#include -#include -#include -#include #include #include #include -#if USE_LV_RECT != 0 - #include "lv_rect.h" #include "../lv_draw/lv_draw.h" #include "../lv_draw/lv_draw_vbasic.h" +#include "../lv_misc/area.h" + +#include "misc/mem/dyn_mem.h" +#include "misc/mem/linked_list.h" +#include "misc/others/color.h" #include "misc/math/math_base.h" /********************* @@ -33,14 +35,14 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_rect_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); +static bool lv_rect_design(lv_obj_t * rect, const area_t * mask, lv_design_mode_t mode); static void lv_rects_init(void); -static void lv_rect_refr_layout(lv_obj_t * obj_dp); -static void lv_rect_layout_col(lv_obj_t * obj_dp); -static void lv_rect_layout_row(lv_obj_t * obj_dp); -static void lv_rect_layout_center(lv_obj_t * obj_dp); -static void lv_rect_layout_grid(lv_obj_t * obj_dp); -static void lv_rect_refr_autofit(lv_obj_t * obj_dp); +static void lv_rect_refr_layout(lv_obj_t * rect); +static void lv_rect_layout_col(lv_obj_t * rect); +static void lv_rect_layout_row(lv_obj_t * rect); +static void lv_rect_layout_center(lv_obj_t * rect); +static void lv_rect_layout_grid(lv_obj_t * rect); +static void lv_rect_refr_autofit(lv_obj_t * rect); /********************** * STATIC VARIABLES @@ -63,47 +65,49 @@ static lv_rects_t lv_rects_border; /** * Create a label objects - * @param par_dp pointer to an object, it will be the parent of the new label - * @param copy_dp pointer to a rectangle object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new label + * @param copy pointer to a rectangle object, if not NULL then the new object will be copied from it * @return pointer to the created label */ -lv_obj_t* lv_rect_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_rect_create(lv_obj_t * par, lv_obj_t * copy) { /*Create a basic object*/ - lv_obj_t* new_obj_dp = lv_obj_create(par_dp, copy_dp); - dm_assert(new_obj_dp); - lv_obj_alloc_ext(new_obj_dp, sizeof(lv_rect_ext_t)); - lv_rect_ext_t * rect_ext_dp = lv_obj_get_ext(new_obj_dp); - lv_obj_set_design_f(new_obj_dp, lv_rect_design); - lv_obj_set_signal_f(new_obj_dp, lv_rect_signal); + lv_obj_t * new_rect = lv_obj_create(par, copy); + dm_assert(new_rect); + lv_obj_alloc_ext(new_rect, sizeof(lv_rect_ext_t)); + lv_rect_ext_t * rect_ext = lv_obj_get_ext(new_rect); + lv_obj_set_design_f(new_rect, lv_rect_design); + lv_obj_set_signal_f(new_rect, lv_rect_signal); /*Init the new rectangle*/ - if(copy_dp == NULL) { - lv_obj_set_style(new_obj_dp, lv_rects_get(LV_RECTS_DEF, NULL)); - rect_ext_dp->hfit_en = 0; - rect_ext_dp->vfit_en = 0; - } else { - lv_rect_ext_t * ori_rect_ext = lv_obj_get_ext(copy_dp); - rect_ext_dp->hfit_en = ori_rect_ext->hfit_en; - rect_ext_dp->vfit_en = ori_rect_ext->vfit_en; - rect_ext_dp->layout = ori_rect_ext->layout; + if(copy == NULL) { + lv_obj_set_style(new_rect, lv_rects_get(LV_RECTS_DEF, NULL)); + rect_ext->hfit_en = 0; + rect_ext->vfit_en = 0; + } + /*Copy an existing object*/ + else { + lv_rect_ext_t * ori_rect_ext = lv_obj_get_ext(copy); + rect_ext->hfit_en = ori_rect_ext->hfit_en; + rect_ext->vfit_en = ori_rect_ext->vfit_en; + rect_ext->layout = ori_rect_ext->layout; } - return new_obj_dp; + return new_rect; } -uint32_t sign_cnt = 0; + /** * Signal function of the rectangle - * @param obj_dp pointer to a rectangle object + * @param rect pointer to a rectangle object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable */ -bool lv_rect_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_rect_signal(lv_obj_t * rect, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_obj_signal(obj_dp, sign, param); + valid = lv_obj_signal(rect, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ @@ -111,16 +115,14 @@ bool lv_rect_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) switch(sign) { case LV_SIGNAL_STYLE_CHG: /*Recalculate the padding if the style changed*/ case LV_SIGNAL_CHILD_CHG: - sign_cnt++; - lv_rect_refr_layout(obj_dp); - lv_rect_refr_autofit(obj_dp); + lv_rect_refr_layout(rect); + lv_rect_refr_autofit(rect); break; case LV_SIGNAL_CORD_CHG: - sign_cnt++; - if(lv_obj_get_width(obj_dp) != area_get_width(param) || - lv_obj_get_height(obj_dp) != area_get_height(param)) { - lv_rect_refr_layout(obj_dp); - lv_rect_refr_autofit(obj_dp); + if(lv_obj_get_width(rect) != area_get_width(param) || + lv_obj_get_height(rect) != area_get_height(param)) { + lv_rect_refr_layout(rect); + lv_rect_refr_autofit(rect); } break; @@ -139,73 +141,84 @@ bool lv_rect_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) * Setter functions *====================*/ -void lv_rect_set_layout(lv_obj_t * obj_dp, lv_rect_layout_t layout) +/** + * Set the layout on a rectangle + * @param rect pointer to a rectangle object + * @param layout a layout from 'lv_rect_layout_t' + */ +void lv_rect_set_layout(lv_obj_t * rect, lv_rect_layout_t layout) { - lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); - ext_p->layout = layout; + lv_rect_ext_t * ext = lv_obj_get_ext(rect); + ext->layout = layout; - /*Send a signal to run the paddig calculations*/ - obj_dp->signal_f(obj_dp, LV_SIGNAL_CHILD_CHG, NULL); + /*Send a signal to refresh the layout*/ + rect->signal_f(rect, LV_SIGNAL_CHILD_CHG, NULL); } /** - * Enable the horizontal or vertical padding - * @param obj_dp pointer to a rectangle object + * Enable the horizontal or vertical fit. + * The rectangle size will be set to involve the children horizontally or vertically. + * @param rect pointer to a rectangle object * @param hor_en true: enable the horizontal padding * @param ver_en true: enable the vertical padding */ -void lv_rect_set_fit(lv_obj_t * obj_dp, bool hor_en, bool ver_en) +void lv_rect_set_fit(lv_obj_t * rect, bool hor_en, bool ver_en) { - lv_obj_inv(obj_dp); - lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); - ext_p->hfit_en = hor_en == false ? 0 : 1; - ext_p->vfit_en = ver_en == false ? 0 : 1; + lv_obj_inv(rect); + lv_rect_ext_t * ext = lv_obj_get_ext(rect); + ext->hfit_en = hor_en == false ? 0 : 1; + ext->vfit_en = ver_en == false ? 0 : 1; - /*Send a signal to run the paddig calculations*/ - obj_dp->signal_f(obj_dp, LV_SIGNAL_CORD_CHG, obj_dp); + /*Send a signal to set a new size*/ + rect->signal_f(rect, LV_SIGNAL_CORD_CHG, rect); } /*===================== * Getter functions *====================*/ -lv_rect_layout_t lv_rect_get_layout(lv_obj_t * obj_dp) +/** + * Get the layout of a rectangle + * @param rect pointer to rectangle object + * @return the layout from 'lv_rect_layout_t' + */ +lv_rect_layout_t lv_rect_get_layout(lv_obj_t * rect) { - lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); - return ext_p->layout; + lv_rect_ext_t * ext = lv_obj_get_ext(rect); + return ext->layout; } /** - * Get horizontal padding enable attribute of a rectangle - * @param obj_dp pointer to a rectangle object + * Get horizontal fit enable attribute of a rectangle + * @param rect pointer to a rectangle object * @return true: horizontal padding is enabled */ -bool lv_rect_get_hfit(lv_obj_t * obj_dp) +bool lv_rect_get_hfit(lv_obj_t * rect) { - lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); - return ext_p->hfit_en == 0 ? false : true; + lv_rect_ext_t * ext = lv_obj_get_ext(rect); + return ext->hfit_en == 0 ? false : true; } /** - * Get vertical padding enable attribute of a rectangle - * @param obj_dp pointer to a rectangle object + * Get vertical fit enable attribute of a rectangle + * @param obj pointer to a rectangle object * @return true: vertical padding is enabled */ -bool lv_rect_get_vfit(lv_obj_t * obj_dp) +bool lv_rect_get_vfit(lv_obj_t * rect) { - lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); - return ext_p->vfit_en == 0 ? false : true; + lv_rect_ext_t * ext = lv_obj_get_ext(rect); + return ext->vfit_en == 0 ? false : true; } /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_rects_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_rects_t style */ -lv_rects_t * lv_rects_get(lv_rects_builtin_t style, lv_rects_t * copy_p) +lv_rects_t * lv_rects_get(lv_rects_builtin_t style, lv_rects_t * copy) { static bool style_inited = false; @@ -231,9 +244,9 @@ lv_rects_t * lv_rects_get(lv_rects_builtin_t style, lv_rects_t * copy_p) style_p = &lv_rects_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_rects_t)); - else memcpy(copy_p, &lv_rects_def, sizeof(lv_rects_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_rects_t)); + else memcpy(copy, &lv_rects_def, sizeof(lv_rects_t)); } return style_p; @@ -246,7 +259,7 @@ lv_rects_t * lv_rects_get(lv_rects_builtin_t style, lv_rects_t * copy_p) /** * Handle the drawing related tasks of the rectangles - * @param obj_dp pointer to an object + * @param rect pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -254,39 +267,335 @@ lv_rects_t * lv_rects_get(lv_rects_builtin_t style, lv_rects_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_rect_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_rect_design(lv_obj_t * rect, const area_t * mask, lv_design_mode_t mode) { /* Because of the radius it is not sure the area is covered*/ if(mode == LV_DESIGN_COVER_CHK) { - if(LV_SA(obj_dp, lv_rects_t)->empty != 0) return false; + if(LV_SA(rect, lv_rects_t)->empty != 0) return false; - uint16_t r = LV_SA(obj_dp, lv_rects_t)->round; + uint16_t r = LV_SA(rect, lv_rects_t)->round; area_t area_tmp; /*Check horizontally without radius*/ - lv_obj_get_cords(obj_dp, &area_tmp); + lv_obj_get_cords(rect, &area_tmp); area_tmp.x1 += r; area_tmp.x2 -= r; - if(area_is_in(mask_p, &area_tmp) == true) return true; + if(area_is_in(mask, &area_tmp) == true) return true; /*Check vertically without radius*/ - lv_obj_get_cords(obj_dp, &area_tmp); + lv_obj_get_cords(rect, &area_tmp); area_tmp.y1 += r; area_tmp.y2 -= r; - if(area_is_in(mask_p, &area_tmp) == true) return true; + if(area_is_in(mask, &area_tmp) == true) return true; return false; } else if(mode == LV_DESIGN_DRAW_MAIN) { - opa_t opa = lv_obj_get_opa(obj_dp); + opa_t opa = lv_obj_get_opa(rect); area_t area; - lv_obj_get_cords(obj_dp, &area); + lv_obj_get_cords(rect, &area); /*Draw the rectangle*/ - lv_draw_rect(&area, mask_p, lv_obj_get_style(obj_dp), opa); + lv_draw_rect(&area, mask, lv_obj_get_style(rect), opa); } return true; } +/** + * Refresh the layout of a rectangle + * @param rect pointer to an object which layout should be refreshed + */ +static void lv_rect_refr_layout(lv_obj_t * rect) +{ + lv_rect_layout_t type = lv_rect_get_layout(rect); + + if(type == LV_RECT_LAYOUT_OFF) return; + + if(type == LV_RECT_LAYOUT_CENTER) { + lv_rect_layout_center(rect); + } else if(type == LV_RECT_LAYOUT_COL_L || type == LV_RECT_LAYOUT_COL_M || type == LV_RECT_LAYOUT_COL_R) { + lv_rect_layout_col(rect); + } else if(type == LV_RECT_LAYOUT_ROW_T || type == LV_RECT_LAYOUT_ROW_M || type == LV_RECT_LAYOUT_ROW_B) { + lv_rect_layout_row(rect); + } else if(type == LV_RECT_LAYOUT_GRID) { + lv_rect_layout_grid(rect); + } +} + +/** + * Handle column type layouts + * @param rect pointer to an object which layout should be handled + */ +static void lv_rect_layout_col(lv_obj_t * rect) +{ + lv_rect_layout_t type = lv_rect_get_layout(rect); + lv_obj_t * child; + + /*Adjust margin and get the alignment type*/ + lv_align_t align; + lv_rects_t * style = lv_obj_get_style(rect); + cord_t hpad_corr; + + switch(type) { + case LV_RECT_LAYOUT_COL_L: + hpad_corr = style->hpad; + align = LV_ALIGN_IN_TOP_LEFT; + break; + case LV_RECT_LAYOUT_COL_M: + hpad_corr = 0; + align = LV_ALIGN_IN_TOP_MID; + break; + case LV_RECT_LAYOUT_COL_R: + hpad_corr = -style->hpad; + align = LV_ALIGN_IN_TOP_RIGHT; + break; + default: + align = LV_ALIGN_IN_TOP_LEFT; + break; + } + + /* Disable child change action because the children will be moved a lot + * an unnecessary child change signals could be sent*/ + rect->child_chg_off = 1; + /* Align the children */ + cord_t last_cord = style->vpad; + LL_READ_BACK(rect->child_ll, child) { + if(lv_obj_get_hidden(child) != false) continue; + + lv_obj_align(child, rect, align, hpad_corr , last_cord); + last_cord += lv_obj_get_height(child) + style->opad; + } + + rect->child_chg_off = 0; +} + +/** + * Handle row type layouts + * @param rect pointer to an object which layout should be handled + */ +static void lv_rect_layout_row(lv_obj_t * rect) +{ + lv_rect_layout_t type = lv_rect_get_layout(rect); + lv_obj_t * child; + + /*Adjust margin and get the alignment type*/ + lv_align_t align; + lv_rects_t * style = lv_obj_get_style(rect); + cord_t vpad_corr = style->vpad; + + switch(type) { + case LV_RECT_LAYOUT_ROW_T: + vpad_corr = style->vpad; + align = LV_ALIGN_IN_TOP_LEFT; + break; + case LV_RECT_LAYOUT_ROW_M: + vpad_corr = 0; + align = LV_ALIGN_IN_LEFT_MID; + break; + case LV_RECT_LAYOUT_ROW_B: + vpad_corr = -style->vpad; + align = LV_ALIGN_IN_BOTTOM_LEFT; + break; + default: + vpad_corr = 0; + align = LV_ALIGN_IN_TOP_LEFT; + break; + } + + /* Disable child change action because the children will be moved a lot + * an unnecessary child change signals could be sent*/ + rect->child_chg_off = 1; + + /* Align the children */ + cord_t last_cord = style->hpad; + LL_READ_BACK(rect->child_ll, child) { + if(lv_obj_get_hidden(child) != false) continue; + + lv_obj_align(child, rect, align, last_cord, vpad_corr); + last_cord += lv_obj_get_width(child) + style->opad; + } + + rect->child_chg_off = 0; +} + +/** + * Handle the center layout + * @param rect pointer to an object which layout should be handled + */ +static void lv_rect_layout_center(lv_obj_t * rect) +{ + lv_obj_t * child; + lv_rects_t * style = lv_obj_get_style(rect); + uint32_t obj_num = 0; + cord_t h_tot = 0; + + LL_READ(rect->child_ll, child) { + h_tot += lv_obj_get_height(child) + style->opad; + obj_num ++; + } + + if(obj_num == 0) return; + + h_tot -= style->opad; + + /* Disable child change action because the children will be moved a lot + * an unnecessary child change signals could be sent*/ + rect->child_chg_off = 1; + + /* Align the children */ + cord_t last_cord = - (h_tot / 2); + LL_READ_BACK(rect->child_ll, child) { + if(lv_obj_get_hidden(child) != false) continue; + + lv_obj_align(child, rect, LV_ALIGN_CENTER, 0, last_cord + lv_obj_get_height(child) / 2); + last_cord += lv_obj_get_height(child) + style->opad; + } + + rect->child_chg_off = 0; +} + +/** + * Handle the grid layout. Put as many object as possible in row + * then begin a new row + * @param rect pointer to an object which layout should be handled + */ +static void lv_rect_layout_grid(lv_obj_t * rect) +{ + lv_obj_t * child_rs; /* Row starter child */ + lv_obj_t * child_rc; /* Row closer child */ + lv_obj_t * child_tmp; /* Temporary child */ + lv_rects_t * style = lv_obj_get_style(rect); + cord_t w_obj = lv_obj_get_width(rect); + cord_t act_y = style->vpad; + /* Disable child change action because the children will be moved a lot + * an unnecessary child change signals could be sent*/ + + child_rs = ll_get_tail(&rect->child_ll); /*Set the row starter child*/ + if(child_rs == NULL) return; /*Return if no child*/ + + rect->child_chg_off = 1; + + child_rc = child_rs; /*Initially the the row starter and closer is the same*/ + while(child_rs != NULL) { + cord_t h_row = 0; + cord_t w_row = style->hpad * 2; /*The width is minimum the left-right hpad*/ + uint32_t obj_num = 0; + + /*Find the row closer object and collect some data*/ do { + if(lv_obj_get_hidden(child_rc) == false) { + if(w_row + lv_obj_get_width(child_rc) > w_obj) break; /*If the next object is already not fit then break*/ + w_row += lv_obj_get_width(child_rc) + style->opad; /*Add the object width + opad*/ + h_row = max(h_row, lv_obj_get_height(child_rc)); /*Search the highest object*/ + obj_num ++; + } + child_rc = ll_get_prev(&rect->child_ll, child_rc); /*Load the next object*/ + if(obj_num == 0) child_rs = child_rc; /*If the first object was hidden (or too long) then set the next as first */ + }while(child_rc != NULL); + + /*Step back one child because the last is already not fit*/ + if(child_rc != NULL && obj_num != 0) child_rc = ll_get_next(&rect->child_ll, child_rc); + + /*If the object is too long then align it to the middle*/ + if(obj_num == 0) { + if(child_rc != NULL) { + h_row = lv_obj_get_height(child_rc); + lv_obj_align(child_rc, rect, LV_ALIGN_IN_TOP_MID, 0, act_y); + } + } + /*If here is only one object in the row then align it to the left*/ + else if (obj_num == 1) { + lv_obj_align(child_rs, rect, LV_ALIGN_IN_TOP_LEFT, style->hpad, act_y); + } + /* Align the children (from child_rs to child_rc)*/ + else { + w_row -= style->opad * obj_num; + cord_t new_opad = (w_obj - w_row) / (obj_num - 1); + cord_t act_x = style->hpad; /*x init*/ + child_tmp = child_rs; + do{ + if(lv_obj_get_hidden(child_tmp) == false) { + lv_obj_align(child_tmp, rect, LV_ALIGN_IN_TOP_LEFT, act_x, act_y); + act_x += lv_obj_get_width(child_tmp) + new_opad; + } + child_tmp = ll_get_prev(&rect->child_ll, child_tmp); + }while(child_tmp != child_rc); + + } + + if(child_rc == NULL) break; + act_y += style->opad + h_row; /*y increment*/ + child_rs = ll_get_prev(&rect->child_ll, child_rc); /*Go to the next object*/ + child_rc = child_rs; + } + rect->child_chg_off = 0; +} + +/** + * Handle auto fit. Set the size of the object to involve all children. + * @param rect pointer to an object which size will be modified + */ +void lv_rect_refr_autofit(lv_obj_t * rect) +{ + lv_rect_ext_t * ext = lv_obj_get_ext(rect); + + if(ext->hfit_en == 0 && + ext->vfit_en == 0) { + return; + } + + area_t rect_cords; + area_t ori; + lv_rects_t * style = lv_obj_get_style(rect); + lv_obj_t * i; + cord_t hpad = style->hpad; + cord_t vpad = style->vpad; + + /*Search the side coordinates of the children*/ + lv_obj_get_cords(rect, &ori); + lv_obj_get_cords(rect, &rect_cords); + + rect_cords.x1 = LV_CORD_MAX; + rect_cords.y1 = LV_CORD_MAX; + rect_cords.x2 = LV_CORD_MIN; + rect_cords.y2 = LV_CORD_MIN; + + LL_READ(rect->child_ll, i) { + if(lv_obj_get_hidden(i) != false) continue; + rect_cords.x1 = min(rect_cords.x1, i->cords.x1); + rect_cords.y1 = min(rect_cords.y1, i->cords.y1); + rect_cords.x2 = max(rect_cords.x2, i->cords.x2); + rect_cords.y2 = max(rect_cords.y2, i->cords.y2); + } + + /*If the value is not the init value then the page has >=1 child.*/ + if(rect_cords.x1 != LV_CORD_MAX) { + if(ext->hfit_en != 0) { + rect_cords.x1 -= hpad; + rect_cords.x2 += hpad; + } else { + rect_cords.x1 = rect->cords.x1; + rect_cords.x2 = rect->cords.x2; + } + if(ext->vfit_en != 0) { + rect_cords.y1 -= vpad; + rect_cords.y2 += vpad; + } else { + rect_cords.y1 = rect->cords.y1; + rect_cords.y2 = rect->cords.y2; + } + + lv_obj_inv(rect); + area_cpy(&rect->cords, &rect_cords); + lv_obj_inv(rect); + + /*Notify the object about its new coordinates*/ + rect->signal_f(rect, LV_SIGNAL_CORD_CHG, &ori); + + /*Inform the parent about the new coordinates*/ + lv_obj_t * par = lv_obj_get_parent(rect); + par->signal_f(par, LV_SIGNAL_CHILD_CHG, rect); + } +} + /** * Initialize the rectangle styles */ @@ -318,303 +627,4 @@ static void lv_rects_init(void) lv_rects_border.round = 4 * LV_STYLE_MULT; lv_rects_border.empty = 1; } - -/** - * Refresh the layout of a rectangle - * @param obj_dp pointer to an object which layout should be refreshed - */ -static void lv_rect_refr_layout(lv_obj_t * obj_dp) -{ - lv_rect_layout_t type = lv_rect_get_layout(obj_dp); - - if(type == LV_RECT_LAYOUT_OFF) return; - - if(type == LV_RECT_LAYOUT_CENTER) { - lv_rect_layout_center(obj_dp); - } else if(type == LV_RECT_LAYOUT_COL_L || type == LV_RECT_LAYOUT_COL_M || type == LV_RECT_LAYOUT_COL_R) { - lv_rect_layout_col(obj_dp); - } else if(type == LV_RECT_LAYOUT_ROW_T || type == LV_RECT_LAYOUT_ROW_M || type == LV_RECT_LAYOUT_ROW_B) { - lv_rect_layout_row(obj_dp); - } else if(type == LV_RECT_LAYOUT_GRID) { - lv_rect_layout_grid(obj_dp); - } -} - - -/** - * Handle column type layouts - * @param obj_dp pointer to an object which layout should be handled - */ -static void lv_rect_layout_col(lv_obj_t * obj_dp) -{ - lv_rect_layout_t type = lv_rect_get_layout(obj_dp); - lv_obj_t * child; - - /*Adjust margin and get the alignment type*/ - lv_align_t align; - lv_rects_t * rects_p = lv_obj_get_style(obj_dp); - cord_t hpad_corr; - switch(type) { - case LV_RECT_LAYOUT_COL_L: - hpad_corr = rects_p->hpad; - align = LV_ALIGN_IN_TOP_LEFT; - break; - case LV_RECT_LAYOUT_COL_M: - hpad_corr = 0; - align = LV_ALIGN_IN_TOP_MID; - break; - case LV_RECT_LAYOUT_COL_R: - hpad_corr = -rects_p->hpad; - align = LV_ALIGN_IN_TOP_RIGHT; - break; - default: - align = LV_ALIGN_IN_TOP_LEFT; - break; - } - - /* Disable child change action because the children will be moved a lot - * an unnecessary child change signals could be sent*/ - obj_dp->child_chg_off = 1; - /* Align the children */ - cord_t last_cord = rects_p->vpad; - LL_READ_BACK(obj_dp->child_ll, child) { - if(lv_obj_get_hidden(child) != false) continue; - - lv_obj_align(child, obj_dp, align, hpad_corr , last_cord); - last_cord += lv_obj_get_height(child) + rects_p->opad; - } - - obj_dp->child_chg_off = 0; -} - -/** - * Handle row type layouts - * @param obj_dp pointer to an object which layout should be handled - */ -static void lv_rect_layout_row(lv_obj_t * obj_dp) -{ - lv_rect_layout_t type = lv_rect_get_layout(obj_dp); - lv_obj_t * child; - - /*Adjust margin and get the alignment type*/ - lv_align_t align; - lv_rects_t * rects_p = lv_obj_get_style(obj_dp); - cord_t vpad_corr = rects_p->vpad; - switch(type) { - case LV_RECT_LAYOUT_ROW_T: - vpad_corr = rects_p->vpad; - align = LV_ALIGN_IN_TOP_LEFT; - break; - case LV_RECT_LAYOUT_ROW_M: - vpad_corr = 0; - align = LV_ALIGN_IN_LEFT_MID; - break; - case LV_RECT_LAYOUT_ROW_B: - vpad_corr = -rects_p->vpad; - align = LV_ALIGN_IN_BOTTOM_LEFT; - break; - default: - vpad_corr = 0; - align = LV_ALIGN_IN_TOP_LEFT; - break; - } - - /* Disable child change action because the children will be moved a lot - * an unnecessary child change signals could be sent*/ - obj_dp->child_chg_off = 1; - - - /* Align the children */ - cord_t last_cord = rects_p->hpad; - LL_READ_BACK(obj_dp->child_ll, child) { - if(lv_obj_get_hidden(child) != false) continue; - - lv_obj_align(child, obj_dp, align, last_cord, vpad_corr); - last_cord += lv_obj_get_width(child) + rects_p->opad; - } - - obj_dp->child_chg_off = 0; -} - -/** - * Handle the center layout - * @param obj_dp pointer to an object which layout should be handled - */ -static void lv_rect_layout_center(lv_obj_t * obj_dp) -{ - lv_obj_t * child; - lv_rects_t * rects_p = lv_obj_get_style(obj_dp); - uint32_t obj_num = 0; - cord_t h_tot = 0; - - LL_READ(obj_dp->child_ll, child) { - h_tot += lv_obj_get_height(child) + rects_p->opad; - obj_num ++; - } - - if(obj_num == 0) return; - - h_tot -= rects_p->opad; - - /* Disable child change action because the children will be moved a lot - * an unnecessary child change signals could be sent*/ - obj_dp->child_chg_off = 1; - - /* Align the children */ - cord_t last_cord = - (h_tot / 2); - LL_READ_BACK(obj_dp->child_ll, child) { - if(lv_obj_get_hidden(child) != false) continue; - - lv_obj_align(child, obj_dp, LV_ALIGN_CENTER, 0, last_cord + lv_obj_get_height(child) / 2); - last_cord += lv_obj_get_height(child) + rects_p->opad; - } - - obj_dp->child_chg_off = 0; -} - - -/** - * Handle the grid layout. Put as many object as possible in row - * then begin a new row - * @param obj_dp pointer to an object which layout should be handled - */ -static void lv_rect_layout_grid(lv_obj_t * obj_dp) -{ - lv_obj_t * child_rs; /* Row starter child */ - lv_obj_t * child_rc; /* Row closer child */ - lv_obj_t * child_tmp; /* Temporary child */ - lv_rects_t * rects_p = lv_obj_get_style(obj_dp); - cord_t w_obj = lv_obj_get_width(obj_dp); - cord_t act_y = rects_p->vpad; - /* Disable child change action because the children will be moved a lot - * an unnecessary child change signals could be sent*/ - - child_rs = ll_get_tail(&obj_dp->child_ll); /*Set the row starter child*/ - if(child_rs == NULL) return; /*Return if no child*/ - - obj_dp->child_chg_off = 1; - - child_rc = child_rs; /*Initially the the row starter and closer is the same*/ - while(child_rs != NULL) { - cord_t h_row = 0; - cord_t w_row = rects_p->hpad * 2; /*The width is minimum the left-right hpad*/ - uint32_t obj_num = 0; - - /*Find the row closer object and collect some data*/ do { - if(lv_obj_get_hidden(child_rc) == false) { - if(w_row + lv_obj_get_width(child_rc) > w_obj) break; /*If the next object is already not fit then break*/ - w_row += lv_obj_get_width(child_rc) + rects_p->opad; /*Add the object width + opad*/ - h_row = max(h_row, lv_obj_get_height(child_rc)); /*Search the highest object*/ - obj_num ++; - } - child_rc = ll_get_prev(&obj_dp->child_ll, child_rc); /*Load the next object*/ - if(obj_num == 0) child_rs = child_rc; /*If the first object was hidden (or too long) then set the next as first */ - }while(child_rc != NULL); - - /*Step back one child because the last is already not fit*/ - if(child_rc != NULL && obj_num != 0) child_rc = ll_get_next(&obj_dp->child_ll, child_rc); - - /*If the object is too long then align it to the middle*/ - if(obj_num == 0) { - if(child_rc != NULL) { - h_row = lv_obj_get_height(child_rc); - lv_obj_align(child_rc, obj_dp, LV_ALIGN_IN_TOP_MID, 0, act_y); - } - } - /*If here is only one object in the row then align it to the left*/ - else if (obj_num == 1) { - lv_obj_align(child_rs, obj_dp, LV_ALIGN_IN_TOP_LEFT, rects_p->hpad, act_y); - } - /* Align the children (from child_rs to child_rc)*/ - else { - w_row -= rects_p->opad * obj_num; - cord_t new_opad = (w_obj - w_row) / (obj_num - 1); - cord_t act_x = rects_p->hpad; /*x init*/ - child_tmp = child_rs; - do{ - if(lv_obj_get_hidden(child_tmp) == false) { - lv_obj_align(child_tmp, obj_dp, LV_ALIGN_IN_TOP_LEFT, act_x, act_y); - act_x += lv_obj_get_width(child_tmp) + new_opad; - } - child_tmp = ll_get_prev(&obj_dp->child_ll, child_tmp); - }while(child_tmp != child_rc); - - } - - if(child_rc == NULL) break; - act_y += rects_p->opad + h_row; /*y increment*/ - child_rs = ll_get_prev(&obj_dp->child_ll, child_rc); /*Go to the next object*/ - child_rc = child_rs; - } - obj_dp->child_chg_off = 0; -} - -/** - * Handle auto fit. Set the size of the object to involve all children. - * @param obj_dp pointer to an object which size will be modified - */ -void lv_rect_refr_autofit(lv_obj_t * obj_dp) -{ - lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); - - if(ext_p->hfit_en == 0 && - ext_p->vfit_en == 0) { - return; - } - - area_t rect_cords; - area_t ori; - lv_rects_t * rects_p = lv_obj_get_style(obj_dp); - lv_obj_t * i; - cord_t hpad = rects_p->hpad; - cord_t vpad = rects_p->vpad; - - /*Search the side coordinates of the children*/ - lv_obj_get_cords(obj_dp, &ori); - lv_obj_get_cords(obj_dp, &rect_cords); - - rect_cords.x1 = LV_CORD_MAX; - rect_cords.y1 = LV_CORD_MAX; - rect_cords.x2 = LV_CORD_MIN; - rect_cords.y2 = LV_CORD_MIN; - - LL_READ(obj_dp->child_ll, i) { - if(lv_obj_get_hidden(i) != false) continue; - rect_cords.x1 = min(rect_cords.x1, i->cords.x1); - rect_cords.y1 = min(rect_cords.y1, i->cords.y1); - rect_cords.x2 = max(rect_cords.x2, i->cords.x2); - rect_cords.y2 = max(rect_cords.y2, i->cords.y2); - } - - /*If the value is not the init value then the page has >=1 child.*/ - if(rect_cords.x1 != LV_CORD_MAX) { - if(ext_p->hfit_en != 0) { - rect_cords.x1 -= hpad; - rect_cords.x2 += hpad; - } else { - rect_cords.x1 = obj_dp->cords.x1; - rect_cords.x2 = obj_dp->cords.x2; - } - if(ext_p->vfit_en != 0) { - rect_cords.y1 -= vpad; - rect_cords.y2 += vpad; - } else { - rect_cords.y1 = obj_dp->cords.y1; - rect_cords.y2 = obj_dp->cords.y2; - } - - lv_obj_inv(obj_dp); - area_cpy(&obj_dp->cords, &rect_cords); - lv_obj_inv(obj_dp); - - /*Notify the object about its new coordinates*/ - obj_dp->signal_f(obj_dp, LV_SIGNAL_CORD_CHG, &ori); - - /*Inform the parent about the new coordinates*/ - lv_obj_t * par_dp = lv_obj_get_parent(obj_dp); - par_dp->signal_f(par_dp, LV_SIGNAL_CHILD_CHG, obj_dp); - - } -} - #endif diff --git a/lv_objx/lv_rect.h b/lv_objx/lv_rect.h index 3db4b5cc5..585c39d9d 100644 --- a/lv_objx/lv_rect.h +++ b/lv_objx/lv_rect.h @@ -37,9 +37,11 @@ typedef enum LV_RECT_LAYOUT_GRID, }lv_rect_layout_t; +/*Style of template*/ typedef struct { - lv_objs_t objs; + lv_objs_t objs; /*Style of ancestor*/ + /*New style element for this type */ color_t gcolor; color_t bcolor; uint16_t bwidth; @@ -51,14 +53,7 @@ typedef struct uint8_t empty :1; }lv_rects_t; - -typedef struct -{ - uint8_t layout :5; - uint8_t hfit_en :1; - uint8_t vfit_en :1; -}lv_rect_ext_t; - +/*Built-in styles of template*/ typedef enum { LV_RECTS_DEF, @@ -66,21 +61,30 @@ typedef enum LV_RECTS_BORDER, }lv_rects_builtin_t; + +typedef struct +{ + /*Inherited from 'base_obj' so no inherited ext. */ /*Ext. of ancestor*/ + /*New data for this type */ + uint8_t layout :5; + uint8_t hfit_en :1; + uint8_t vfit_en :1; +}lv_rect_ext_t; + /********************** * GLOBAL PROTOTYPES **********************/ /*Create function*/ -lv_obj_t* lv_rect_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_rect_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); +lv_obj_t * lv_rect_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_rect_signal(lv_obj_t * rect, lv_signal_t sign, void * param); -void lv_rect_set_fit(lv_obj_t * obj_dp, bool hor_en, bool ver_en); -void lv_rect_set_layout(lv_obj_t * obj_dp, lv_rect_layout_t layout); +void lv_rect_set_fit(lv_obj_t * rect, bool hor_en, bool ver_en); +void lv_rect_set_layout(lv_obj_t * rect, lv_rect_layout_t layout); -lv_rect_layout_t lv_rect_get_layout(lv_obj_t * obj_dp); -bool lv_rect_get_hfit(lv_obj_t * obj_dp); -bool lv_rect_get_vfit(lv_obj_t * obj_dp); - -lv_rects_t * lv_rects_get(lv_rects_builtin_t style, lv_rects_t * copy_p); +lv_rect_layout_t lv_rect_get_layout(lv_obj_t * rect); +bool lv_rect_get_hfit(lv_obj_t * rect); +bool lv_rect_get_vfit(lv_obj_t * rect); +lv_rects_t * lv_rects_get(lv_rects_builtin_t style, lv_rects_t * copy); /********************** * MACROS diff --git a/lv_objx/lv_ta.c b/lv_objx/lv_ta.c index c0ad7e778..80c4fd564 100644 --- a/lv_objx/lv_ta.c +++ b/lv_objx/lv_ta.c @@ -25,9 +25,9 @@ /********************** * STATIC PROTOTYPES **********************/ -static bool lv_ta_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); -static bool lv_ta_label_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); -static void lv_ta_save_valid_cursor_x(lv_obj_t * obj_dp); +static bool lv_ta_design(lv_obj_t * ta, const area_t * mask, lv_design_mode_t mode); +static bool lv_ta_label_design(lv_obj_t * label, const area_t * mask, lv_design_mode_t mode); +static void lv_ta_save_valid_cursor_x(lv_obj_t * ta); static void lv_tas_init(void); /********************** @@ -52,92 +52,91 @@ lv_design_f_t label_design_f; /** * Create a text area objects - * @param par_dp pointer to an object, it will be the parent of the new text area - * @param copy_dp pointer to a text area object, if not NULL then the new object will be copied from it + * @param par pointer to an object, it will be the parent of the new text area + * @param copy pointer to a text area object, if not NULL then the new object will be copied from it * @return pointer to the created text area */ -lv_obj_t* lv_ta_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) +lv_obj_t * lv_ta_create(lv_obj_t * par, lv_obj_t * copy) { /*Create the ancestor object*/ - lv_obj_t* new_obj_dp = lv_page_create(par_dp, copy_dp); - dm_assert(new_obj_dp); + lv_obj_t * new_ta = lv_page_create(par, copy); + dm_assert(new_ta); /*Allocate the object type specific extended data*/ - lv_ta_ext_t * ext_dp = lv_obj_alloc_ext(new_obj_dp, sizeof(lv_ta_ext_t)); - dm_assert(ext_dp); + lv_ta_ext_t * ext = lv_obj_alloc_ext(new_ta, sizeof(lv_ta_ext_t)); + dm_assert(ext); if(ancestor_design_f == NULL) { - ancestor_design_f = lv_obj_get_design_f(new_obj_dp); + ancestor_design_f = lv_obj_get_design_f(new_ta); } - lv_obj_set_signal_f(new_obj_dp, lv_ta_signal); - lv_obj_set_design_f(new_obj_dp, lv_ta_design); + lv_obj_set_signal_f(new_ta, lv_ta_signal); + lv_obj_set_design_f(new_ta, lv_ta_design); - ext_dp->cursor_valid_x = 0; - ext_dp->cursor_pos = 0; + ext->cursor_valid_x = 0; + ext->cursor_pos = 0; /*Init the new text area object*/ - if(copy_dp == NULL) { - ext_dp->label_dp = lv_label_create(new_obj_dp, NULL); + if(copy == NULL) { + ext->label = lv_label_create(new_ta, NULL); if(label_design_f == NULL) { - label_design_f = lv_obj_get_design_f(ext_dp->label_dp); + label_design_f = lv_obj_get_design_f(ext->label); } - lv_obj_set_design_f(ext_dp->label_dp, lv_ta_label_design); - lv_label_set_fixw(ext_dp->label_dp, true); - lv_label_set_text(ext_dp->label_dp, "abc aaaa bbbb ccc\n123\nABC\nxyz\nwww\n007\nalma\n:)\naaaaaa"); - lv_page_glue_obj(ext_dp->label_dp, true); - lv_obj_set_click(ext_dp->label_dp, true); - lv_obj_set_style(new_obj_dp, lv_tas_get(LV_TAS_DEF, NULL)); - + lv_obj_set_design_f(ext->label, lv_ta_label_design); + lv_label_set_fixw(ext->label, true); + lv_label_set_text(ext->label, "abc aaaa bbbb ccc\n123\nABC\nxyz\nwww\n007\nalma\n:)\naaaaaa"); + lv_page_glue_obj(ext->label, true); + lv_obj_set_click(ext->label, true); + lv_obj_set_style(new_ta, lv_tas_get(LV_TAS_DEF, NULL)); } /*Copy an existing object*/ else { - lv_ta_ext_t * copy_ext_dp = lv_obj_get_ext(copy_dp); - ext_dp->label_dp = lv_label_create(new_obj_dp, copy_ext_dp->label_dp); - lv_obj_set_design_f(ext_dp->label_dp, lv_ta_label_design); - lv_page_glue_obj(ext_dp->label_dp, true); + lv_ta_ext_t * copy_ext = lv_obj_get_ext(copy); + ext->label = lv_label_create(new_ta, copy_ext->label); + lv_obj_set_design_f(ext->label, lv_ta_label_design); + lv_page_glue_obj(ext->label, true); /*Refresh the style when everything is ready*/ - lv_obj_set_style(new_obj_dp, lv_obj_get_style(copy_dp)); + lv_obj_set_style(new_ta, lv_obj_get_style(copy)); } - return new_obj_dp; + return new_ta; } /** * Signal function of the text area - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable * @return true: the object is still valid (not deleted), false: the object become invalid */ -bool lv_ta_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) +bool lv_ta_signal(lv_obj_t * ta, lv_signal_t sign, void * param) { bool valid; /* Include the ancient signal function */ - valid = lv_page_signal(obj_dp, sign, param); + valid = lv_page_signal(ta, sign, param); /* The object can be deleted so check its validity and then * make the object specific signal handling */ if(valid != false) { - lv_ta_ext_t * ta_ext_dp = lv_obj_get_ext(obj_dp); - lv_tas_t * tas_p = lv_obj_get_style(obj_dp); + lv_ta_ext_t * ext = lv_obj_get_ext(ta); + lv_tas_t * style = lv_obj_get_style(ta); switch(sign) { case LV_SIGNAL_CLEANUP: - lv_obj_del(ta_ext_dp->label_dp); + lv_obj_del(ext->label); break; case LV_SIGNAL_STYLE_CHG: - lv_obj_set_style(ta_ext_dp->label_dp, &tas_p->labels); - lv_obj_set_width(ta_ext_dp->label_dp, lv_obj_get_width(obj_dp) - 2 * - (tas_p->pages.bg_rects.hpad + tas_p->pages.scrable_rects.hpad)); - lv_label_set_text(ta_ext_dp->label_dp, NULL); + lv_obj_set_style(ext->label, &style->label); + lv_obj_set_width(ext->label, lv_obj_get_width(ta) - 2 * + (style->pages.bg_rects.hpad + style->pages.scrable_rects.hpad)); + lv_label_set_text(ext->label, NULL); break; /*Set the label width according to the text area width*/ case LV_SIGNAL_CORD_CHG: - lv_obj_set_width(ta_ext_dp->label_dp, lv_obj_get_width(obj_dp) - 2 * - (tas_p->pages.bg_rects.hpad + tas_p->pages.scrable_rects.hpad)); - lv_label_set_text(ta_ext_dp->label_dp, NULL); + lv_obj_set_width(ext->label, lv_obj_get_width(ta) - 2 * + (style->pages.bg_rects.hpad + style->pages.scrable_rects.hpad)); + lv_label_set_text(ext->label, NULL); break; default: break; @@ -153,201 +152,201 @@ bool lv_ta_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) /** * Insert a character to the current cursor position - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object * @param c a character */ -void lv_ta_add_char(lv_obj_t * obj_dp, char c) +void lv_ta_add_char(lv_obj_t * ta, char c) { - lv_ta_ext_t * ta_dp = lv_obj_get_ext(obj_dp); + lv_ta_ext_t * ext = lv_obj_get_ext(ta); /*Insert the character*/ char buf[LV_TA_MAX_LENGTH]; - const char * label_txt = lv_label_get_text(ta_dp->label_dp); + const char * label_txt = lv_label_get_text(ext->label); - memcpy(buf, label_txt, ta_dp->cursor_pos); - buf[ta_dp->cursor_pos] = c; - memcpy(buf+ta_dp->cursor_pos+1, label_txt+ta_dp->cursor_pos, strlen(label_txt) - ta_dp->cursor_pos + 1); + memcpy(buf, label_txt, ext->cursor_pos); + buf[ext->cursor_pos] = c; + memcpy(buf+ext->cursor_pos+1, label_txt+ext->cursor_pos, strlen(label_txt) - ext->cursor_pos + 1); /*Refresh the label*/ - lv_label_set_text(ta_dp->label_dp, buf); + lv_label_set_text(ext->label, buf); /*Move the cursor after the new character*/ - lv_ta_set_cursor_pos(obj_dp, lv_ta_get_cursor_pos(obj_dp) + 1); + lv_ta_set_cursor_pos(ta, lv_ta_get_cursor_pos(ta) + 1); /*It is a valid x step so save it*/ - lv_ta_save_valid_cursor_x(obj_dp); + lv_ta_save_valid_cursor_x(ta); } /** * Insert a text to the current cursor position - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object * @param txt a '\0' terminated string to insert */ -void lv_ta_add_text(lv_obj_t * obj_dp, const char * txt) +void lv_ta_add_text(lv_obj_t * ta, const char * txt) { - lv_ta_ext_t * ta_dp = lv_obj_get_ext(obj_dp); + lv_ta_ext_t * ext = lv_obj_get_ext(ta); /*Insert the text*/ char buf[LV_TA_MAX_LENGTH]; - const char * label_txt = lv_label_get_text(ta_dp->label_dp); + const char * label_txt = lv_label_get_text(ext->label); uint16_t label_len = strlen(label_txt); uint16_t txt_len = strlen(txt); - memcpy(buf, label_txt, ta_dp->cursor_pos); - memcpy(buf+ta_dp->cursor_pos, txt, txt_len); - memcpy(buf+ta_dp->cursor_pos + txt_len, label_txt+ta_dp->cursor_pos, label_len - ta_dp->cursor_pos + 1); + memcpy(buf, label_txt, ext->cursor_pos); + memcpy(buf+ext->cursor_pos, txt, txt_len); + memcpy(buf+ext->cursor_pos + txt_len, label_txt+ext->cursor_pos, label_len - ext->cursor_pos + 1); /*Refresh the label*/ - lv_label_set_text(ta_dp->label_dp, buf); + lv_label_set_text(ext->label, buf); /*Move the cursor after the new text*/ - lv_ta_set_cursor_pos(obj_dp, lv_ta_get_cursor_pos(obj_dp) + txt_len); + lv_ta_set_cursor_pos(ta, lv_ta_get_cursor_pos(ta) + txt_len); /*It is a valid x step so save it*/ - lv_ta_save_valid_cursor_x(obj_dp); + lv_ta_save_valid_cursor_x(ta); } /** * Delete a the left character from the current cursor position - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object */ -void lv_ta_del(lv_obj_t * obj_dp) +void lv_ta_del(lv_obj_t * ta) { - lv_ta_ext_t * ta_dp = lv_obj_get_ext(obj_dp); - uint16_t cur_pos = ta_dp->cursor_pos; + lv_ta_ext_t * ext = lv_obj_get_ext(ta); + uint16_t cur_pos = ext->cursor_pos; if(cur_pos == 0) return; /*Delete a character*/ char buf[LV_TA_MAX_LENGTH]; - const char * label_txt = lv_label_get_text(ta_dp->label_dp); + const char * label_txt = lv_label_get_text(ext->label); uint16_t label_len = strlen(label_txt); memcpy(buf, label_txt, cur_pos - 1); memcpy(buf+cur_pos - 1, label_txt + cur_pos, label_len - cur_pos + 1); /*Refresh the label*/ - lv_label_set_text(ta_dp->label_dp, buf); + lv_label_set_text(ext->label, buf); /*Move the cursor to the place of the deleted character*/ - lv_ta_set_cursor_pos(obj_dp, lv_ta_get_cursor_pos(obj_dp) - 1); + lv_ta_set_cursor_pos(ta, lv_ta_get_cursor_pos(ta) - 1); /*It is a valid x step so save it*/ - lv_ta_save_valid_cursor_x(obj_dp); + lv_ta_save_valid_cursor_x(ta); } /** * Set the cursor position - * @param obj_dp pointer to a text area object + * @param obj pointer to a text area object * @param pos the new cursor position in character index */ -void lv_ta_set_cursor_pos(lv_obj_t * obj_dp, uint16_t pos) +void lv_ta_set_cursor_pos(lv_obj_t * ta, uint16_t pos) { - lv_ta_ext_t * ta_ext_dp = lv_obj_get_ext(obj_dp); - uint16_t txt_len = strlen(lv_label_get_text(ta_ext_dp->label_dp)); + lv_ta_ext_t * ext = lv_obj_get_ext(ta); + uint16_t txt_len = strlen(lv_label_get_text(ext->label)); if(pos > txt_len) pos = txt_len; - ta_ext_dp->cursor_pos = pos; + ext->cursor_pos = pos; /*Position the label to make the cursor visible*/ - lv_obj_t * label_par_dp = lv_obj_get_parent(ta_ext_dp->label_dp); + lv_obj_t * label_par = lv_obj_get_parent(ext->label); point_t cur_pos; - lv_tas_t * tas_p = lv_obj_get_style(obj_dp); - const font_t * font_p = font_get(tas_p->labels.font); - lv_label_get_letter_pos(ta_ext_dp->label_dp, pos, &cur_pos); + lv_tas_t * style = lv_obj_get_style(ta); + const font_t * font_p = font_get(style->label.font); + lv_label_get_letter_pos(ext->label, pos, &cur_pos); /*Check the top*/ - if(lv_obj_get_y(label_par_dp) + cur_pos.y < 0) { - lv_obj_set_y(label_par_dp, - cur_pos.y); + if(lv_obj_get_y(label_par) + cur_pos.y < 0) { + lv_obj_set_y(label_par, - cur_pos.y); } /*Check the bottom*/ - if(lv_obj_get_y(label_par_dp) + cur_pos.y + font_get_height(font_p) > lv_obj_get_height(obj_dp)) { - lv_obj_set_y(label_par_dp, -(cur_pos.y - lv_obj_get_height(obj_dp) + - font_get_height(font_p) + tas_p->pages.scrable_rects.vpad * 2)); + if(lv_obj_get_y(label_par) + cur_pos.y + font_get_height(font_p) > lv_obj_get_height(ta)) { + lv_obj_set_y(label_par, -(cur_pos.y - lv_obj_get_height(ta) + + font_get_height(font_p) + style->pages.scrable_rects.vpad * 2)); } - lv_obj_inv(obj_dp); + lv_obj_inv(ta); } /** * Move the cursor one character right - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object */ -void lv_ta_cursor_right(lv_obj_t * obj_dp) +void lv_ta_cursor_right(lv_obj_t * ta) { - uint16_t cp = lv_ta_get_cursor_pos(obj_dp); + uint16_t cp = lv_ta_get_cursor_pos(ta); cp++; - lv_ta_set_cursor_pos(obj_dp, cp); + lv_ta_set_cursor_pos(ta, cp); /*It is a valid x step so save it*/ - lv_ta_save_valid_cursor_x(obj_dp); + lv_ta_save_valid_cursor_x(ta); } /** * Move the cursor one character left - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object */ -void lv_ta_cursor_left(lv_obj_t * obj_dp) +void lv_ta_cursor_left(lv_obj_t * ta) { - uint16_t cp = lv_ta_get_cursor_pos(obj_dp); + uint16_t cp = lv_ta_get_cursor_pos(ta); if(cp > 0) { cp--; - lv_ta_set_cursor_pos(obj_dp, cp); + lv_ta_set_cursor_pos(ta, cp); /*It is a valid x step so save it*/ - lv_ta_save_valid_cursor_x(obj_dp); + lv_ta_save_valid_cursor_x(ta); } } /** * Move the cursor one line down - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object */ -void lv_ta_cursor_down(lv_obj_t * obj_dp) +void lv_ta_cursor_down(lv_obj_t * ta) { - lv_ta_ext_t * ta_ext_dp = lv_obj_get_ext(obj_dp); + lv_ta_ext_t * ext = lv_obj_get_ext(ta); point_t pos; /*Get the position of the current letter*/ - lv_label_get_letter_pos(ta_ext_dp->label_dp, lv_ta_get_cursor_pos(obj_dp), &pos); + lv_label_get_letter_pos(ext->label, lv_ta_get_cursor_pos(ta), &pos); /*Increment the y with one line and keep the valid x*/ - lv_labels_t * labels_p = lv_obj_get_style(ta_ext_dp->label_dp); - const font_t * font_p = font_get(labels_p->font); - pos.y += font_get_height(font_p) + labels_p->line_space + 1; - pos.x = ta_ext_dp->cursor_valid_x; + lv_labels_t * label_style = lv_obj_get_style(ext->label); + const font_t * font_p = font_get(label_style->font); + pos.y += font_get_height(font_p) + label_style->line_space + 1; + pos.x = ext->cursor_valid_x; /*Do not go below he last line*/ - if(pos.y < lv_obj_get_height(ta_ext_dp->label_dp)) { + if(pos.y < lv_obj_get_height(ext->label)) { /*Get the letter index on the new cursor position and set it*/ - uint16_t new_cur_pos = lv_label_get_letter_on(ta_ext_dp->label_dp, &pos); - lv_ta_set_cursor_pos(obj_dp, new_cur_pos); + uint16_t new_cur_pos = lv_label_get_letter_on(ext->label, &pos); + lv_ta_set_cursor_pos(ta, new_cur_pos); } } /** * Move the cursor one line up - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object */ -void lv_ta_cursor_up(lv_obj_t * obj_dp) +void lv_ta_cursor_up(lv_obj_t * ta) { - lv_ta_ext_t * ta_ext_dp = lv_obj_get_ext(obj_dp); + lv_ta_ext_t * ext = lv_obj_get_ext(ta); point_t pos; /*Get the position of the current letter*/ - lv_label_get_letter_pos(ta_ext_dp->label_dp, lv_ta_get_cursor_pos(obj_dp), &pos); + lv_label_get_letter_pos(ext->label, lv_ta_get_cursor_pos(ta), &pos); /*Decrement the y with one line and keep the valid x*/ - lv_labels_t * labels_p = lv_obj_get_style(ta_ext_dp->label_dp); - const font_t * font_p = font_get(labels_p->font); - pos.y -= font_get_height(font_p) + labels_p->line_space - 1; - pos.x = ta_ext_dp->cursor_valid_x; + lv_labels_t * label_style = lv_obj_get_style(ext->label); + const font_t * font = font_get(label_style->font); + pos.y -= font_get_height(font) + label_style->line_space - 1; + pos.x = ext->cursor_valid_x; /*Get the letter index on the new cursor position and set it*/ - uint16_t new_cur_pos = lv_label_get_letter_on(ta_ext_dp->label_dp, &pos); - lv_ta_set_cursor_pos(obj_dp, new_cur_pos); + uint16_t new_cur_pos = lv_label_get_letter_on(ext->label, &pos); + lv_ta_set_cursor_pos(ta, new_cur_pos); } /*===================== * Getter functions @@ -355,33 +354,33 @@ void lv_ta_cursor_up(lv_obj_t * obj_dp) /** * Get the text of the i the text area - * @param obj_dp obj_dp pointer to a text area object + * @param ta obj pointer to a text area object * @return pointer to the text */ -const char * lv_ta_get_text(lv_obj_t * obj_dp) +const char * lv_ta_get_txt(lv_obj_t * ta) { - lv_ta_ext_t * ta_dp = lv_obj_get_ext(obj_dp); - return lv_label_get_text(ta_dp->label_dp); + lv_ta_ext_t * ext = lv_obj_get_ext(ta); + return lv_label_get_text(ext->label); } /** * Get the current cursor position in character index - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object * @return the cursor position */ -uint16_t lv_ta_get_cursor_pos(lv_obj_t * obj_dp) +uint16_t lv_ta_get_cursor_pos(lv_obj_t * ta) { - lv_ta_ext_t * ta_dp = lv_obj_get_ext(obj_dp); - return ta_dp->cursor_pos; + lv_ta_ext_t * ext = lv_obj_get_ext(ta); + return ext->cursor_pos; } /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_tas_builtin_t enum - * @param copy_p copy the style to this variable. (NULL if unused) + * @param copy copy the style to this variable. (NULL if unused) * @return pointer to an lv_tas_t style */ -lv_tas_t * lv_tas_get(lv_tas_builtin_t style, lv_tas_t * copy_p) +lv_tas_t * lv_tas_get(lv_tas_builtin_t style, lv_tas_t * copy) { static bool style_inited = false; @@ -401,9 +400,9 @@ lv_tas_t * lv_tas_get(lv_tas_builtin_t style, lv_tas_t * copy_p) style_p = &lv_tas_def; } - if(copy_p != NULL) { - if(style_p != NULL) memcpy(copy_p, style_p, sizeof(lv_tas_t)); - else memcpy(copy_p, &lv_tas_def, sizeof(lv_tas_t)); + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_tas_t)); + else memcpy(copy, &lv_tas_def, sizeof(lv_tas_t)); } return style_p; @@ -412,10 +411,9 @@ lv_tas_t * lv_tas_get(lv_tas_builtin_t style, lv_tas_t * copy_p) * STATIC FUNCTIONS **********************/ - /** * Handle the drawing related tasks of the text areas - * @param obj_dp pointer to an object + * @param ta pointer to an object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -423,64 +421,67 @@ lv_tas_t * lv_tas_get(lv_tas_builtin_t style, lv_tas_t * copy_p) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_ta_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_ta_design(lv_obj_t * ta, const area_t * masp, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ - return ancestor_design_f(obj_dp, mask_p, mode); + return ancestor_design_f(ta, masp, mode); } else if(mode == LV_DESIGN_DRAW_MAIN) { /*Draw the object*/ - ancestor_design_f(obj_dp, mask_p, mode); + ancestor_design_f(ta, masp, mode); } else if(mode == LV_DESIGN_DRAW_POST) { - ancestor_design_f(obj_dp, mask_p, mode); + ancestor_design_f(ta, masp, mode); } return true; } /** * An extended label design. Calls the normal label design function and it draws a cursor. - * @param obj_dp pointer to a text area object - * @param mask_p the object will be drawn only in this area + * @param label pointer to a text area object + * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) * LV_DESIGN_DRAW_MAIN: draw the object (always return 'true') * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @return return true/false, depends on 'mode' */ -static bool lv_ta_label_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode) +static bool lv_ta_label_design(lv_obj_t * label, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { /*Return false if the object is not covers the mask_p area*/ - return label_design_f(obj_dp, mask_p, mode); + return label_design_f(label, mask, mode); } else if(mode == LV_DESIGN_DRAW_MAIN) { /*Draw the object*/ - label_design_f(obj_dp, mask_p, mode); + label_design_f(label, mask, mode); } else if(mode == LV_DESIGN_DRAW_POST) { - label_design_f(obj_dp, mask_p, mode); + label_design_f(label, mask, mode); /*Draw the cursor too*/ - lv_obj_t * ta_dp = lv_obj_get_parent(lv_obj_get_parent(obj_dp)); - lv_ta_ext_t * ta_ext_dp = lv_obj_get_ext(ta_dp); - lv_tas_t * tas_p = lv_obj_get_style(ta_dp); - uint16_t cur_pos = lv_ta_get_cursor_pos(ta_dp); - point_t letter_pos; - lv_label_get_letter_pos(obj_dp, cur_pos, &letter_pos); + lv_obj_t * ta = lv_obj_get_parent(lv_obj_get_parent(label)); + lv_ta_ext_t * ta_ext = lv_obj_get_ext(ta); + lv_tas_t * ta_style = lv_obj_get_style(ta); - area_t cur_area; - lv_labels_t * labels_p = lv_obj_get_style(ta_ext_dp->label_dp); - cur_area.x1 = letter_pos.x + obj_dp->cords.x1 - (tas_p->cursor_width >> 1); - cur_area.y1 = letter_pos.y + obj_dp->cords.y1; - cur_area.x2 = letter_pos.x + obj_dp->cords.x1 + (tas_p->cursor_width >> 1); - cur_area.y2 = letter_pos.y + obj_dp->cords.y1 + font_get_height(font_get(labels_p->font)); + if(ta_style->cursor_show != 0) { + uint16_t cur_pos = lv_ta_get_cursor_pos(ta); + point_t letter_pos; + lv_label_get_letter_pos(label, cur_pos, &letter_pos); - lv_rects_t cur_rects; - lv_rects_get(LV_RECTS_DEF, &cur_rects); - cur_rects.round = 0; - cur_rects.bwidth = 0; - cur_rects.objs.color = tas_p->cursor_color; - cur_rects.gcolor = tas_p->cursor_color; - lv_draw_rect(&cur_area, mask_p, &cur_rects, OPA_COVER); + area_t cur_area; + lv_labels_t * labels_p = lv_obj_get_style(ta_ext->label); + cur_area.x1 = letter_pos.x + label->cords.x1 - (ta_style->cursor_width >> 1); + cur_area.y1 = letter_pos.y + label->cords.y1; + cur_area.x2 = letter_pos.x + label->cords.x1 + (ta_style->cursor_width >> 1); + cur_area.y2 = letter_pos.y + label->cords.y1 + font_get_height(font_get(labels_p->font)); + + lv_rects_t cur_rects; + lv_rects_get(LV_RECTS_DEF, &cur_rects); + cur_rects.round = 0; + cur_rects.bwidth = 0; + cur_rects.objs.color = ta_style->cursor_color; + cur_rects.gcolor = ta_style->cursor_color; + lv_draw_rect(&cur_area, mask, &cur_rects, OPA_COVER); + } } return true; @@ -488,14 +489,14 @@ static bool lv_ta_label_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_desig /** * Save the cursor x position as valid. It is important when jumping up/down to a shorter line - * @param obj_dp pointer to a text area object + * @param ta pointer to a text area object */ -static void lv_ta_save_valid_cursor_x(lv_obj_t * obj_dp) +static void lv_ta_save_valid_cursor_x(lv_obj_t * ta) { - lv_ta_ext_t * ta_ext_dp = lv_obj_get_ext(obj_dp); + lv_ta_ext_t * ext = lv_obj_get_ext(ta); point_t cur_pos; - lv_label_get_letter_pos(ta_ext_dp->label_dp, ta_ext_dp->cursor_pos, &cur_pos); - ta_ext_dp->cursor_valid_x = cur_pos.x; + lv_label_get_letter_pos(ext->label, ext->cursor_pos, &cur_pos); + ext->cursor_valid_x = cur_pos.x; } /** @@ -506,8 +507,8 @@ static void lv_tas_init(void) /*Default style*/ lv_pages_get(LV_PAGES_DEF, &lv_tas_def.pages); - lv_labels_get(LV_LABELS_TXT, &lv_tas_def.labels); - lv_tas_def.labels.objs.color = COLOR_MAKE(0x20, 0x20, 0x20); + lv_labels_get(LV_LABELS_TXT, &lv_tas_def.label); + lv_tas_def.label.objs.color = COLOR_MAKE(0x20, 0x20, 0x20); lv_tas_def.cursor_color = COLOR_MAKE(0x10, 0x10, 0x10); lv_tas_def.cursor_width = 2 * LV_STYLE_MULT; /*>1 px for visible cursor*/ diff --git a/lv_objx/lv_ta.h b/lv_objx/lv_ta.h index 807ebfe2b..f792960da 100644 --- a/lv_objx/lv_ta.h +++ b/lv_objx/lv_ta.h @@ -29,7 +29,7 @@ typedef struct { lv_pages_t pages; /*Style of ancestor*/ /*New style element for this type */ - lv_labels_t labels; + lv_labels_t label; color_t cursor_color; cord_t cursor_width; uint8_t cursor_show :1; @@ -46,7 +46,7 @@ typedef struct { lv_page_ext_t page; /*Ext. of ancestor*/ /*New data for this type */ - lv_obj_t * label_dp; + lv_obj_t * label; cord_t cursor_valid_x; uint16_t cursor_pos; }lv_ta_ext_t; @@ -54,22 +54,21 @@ typedef struct /********************** * GLOBAL PROTOTYPES **********************/ -lv_obj_t* lv_ta_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); -bool lv_ta_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); -lv_tas_t * lv_tas_get(lv_tas_builtin_t style, lv_tas_t * copy_p); +lv_obj_t * lv_ta_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_ta_signal(lv_obj_t * ta, lv_signal_t sign, void * param); +lv_tas_t * lv_tas_get(lv_tas_builtin_t style, lv_tas_t * copy); -void lv_ta_add_char(lv_obj_t * obj_dp, char c); -void lv_ta_add_text(lv_obj_t * obj_dp, const char * txt); -void lv_ta_del(lv_obj_t * obj_dp); -void lv_ta_set_cursor_pos(lv_obj_t * obj_dp, uint16_t pos); -void lv_ta_cursor_right (lv_obj_t * obj_dp); -void lv_ta_cursor_left(lv_obj_t * obj_dp); -void lv_ta_cursor_down(lv_obj_t * obj_dp); -void lv_ta_cursor_up(lv_obj_t * obj_dp); +void lv_ta_add_char(lv_obj_t * ta, char c); +void lv_ta_add_text(lv_obj_t * ta, const char * txt); +void lv_ta_del(lv_obj_t * ta); +void lv_ta_set_cursor_pos(lv_obj_t * ta, uint16_t pos); +void lv_ta_cursor_right (lv_obj_t * ta); +void lv_ta_cursor_left(lv_obj_t * taj); +void lv_ta_cursor_down(lv_obj_t * ta); +void lv_ta_cursor_up(lv_obj_t * ta); - -const char * lv_ta_get_txt(lv_obj_t obj_dp); -uint16_t lv_ta_get_cursor_pos(lv_obj_t * obj_dp); +const char * lv_ta_get_txt(lv_obj_t * ta); +uint16_t lv_ta_get_cursor_pos(lv_obj_t * ta); /**********************