BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
lvgl
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
lvgl
Commits
932c10e5
Commit
932c10e5
authored
Oct 17, 2016
by
Gabor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ext_size attribute added
parent
07ece605
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
9 deletions
+69
-9
lv_obj.c
lv_obj/lv_obj.c
+43
-2
lv_obj.h
lv_obj/lv_obj.h
+7
-2
lv_refr.c
lv_obj/lv_refr.c
+19
-5
No files found.
lv_obj/lv_obj.c
View file @
932c10e5
...
@@ -98,7 +98,12 @@ void lv_obj_inv(lv_obj_t * obj)
...
@@ -98,7 +98,12 @@ void lv_obj_inv(lv_obj_t * obj)
lv_obj_t
*
par
=
lv_obj_get_parent
(
obj
);
lv_obj_t
*
par
=
lv_obj_get_parent
(
obj
);
bool
union_ok
=
true
;
bool
union_ok
=
true
;
/*Start with the original coordinates*/
/*Start with the original coordinates*/
cord_t
ext_size
=
obj
->
ext_size
;
area_cpy
(
&
area_trunc
,
&
obj
->
cords
);
area_cpy
(
&
area_trunc
,
&
obj
->
cords
);
area_trunc
.
x1
-=
ext_size
;
area_trunc
.
y1
-=
ext_size
;
area_trunc
.
x2
+=
ext_size
;
area_trunc
.
y2
+=
ext_size
;
/*Check through all parents*/
/*Check through all parents*/
while
(
par
!=
NULL
)
{
while
(
par
!=
NULL
)
{
...
@@ -163,6 +168,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy)
...
@@ -163,6 +168,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy)
new_obj
->
cords
.
y1
=
0
;
new_obj
->
cords
.
y1
=
0
;
new_obj
->
cords
.
x2
=
LV_HOR_RES
-
1
;
new_obj
->
cords
.
x2
=
LV_HOR_RES
-
1
;
new_obj
->
cords
.
y2
=
LV_VER_RES
-
1
;
new_obj
->
cords
.
y2
=
LV_VER_RES
-
1
;
new_obj
->
ext_size
=
0
;
/*Set appearance*/
/*Set appearance*/
new_obj
->
style_p
=
lv_objs_get
(
LV_OBJS_SCR
,
NULL
);
new_obj
->
style_p
=
lv_objs_get
(
LV_OBJS_SCR
,
NULL
);
...
@@ -182,7 +188,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy)
...
@@ -182,7 +188,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy)
new_obj
->
top_en
=
0
;
new_obj
->
top_en
=
0
;
new_obj
->
ext
=
NULL
;
new_obj
->
ext
=
NULL
;
}
}
/*parent != NULL create normal obj. on parent*/
/*parent != NULL create normal obj. on
a
parent*/
else
else
{
{
new_obj
=
ll_ins_head
(
&
(
parent
)
->
child_ll
);
new_obj
=
ll_ins_head
(
&
(
parent
)
->
child_ll
);
...
@@ -197,6 +203,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy)
...
@@ -197,6 +203,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy)
LV_OBJ_DEF_WIDTH
;
LV_OBJ_DEF_WIDTH
;
new_obj
->
cords
.
y2
=
parent
->
cords
.
y1
+
new_obj
->
cords
.
y2
=
parent
->
cords
.
y1
+
LV_OBJ_DEF_HEIGHT
;
LV_OBJ_DEF_HEIGHT
;
new_obj
->
ext_size
=
0
;
/*Set appearance*/
/*Set appearance*/
new_obj
->
style_p
=
lv_objs_get
(
LV_OBJS_DEF
,
NULL
);
new_obj
->
style_p
=
lv_objs_get
(
LV_OBJS_DEF
,
NULL
);
...
@@ -221,7 +228,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy)
...
@@ -221,7 +228,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy)
if
(
copy
!=
NULL
)
{
if
(
copy
!=
NULL
)
{
area_cpy
(
&
new_obj
->
cords
,
&
copy
->
cords
);
area_cpy
(
&
new_obj
->
cords
,
&
copy
->
cords
);
new_obj
->
ext_size
=
copy
->
ext_size
;
/*Set attributes*/
/*Set attributes*/
new_obj
->
click_en
=
copy
->
click_en
;
new_obj
->
click_en
=
copy
->
click_en
;
new_obj
->
drag_en
=
copy
->
drag_en
;
new_obj
->
drag_en
=
copy
->
drag_en
;
...
@@ -752,6 +759,18 @@ void lv_obj_align_us(lv_obj_t * obj,lv_obj_t * base, lv_align_t align, cord_t x_
...
@@ -752,6 +759,18 @@ void lv_obj_align_us(lv_obj_t * obj,lv_obj_t * base, lv_align_t align, cord_t x_
lv_obj_align
(
obj
,
base
,
align
,
x_mod
*
LV_DOWNSCALE
,
y_mod
*
LV_DOWNSCALE
);
lv_obj_align
(
obj
,
base
,
align
,
x_mod
*
LV_DOWNSCALE
,
y_mod
*
LV_DOWNSCALE
);
}
}
/**
* Set the extended size of an object
* @param obj pointer to an object
* @param ext_size the extended size
*/
void
lv_obj_set_ext_size
(
lv_obj_t
*
obj
,
cord_t
ext_size
)
{
obj
->
ext_size
=
ext_size
;
lv_obj_inv
(
obj
);
}
/*---------------------
/*---------------------
* Appearance set
* Appearance set
*--------------------*/
*--------------------*/
...
@@ -937,6 +956,18 @@ void * lv_obj_alloc_ext(lv_obj_t * obj, uint16_t ext_size)
...
@@ -937,6 +956,18 @@ void * lv_obj_alloc_ext(lv_obj_t * obj, uint16_t ext_size)
}
}
/**
/**
* Send a 'LV_SIGNAL_REFR_EXT_SIZE' signal to the object
* @param obj pointer to an object
*/
void
lv_obj_ext_size_refr
(
lv_obj_t
*
obj
)
{
obj
->
ext_size
=
0
;
obj
->
signal_f
(
obj
,
LV_SIGNAL_REFR_EXT_SIZE
,
NULL
);
lv_obj_inv
(
obj
);
}
/**
* Set an application specific number for an object.
* Set an application specific number for an object.
* It can help to identify objects in the application.
* It can help to identify objects in the application.
* @param obj pointer to an object
* @param obj pointer to an object
...
@@ -1173,6 +1204,16 @@ cord_t lv_obj_get_height(lv_obj_t * obj)
...
@@ -1173,6 +1204,16 @@ cord_t lv_obj_get_height(lv_obj_t * obj)
return
area_get_height
(
&
obj
->
cords
);
return
area_get_height
(
&
obj
->
cords
);
}
}
/**
* Get the extended size attribute of an object
* @param obj pointer to an object
* @return the extended size attribute
*/
cord_t
lv_obj_getext_size
(
lv_obj_t
*
obj
)
{
return
obj
->
ext_size
;
}
/*-----------------
/*-----------------
* Appearance get
* Appearance get
*---------------*/
*---------------*/
...
...
lv_obj/lv_obj.h
View file @
932c10e5
...
@@ -73,6 +73,7 @@ typedef enum
...
@@ -73,6 +73,7 @@ typedef enum
LV_SIGNAL_CHILD_CHG
,
LV_SIGNAL_CHILD_CHG
,
LV_SIGNAL_CORD_CHG
,
LV_SIGNAL_CORD_CHG
,
LV_SIGNAL_STYLE_CHG
,
LV_SIGNAL_STYLE_CHG
,
LV_SIGNAL_REFR_EXT_SIZE
,
}
lv_signal_t
;
}
lv_signal_t
;
typedef
bool
(
*
lv_signal_f_t
)
(
struct
__LV_OBJ_T
*
obj
,
lv_signal_t
sign
,
void
*
param
);
typedef
bool
(
*
lv_signal_f_t
)
(
struct
__LV_OBJ_T
*
obj
,
lv_signal_t
sign
,
void
*
param
);
...
@@ -102,11 +103,13 @@ typedef struct __LV_OBJ_T
...
@@ -102,11 +103,13 @@ typedef struct __LV_OBJ_T
uint8_t
style_iso
:
1
;
/*1: The object has got an own style*/
uint8_t
style_iso
:
1
;
/*1: The object has got an own style*/
uint8_t
hidden
:
1
;
/*1: Object is hidden*/
uint8_t
hidden
:
1
;
/*1: Object is hidden*/
uint8_t
top_en
:
1
;
/*1: If the object or its children is clicked it goes to the foreground*/
uint8_t
top_en
:
1
;
/*1: If the object or its children is clicked it goes to the foreground*/
uint8_t
child_chg_off
:
1
;
/*1: Disable the child change signal. Use
ful when moving the children
*/
uint8_t
child_chg_off
:
1
;
/*1: Disable the child change signal. Use
d by the library
*/
opa_t
opa
;
cord_t
ext_size
;
/*EXTtend the size of the object in every direction. Used to draw shadow, shine etc.*/
uint8_t
free_num
;
/*Application specific identifier (set it freely)*/
uint8_t
free_num
;
/*Application specific identifier (set it freely)*/
opa_t
opa
;
}
lv_obj_t
;
}
lv_obj_t
;
...
@@ -194,6 +197,7 @@ void lv_obj_set_height(lv_obj_t * obj, cord_t h);
...
@@ -194,6 +197,7 @@ 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_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
(
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
);
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
);
void
lv_obj_set_ext_size
(
lv_obj_t
*
obj
,
cord_t
ext_size
);;
/*Appearance set*/
/*Appearance set*/
void
lv_obj_set_hidden
(
lv_obj_t
*
obj
,
bool
hidden_en
);
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_opa
(
lv_obj_t
*
obj
,
opa_t
opa
);
...
@@ -208,6 +212,7 @@ void lv_obj_set_signal_f(lv_obj_t * obj, lv_signal_f_t fp);
...
@@ -208,6 +212,7 @@ 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
);
void
lv_obj_set_design_f
(
lv_obj_t
*
obj
,
lv_design_f_t
fp
);
/*Other set*/
/*Other set*/
void
*
lv_obj_alloc_ext
(
lv_obj_t
*
obj
,
uint16_t
ext_size
);
void
*
lv_obj_alloc_ext
(
lv_obj_t
*
obj
,
uint16_t
ext_size
);
void
lv_obj_ext_size_refr
(
lv_obj_t
*
obj
);
void
lv_obj_set_style
(
lv_obj_t
*
obj
,
void
*
style_p
);
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_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_num
(
lv_obj_t
*
obj
,
uint8_t
free_num
);
...
...
lv_obj/lv_refr.c
View file @
932c10e5
...
@@ -391,24 +391,38 @@ static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p)
...
@@ -391,24 +391,38 @@ static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p)
bool
union_ok
;
/* Store the return value of area_union */
bool
union_ok
;
/* Store the return value of area_union */
/* Truncate the original mask to the coordinates of the parent
/* Truncate the original mask to the coordinates of the parent
* because the parent and its children are visible only here */
* because the parent and its children are visible only here */
area_t
mask_parent
;
area_t
obj_mask
;
union_ok
=
area_union
(
&
mask_parent
,
mask_ori_p
,
&
obj
->
cords
);
area_t
obj_area
;
cord_t
ext_size
=
obj
->
ext_size
;
lv_obj_get_cords
(
obj
,
&
obj_area
);
obj_area
.
x1
-=
ext_size
;
obj_area
.
y1
-=
ext_size
;
obj_area
.
x2
+=
ext_size
;
obj_area
.
y2
+=
ext_size
;
union_ok
=
area_union
(
&
obj_mask
,
mask_ori_p
,
&
obj_area
);
/*Draw the parent and its children only if they ore on 'mask_parent'*/
/*Draw the parent and its children only if they ore on 'mask_parent'*/
if
(
union_ok
!=
false
)
{
if
(
union_ok
!=
false
)
{
/* Redraw the object */
/* Redraw the object */
if
(
obj
->
opa
!=
OPA_TRANSP
&&
LV_SA
(
obj
,
lv_objs_t
)
->
transp
==
0
)
{
if
(
obj
->
opa
!=
OPA_TRANSP
&&
LV_SA
(
obj
,
lv_objs_t
)
->
transp
==
0
)
{
obj
->
design_f
(
obj
,
&
mask_parent
,
LV_DESIGN_DRAW_MAIN
);
obj
->
design_f
(
obj
,
&
obj_mask
,
LV_DESIGN_DRAW_MAIN
);
}
}
area_t
mask_child
;
/*Mask from obj and its child*/
area_t
mask_child
;
/*Mask from obj and its child*/
lv_obj_t
*
child_p
;
lv_obj_t
*
child_p
;
area_t
child_area
;
LL_READ_BACK
(
obj
->
child_ll
,
child_p
)
LL_READ_BACK
(
obj
->
child_ll
,
child_p
)
{
{
lv_obj_get_cords
(
child_p
,
&
child_area
);
ext_size
=
child_p
->
ext_size
;
child_area
.
x1
-=
ext_size
;
child_area
.
y1
-=
ext_size
;
child_area
.
x2
+=
ext_size
;
child_area
.
y2
+=
ext_size
;
/* Get the union (common parts) of original mask (from obj)
/* Get the union (common parts) of original mask (from obj)
* and its child */
* and its child */
union_ok
=
area_union
(
&
mask_child
,
&
mask_parent
,
&
child_p
->
cords
);
union_ok
=
area_union
(
&
mask_child
,
&
obj_mask
,
&
child_area
);
/*If the parent and the child has common area then refresh the child */
/*If the parent and the child has common area then refresh the child */
if
(
union_ok
)
{
if
(
union_ok
)
{
...
@@ -419,7 +433,7 @@ static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p)
...
@@ -419,7 +433,7 @@ static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p)
/* If all the children are redrawn call make 'post draw' design */
/* If all the children are redrawn call make 'post draw' design */
if
(
obj
->
opa
!=
OPA_TRANSP
&&
LV_SA
(
obj
,
lv_objs_t
)
->
transp
==
0
)
{
if
(
obj
->
opa
!=
OPA_TRANSP
&&
LV_SA
(
obj
,
lv_objs_t
)
->
transp
==
0
)
{
obj
->
design_f
(
obj
,
&
mask_parent
,
LV_DESIGN_DRAW_POST
);
obj
->
design_f
(
obj
,
&
obj_mask
,
LV_DESIGN_DRAW_POST
);
}
}
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment