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
63d54b02
Commit
63d54b02
authored
Nov 17, 2017
by
Gabor Kiss-Vamosi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some api updates and style border.part added
parent
b973dd34
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
929 additions
and
758 deletions
+929
-758
lv_draw.c
lv_draw/lv_draw.c
+84
-35
lv_group.c
lv_obj/lv_group.c
+2
-2
lv_style.c
lv_obj/lv_style.c
+21
-21
lv_style.h
lv_obj/lv_style.h
+15
-2
lv_btn.c
lv_objx/lv_btn.c
+6
-6
lv_btn.h
lv_objx/lv_btn.h
+2
-2
lv_cb.c
lv_objx/lv_cb.c
+1
-1
lv_chart.c
lv_objx/lv_chart.c
+4
-4
lv_cont.c
lv_objx/lv_cont.c
+18
-18
lv_cont.h
lv_objx/lv_cont.h
+13
-13
lv_ddlist.c
lv_objx/lv_ddlist.c
+24
-1
lv_ddlist.h
lv_objx/lv_ddlist.h
+9
-1
lv_gauge.c
lv_objx/lv_gauge.c
+2
-2
lv_label.c
lv_objx/lv_label.c
+9
-10
lv_led.c
lv_objx/lv_led.c
+2
-2
lv_list.c
lv_objx/lv_list.c
+2
-2
lv_lmeter.c
lv_objx/lv_lmeter.c
+2
-2
lv_mbox.c
lv_objx/lv_mbox.c
+18
-6
lv_mbox.h
lv_objx/lv_mbox.h
+6
-2
lv_page.h
lv_objx/lv_page.h
+2
-2
lv_roller.c
lv_objx/lv_roller.c
+6
-17
lv_roller.h
lv_objx/lv_roller.h
+11
-6
lv_ta.c
lv_objx/lv_ta.c
+57
-77
lv_ta.h
lv_objx/lv_ta.h
+17
-22
lv_tabview.c
lv_objx/lv_tabview.c
+1
-1
lv_theme.c
lv_themes/lv_theme.c
+0
-246
lv_theme.h
lv_themes/lv_theme.h
+4
-27
lv_theme_alien.c
lv_themes/lv_theme_alien.c
+146
-222
lv_theme_alien.h
lv_themes/lv_theme_alien.h
+5
-6
lv_theme_templ.c
lv_themes/lv_theme_templ.c
+384
-0
lv_theme_templ.h
lv_themes/lv_theme_templ.h
+56
-0
No files found.
lv_draw/lv_draw.c
View file @
63d54b02
...
...
@@ -108,7 +108,7 @@ void lv_draw_rect(const area_t * coords, const area_t * mask, const lv_style_t *
}
}
if
(
style
->
body
.
border
.
width
!=
0
)
{
if
(
style
->
body
.
border
.
width
!=
0
&&
style
->
body
.
border
.
part
!=
LV_BORDER_NONE
)
{
lv_draw_rect_border_straight
(
coords
,
mask
,
style
);
if
(
style
->
body
.
radius
!=
0
)
{
...
...
@@ -324,7 +324,7 @@ void lv_draw_label(const area_t * coords,const area_t * mask, const lv_style_t *
if
(
cmd_state
==
CMD_STATE_IN
)
color
=
recolor
;
letter_fp
(
&
pos
,
mask
,
font
,
letter
,
color
,
style
->
text
.
opa
);
pos
.
x
+=
(
font_get_width
(
font
,
letter
)
>>
FONT_ANTIALIAS
)
+
style
->
text
.
letter_space
;
pos
.
x
+=
font_get_width_scale
(
font
,
letter
)
+
style
->
text
.
letter_space
;
}
/*Go to next line*/
...
...
@@ -592,8 +592,8 @@ static void lv_draw_rect_main_mid(const area_t * coords, const area_t * mask, co
{
uint16_t
radius
=
style
->
body
.
radius
;
color_t
mcolor
=
style
->
body
.
color_main
;
color_t
gcolor
=
style
->
body
.
color_gradient
;
color_t
mcolor
=
style
->
body
.
main_color
;
color_t
gcolor
=
style
->
body
.
gradient_color
;
uint8_t
mix
;
opa_t
opa
=
style
->
body
.
opa
;
cord_t
height
=
area_get_height
(
coords
);
...
...
@@ -642,8 +642,8 @@ static void lv_draw_rect_main_corner(const area_t * coords, const area_t * mask,
{
uint16_t
radius
=
style
->
body
.
radius
;
color_t
mcolor
=
style
->
body
.
color_main
;
color_t
gcolor
=
style
->
body
.
color_gradient
;
color_t
mcolor
=
style
->
body
.
main_color
;
color_t
gcolor
=
style
->
body
.
gradient_color
;
color_t
act_color
;
opa_t
opa
=
style
->
body
.
opa
;
uint8_t
mix
;
...
...
@@ -816,7 +816,9 @@ static void lv_draw_rect_border_straight(const area_t * coords, const area_t * m
cord_t
width
=
area_get_width
(
coords
);
cord_t
height
=
area_get_height
(
coords
);
uint16_t
bwidth
=
style
->
body
.
border
.
width
;
opa_t
bopa
=
style
->
body
.
border
.
opa
;
//(uint32_t)((uint32_t) style->opa * style->body.border.opa) >> 8;
opa_t
opa
=
style
->
body
.
border
.
opa
;
lv_border_part_t
part
=
style
->
body
.
border
.
part
;
color_t
color
=
style
->
body
.
border
.
color
;
area_t
work_area
;
cord_t
length_corr
=
0
;
cord_t
corner_size
=
0
;
...
...
@@ -836,84 +838,122 @@ static void lv_draw_rect_border_straight(const area_t * coords, const area_t * m
/* Modify the corner_size if corner is drawn */
corner_size
++
;
color_t
b_color
=
style
->
body
.
border
.
color
;
/*Depending one which part's are drawn modify the area lengths */
if
(
part
&
LV_BORDER_TOP
)
work_area
.
y1
=
coords
->
y1
+
corner_size
;
else
work_area
.
y1
=
coords
->
y1
+
radius
;
if
(
part
&
LV_BORDER_BOTTOM
)
work_area
.
y2
=
coords
->
y2
-
corner_size
;
else
work_area
.
y2
=
coords
->
y2
-
radius
;
/*Left border*/
if
(
part
&
LV_BORDER_LEFT
)
{
work_area
.
x1
=
coords
->
x1
;
work_area
.
x2
=
work_area
.
x1
+
bwidth
;
work_area
.
y1
=
coords
->
y1
+
corner_size
;
work_area
.
y2
=
coords
->
y2
-
corner_size
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Right border*/
if
(
part
&
LV_BORDER_RIGHT
)
{
work_area
.
x2
=
coords
->
x2
;
work_area
.
x1
=
work_area
.
x2
-
bwidth
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Upper border*/
work_area
.
x1
=
coords
->
x1
+
corner_size
-
length_corr
;
work_area
.
x2
=
coords
->
x2
-
corner_size
+
length_corr
;
/*Upper border*/
if
(
part
&
LV_BORDER_TOP
)
{
work_area
.
y1
=
coords
->
y1
;
work_area
.
y2
=
coords
->
y1
+
bwidth
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Lower border*/
if
(
part
&
LV_BORDER_BOTTOM
)
{
work_area
.
y2
=
coords
->
y2
;
work_area
.
y1
=
work_area
.
y2
-
bwidth
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Draw the a remaining rectangles if the radius is smaller then b_width */
if
(
length_corr
!=
0
)
{
/*Left top correction*/
if
((
part
&
LV_BORDER_TOP
)
&&
(
part
&
LV_BORDER_LEFT
))
{
work_area
.
x1
=
coords
->
x1
;
work_area
.
x2
=
coords
->
x1
+
radius
;
work_area
.
y1
=
coords
->
y1
+
radius
+
1
;
work_area
.
y2
=
coords
->
y1
+
bwidth
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Right top correction*/
if
((
part
&
LV_BORDER_TOP
)
&&
(
part
&
LV_BORDER_RIGHT
))
{
work_area
.
x1
=
coords
->
x2
-
radius
;
work_area
.
x2
=
coords
->
x2
;
work_area
.
y1
=
coords
->
y1
+
radius
+
1
;
work_area
.
y2
=
coords
->
y1
+
bwidth
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Left bottom correction*/
if
((
part
&
LV_BORDER_BOTTOM
)
&&
(
part
&
LV_BORDER_LEFT
))
{
work_area
.
x1
=
coords
->
x1
;
work_area
.
x2
=
coords
->
x1
+
radius
;
work_area
.
y1
=
coords
->
y2
-
bwidth
;
work_area
.
y2
=
coords
->
y2
-
radius
-
1
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Right bottom correction*/
if
((
part
&
LV_BORDER_BOTTOM
)
&&
(
part
&
LV_BORDER_RIGHT
))
{
work_area
.
x1
=
coords
->
x2
-
radius
;
work_area
.
x2
=
coords
->
x2
;
work_area
.
y1
=
coords
->
y2
-
bwidth
;
work_area
.
y2
=
coords
->
y2
-
radius
-
1
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
}
/*If radius == 0 one px on the corners are not drawn*/
if
(
radius
==
0
)
{
/*Left top corner*/
if
(
part
&
(
LV_BORDER_TOP
|
LV_BORDER_LEFT
))
{
work_area
.
x1
=
coords
->
x1
;
work_area
.
x2
=
coords
->
x1
;
work_area
.
y1
=
coords
->
y1
;
work_area
.
y2
=
coords
->
y1
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Right top corner*/
if
(
part
&
(
LV_BORDER_TOP
|
LV_BORDER_RIGHT
))
{
work_area
.
x1
=
coords
->
x2
;
work_area
.
x2
=
coords
->
x2
;
work_area
.
y1
=
coords
->
y1
;
work_area
.
y2
=
coords
->
y1
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Left bottom corner*/
if
(
part
&
(
LV_BORDER_BOTTOM
|
LV_BORDER_LEFT
))
{
work_area
.
x1
=
coords
->
x1
;
work_area
.
x2
=
coords
->
x1
;
work_area
.
y1
=
coords
->
y2
;
work_area
.
y2
=
coords
->
y2
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
/*Right bottom corner*/
if
(
part
&
(
LV_BORDER_BOTTOM
|
LV_BORDER_RIGHT
))
{
work_area
.
x1
=
coords
->
x2
;
work_area
.
x2
=
coords
->
x2
;
work_area
.
y1
=
coords
->
y2
;
work_area
.
y2
=
coords
->
y2
;
fill_fp
(
&
work_area
,
mask
,
b_color
,
bopa
);
fill_fp
(
&
work_area
,
mask
,
color
,
opa
);
}
}
}
...
...
@@ -929,8 +969,9 @@ static void lv_draw_rect_border_corner(const area_t * coords, const area_t * mas
{
uint16_t
radius
=
style
->
body
.
radius
;
uint16_t
bwidth
=
style
->
body
.
border
.
width
;
color_t
bcolor
=
style
->
body
.
border
.
color
;
opa_t
bopa
=
style
->
body
.
border
.
opa
;
//(uint32_t)((uint32_t) style->opa * style->body.border.opa ) >> 8;
color_t
color
=
style
->
body
.
border
.
color
;
opa_t
opa
=
style
->
body
.
border
.
opa
;
lv_border_part_t
part
=
style
->
body
.
border
.
part
;
/*0 px border width drawn as 1 px, so decrement the bwidth*/
bwidth
--
;
...
...
@@ -987,53 +1028,60 @@ static void lv_draw_rect_border_corner(const area_t * coords, const area_t * mas
}
/*Draw the octets to the right bottom corner*/
if
((
part
&
LV_BORDER_BOTTOM
)
&&
(
part
&
LV_BORDER_RIGHT
))
{
circ_area
.
x1
=
rb_origo
.
x
+
CIRC_OCT1_X
(
cir_out
)
-
act_w2
;
circ_area
.
x2
=
rb_origo
.
x
+
CIRC_OCT1_X
(
cir_out
);
circ_area
.
y1
=
rb_origo
.
y
+
CIRC_OCT1_Y
(
cir_out
);
circ_area
.
y2
=
rb_origo
.
y
+
CIRC_OCT1_Y
(
cir_out
);
fill_fp
(
&
circ_area
,
mask
,
bcolor
,
b
opa
);
fill_fp
(
&
circ_area
,
mask
,
color
,
opa
);
circ_area
.
x1
=
rb_origo
.
x
+
CIRC_OCT2_X
(
cir_out
);
circ_area
.
x2
=
rb_origo
.
x
+
CIRC_OCT2_X
(
cir_out
);
circ_area
.
y1
=
rb_origo
.
y
+
CIRC_OCT2_Y
(
cir_out
)
-
act_w1
;
circ_area
.
y2
=
rb_origo
.
y
+
CIRC_OCT2_Y
(
cir_out
);
fill_fp
(
&
circ_area
,
mask
,
bcolor
,
bopa
);
fill_fp
(
&
circ_area
,
mask
,
color
,
opa
);
}
/*Draw the octets to the left bottom corner*/
if
((
part
&
LV_BORDER_BOTTOM
)
&&
(
part
&
LV_BORDER_LEFT
))
{
circ_area
.
x1
=
lb_origo
.
x
+
CIRC_OCT3_X
(
cir_out
);
circ_area
.
x2
=
lb_origo
.
x
+
CIRC_OCT3_X
(
cir_out
);
circ_area
.
y1
=
lb_origo
.
y
+
CIRC_OCT3_Y
(
cir_out
)
-
act_w2
;
circ_area
.
y2
=
lb_origo
.
y
+
CIRC_OCT3_Y
(
cir_out
);
fill_fp
(
&
circ_area
,
mask
,
bcolor
,
b
opa
);
fill_fp
(
&
circ_area
,
mask
,
color
,
opa
);
circ_area
.
x1
=
lb_origo
.
x
+
CIRC_OCT4_X
(
cir_out
);
circ_area
.
x2
=
lb_origo
.
x
+
CIRC_OCT4_X
(
cir_out
)
+
act_w1
;
circ_area
.
y1
=
lb_origo
.
y
+
CIRC_OCT4_Y
(
cir_out
);
circ_area
.
y2
=
lb_origo
.
y
+
CIRC_OCT4_Y
(
cir_out
);
fill_fp
(
&
circ_area
,
mask
,
bcolor
,
bopa
);
fill_fp
(
&
circ_area
,
mask
,
color
,
opa
);
}
/*Draw the octets to the left top corner*/
/*Don't draw if the lines are common in the middle*/
if
((
part
&
LV_BORDER_TOP
)
&&
(
part
&
LV_BORDER_LEFT
))
{
if
(
lb_origo
.
y
+
CIRC_OCT4_Y
(
cir_out
)
>
lt_origo
.
y
+
CIRC_OCT5_Y
(
cir_out
))
{
/*Don't draw if the lines are common in the middle*/
circ_area
.
x1
=
lt_origo
.
x
+
CIRC_OCT5_X
(
cir_out
);
circ_area
.
x2
=
lt_origo
.
x
+
CIRC_OCT5_X
(
cir_out
)
+
act_w2
;
circ_area
.
y1
=
lt_origo
.
y
+
CIRC_OCT5_Y
(
cir_out
);
circ_area
.
y2
=
lt_origo
.
y
+
CIRC_OCT5_Y
(
cir_out
);
fill_fp
(
&
circ_area
,
mask
,
bcolor
,
b
opa
);
fill_fp
(
&
circ_area
,
mask
,
color
,
opa
);
}
circ_area
.
x1
=
lt_origo
.
x
+
CIRC_OCT6_X
(
cir_out
);
circ_area
.
x2
=
lt_origo
.
x
+
CIRC_OCT6_X
(
cir_out
);
circ_area
.
y1
=
lt_origo
.
y
+
CIRC_OCT6_Y
(
cir_out
);
circ_area
.
y2
=
lt_origo
.
y
+
CIRC_OCT6_Y
(
cir_out
)
+
act_w1
;
fill_fp
(
&
circ_area
,
mask
,
bcolor
,
bopa
);
fill_fp
(
&
circ_area
,
mask
,
color
,
opa
);
}
/*Draw the octets to the right top corner*/
if
((
part
&
LV_BORDER_TOP
)
&&
(
part
&
LV_BORDER_RIGHT
))
{
circ_area
.
x1
=
rt_origo
.
x
+
CIRC_OCT7_X
(
cir_out
);
circ_area
.
x2
=
rt_origo
.
x
+
CIRC_OCT7_X
(
cir_out
);
circ_area
.
y1
=
rt_origo
.
y
+
CIRC_OCT7_Y
(
cir_out
);
circ_area
.
y2
=
rt_origo
.
y
+
CIRC_OCT7_Y
(
cir_out
)
+
act_w2
;
fill_fp
(
&
circ_area
,
mask
,
bcolor
,
b
opa
);
fill_fp
(
&
circ_area
,
mask
,
color
,
opa
);
/*Don't draw if the lines are common in the middle*/
if
(
rb_origo
.
y
+
CIRC_OCT1_Y
(
cir_out
)
>
rt_origo
.
y
+
CIRC_OCT8_Y
(
cir_out
))
{
...
...
@@ -1041,9 +1089,9 @@ static void lv_draw_rect_border_corner(const area_t * coords, const area_t * mas
circ_area
.
x2
=
rt_origo
.
x
+
CIRC_OCT8_X
(
cir_out
);
circ_area
.
y1
=
rt_origo
.
y
+
CIRC_OCT8_Y
(
cir_out
);
circ_area
.
y2
=
rt_origo
.
y
+
CIRC_OCT8_Y
(
cir_out
);
fill_fp
(
&
circ_area
,
mask
,
bcolor
,
bopa
);
fill_fp
(
&
circ_area
,
mask
,
color
,
opa
);
}
}
circ_next
(
&
cir_out
,
&
tmp_out
);
/*The internal circle will be ready faster
...
...
@@ -1111,6 +1159,7 @@ static void lv_draw_cont_shadow_full(const area_t * coords, const area_t * mask,
uint16_t
opa_h_result
[
LV_HOR_RES
];
int16_t
filter_size
=
2
*
style
->
body
.
shadow
.
width
+
1
;
/*TODO recalculate only values are changed*/
for
(
row
=
0
;
row
<
filter_size
;
row
++
)
{
opa_h_result
[
row
]
=
(
uint32_t
)((
uint32_t
)(
filter_size
-
row
)
*
style
->
body
.
opa
*
2
)
/
(
filter_size
);
}
...
...
lv_obj/lv_group.c
View file @
63d54b02
...
...
@@ -257,8 +257,8 @@ static void style_mod_def(lv_style_t * style)
style
->
body
.
border
.
opa
=
OPA_COVER
;
if
(
style
->
body
.
border
.
width
==
0
&&
style
->
body
.
empty
==
0
)
style
->
body
.
border
.
width
=
2
<<
LV_ANTIALIAS
;
/*Add border to not transparent styles*/
else
style
->
body
.
border
.
width
=
style
->
body
.
border
.
width
*
2
;
/*Make the border thicker*/
style
->
body
.
color_main
=
color_mix
(
style
->
body
.
color_main
,
COLOR_ORANGE
,
OPA_80
);
style
->
body
.
color_gradient
=
color_mix
(
style
->
body
.
color_gradient
,
COLOR_ORANGE
,
OPA_80
);
style
->
body
.
main_color
=
color_mix
(
style
->
body
.
main_color
,
COLOR_ORANGE
,
OPA_80
);
style
->
body
.
gradient_color
=
color_mix
(
style
->
body
.
gradient_color
,
COLOR_ORANGE
,
OPA_80
);
}
#endif
/*LV_OBJ_GROUP != 0*/
lv_obj/lv_style.c
View file @
63d54b02
...
...
@@ -70,17 +70,17 @@ void lv_style_init (void)
/*Screen style*/
lv_style_scr
.
glass
=
0
;
lv_style_scr
.
body
.
opa
=
OPA_COVER
;
lv_style_scr
.
body
.
color_main
=
COLOR_WHITE
;
lv_style_scr
.
body
.
color_gradient
=
COLOR_WHITE
;
lv_style_scr
.
body
.
main_color
=
COLOR_WHITE
;
lv_style_scr
.
body
.
gradient_color
=
COLOR_WHITE
;
lv_style_scr
.
body
.
radius
=
0
;
lv_style_scr
.
body
.
padding
.
ver
=
LV_DPI
/
12
;
lv_style_scr
.
body
.
padding
.
hor
=
LV_DPI
/
12
;
lv_style_scr
.
body
.
padding
.
inner
=
LV_DPI
/
12
;
lv_style_scr
.
body
.
empty
=
0
;
lv_style_scr
.
body
.
border
.
color
=
COLOR_BLACK
;
lv_style_scr
.
body
.
border
.
opa
=
OPA_COVER
;
lv_style_scr
.
body
.
border
.
width
=
0
;
lv_style_scr
.
body
.
border
.
part
=
LV_BORDER_FULL
;
lv_style_scr
.
body
.
shadow
.
color
=
COLOR_GRAY
;
lv_style_scr
.
body
.
shadow
.
type
=
LV_SHADOW_FULL
;
...
...
@@ -108,16 +108,16 @@ void lv_style_init (void)
lv_style_plain_color
.
text
.
color
=
COLOR_MAKE
(
0xf0
,
0xf0
,
0xf0
);
lv_style_plain_color
.
image
.
color
=
COLOR_MAKE
(
0xf0
,
0xf0
,
0xf0
);
lv_style_plain_color
.
line
.
color
=
COLOR_MAKE
(
0xf0
,
0xf0
,
0xf0
);
lv_style_plain_color
.
body
.
color_main
=
COLOR_MAKE
(
0x55
,
0x96
,
0xd8
);
lv_style_plain_color
.
body
.
color_gradient
=
lv_style_plain_color
.
body
.
color_main
;
lv_style_plain_color
.
body
.
main_color
=
COLOR_MAKE
(
0x55
,
0x96
,
0xd8
);
lv_style_plain_color
.
body
.
gradient_color
=
lv_style_plain_color
.
body
.
main_color
;
/*Pretty style */
memcpy
(
&
lv_style_pretty
,
&
lv_style_plain
,
sizeof
(
lv_style_t
));
lv_style_pretty
.
text
.
color
=
COLOR_MAKE
(
0x20
,
0x20
,
0x20
);
lv_style_pretty
.
image
.
color
=
COLOR_MAKE
(
0x20
,
0x20
,
0x20
);
lv_style_pretty
.
line
.
color
=
COLOR_MAKE
(
0x20
,
0x20
,
0x20
);
lv_style_pretty
.
body
.
color_main
=
COLOR_WHITE
;
lv_style_pretty
.
body
.
color_gradient
=
COLOR_SILVER
;
lv_style_pretty
.
body
.
main_color
=
COLOR_WHITE
;
lv_style_pretty
.
body
.
gradient_color
=
COLOR_SILVER
;
lv_style_pretty
.
body
.
radius
=
LV_DPI
/
15
;
lv_style_pretty
.
body
.
border
.
color
=
COLOR_MAKE
(
0x40
,
0x40
,
0x40
);
lv_style_pretty
.
body
.
border
.
width
=
LV_DPI
/
50
>=
1
?
LV_DPI
/
50
:
1
;
...
...
@@ -128,8 +128,8 @@ void lv_style_init (void)
lv_style_pretty_color
.
text
.
color
=
COLOR_MAKE
(
0xe0
,
0xe0
,
0xe0
);
lv_style_pretty_color
.
image
.
color
=
COLOR_MAKE
(
0xe0
,
0xe0
,
0xe0
);
lv_style_pretty_color
.
line
.
color
=
COLOR_MAKE
(
0xe0
,
0xe0
,
0xe0
);
lv_style_pretty_color
.
body
.
color_main
=
COLOR_MAKE
(
0x6b
,
0x9a
,
0xc7
);
lv_style_pretty_color
.
body
.
color_gradient
=
COLOR_MAKE
(
0x2b
,
0x59
,
0x8b
);
lv_style_pretty_color
.
body
.
main_color
=
COLOR_MAKE
(
0x6b
,
0x9a
,
0xc7
);
lv_style_pretty_color
.
body
.
gradient_color
=
COLOR_MAKE
(
0x2b
,
0x59
,
0x8b
);
lv_style_pretty_color
.
body
.
border
.
color
=
COLOR_MAKE
(
0x15
,
0x2c
,
0x42
);
/*Transparent style*/
...
...
@@ -149,8 +149,8 @@ void lv_style_init (void)
/*Button released style*/
memcpy
(
&
lv_style_btn_released
,
&
lv_style_plain
,
sizeof
(
lv_style_t
));
lv_style_btn_released
.
body
.
color_main
=
COLOR_MAKE
(
0x76
,
0xa2
,
0xd0
);
lv_style_btn_released
.
body
.
color_gradient
=
COLOR_MAKE
(
0x19
,
0x3a
,
0x5d
);
lv_style_btn_released
.
body
.
main_color
=
COLOR_MAKE
(
0x76
,
0xa2
,
0xd0
);
lv_style_btn_released
.
body
.
gradient_color
=
COLOR_MAKE
(
0x19
,
0x3a
,
0x5d
);
lv_style_btn_released
.
body
.
radius
=
LV_DPI
/
15
;
lv_style_btn_released
.
body
.
padding
.
hor
=
LV_DPI
/
4
;
lv_style_btn_released
.
body
.
padding
.
ver
=
LV_DPI
/
6
;
...
...
@@ -164,16 +164,16 @@ void lv_style_init (void)
/*Button pressed style*/
memcpy
(
&
lv_style_btn_pressed
,
&
lv_style_btn_released
,
sizeof
(
lv_style_t
));
lv_style_btn_pressed
.
body
.
color_main
=
COLOR_MAKE
(
0x33
,
0x62
,
0x94
);
lv_style_btn_pressed
.
body
.
color_gradient
=
COLOR_MAKE
(
0x10
,
0x26
,
0x3c
);
lv_style_btn_pressed
.
body
.
main_color
=
COLOR_MAKE
(
0x33
,
0x62
,
0x94
);
lv_style_btn_pressed
.
body
.
gradient_color
=
COLOR_MAKE
(
0x10
,
0x26
,
0x3c
);
lv_style_btn_pressed
.
text
.
color
=
COLOR_MAKE
(
0xa4
,
0xb5
,
0xc6
);
lv_style_btn_pressed
.
image
.
color
=
COLOR_MAKE
(
0xa4
,
0xb5
,
0xc6
);
lv_style_btn_pressed
.
line
.
color
=
COLOR_MAKE
(
0xa4
,
0xb5
,
0xc6
);
/*Button toggle released style*/
memcpy
(
&
lv_style_btn_tgl_released
,
&
lv_style_btn_released
,
sizeof
(
lv_style_t
));
lv_style_btn_tgl_released
.
body
.
color_main
=
COLOR_MAKE
(
0x0a
,
0x11
,
0x22
);
lv_style_btn_tgl_released
.
body
.
color_gradient
=
COLOR_MAKE
(
0x37
,
0x62
,
0x90
);
lv_style_btn_tgl_released
.
body
.
main_color
=
COLOR_MAKE
(
0x0a
,
0x11
,
0x22
);
lv_style_btn_tgl_released
.
body
.
gradient_color
=
COLOR_MAKE
(
0x37
,
0x62
,
0x90
);
lv_style_btn_tgl_released
.
body
.
border
.
color
=
COLOR_MAKE
(
0x01
,
0x07
,
0x0d
);
lv_style_btn_tgl_released
.
text
.
color
=
COLOR_MAKE
(
0xc8
,
0xdd
,
0xf4
);
lv_style_btn_tgl_released
.
image
.
color
=
COLOR_MAKE
(
0xc8
,
0xdd
,
0xf4
);
...
...
@@ -181,16 +181,16 @@ void lv_style_init (void)
/*Button toggle pressed style*/
memcpy
(
&
lv_style_btn_tgl_pressed
,
&
lv_style_btn_tgl_released
,
sizeof
(
lv_style_t
));
lv_style_btn_tgl_pressed
.
body
.
color_main
=
COLOR_MAKE
(
0x02
,
0x14
,
0x27
);
lv_style_btn_tgl_pressed
.
body
.
color_gradient
=
COLOR_MAKE
(
0x2b
,
0x4c
,
0x70
);
lv_style_btn_tgl_pressed
.
body
.
main_color
=
COLOR_MAKE
(
0x02
,
0x14
,
0x27
);
lv_style_btn_tgl_pressed
.
body
.
gradient_color
=
COLOR_MAKE
(
0x2b
,
0x4c
,
0x70
);
lv_style_btn_tgl_pressed
.
text
.
color
=
COLOR_MAKE
(
0xa4
,
0xb5
,
0xc6
);
lv_style_btn_tgl_pressed
.
image
.
color
=
COLOR_MAKE
(
0xa4
,
0xb5
,
0xc6
);
lv_style_btn_tgl_pressed
.
line
.
color
=
COLOR_MAKE
(
0xa4
,
0xb5
,
0xc6
);
/*Button inactive style*/
memcpy
(
&
lv_style_btn_inactive
,
&
lv_style_btn_released
,
sizeof
(
lv_style_t
));
lv_style_btn_inactive
.
body
.
color_main
=
COLOR_MAKE
(
0xd8
,
0xd8
,
0xd8
);
lv_style_btn_inactive
.
body
.
color_gradient
=
COLOR_MAKE
(
0xd8
,
0xd8
,
0xd8
);
lv_style_btn_inactive
.
body
.
main_color
=
COLOR_MAKE
(
0xd8
,
0xd8
,
0xd8
);
lv_style_btn_inactive
.
body
.
gradient_color
=
COLOR_MAKE
(
0xd8
,
0xd8
,
0xd8
);
lv_style_btn_inactive
.
body
.
border
.
color
=
COLOR_MAKE
(
0x90
,
0x90
,
0x90
);
lv_style_btn_inactive
.
text
.
color
=
COLOR_MAKE
(
0x70
,
0x70
,
0x70
);
lv_style_btn_inactive
.
image
.
color
=
COLOR_MAKE
(
0x70
,
0x70
,
0x70
);
...
...
@@ -264,8 +264,8 @@ static void lv_style_aimator(lv_style_anim_dsc_t * dsc, int32_t val)
STYLE_ATTR_ANIM
(
line
.
width
,
val
);
STYLE_ATTR_ANIM
(
image
.
intense
,
val
);
act
->
body
.
color_main
=
color_mix
(
end
->
body
.
color_main
,
start
->
body
.
color_main
,
val
);
act
->
body
.
color_gradient
=
color_mix
(
end
->
body
.
color_gradient
,
start
->
body
.
color_gradient
,
val
);
act
->
body
.
main_color
=
color_mix
(
end
->
body
.
main_color
,
start
->
body
.
main_color
,
val
);
act
->
body
.
gradient_color
=
color_mix
(
end
->
body
.
gradient_color
,
start
->
body
.
gradient_color
,
val
);
act
->
body
.
border
.
color
=
color_mix
(
end
->
body
.
border
.
color
,
start
->
body
.
border
.
color
,
val
);
act
->
body
.
shadow
.
color
=
color_mix
(
end
->
body
.
shadow
.
color
,
start
->
body
.
shadow
.
color
,
val
);
act
->
text
.
color
=
color_mix
(
end
->
text
.
color
,
start
->
text
.
color
,
val
);
...
...
lv_obj/lv_style.h
View file @
63d54b02
...
...
@@ -28,6 +28,18 @@ extern "C" {
* TYPEDEFS
**********************/
/*Border types (Use 'OR'ed values)*/
typedef
enum
{
LV_BORDER_NONE
=
0x00
,
LV_BORDER_BOTTOM
=
0x01
,
LV_BORDER_TOP
=
0x02
,
LV_BORDER_LEFT
=
0x04
,
LV_BORDER_RIGHT
=
0x08
,
LV_BORDER_FULL
=
0x0F
,
}
lv_border_part_t
;
/*Shadow types*/
typedef
enum
{
...
...
@@ -40,14 +52,15 @@ typedef struct
uint8_t
glass
:
1
;
/*1: Do not inherit this style*/
struct
{
color_t
color_main
;
color_t
color_gradient
;
color_t
main_color
;
color_t
gradient_color
;
cord_t
radius
;
opa_t
opa
;
struct
{
color_t
color
;
cord_t
width
;
lv_border_part_t
part
;
opa_t
opa
;
}
border
;
...
...
lv_objx/lv_btn.c
View file @
63d54b02
...
...
@@ -81,16 +81,16 @@ lv_obj_t * lv_btn_create(lv_obj_t * par, lv_obj_t * copy)
/*If no copy do the basic initialization*/
if
(
copy
==
NULL
)
{
lv_btn_set_layout
(
new_btn
,
LV_
CONT_
LAYOUT_CENTER
);
lv_btn_set_layout
(
new_btn
,
LV_LAYOUT_CENTER
);
/*Set the default styles*/
lv_theme_t
*
th
=
lv_theme_get_current
();
if
(
th
)
{
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_REL
,
th
->
btn
.
md
.
rel
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_PR
,
th
->
btn
.
md
.
pr
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_TGL_REL
,
th
->
btn
.
md
.
tgl_rel
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_TGL_PR
,
th
->
btn
.
md
.
tgl_pr
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_INA
,
th
->
btn
.
md
.
ina
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_REL
,
th
->
btn
.
rel
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_PR
,
th
->
btn
.
pr
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_TGL_REL
,
th
->
btn
.
tgl_rel
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_TGL_PR
,
th
->
btn
.
tgl_pr
);
lv_btn_set_style
(
new_btn
,
LV_BTN_STYLE_INA
,
th
->
btn
.
ina
);
}
else
{
lv_obj_set_style
(
new_btn
,
ext
->
styles
[
LV_BTN_STATE_REL
]);
}
...
...
lv_objx/lv_btn.h
View file @
63d54b02
...
...
@@ -121,7 +121,7 @@ void lv_btn_set_action(lv_obj_t * btn, lv_btn_action_t type, lv_action_t action)
* @param btn pointer to a button object
* @param layout a layout from 'lv_cont_layout_t'
*/
static
inline
void
lv_btn_set_layout
(
lv_obj_t
*
btn
,
lv_
cont_
layout_t
layout
)
static
inline
void
lv_btn_set_layout
(
lv_obj_t
*
btn
,
lv_layout_t
layout
)
{
lv_cont_set_layout
(
btn
,
layout
);
}
...
...
@@ -177,7 +177,7 @@ lv_action_t lv_btn_get_action(lv_obj_t * btn, lv_btn_action_t type);
* @param btn pointer to button object
* @return the layout from 'lv_cont_layout_t'
*/
static
inline
lv_
cont_
layout_t
lv_btn_get_layout
(
lv_obj_t
*
btn
)
static
inline
lv_layout_t
lv_btn_get_layout
(
lv_obj_t
*
btn
)
{
return
lv_cont_get_layout
(
btn
);
}
...
...
lv_objx/lv_cb.c
View file @
63d54b02
...
...
@@ -74,7 +74,7 @@ lv_obj_t * lv_cb_create(lv_obj_t * par, lv_obj_t * copy)
ext
->
label
=
lv_label_create
(
new_cb
,
NULL
);
lv_cb_set_text
(
new_cb
,
"Check box"
);
lv_btn_set_layout
(
new_cb
,
LV_
CONT_
LAYOUT_ROW_M
);
lv_btn_set_layout
(
new_cb
,
LV_LAYOUT_ROW_M
);
lv_btn_set_fit
(
new_cb
,
true
,
true
);
lv_btn_set_toggle
(
new_cb
,
true
);
...
...
lv_objx/lv_chart.c
View file @
63d54b02
...
...
@@ -553,8 +553,8 @@ static void lv_chart_draw_points(lv_obj_t * chart, const area_t * mask)
/*Go through all data lines*/
LL_READ_BACK
(
ext
->
series_ll
,
ser
)
{
style_point
.
body
.
color_main
=
ser
->
color
;
style_point
.
body
.
color_gradient
=
color_mix
(
COLOR_BLACK
,
ser
->
color
,
ext
->
series
.
dark
);
style_point
.
body
.
main_color
=
ser
->
color
;
style_point
.
body
.
gradient_color
=
color_mix
(
COLOR_BLACK
,
ser
->
color
,
ext
->
series
.
dark
);
for
(
i
=
0
;
i
<
ext
->
point_cnt
;
i
++
)
{
cir_a
.
x1
=
((
w
*
i
)
/
(
ext
->
point_cnt
-
1
))
+
x_ofs
;
...
...
@@ -611,8 +611,8 @@ static void lv_chart_draw_cols(lv_obj_t * chart, const area_t * mask)
/*Draw the current point of all data line*/
LL_READ_BACK
(
ext
->
series_ll
,
ser
)
{
rects
.
body
.
color_main
=
ser
->
color
;
rects
.
body
.
color_gradient
=
color_mix
(
COLOR_BLACK
,
ser
->
color
,
ext
->
series
.
dark
);
rects
.
body
.
main_color
=
ser
->
color
;
rects
.
body
.
gradient_color
=
color_mix
(
COLOR_BLACK
,
ser
->
color
,
ext
->
series
.
dark
);
col_a
.
x1
=
x_act
;
col_a
.
x2
=
col_a
.
x1
+
col_w
;
x_act
+=
col_w
;
...
...
lv_objx/lv_cont.c
View file @
63d54b02
...
...
@@ -74,7 +74,7 @@ lv_obj_t * lv_cont_create(lv_obj_t * par, lv_obj_t * copy)
dm_assert
(
ext
);
ext
->
hor_fit
=
0
;
ext
->
ver_fit
=
0
;
ext
->
layout
=
LV_
CONT_
LAYOUT_OFF
;
ext
->
layout
=
LV_LAYOUT_OFF
;
lv_obj_set_signal_func
(
new_cont
,
lv_cont_signal
);
...
...
@@ -111,7 +111,7 @@ lv_obj_t * lv_cont_create(lv_obj_t * par, lv_obj_t * copy)
* @param cont pointer to a container object
* @param layout a layout from 'lv_cont_layout_t'
*/
void
lv_cont_set_layout
(
lv_obj_t
*
cont
,
lv_
cont_
layout_t
layout
)
void
lv_cont_set_layout
(
lv_obj_t
*
cont
,
lv_layout_t
layout
)
{
lv_cont_ext_t
*
ext
=
lv_obj_get_ext_attr
(
cont
);
ext
->
layout
=
layout
;
...
...
@@ -148,7 +148,7 @@ void lv_cont_set_fit(lv_obj_t * cont, bool hor_en, bool ver_en)
* @param cont pointer to container object
* @return the layout from 'lv_cont_layout_t'
*/
lv_
cont_
layout_t
lv_cont_get_layout
(
lv_obj_t
*
cont
)
lv_layout_t
lv_cont_get_layout
(
lv_obj_t
*
cont
)
{
lv_cont_ext_t
*
ext
=
lv_obj_get_ext_attr
(
cont
);
return
ext
->
layout
;
...
...
@@ -219,22 +219,22 @@ static lv_res_t lv_cont_signal(lv_obj_t * cont, lv_signal_t sign, void * param)
*/
static
void
lv_cont_refr_layout
(
lv_obj_t
*
cont
)
{
lv_
cont_
layout_t
type
=
lv_cont_get_layout
(
cont
);
lv_layout_t
type
=
lv_cont_get_layout
(
cont
);
/*'cont' has to be at least 1 child*/
if
(
lv_obj_get_child
(
cont
,
NULL
)
==
NULL
)
return
;
if
(
type
==
LV_
CONT_
LAYOUT_OFF
)
return
;
if
(
type
==
LV_LAYOUT_OFF
)
return
;
if
(
type
==
LV_
CONT_
LAYOUT_CENTER
)
{
if
(
type
==
LV_LAYOUT_CENTER
)
{
lv_cont_layout_center
(
cont
);
}
else
if
(
type
==
LV_
CONT_LAYOUT_COL_L
||
type
==
LV_CONT_LAYOUT_COL_M
||
type
==
LV_CONT
_LAYOUT_COL_R
)
{
}
else
if
(
type
==
LV_
LAYOUT_COL_L
||
type
==
LV_LAYOUT_COL_M
||
type
==
LV
_LAYOUT_COL_R
)
{
lv_cont_layout_col
(
cont
);
}
else
if
(
type
==
LV_
CONT_LAYOUT_ROW_T
||
type
==
LV_CONT_LAYOUT_ROW_M
||
type
==
LV_CONT
_LAYOUT_ROW_B
)
{
}
else
if
(
type
==
LV_
LAYOUT_ROW_T
||
type
==
LV_LAYOUT_ROW_M
||
type
==
LV
_LAYOUT_ROW_B
)
{
lv_cont_layout_row
(
cont
);
}
else
if
(
type
==
LV_
CONT_
LAYOUT_PRETTY
)
{
}
else
if
(
type
==
LV_LAYOUT_PRETTY
)
{
lv_cont_layout_pretty
(
cont
);
}
else
if
(
type
==
LV_
CONT_
LAYOUT_GRID
)
{
}
else
if
(
type
==
LV_LAYOUT_GRID
)
{
lv_cont_layout_grid
(
cont
);
}
}
...
...
@@ -245,7 +245,7 @@ static void lv_cont_refr_layout(lv_obj_t * cont)
*/
static
void
lv_cont_layout_col
(
lv_obj_t
*
cont
)
{
lv_
cont_
layout_t
type
=
lv_cont_get_layout
(
cont
);
lv_layout_t
type
=
lv_cont_get_layout
(
cont
);
lv_obj_t
*
child
;
/*Adjust margin and get the alignment type*/
...
...
@@ -254,15 +254,15 @@ static void lv_cont_layout_col(lv_obj_t * cont)
cord_t
hpad_corr
;
switch
(
type
)
{
case
LV_
CONT_
LAYOUT_COL_L
:
case
LV_LAYOUT_COL_L
:
hpad_corr
=
style
->
body
.
padding
.
hor
;
align
=
LV_ALIGN_IN_TOP_LEFT
;
break
;
case
LV_
CONT_
LAYOUT_COL_M
:
case
LV_LAYOUT_COL_M
:
hpad_corr
=
0
;
align
=
LV_ALIGN_IN_TOP_MID
;
break
;
case
LV_
CONT_
LAYOUT_COL_R
:
case
LV_LAYOUT_COL_R
:
hpad_corr
=
-
style
->
body
.
padding
.
hor
;
align
=
LV_ALIGN_IN_TOP_RIGHT
;
break
;
...
...
@@ -294,7 +294,7 @@ static void lv_cont_layout_col(lv_obj_t * cont)
*/
static
void
lv_cont_layout_row
(
lv_obj_t
*
cont
)
{
lv_
cont_
layout_t
type
=
lv_cont_get_layout
(
cont
);
lv_layout_t
type
=
lv_cont_get_layout
(
cont
);
lv_obj_t
*
child
;
/*Adjust margin and get the alignment type*/
...
...
@@ -303,15 +303,15 @@ static void lv_cont_layout_row(lv_obj_t * cont)
cord_t
vpad_corr
=
style
->
body
.
padding
.
ver
;
switch
(
type
)
{
case
LV_
CONT_
LAYOUT_ROW_T
:
case
LV_LAYOUT_ROW_T
:
vpad_corr
=
style
->
body
.
padding
.
ver
;
align
=
LV_ALIGN_IN_TOP_LEFT
;
break
;
case
LV_
CONT_
LAYOUT_ROW_M
:
case
LV_LAYOUT_ROW_M
:
vpad_corr
=
0
;
align
=
LV_ALIGN_IN_LEFT_MID
;
break
;
case
LV_
CONT_
LAYOUT_ROW_B
:
case
LV_LAYOUT_ROW_B
:
vpad_corr
=
-
style
->
body
.
padding
.
ver
;
align
=
LV_ALIGN_IN_BOTTOM_LEFT
;
break
;
...
...
lv_objx/lv_cont.h
View file @
63d54b02
...
...
@@ -29,17 +29,17 @@ extern "C" {
/*Layout options*/
typedef
enum
{
LV_
CONT_
LAYOUT_OFF
=
0
,
LV_
CONT_
LAYOUT_CENTER
,
LV_
CONT_
LAYOUT_COL_L
,
/*Column left align*/
LV_
CONT_
LAYOUT_COL_M
,
/*Column middle align*/
LV_
CONT_
LAYOUT_COL_R
,
/*Column right align*/
LV_
CONT_
LAYOUT_ROW_T
,
/*Row top align*/
LV_
CONT_
LAYOUT_ROW_M
,
/*Row middle align*/
LV_
CONT_
LAYOUT_ROW_B
,
/*Row bottom align*/
LV_
CONT_
LAYOUT_PRETTY
,
/*Put as many object as possible in row and begin a new row*/
LV_
CONT_LAYOUT_GRID
,
/*Align same-sized object into a grid*/
}
lv_
cont_
layout_t
;
LV_LAYOUT_OFF
=
0
,
LV_LAYOUT_CENTER
,
LV_LAYOUT_COL_L
,
/*Column left align*/
LV_LAYOUT_COL_M
,
/*Column middle align*/
LV_LAYOUT_COL_R
,
/*Column right align*/
LV_LAYOUT_ROW_T
,
/*Row top align*/
LV_LAYOUT_ROW_M
,
/*Row middle align*/
LV_LAYOUT_ROW_B
,
/*Row bottom align*/
LV_LAYOUT_PRETTY
,
/*Put as many object as possible in row and begin a new row*/
LV_
LAYOUT_GRID
,
/*Align same-sized object into a grid*/
}
lv_layout_t
;
typedef
struct
{
...
...
@@ -71,7 +71,7 @@ lv_obj_t * lv_cont_create(lv_obj_t * par, lv_obj_t * copy);
* @param cont pointer to a container object
* @param layout a layout from 'lv_cont_layout_t'
*/
void
lv_cont_set_layout
(
lv_obj_t
*
cont
,
lv_
cont_
layout_t
layout
);
void
lv_cont_set_layout
(
lv_obj_t
*
cont
,
lv_layout_t
layout
);
/**
...
...
@@ -102,7 +102,7 @@ static inline void lv_cont_set_style(lv_obj_t *cont, lv_style_t * style)
* @param cont pointer to container object
* @return the layout from 'lv_cont_layout_t'
*/
lv_
cont_
layout_t
lv_cont_get_layout
(
lv_obj_t
*
cont
);
lv_layout_t
lv_cont_get_layout
(
lv_obj_t
*
cont
);
/**
* Get horizontal fit enable attribute of a container
...
...
lv_objx/lv_ddlist.c
View file @
63d54b02
...
...
@@ -185,7 +185,7 @@ void lv_ddlist_set_action(lv_obj_t * ddlist, lv_action_t action)
}
/**
* Set the fix height
value.
* Set the fix height
for the drop down list
* If 0 then the opened ddlist will be auto. sized else the set height will be applied.
* @param ddlist pointer to a drop down list
* @param h the height when the list is opened (0: auto size)
...
...
@@ -194,10 +194,33 @@ void lv_ddlist_set_fix_height(lv_obj_t * ddlist, cord_t h)
{
lv_ddlist_ext_t
*
ext
=
lv_obj_get_ext_attr
(
ddlist
);
ext
->
fix_height
=
h
;
lv_ddlist_refr_size
(
ddlist
,
0
);
}
/**
* Set the fix width for the drop down list
* If 0 then the ddlist will be auto. sized else the set width will be applied.
* @param ddlist pointer to a drop down list
* @param w the new width (0: auto size)
*/
void
lv_ddlist_set_fix_width
(
lv_obj_t
*
ddlist
,
cord_t
w
)
{
if
(
w
)
{
lv_cont_set_fit
(
ddlist
,
false
,
lv_cont_get_ver_fit
(
ddlist
));
lv_page_set_scrl_fit
(
ddlist
,
false
,
lv_page_get_scrl_fit_ver
(
ddlist
));
lv_obj_set_width
(
ddlist
,
w
);
}
else
{
lv_cont_set_fit
(
ddlist
,
true
,
lv_cont_get_ver_fit
(
ddlist
));
lv_page_set_scrl_fit
(
ddlist
,
true
,
lv_page_get_scrl_fit_ver
(
ddlist
));
}
lv_ddlist_refr_size
(
ddlist
,
0
);
}
/**
* Set the open/close animation time.
* @param ddlist pointer to a drop down list
* @param anim_time: open/close animation time [ms]
...
...
lv_objx/lv_ddlist.h
View file @
63d54b02
...
...
@@ -94,7 +94,7 @@ void lv_ddlist_set_selected(lv_obj_t * ddlist, uint16_t sel_opt);
void
lv_ddlist_set_action
(
lv_obj_t
*
ddlist
,
lv_action_t
action
);
/**
* Set the fix height
value.
* Set the fix height
for the drop down list
* If 0 then the opened ddlist will be auto. sized else the set height will be applied.
* @param ddlist pointer to a drop down list
* @param h the height when the list is opened (0: auto size)
...
...
@@ -102,6 +102,14 @@ void lv_ddlist_set_action(lv_obj_t * ddlist, lv_action_t action);
void
lv_ddlist_set_fix_height
(
lv_obj_t
*
ddlist
,
cord_t
h
);
/**
* Set the fix width for the drop down list
* If 0 then the ddlist will be auto. sized else the set width will be applied.
* @param ddlist pointer to a drop down list
* @param w the new width (0: auto size)
*/
void
lv_ddlist_set_fix_width
(
lv_obj_t
*
ddlist
,
cord_t
w
);
/**
* Set the scroll bar mode of a drop down list
* @param ddlist pointer to a drop down list object
* @param sb_mode the new mode from 'lv_page_sb_mode_t' enum
...
...
lv_objx/lv_gauge.c
View file @
63d54b02
...
...
@@ -406,8 +406,8 @@ static void lv_gauge_draw_needle(lv_obj_t * gauge, const area_t * mask)
/*Draw the needle middle area*/
lv_style_t
style_neddle_mid
;
lv_style_copy
(
&
style_neddle_mid
,
&
lv_style_plain
);
style_neddle_mid
.
body
.
color_main
=
style
->
body
.
border
.
color
;
style_neddle_mid
.
body
.
color_gradient
=
style
->
body
.
border
.
color
;
style_neddle_mid
.
body
.
main_color
=
style
->
body
.
border
.
color
;
style_neddle_mid
.
body
.
gradient_color
=
style
->
body
.
border
.
color
;
style_neddle_mid
.
body
.
radius
=
LV_RADIUS_CIRCLE
;
area_t
nm_cord
;
...
...
lv_objx/lv_label.c
View file @
63d54b02
...
...
@@ -453,7 +453,7 @@ void lv_label_get_letter_pos(lv_obj_t * label, uint16_t index, point_t * pos)
continue
;
/*Skip the letter is it is part of a command*/
}
}
x
+=
(
font_get_width
(
font
,
letter
)
>>
FONT_ANTIALIAS
)
+
style
->
text
.
letter_space
;
x
+=
font_get_width_scale
(
font
,
letter
)
+
style
->
text
.
letter_space
;
}
if
(
ext
->
align
==
LV_LABEL_ALIGN_CENTER
)
{
...
...
@@ -528,7 +528,7 @@ uint16_t lv_label_get_letter_on(lv_obj_t * label, point_t * pos)
}
}
x
+=
(
font_get_width
(
font
,
letter
)
>>
FONT_ANTIALIAS
);
x
+=
font_get_width_scale
(
font
,
letter
);
if
(
pos
->
x
<
x
)
{
i
=
i_current
;
break
;
...
...
@@ -739,17 +739,17 @@ static void lv_label_refr_text(lv_obj_t * label)
anim
.
var
=
label
;
anim
.
repeat
=
1
;
anim
.
playback
=
1
;
anim
.
start
=
font_get_width
(
font
,
' '
)
>>
FONT_ANTIALIAS
;
anim
.
start
=
font_get_width
_scale
(
font
,
' '
)
;
anim
.
act_time
=
0
;
anim
.
end_cb
=
NULL
;
anim
.
path
=
anim_get_path
(
ANIM_PATH_LIN
);
anim
.
time
=
3000
;
anim
.
playback_pause
=
(((
font_get_width
(
style
->
text
.
font
,
' '
)
+
style
->
text
.
letter_space
)
*
1000
)
/
ext
->
anim_speed
)
*
ANIM_WAIT_CHAR_COUNT
;
anim
.
playback_pause
=
(((
font_get_width_scale
(
style
->
text
.
font
,
' '
)
+
style
->
text
.
letter_space
)
*
1000
)
/
ext
->
anim_speed
)
*
ANIM_WAIT_CHAR_COUNT
;
anim
.
repeat_pause
=
anim
.
playback_pause
;
if
(
lv_obj_get_width
(
label
)
>
lv_obj_get_width
(
parent
))
{
anim
.
end
=
lv_obj_get_width
(
parent
)
-
lv_obj_get_width
(
label
)
-
(
font_get_width
(
font
,
' '
)
>>
FONT_ANTIALIAS
);
anim
.
end
=
lv_obj_get_width
(
parent
)
-
lv_obj_get_width
(
label
)
-
font_get_width_scale
(
font
,
' '
);
anim
.
fp
=
(
anim_fp_t
)
lv_obj_set_x
;
anim
.
time
=
anim_speed_to_time
(
ext
->
anim_speed
,
anim
.
start
,
anim
.
end
);
anim_create
(
&
anim
);
...
...
@@ -767,17 +767,16 @@ static void lv_label_refr_text(lv_obj_t * label)
anim
.
var
=
label
;
anim
.
repeat
=
1
;
anim
.
playback
=
1
;
anim
.
start
=
font_get_width
(
font
,
' '
)
>>
FONT_ANTIALIAS
;
anim
.
start
=
font_get_width
_scale
(
font
,
' '
)
;
anim
.
act_time
=
0
;
anim
.
end_cb
=
NULL
;
anim
.
path
=
anim_get_path
(
ANIM_PATH_LIN
);
anim
.
playback_pause
=
(((
font_get_width
(
style
->
text
.
font
,
' '
)
+
style
->
text
.
letter_space
)
*
1000
)
/
ext
->
anim_speed
)
*
ANIM_WAIT_CHAR_COUNT
;;
anim
.
playback_pause
=
(((
font_get_width
_scale
(
style
->
text
.
font
,
' '
)
+
style
->
text
.
letter_space
)
*
1000
)
/
ext
->
anim_speed
)
*
ANIM_WAIT_CHAR_COUNT
;;
anim
.
repeat_pause
=
anim
.
playback_pause
;
bool
hor_anim
=
false
;
if
(
size
.
x
>
lv_obj_get_width
(
label
))
{
anim
.
end
=
lv_obj_get_width
(
label
)
-
size
.
x
-
(
font_get_width
(
font
,
' '
)
>>
FONT_ANTIALIAS
);
anim
.
end
=
lv_obj_get_width
(
label
)
-
size
.
x
-
font_get_width_scale
(
font
,
' '
);
anim
.
fp
=
(
anim_fp_t
)
lv_label_set_offset_x
;
anim
.
time
=
anim_speed_to_time
(
LV_LABEL_SCROLL_SPEED
,
anim
.
start
,
anim
.
end
);
anim_create
(
&
anim
);
...
...
lv_objx/lv_led.c
View file @
63d54b02
...
...
@@ -184,8 +184,8 @@ static bool lv_led_design(lv_obj_t * led, const area_t * mask, lv_design_mode_t
memcpy
(
&
leds_tmp
,
style
,
sizeof
(
leds_tmp
));
/*Mix. the color with black proportionally with brightness*/
leds_tmp
.
body
.
color_main
=
color_mix
(
leds_tmp
.
body
.
color_main
,
COLOR_BLACK
,
ext
->
bright
);
leds_tmp
.
body
.
color_gradient
=
color_mix
(
leds_tmp
.
body
.
color_gradient
,
COLOR_BLACK
,
ext
->
bright
);
leds_tmp
.
body
.
main_color
=
color_mix
(
leds_tmp
.
body
.
main_color
,
COLOR_BLACK
,
ext
->
bright
);
leds_tmp
.
body
.
gradient_color
=
color_mix
(
leds_tmp
.
body
.
gradient_color
,
COLOR_BLACK
,
ext
->
bright
);
leds_tmp
.
body
.
border
.
color
=
color_mix
(
leds_tmp
.
body
.
border
.
color
,
COLOR_BLACK
,
ext
->
bright
);
/*Set the current swidth according to brightness proportionally between LV_LED_BRIGHT_OFF and LV_LED_BRIGHT_ON*/
...
...
lv_objx/lv_list.c
View file @
63d54b02
...
...
@@ -18,7 +18,7 @@
/*********************
* DEFINES
*********************/
#define LV_LIST_LAYOUT_DEF LV_
CONT_
LAYOUT_COL_M
#define LV_LIST_LAYOUT_DEF LV_LAYOUT_COL_M
#ifndef LV_LIST_FOCUS_TIME
#define LV_LIST_FOCUS_TIME 100
/*Animation time of focusing to the a list element [ms] (0: no animation) */
#endif
...
...
@@ -151,7 +151,7 @@ lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, l
lv_btn_set_action
(
liste
,
LV_BTN_ACTION_REL
,
rel_action
);
lv_page_glue_obj
(
liste
,
true
);
lv_btn_set_layout
(
liste
,
LV_
CONT_
LAYOUT_ROW_M
);
lv_btn_set_layout
(
liste
,
LV_LAYOUT_ROW_M
);
lv_btn_set_fit
(
liste
,
false
,
true
);
if
(
btn_signal
==
NULL
)
btn_signal
=
lv_obj_get_signal_func
(
liste
);
...
...
lv_objx/lv_lmeter.c
View file @
63d54b02
...
...
@@ -248,7 +248,7 @@ static bool lv_lmeter_design(lv_obj_t * lmeter, const area_t * mask, lv_design_m
int16_t
level
=
(
int32_t
)((
int32_t
)(
ext
->
cur_value
-
ext
->
min_value
)
*
ext
->
line_cnt
)
/
(
ext
->
max_value
-
ext
->
min_value
);
uint8_t
i
;
style_tmp
.
line
.
color
=
style
->
body
.
color_main
;
style_tmp
.
line
.
color
=
style
->
body
.
main_color
;
for
(
i
=
0
;
i
<
ext
->
line_cnt
;
i
++
)
{
/*Calculate the position a scale label*/
...
...
@@ -270,7 +270,7 @@ static bool lv_lmeter_design(lv_obj_t * lmeter, const area_t * mask, lv_design_m
if
(
i
>
level
)
style_tmp
.
line
.
color
=
style
->
line
.
color
;
else
{
style_tmp
.
line
.
color
=
color_mix
(
style
->
body
.
color_gradient
,
style
->
body
.
color_main
,
(
255
*
i
)
/
ext
->
line_cnt
);
style_tmp
.
line
.
color
=
color_mix
(
style
->
body
.
gradient_color
,
style
->
body
.
main_color
,
(
255
*
i
)
/
ext
->
line_cnt
);
}
lv_draw_line
(
&
p1
,
&
p2
,
mask
,
&
style_tmp
);
...
...
lv_objx/lv_mbox.c
View file @
63d54b02
...
...
@@ -75,7 +75,7 @@ lv_obj_t * lv_mbox_create(lv_obj_t * par, lv_obj_t * copy)
lv_label_set_long_mode
(
ext
->
text
,
LV_LABEL_LONG_BREAK
);
lv_label_set_text
(
ext
->
text
,
"Message"
);
lv_cont_set_layout
(
new_mbox
,
LV_
CONT_
LAYOUT_COL_M
);
lv_cont_set_layout
(
new_mbox
,
LV_LAYOUT_COL_M
);
lv_cont_set_fit
(
new_mbox
,
false
,
true
);
lv_obj_set_width
(
new_mbox
,
LV_HOR_RES
/
3
);
lv_obj_align
(
new_mbox
,
NULL
,
LV_ALIGN_CENTER
,
0
,
0
);
...
...
@@ -105,21 +105,24 @@ lv_obj_t * lv_mbox_create(lv_obj_t * par, lv_obj_t * copy)
return
new_mbox
;
}
/*======================
* Add/remove functions
*=====================*/
/**
*
Set
button to the message box
*
Add
button to the message box
* @param mbox pointer to message box object
* @param btn_map button descriptor (button matrix map).
* E.g. a const char *txt[] = {"ok", "close", ""} (Can not be local variable)
* @param action a function which will be called when a button is released
*/
void
lv_mbox_
set
_btns
(
lv_obj_t
*
mbox
,
const
char
**
btn_map
,
lv_btnm_action_t
action
)
void
lv_mbox_
add
_btns
(
lv_obj_t
*
mbox
,
const
char
**
btn_map
,
lv_btnm_action_t
action
)
{
lv_mbox_ext_t
*
ext
=
lv_obj_get_ext_attr
(
mbox
);
/*Create a button matrix if not exists yet*/
if
(
ext
->
btnm
==
NULL
)
{
ext
->
btnm
=
lv_btnm_create
(
mbox
,
NULL
);
lv_obj_set_height
(
ext
->
btnm
,
LV_DPI
/
2
);
/*Set the default styles*/
lv_theme_t
*
th
=
lv_theme_get_current
();
...
...
@@ -362,8 +365,17 @@ static void mbox_realign(lv_obj_t *mbox)
lv_style_t
*
style
=
lv_mbox_get_style
(
mbox
,
LV_MBOX_STYLE_BG
);
cord_t
w
=
lv_obj_get_width
(
mbox
)
-
2
*
style
->
body
.
padding
.
hor
;
if
(
ext
->
btnm
)
lv_obj_set_width
(
ext
->
btnm
,
w
);
if
(
ext
->
text
)
lv_obj_set_width
(
ext
->
text
,
w
);
if
(
ext
->
text
)
{
lv_obj_set_width
(
ext
->
text
,
w
);
}
if
(
ext
->
btnm
)
{
lv_style_t
*
btn_bg_style
=
lv_mbox_get_style
(
mbox
,
LV_MBOX_STYLE_BTN_BG
);
lv_style_t
*
btn_rel_style
=
lv_mbox_get_style
(
mbox
,
LV_MBOX_STYLE_BTN_REL
);
cord_t
font_h
=
font_get_height_scale
(
btn_rel_style
->
text
.
font
);
lv_obj_set_size
(
ext
->
btnm
,
w
,
font_h
+
2
*
btn_rel_style
->
body
.
padding
.
ver
+
2
*
btn_bg_style
->
body
.
padding
.
ver
);
}
}
static
lv_res_t
lv_mbox_close_action
(
lv_obj_t
*
btn
,
const
char
*
txt
)
...
...
lv_objx/lv_mbox.h
View file @
63d54b02
...
...
@@ -75,14 +75,18 @@ typedef enum {
*/
lv_obj_t
*
lv_mbox_create
(
lv_obj_t
*
par
,
lv_obj_t
*
copy
);
/*======================
* Add/remove functions
*=====================*/
/**
*
Set
button to the message box
*
Add
button to the message box
* @param mbox pointer to message box object
* @param btn_map button descriptor (button matrix map).
* E.g. a const char *txt[] = {"ok", "close", ""} (Can not be local variable)
* @param action a function which will be called when a button is released
*/
void
lv_mbox_
set
_btns
(
lv_obj_t
*
mbox
,
const
char
**
btn_map
,
lv_btnm_action_t
action
);
void
lv_mbox_
add
_btns
(
lv_obj_t
*
mbox
,
const
char
**
btn_map
,
lv_btnm_action_t
action
);
/*=====================
* Setter functions
...
...
lv_objx/lv_page.h
View file @
63d54b02
...
...
@@ -150,7 +150,7 @@ static inline void lv_page_set_scrl_height(lv_obj_t *page, cord_t h)
* @param page pointer to a page object
* @param layout a layout from 'lv_cont_layout_t'
*/
static
inline
void
lv_page_set_scrl_layout
(
lv_obj_t
*
page
,
lv_
cont_
layout_t
layout
)
static
inline
void
lv_page_set_scrl_layout
(
lv_obj_t
*
page
,
lv_layout_t
layout
)
{
lv_cont_set_layout
(
lv_page_get_scrl
(
page
),
layout
);
}
...
...
@@ -199,7 +199,7 @@ static inline cord_t lv_page_get_scrl_height(lv_obj_t *page)
* @param page pointer to page object
* @return the layout from 'lv_cont_layout_t'
*/
static
inline
lv_
cont_
layout_t
lv_page_get_scrl_layout
(
lv_obj_t
*
page
)
static
inline
lv_layout_t
lv_page_get_scrl_layout
(
lv_obj_t
*
page
)
{
return
lv_cont_get_layout
(
lv_page_get_scrl
(
page
));
}
...
...
lv_objx/lv_roller.c
View file @
63d54b02
...
...
@@ -119,17 +119,6 @@ void lv_roller_set_selected(lv_obj_t *roller, uint16_t sel_opt, bool anim_en)
}
/**
* Enable/disable to set the width of the roller manually (by lv_obj_Set_width())
* @param roller pointer to a roller object
* @param fit_en: true: enable auto size; false: use manual width settings
*/
void
lv_roller_set_hor_fit
(
lv_obj_t
*
roller
,
bool
fit_en
)
{
lv_page_set_scrl_fit
(
roller
,
fit_en
,
false
);
lv_cont_set_fit
(
roller
,
fit_en
,
false
);
}
/**
* Set a style of a roller
* @param roller pointer to a roller object
* @param type which style should be set
...
...
@@ -382,14 +371,14 @@ static void draw_bg(lv_obj_t *roller, const area_t *mask)
half_roller
.
y1
-=
style
->
body
.
radius
;
if
(
union_ok
){
color_t
main_tmp
=
style
->
body
.
color_main
;
color_t
grad_tmp
=
style
->
body
.
color_gradient
;
color_t
main_tmp
=
style
->
body
.
main_color
;
color_t
grad_tmp
=
style
->
body
.
gradient_color
;
style
->
body
.
color_main
=
grad_tmp
;
style
->
body
.
color_gradient
=
main_tmp
;
style
->
body
.
main_color
=
grad_tmp
;
style
->
body
.
gradient_color
=
main_tmp
;
lv_draw_rect
(
&
half_roller
,
&
half_mask
,
style
);
style
->
body
.
color_main
=
main_tmp
;
style
->
body
.
color_gradient
=
grad_tmp
;
style
->
body
.
main_color
=
main_tmp
;
style
->
body
.
gradient_color
=
grad_tmp
;
}
}
...
...
lv_objx/lv_roller.h
View file @
63d54b02
...
...
@@ -72,6 +72,17 @@ static inline void lv_roller_set_options(lv_obj_t * roller, const char * options
void
lv_roller_set_selected
(
lv_obj_t
*
roller
,
uint16_t
sel_opt
,
bool
anim_en
);
/**
* Set the fix width for the roller
* If 0 then the roller will be auto. sized else the set width will be applied.
* @param roller pointer to a drop down list
* @param w the new width (0: auto size)
*/
static
inline
void
lv_roller_set_fix_width
(
lv_obj_t
*
roller
,
cord_t
w
)
{
lv_ddlist_set_fix_width
(
roller
,
w
);
}
/**
* Set the open/close animation time.
* @param roller pointer to a roller object
* @param anim_time: open/close animation time [ms]
...
...
@@ -81,12 +92,6 @@ static inline void lv_roller_set_anim_time(lv_obj_t *roller, uint16_t anim_time)
lv_ddlist_set_anim_time
(
roller
,
anim_time
);
}
/**
* Enable/disable to set the width of the roller manually (by lv_obj_Set_width())
* @param roller pointer to a roller object
* @param fit_en: true: enable auto size; false: use manual width settings
*/
void
lv_roller_set_hor_fit
(
lv_obj_t
*
roller
,
bool
fit_en
);
/**
* Set a style of a roller
...
...
lv_objx/lv_ta.c
View file @
63d54b02
...
...
@@ -84,14 +84,13 @@ lv_obj_t * lv_ta_create(lv_obj_t * par, lv_obj_t * copy)
/*Allocate the object type specific extended data*/
lv_ta_ext_t
*
ext
=
lv_obj_allocate_ext_attr
(
new_ta
,
sizeof
(
lv_ta_ext_t
));
dm_assert
(
ext
);
ext
->
cursor_show
=
1
;
ext
->
cursor_state
=
0
;
ext
->
cursor
.
state
=
0
;
ext
->
pwd_mode
=
0
;
ext
->
pwd_tmp
=
NULL
;
ext
->
cursor
_
style
=
NULL
;
ext
->
cursor
_
pos
=
0
;
ext
->
cursor
_type
=
LV_TA
_CURSOR_LINE
;
ext
->
cursor
_
valid_x
=
0
;
ext
->
cursor
.
style
=
NULL
;
ext
->
cursor
.
pos
=
0
;
ext
->
cursor
.
type
=
LV
_CURSOR_LINE
;
ext
->
cursor
.
valid_x
=
0
;
ext
->
label
=
NULL
;
...
...
@@ -126,11 +125,11 @@ lv_obj_t * lv_ta_create(lv_obj_t * par, lv_obj_t * copy)
lv_obj_set_design_func
(
ext
->
page
.
scrl
,
lv_ta_scrollable_design
);
lv_ta_ext_t
*
copy_ext
=
lv_obj_get_ext_attr
(
copy
);
ext
->
label
=
lv_label_create
(
new_ta
,
copy_ext
->
label
);
ext
->
cursor_show
=
copy_ext
->
cursor_show
;
ext
->
pwd_mode
=
copy_ext
->
pwd_mode
;
ext
->
cursor_style
=
copy_ext
->
cursor_style
;
ext
->
cursor_pos
=
copy_ext
->
cursor_pos
;
ext
->
cursor_valid_x
=
copy_ext
->
cursor_valid_x
;
ext
->
cursor
.
style
=
copy_ext
->
cursor
.
style
;
ext
->
cursor
.
pos
=
copy_ext
->
cursor
.
pos
;
ext
->
cursor
.
valid_x
=
copy_ext
->
cursor
.
valid_x
;
ext
->
cursor
.
type
=
copy_ext
->
cursor
.
type
;
if
(
copy_ext
->
one_line
)
lv_ta_set_one_line
(
new_ta
,
true
);
lv_ta_set_style
(
new_ta
,
LV_TA_STYLE_CURSOR
,
lv_ta_get_style
(
copy
,
LV_TA_STYLE_CURSOR
));
...
...
@@ -176,13 +175,13 @@ void lv_ta_add_char(lv_obj_t * ta, char c)
letter_buf
[
0
]
=
c
;
letter_buf
[
1
]
=
'\0'
;
lv_label_ins_text
(
ext
->
label
,
ext
->
cursor
_
pos
,
letter_buf
);
/*Insert the character*/
lv_label_ins_text
(
ext
->
label
,
ext
->
cursor
.
pos
,
letter_buf
);
/*Insert the character*/
if
(
ext
->
pwd_mode
!=
0
)
{
ext
->
pwd_tmp
=
dm_realloc
(
ext
->
pwd_tmp
,
strlen
(
ext
->
pwd_tmp
)
+
2
);
/*+2: the new char + \0 */
dm_assert
(
ext
->
pwd_tmp
);
txt_ins
(
ext
->
pwd_tmp
,
ext
->
cursor
_
pos
,
letter_buf
);
txt_ins
(
ext
->
pwd_tmp
,
ext
->
cursor
.
pos
,
letter_buf
);
anim_t
a
;
a
.
var
=
ta
;
...
...
@@ -217,12 +216,12 @@ void lv_ta_add_text(lv_obj_t * ta, const char * txt)
if
(
ext
->
pwd_mode
!=
0
)
pwd_char_hider
(
ta
);
/*Make sure all the current text contains only '*'*/
/*Insert the text*/
lv_label_ins_text
(
ext
->
label
,
ext
->
cursor
_
pos
,
txt
);
lv_label_ins_text
(
ext
->
label
,
ext
->
cursor
.
pos
,
txt
);
if
(
ext
->
pwd_mode
!=
0
)
{
ext
->
pwd_tmp
=
dm_realloc
(
ext
->
pwd_tmp
,
strlen
(
ext
->
pwd_tmp
)
+
strlen
(
txt
)
+
1
);
dm_assert
(
ext
->
pwd_tmp
);
txt_ins
(
ext
->
pwd_tmp
,
ext
->
cursor
_
pos
,
txt
);
txt_ins
(
ext
->
pwd_tmp
,
ext
->
cursor
.
pos
,
txt
);
anim_t
a
;
a
.
var
=
ta
;
...
...
@@ -251,13 +250,13 @@ void lv_ta_add_text(lv_obj_t * ta, const char * txt)
void
lv_ta_del_char
(
lv_obj_t
*
ta
)
{
lv_ta_ext_t
*
ext
=
lv_obj_get_ext_attr
(
ta
);
uint16_t
cur_pos
=
ext
->
cursor
_
pos
;
uint16_t
cur_pos
=
ext
->
cursor
.
pos
;
if
(
cur_pos
==
0
)
return
;
char
*
label_txt
=
lv_label_get_text
(
ext
->
label
);
/*Delete a character*/
txt_cut
(
label_txt
,
ext
->
cursor
_
pos
-
1
,
1
);
txt_cut
(
label_txt
,
ext
->
cursor
.
pos
-
1
,
1
);
/*Refresh the label*/
lv_label_set_text
(
ext
->
label
,
label_txt
);
...
...
@@ -269,17 +268,17 @@ void lv_ta_del_char(lv_obj_t * ta)
if
(
ext
->
pwd_mode
!=
0
)
{
#if TXT_UTF8 == 0
txt_cut
(
ext
->
pwd_tmp
,
ext
->
cursor
_
pos
-
1
,
1
);
txt_cut
(
ext
->
pwd_tmp
,
ext
->
cursor
.
pos
-
1
,
1
);
#else
uint32_t
byte_pos
=
txt_utf8_get_byte_id
(
ext
->
pwd_tmp
,
ext
->
cursor
_
pos
-
1
);
txt_cut
(
ext
->
pwd_tmp
,
ext
->
cursor
_
pos
-
1
,
txt_utf8_size
(
label_txt
[
byte_pos
]));
uint32_t
byte_pos
=
txt_utf8_get_byte_id
(
ext
->
pwd_tmp
,
ext
->
cursor
.
pos
-
1
);
txt_cut
(
ext
->
pwd_tmp
,
ext
->
cursor
.
pos
-
1
,
txt_utf8_size
(
label_txt
[
byte_pos
]));
#endif
ext
->
pwd_tmp
=
dm_realloc
(
ext
->
pwd_tmp
,
strlen
(
ext
->
pwd_tmp
)
+
1
);
dm_assert
(
ext
->
pwd_tmp
);
}
/*Move the cursor to the place of the deleted character*/
lv_ta_set_cursor_pos
(
ta
,
ext
->
cursor
_
pos
-
1
);
lv_ta_set_cursor_pos
(
ta
,
ext
->
cursor
.
pos
-
1
);
}
/*=====================
...
...
@@ -300,7 +299,7 @@ void lv_ta_set_text(lv_obj_t * ta, const char * txt)
/*Don't let 'width == 0' because cursor will not be visible*/
if
(
lv_obj_get_width
(
ext
->
label
)
==
0
)
{
lv_style_t
*
style
=
lv_obj_get_style
(
ext
->
label
);
lv_obj_set_width
(
ext
->
label
,
font_get_width
(
style
->
text
.
font
,
' '
));
lv_obj_set_width
(
ext
->
label
,
font_get_width
_scale
(
style
->
text
.
font
,
' '
));
}
if
(
ext
->
pwd_mode
!=
0
)
{
...
...
@@ -340,7 +339,7 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
if
(
pos
>
len
||
pos
==
LV_TA_CURSOR_LAST
)
pos
=
len
;
ext
->
cursor
_
pos
=
pos
;
ext
->
cursor
.
pos
=
pos
;
/*Position the label to make the cursor visible*/
lv_obj_t
*
label_par
=
lv_obj_get_parent
(
ext
->
label
);
...
...
@@ -375,7 +374,7 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
font_h
+
2
*
style
->
body
.
padding
.
hor
));
}
ext
->
cursor
_
valid_x
=
cur_pos
.
x
;
ext
->
cursor
.
valid_x
=
cur_pos
.
x
;
/*Reset cursor blink animation*/
anim_t
a
;
...
...
@@ -397,27 +396,14 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
}
/**
* Set the cursor visibility.
* @param ta pointer to a text area object
* @return show true: show the cursor and blink it, false: hide cursor
*/
void
lv_ta_set_cursor_show
(
lv_obj_t
*
ta
,
bool
show
)
{
lv_ta_ext_t
*
ext
=
lv_obj_get_ext_attr
(
ta
);
ext
->
cursor_show
=
show
==
false
?
0
:
1
;
ext
->
cursor_state
=
0
;
lv_obj_invalidate
(
ta
);
}
/**
* Set the cursor type.
* @param ta pointer to a text area object
* @param cur_type: element of 'lv_ta_cursor_type_t'
*/
void
lv_ta_set_cursor_type
(
lv_obj_t
*
ta
,
lv_
ta_
cursor_type_t
cur_type
)
void
lv_ta_set_cursor_type
(
lv_obj_t
*
ta
,
lv_cursor_type_t
cur_type
)
{
lv_ta_ext_t
*
ext
=
lv_obj_get_ext_attr
(
ta
);
ext
->
cursor
_
type
=
cur_type
;
ext
->
cursor
.
type
=
cur_type
;
lv_obj_invalidate
(
ta
);
}
...
...
@@ -506,7 +492,7 @@ void lv_ta_set_style(lv_obj_t *ta, lv_ta_style_t type, lv_style_t *style)
lv_page_set_style
(
ta
,
LV_PAGE_STYLE_SB
,
style
);
break
;
case
LV_TA_STYLE_CURSOR
:
ext
->
cursor
_
style
=
style
;
ext
->
cursor
.
style
=
style
;
lv_obj_refresh_ext_size
(
lv_page_get_scrl
(
ta
));
/*Refresh ext. size because of cursor drawing*/
break
;
}
...
...
@@ -556,18 +542,7 @@ lv_obj_t * lv_ta_get_label(lv_obj_t * ta)
uint16_t
lv_ta_get_cursor_pos
(
lv_obj_t
*
ta
)
{
lv_ta_ext_t
*
ext
=
lv_obj_get_ext_attr
(
ta
);
return
ext
->
cursor_pos
;
}
/**
* Get the current cursor visibility.
* @param ta pointer to a text area object
* @return true: the cursor is drawn, false: the cursor is hidden
*/
bool
lv_ta_get_cursor_show
(
lv_obj_t
*
ta
)
{
lv_ta_ext_t
*
ext
=
lv_obj_get_ext_attr
(
ta
);
return
ext
->
cursor_show
;
return
ext
->
cursor
.
pos
;
}
/**
...
...
@@ -575,10 +550,10 @@ bool lv_ta_get_cursor_show(lv_obj_t * ta)
* @param ta pointer to a text area object
* @return element of 'lv_ta_cursor_type_t'
*/
lv_
ta_
cursor_type_t
lv_ta_get_cursor_type
(
lv_obj_t
*
ta
)
lv_cursor_type_t
lv_ta_get_cursor_type
(
lv_obj_t
*
ta
)
{
lv_ta_ext_t
*
ext
=
lv_obj_get_ext_attr
(
ta
);
return
ext
->
cursor
_
type
;
return
ext
->
cursor
.
type
;
}
/**
...
...
@@ -616,7 +591,7 @@ lv_style_t * lv_ta_get_style(lv_obj_t *ta, lv_ta_style_t type)
switch
(
type
)
{
case
LV_TA_STYLE_BG
:
return
lv_page_get_style
(
ta
,
LV_PAGE_STYLE_BG
);
case
LV_TA_STYLE_SB
:
return
lv_page_get_style
(
ta
,
LV_PAGE_STYLE_SB
);
case
LV_TA_STYLE_CURSOR
:
return
ext
->
cursor
_style
;
/*TODO in 'ext' all cursor attributes into a struct*/
case
LV_TA_STYLE_CURSOR
:
return
ext
->
cursor
.
style
;
default:
return
NULL
;
}
...
...
@@ -669,16 +644,16 @@ void lv_ta_cursor_down(lv_obj_t * ta)
const
font_t
*
font_p
=
label_style
->
text
.
font
;
cord_t
font_h
=
font_get_height_scale
(
font_p
);
pos
.
y
+=
font_h
+
label_style
->
text
.
line_space
+
1
;
pos
.
x
=
ext
->
cursor
_
valid_x
;
pos
.
x
=
ext
->
cursor
.
valid_x
;
/*Do not go below the last line*/
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
(
ext
->
label
,
&
pos
);
cord_t
cur_valid_x_tmp
=
ext
->
cursor
_
valid_x
;
/*Cursor position set overwrites the valid positon */
cord_t
cur_valid_x_tmp
=
ext
->
cursor
.
valid_x
;
/*Cursor position set overwrites the valid positon */
lv_ta_set_cursor_pos
(
ta
,
new_cur_pos
);
ext
->
cursor
_
valid_x
=
cur_valid_x_tmp
;
ext
->
cursor
.
valid_x
=
cur_valid_x_tmp
;
}
}
...
...
@@ -699,14 +674,14 @@ void lv_ta_cursor_up(lv_obj_t * ta)
const
font_t
*
font
=
label_style
->
text
.
font
;
cord_t
font_h
=
font_get_height_scale
(
font
);
pos
.
y
-=
font_h
+
label_style
->
text
.
line_space
-
1
;
pos
.
x
=
ext
->
cursor
_
valid_x
;
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
(
ext
->
label
,
&
pos
);
cord_t
cur_valid_x_tmp
=
ext
->
cursor
_
valid_x
;
/*Cursor position set overwrites the valid positon */
cord_t
cur_valid_x_tmp
=
ext
->
cursor
.
valid_x
;
/*Cursor position set overwrites the valid positon */
lv_ta_set_cursor_pos
(
ta
,
new_cur_pos
);
ext
->
cursor
_
valid_x
=
cur_valid_x_tmp
;
ext
->
cursor
.
valid_x
=
cur_valid_x_tmp
;
}
/**********************
...
...
@@ -763,20 +738,25 @@ static bool lv_ta_scrollable_design(lv_obj_t * scrl, const area_t * mask, lv_des
lv_obj_t
*
ta
=
lv_obj_get_parent
(
scrl
);
lv_ta_ext_t
*
ta_ext
=
lv_obj_get_ext_attr
(
ta
);
lv_style_t
*
label_style
=
lv_obj_get_style
(
ta_ext
->
label
);
if
(
ta_ext
->
cursor_show
==
0
||
ta_ext
->
cursor_state
==
0
||
label_style
->
body
.
opa
==
OPA_TRANSP
)
return
true
;
/*The cursor is not visible now*/
if
(
ta_ext
->
cursor
.
type
==
LV_CURSOR_NONE
||
ta_ext
->
cursor
.
state
==
0
||
label_style
->
body
.
opa
==
OPA_TRANSP
)
{
return
true
;
/*The cursor is not visible now*/
}
lv_style_t
cur_style
;
if
(
ta_ext
->
cursor
_
style
!=
NULL
)
{
lv_style_copy
(
&
cur_style
,
ta_ext
->
cursor
_
style
);
if
(
ta_ext
->
cursor
.
style
!=
NULL
)
{
lv_style_copy
(
&
cur_style
,
ta_ext
->
cursor
.
style
);
}
else
{
/*If cursor style is not specified then use the modified label style */
lv_style_copy
(
&
cur_style
,
label_style
);
color_t
ccolor_tmp
=
cur_style
.
text
.
color
;
/*Make letter color to cursor color*/
cur_style
.
text
.
color
=
cur_style
.
body
.
color_main
;
/*In block mode the letter color will be current background color*/
cur_style
.
body
.
color_main
=
ccolor_tmp
;
cur_style
.
body
.
color_gradient
=
ccolor_tmp
;
cur_style
.
text
.
color
=
cur_style
.
body
.
main_color
;
/*In block mode the letter color will be current background color*/
cur_style
.
body
.
main_color
=
ccolor_tmp
;
cur_style
.
body
.
gradient_color
=
ccolor_tmp
;
cur_style
.
body
.
border
.
color
=
ccolor_tmp
;
cur_style
.
body
.
border
.
opa
=
OPA_COVER
;
cur_style
.
body
.
border
.
width
=
1
<<
LV_ANTIALIAS
;
...
...
@@ -803,9 +783,9 @@ static bool lv_ta_scrollable_design(lv_obj_t * scrl, const area_t * mask, lv_des
/*Set letter_w (set not 0 on non printable but valid chars)*/
cord_t
letter_w
;
if
(
letter
==
'\0'
||
letter
==
'\n'
||
letter
==
'\r'
)
{
letter_w
=
font_get_width
(
label_style
->
text
.
font
,
' '
);
letter_w
=
font_get_width
_scale
(
label_style
->
text
.
font
,
' '
);
}
else
{
letter_w
=
font_get_width
(
label_style
->
text
.
font
,
letter
);
letter_w
=
font_get_width
_scale
(
label_style
->
text
.
font
,
letter
);
}
point_t
letter_pos
;
...
...
@@ -822,21 +802,21 @@ static bool lv_ta_scrollable_design(lv_obj_t * scrl, const area_t * mask, lv_des
}
if
(
letter
==
'\0'
||
letter
==
'\n'
||
letter
==
'\r'
)
{
letter_w
=
font_get_width
(
label_style
->
text
.
font
,
' '
);
letter_w
=
font_get_width
_scale
(
label_style
->
text
.
font
,
' '
);
}
else
{
letter_w
=
font_get_width
(
label_style
->
text
.
font
,
letter
);
letter_w
=
font_get_width
_scale
(
label_style
->
text
.
font
,
letter
);
}
}
/*Draw he cursor according to the type*/
area_t
cur_area
;
if
(
ta_ext
->
cursor
_type
==
LV_TA
_CURSOR_LINE
)
{
if
(
ta_ext
->
cursor
.
type
==
LV
_CURSOR_LINE
)
{
cur_area
.
x1
=
letter_pos
.
x
+
ta_ext
->
label
->
coords
.
x1
+
cur_style
.
body
.
padding
.
hor
-
(
cur_style
.
line
.
width
>>
1
)
-
(
cur_style
.
line
.
width
&
0x1
);
cur_area
.
y1
=
letter_pos
.
y
+
ta_ext
->
label
->
coords
.
y1
+
cur_style
.
body
.
padding
.
ver
;
cur_area
.
x2
=
letter_pos
.
x
+
ta_ext
->
label
->
coords
.
x1
+
cur_style
.
body
.
padding
.
hor
+
(
cur_style
.
line
.
width
>>
1
);
cur_area
.
y2
=
letter_pos
.
y
+
ta_ext
->
label
->
coords
.
y1
+
cur_style
.
body
.
padding
.
ver
+
letter_h
;
lv_draw_rect
(
&
cur_area
,
mask
,
&
cur_style
);
}
else
if
(
ta_ext
->
cursor
_type
==
LV_TA
_CURSOR_BLOCK
)
{
}
else
if
(
ta_ext
->
cursor
.
type
==
LV
_CURSOR_BLOCK
)
{
cur_area
.
x1
=
letter_pos
.
x
+
ta_ext
->
label
->
coords
.
x1
-
cur_style
.
body
.
padding
.
hor
;
cur_area
.
y1
=
letter_pos
.
y
+
ta_ext
->
label
->
coords
.
y1
-
cur_style
.
body
.
padding
.
ver
;
cur_area
.
x2
=
letter_pos
.
x
+
ta_ext
->
label
->
coords
.
x1
+
cur_style
.
body
.
padding
.
hor
+
letter_w
;
...
...
@@ -857,7 +837,7 @@ static bool lv_ta_scrollable_design(lv_obj_t * scrl, const area_t * mask, lv_des
cur_area
.
y1
+=
cur_style
.
body
.
padding
.
ver
;
lv_draw_label
(
&
cur_area
,
mask
,
&
cur_style
,
letter_buf
,
TXT_FLAG_NONE
,
0
);
}
else
if
(
ta_ext
->
cursor
_type
==
LV_TA
_CURSOR_OUTLINE
)
{
}
else
if
(
ta_ext
->
cursor
.
type
==
LV
_CURSOR_OUTLINE
)
{
cur_area
.
x1
=
letter_pos
.
x
+
ta_ext
->
label
->
coords
.
x1
-
cur_style
.
body
.
padding
.
hor
;
cur_area
.
y1
=
letter_pos
.
y
+
ta_ext
->
label
->
coords
.
y1
-
cur_style
.
body
.
padding
.
ver
;
cur_area
.
x2
=
letter_pos
.
x
+
ta_ext
->
label
->
coords
.
x1
+
cur_style
.
body
.
padding
.
hor
+
letter_w
;
...
...
@@ -866,7 +846,7 @@ static bool lv_ta_scrollable_design(lv_obj_t * scrl, const area_t * mask, lv_des
cur_style
.
body
.
empty
=
1
;
if
(
cur_style
.
body
.
border
.
width
==
0
)
cur_style
.
body
.
border
.
width
=
1
<<
LV_ANTIALIAS
;
/*Be sure the border will be drawn*/
lv_draw_rect
(
&
cur_area
,
mask
,
&
cur_style
);
}
else
if
(
ta_ext
->
cursor
_type
==
LV_TA
_CURSOR_UNDERLINE
)
{
}
else
if
(
ta_ext
->
cursor
.
type
==
LV
_CURSOR_UNDERLINE
)
{
cur_area
.
x1
=
letter_pos
.
x
+
ta_ext
->
label
->
coords
.
x1
+
cur_style
.
body
.
padding
.
hor
;
cur_area
.
y1
=
letter_pos
.
y
+
ta_ext
->
label
->
coords
.
y1
+
cur_style
.
body
.
padding
.
ver
+
letter_h
-
(
cur_style
.
line
.
width
>>
1
);
cur_area
.
x2
=
letter_pos
.
x
+
ta_ext
->
label
->
coords
.
x1
+
cur_style
.
body
.
padding
.
hor
+
letter_w
;
...
...
@@ -982,9 +962,9 @@ static lv_res_t lv_ta_scrollable_signal(lv_obj_t * scrl, lv_signal_t sign, void
static
void
cursor_blink_anim
(
lv_obj_t
*
ta
,
uint8_t
show
)
{
lv_ta_ext_t
*
ext
=
lv_obj_get_ext_attr
(
ta
);
if
(
show
!=
ext
->
cursor
_
state
)
{
ext
->
cursor
_
state
=
show
==
0
?
0
:
1
;
if
(
ext
->
cursor
_
show
!=
0
)
lv_obj_invalidate
(
ta
);
if
(
show
!=
ext
->
cursor
.
state
)
{
ext
->
cursor
.
state
=
show
==
0
?
0
:
1
;
if
(
ext
->
cursor
.
show
!=
0
)
lv_obj_invalidate
(
ta
);
}
}
...
...
lv_objx/lv_ta.h
View file @
63d54b02
...
...
@@ -39,11 +39,12 @@ extern "C" {
**********************/
typedef
enum
{
LV_TA_CURSOR_LINE
,
LV_TA_CURSOR_BLOCK
,
LV_TA_CURSOR_OUTLINE
,
LV_TA_CURSOR_UNDERLINE
,
}
lv_ta_cursor_type_t
;
LV_CURSOR_NONE
,
LV_CURSOR_LINE
,
LV_CURSOR_BLOCK
,
LV_CURSOR_OUTLINE
,
LV_CURSOR_UNDERLINE
,
}
lv_cursor_type_t
;
/*Data of text area*/
typedef
struct
...
...
@@ -51,15 +52,16 @@ typedef struct
lv_page_ext_t
page
;
/*Ext. of ancestor*/
/*New data for this type */
lv_obj_t
*
label
;
/*Label of the text area*/
lv_style_t
*
cursor_style
;
/*Style of the cursor (NULL to use label's style)*/
char
*
pwd_tmp
;
/*Used to store the original text in password mode*/
cord_t
cursor_valid_x
;
/*Used when stepping up/down in text area when stepping to a shorter line. (Handled by the library)*/
uint16_t
cursor_pos
;
/*The current cursor position (0: before 1. letter; 1: before 2. letter etc.)*/
lv_ta_cursor_type_t
cursor_type
;
/*Shape of the cursor*/
uint8_t
cursor_show
:
1
;
/*Show or hide cursor */
uint8_t
pwd_mode
:
1
;
/*Replace characters with '*' */
uint8_t
one_line
:
1
;
/*One line mode (ignore line breaks)*/
uint8_t
cursor_state
:
1
;
/*Indicates that the cursor is visible now or not (Handled by the library)*/
struct
{
lv_style_t
*
style
;
/*Style of the cursor (NULL to use label's style)*/
cord_t
valid_x
;
/*Used when stepping up/down in text area when stepping to a shorter line. (Handled by the library)*/
uint16_t
pos
;
/*The current cursor position (0: before 1. letter; 1: before 2. letter etc.)*/
lv_cursor_type_t
type
;
/*Shape of the cursor*/
uint8_t
state
:
1
;
/*Indicates that the cursor is visible now or not (Handled by the library)*/
}
cursor
;
}
lv_ta_ext_t
;
typedef
enum
{
...
...
@@ -127,18 +129,11 @@ void lv_ta_set_text(lv_obj_t * ta, const char * txt);
void
lv_ta_set_cursor_pos
(
lv_obj_t
*
ta
,
int16_t
pos
);
/**
* Set the cursor visibility.
* @param ta pointer to a text area object
* @return show true: show the cursor and blink it, false: hide cursor
*/
void
lv_ta_set_cursor_show
(
lv_obj_t
*
ta
,
bool
show
);
/**
* Set the cursor type.
* @param ta pointer to a text area object
* @param cur_type: element of 'lv_
ta_
cursor_type_t'
* @param cur_type: element of 'lv_cursor_type_t'
*/
void
lv_ta_set_cursor_type
(
lv_obj_t
*
ta
,
lv_
ta_
cursor_type_t
cur_type
);
void
lv_ta_set_cursor_type
(
lv_obj_t
*
ta
,
lv_cursor_type_t
cur_type
);
/**
* Enable/Disable password mode
* @param ta pointer to a text area object
...
...
@@ -206,9 +201,9 @@ bool lv_ta_get_cursor_show(lv_obj_t * ta);
/**
* Get the current cursor type.
* @param ta pointer to a text area object
* @return element of 'lv_
ta_
cursor_type_t'
* @return element of 'lv_cursor_type_t'
*/
lv_
ta_
cursor_type_t
lv_ta_get_cursor_type
(
lv_obj_t
*
ta
);
lv_cursor_type_t
lv_ta_get_cursor_type
(
lv_obj_t
*
ta
);
/**
* Get the password mode attribute
...
...
lv_objx/lv_tabview.c
View file @
63d54b02
...
...
@@ -103,7 +103,7 @@ lv_obj_t * lv_tabview_create(lv_obj_t * par, lv_obj_t * copy)
ext
->
content
=
lv_cont_create
(
new_tabview
,
NULL
);
lv_cont_set_fit
(
ext
->
content
,
true
,
false
);
lv_cont_set_layout
(
ext
->
content
,
LV_
CONT_
LAYOUT_ROW_T
);
lv_cont_set_layout
(
ext
->
content
,
LV_LAYOUT_ROW_T
);
lv_cont_set_style
(
ext
->
content
,
&
lv_style_transp_tight
);
lv_obj_set_height
(
ext
->
content
,
LV_VER_RES
-
lv_obj_get_height
(
ext
->
btns
));
lv_obj_align
(
ext
->
content
,
ext
->
btns
,
LV_ALIGN_OUT_BOTTOM_LEFT
,
0
,
0
);
...
...
lv_themes/lv_theme.c
View file @
63d54b02
...
...
@@ -20,9 +20,6 @@
/**********************
* STATIC PROTOTYPES
**********************/
static
void
create_tab1
(
lv_theme_t
*
th
,
lv_obj_t
*
parent
);
static
void
create_tab2
(
lv_theme_t
*
th
,
lv_obj_t
*
parent
);
static
void
create_tab3
(
lv_theme_t
*
th
,
lv_obj_t
*
parent
);
/**********************
* STATIC VARIABLES
...
...
@@ -56,249 +53,6 @@ lv_theme_t * lv_theme_get_current(void)
return
current_theme
;
}
/**
* Create a test screen with a lot objects and apply the given theme on them
* @param th pointer to a theme
*/
void
lv_theme_create_test_screen
(
lv_theme_t
*
th
)
{
lv_theme_set_current
(
th
);
lv_obj_t
*
scr
=
lv_cont_create
(
NULL
,
NULL
);
lv_scr_load
(
scr
);
lv_cont_set_style
(
scr
,
th
->
bg
);
lv_obj_t
*
tv
=
lv_tabview_create
(
scr
,
NULL
);
lv_obj_set_size
(
tv
,
LV_HOR_RES
,
LV_VER_RES
);
lv_obj_t
*
tab1
=
lv_tabview_add_tab
(
tv
,
"Tab 1"
);
lv_obj_t
*
tab2
=
lv_tabview_add_tab
(
tv
,
"Tab 2"
);
lv_obj_t
*
tab3
=
lv_tabview_add_tab
(
tv
,
"Tab 3"
);
create_tab1
(
th
,
tab1
);
create_tab2
(
th
,
tab2
);
create_tab3
(
th
,
tab3
);
lv_tabview_set_current_tab
(
tv
,
2
,
false
);
}
/**********************
* STATIC FUNCTIONS
**********************/
static
void
create_tab1
(
lv_theme_t
*
th
,
lv_obj_t
*
parent
)
{
lv_page_set_scrl_layout
(
parent
,
LV_CONT_LAYOUT_PRETTY
);
static
lv_style_t
h_style
;
lv_style_copy
(
&
h_style
,
&
lv_style_transp
);
h_style
.
body
.
padding
.
inner
=
LV_DPI
/
4
;
h_style
.
body
.
padding
.
hor
=
LV_DPI
/
4
;
h_style
.
body
.
padding
.
ver
=
LV_DPI
/
6
;
lv_obj_t
*
h
=
lv_cont_create
(
parent
,
NULL
);
lv_obj_set_style
(
h
,
&
h_style
);
lv_cont_set_fit
(
h
,
true
,
true
);
lv_cont_set_layout
(
h
,
LV_CONT_LAYOUT_COL_M
);
lv_obj_t
*
btn
=
lv_btn_create
(
h
,
NULL
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_REL
,
th
->
btn
.
sm
.
rel
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_PR
,
th
->
btn
.
sm
.
pr
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_TGL_REL
,
th
->
btn
.
sm
.
tgl_rel
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_TGL_PR
,
th
->
btn
.
sm
.
tgl_pr
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_INA
,
th
->
btn
.
sm
.
ina
);
lv_btn_set_fit
(
btn
,
true
,
true
);
lv_btn_set_toggle
(
btn
,
true
);
lv_obj_t
*
btn_label
=
lv_label_create
(
btn
,
NULL
);
lv_label_set_text
(
btn_label
,
"Small"
);
btn
=
lv_btn_create
(
h
,
btn
);
lv_btn_toggle
(
btn
);
btn_label
=
lv_label_create
(
btn
,
NULL
);
lv_label_set_text
(
btn_label
,
"Toggled"
);
btn
=
lv_btn_create
(
h
,
btn
);
lv_btn_set_state
(
btn
,
LV_BTN_STATE_INA
);
btn_label
=
lv_label_create
(
btn
,
NULL
);
lv_label_set_text
(
btn_label
,
"Inactive"
);
btn
=
lv_btn_create
(
h
,
btn
);
lv_btn_set_state
(
btn
,
LV_BTN_STATE_REL
);
btn_label
=
lv_label_create
(
btn
,
NULL
);
lv_label_set_text
(
btn_label
,
"Medium"
);
btn
=
lv_btn_create
(
h
,
btn
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_REL
,
th
->
btn
.
lg
.
rel
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_PR
,
th
->
btn
.
lg
.
pr
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_TGL_REL
,
th
->
btn
.
lg
.
tgl_rel
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_TGL_PR
,
th
->
btn
.
lg
.
tgl_pr
);
lv_btn_set_style
(
btn
,
LV_BTN_STYLE_INA
,
th
->
btn
.
lg
.
ina
);
btn_label
=
lv_label_create
(
btn
,
NULL
);
lv_label_set_text
(
btn_label
,
"Large"
);
lv_obj_t
*
label
=
lv_label_create
(
h
,
NULL
);
lv_label_set_text
(
label
,
"Small"
);
lv_obj_set_style
(
label
,
th
->
label
.
sm
);
label
=
lv_label_create
(
h
,
NULL
);
lv_label_set_text
(
label
,
"Medium"
);
lv_obj_set_style
(
label
,
th
->
label
.
md
);
label
=
lv_label_create
(
h
,
NULL
);
lv_label_set_text
(
label
,
"Large"
);
lv_obj_set_style
(
label
,
th
->
label
.
lg
);
lv_obj_set_protect
(
label
,
LV_PROTECT_FOLLOW
);
h
=
lv_cont_create
(
parent
,
h
);
lv_obj_t
*
sw_h
=
lv_cont_create
(
h
,
NULL
);
lv_cont_set_style
(
sw_h
,
&
lv_style_transp
);
lv_cont_set_fit
(
sw_h
,
false
,
true
);
lv_obj_set_width
(
sw_h
,
LV_HOR_RES
/
4
);
lv_cont_set_layout
(
sw_h
,
LV_CONT_LAYOUT_PRETTY
);
lv_obj_t
*
sw
=
lv_sw_create
(
sw_h
,
NULL
);
sw
=
lv_sw_create
(
sw_h
,
sw
);
lv_sw_set_on
(
sw
);
lv_obj_t
*
bar
=
lv_bar_create
(
h
,
NULL
);
lv_bar_set_value
(
bar
,
70
);
lv_obj_t
*
slider
=
lv_slider_create
(
h
,
NULL
);
lv_obj_set_height
(
slider
,
LV_DPI
/
2
);
lv_bar_set_value
(
slider
,
70
);
lv_obj_t
*
line
=
lv_line_create
(
h
,
NULL
);
static
const
point_t
line_p
[]
=
{{
0
,
0
},{
LV_HOR_RES
/
5
,
0
}};
lv_line_set_points
(
line
,
line_p
,
2
);
lv_line_set_style
(
line
,
th
->
line
.
decor
);
lv_obj_t
*
ta
=
lv_ta_create
(
h
,
NULL
);
lv_obj_set_style
(
ta
,
th
->
ta
.
oneline
);
lv_ta_set_text
(
ta
,
"Some text"
);
lv_ta_set_one_line
(
ta
,
true
);
lv_obj_t
*
cb
=
lv_cb_create
(
h
,
NULL
);
cb
=
lv_cb_create
(
h
,
cb
);
lv_btn_set_state
(
cb
,
LV_BTN_STATE_TGL_REL
);
lv_obj_t
*
ddlist
=
lv_ddlist_create
(
h
,
NULL
);
lv_ddlist_open
(
ddlist
,
false
);
lv_ddlist_set_selected
(
ddlist
,
1
);
static
const
char
*
btnm_str
[]
=
{
"1"
,
"2"
,
"3"
,
SYMBOL_OK
,
SYMBOL_CLOSE
,
""
};
lv_obj_t
*
btnm
=
lv_btnm_create
(
h
,
NULL
);
lv_obj_set_size
(
btnm
,
LV_HOR_RES
/
4
,
2
*
LV_DPI
/
3
);
lv_btnm_set_map
(
btnm
,
btnm_str
);
((
lv_btnm_ext_t
*
)
btnm
->
ext_attr
)
->
btn_id_pr
=
3
;
/*Hack to show a button pressed*/
h
=
lv_cont_create
(
parent
,
h
);
lv_obj_t
*
list
=
lv_list_create
(
h
,
NULL
);
lv_list_add
(
list
,
SYMBOL_GPS
,
"GPS"
,
NULL
);
lv_list_add
(
list
,
SYMBOL_WIFI
,
"WiFi"
,
NULL
);
lv_list_add
(
list
,
SYMBOL_CALL
,
"Call"
,
NULL
);
lv_list_add
(
list
,
SYMBOL_BELL
,
"Bell"
,
NULL
);
lv_list_add
(
list
,
SYMBOL_FILE
,
"File"
,
NULL
);
lv_list_add
(
list
,
SYMBOL_EDIT
,
"Edit"
,
NULL
);
lv_list_add
(
list
,
SYMBOL_CUT
,
"Cut"
,
NULL
);
lv_list_add
(
list
,
SYMBOL_COPY
,
"Copy"
,
NULL
);
lv_obj_t
*
roller
=
lv_roller_create
(
h
,
NULL
);
lv_roller_set_options
(
roller
,
"Monday
\n
Tuesday
\n
Wednesday
\n
Thursday
\n
Friday
\n
Saturday
\n
Sunday"
);
lv_obj_set_height
(
roller
,
LV_DPI
);
lv_obj_t
*
gauge
=
lv_gauge_create
(
h
,
NULL
);
lv_gauge_set_value
(
gauge
,
0
,
40
);
lv_obj_set_size
(
gauge
,
3
*
LV_DPI
/
2
,
3
*
LV_DPI
/
2
);
}
static
void
create_tab2
(
lv_theme_t
*
th
,
lv_obj_t
*
parent
)
{
cord_t
w
=
lv_page_get_scrl_width
(
parent
);
lv_obj_t
*
chart
=
lv_chart_create
(
parent
,
NULL
);
lv_chart_series_t
*
s1
=
lv_chart_add_series
(
chart
,
COLOR_RED
);
lv_chart_set_next
(
chart
,
s1
,
30
);
lv_chart_set_next
(
chart
,
s1
,
20
);
lv_chart_set_next
(
chart
,
s1
,
10
);
lv_chart_set_next
(
chart
,
s1
,
12
);
lv_chart_set_next
(
chart
,
s1
,
20
);
lv_chart_set_next
(
chart
,
s1
,
27
);
lv_chart_set_next
(
chart
,
s1
,
35
);
lv_chart_set_next
(
chart
,
s1
,
55
);
lv_chart_set_next
(
chart
,
s1
,
70
);
lv_chart_set_next
(
chart
,
s1
,
75
);
lv_obj_t
*
ta
=
lv_ta_create
(
parent
,
NULL
);
lv_obj_set_size
(
ta
,
w
/
3
,
LV_VER_RES
/
4
);
lv_obj_align
(
ta
,
NULL
,
LV_ALIGN_IN_TOP_RIGHT
,
0
,
0
);
lv_ta_set_cursor_type
(
ta
,
LV_TA_CURSOR_BLOCK
);
lv_obj_t
*
kb
=
lv_kb_create
(
parent
,
NULL
);
lv_obj_set_size
(
kb
,
w
/
2
,
LV_VER_RES
/
3
);
lv_obj_align
(
kb
,
ta
,
LV_ALIGN_OUT_BOTTOM_RIGHT
,
0
,
LV_DPI
/
4
);
lv_kb_set_ta
(
kb
,
ta
);
}
static
void
create_tab3
(
lv_theme_t
*
th
,
lv_obj_t
*
parent
)
{
lv_obj_t
*
win
=
lv_win_create
(
parent
,
NULL
);
lv_win_add_btn
(
win
,
SYMBOL_CLOSE
,
lv_win_close_action
);
lv_win_add_btn
(
win
,
SYMBOL_DOWN
,
NULL
);
lv_obj_set_size
(
win
,
LV_HOR_RES
/
2
,
LV_VER_RES
/
2
);
lv_obj_set_top
(
win
,
true
);
lv_obj_t
*
label
=
lv_label_create
(
win
,
NULL
);
lv_label_set_text
(
label
,
"Label in the window"
);
lv_obj_t
*
lmeter
=
lv_lmeter_create
(
win
,
NULL
);
lv_obj_align
(
lmeter
,
label
,
LV_ALIGN_OUT_BOTTOM_LEFT
,
0
,
LV_DPI
/
2
);
lv_lmeter_set_value
(
lmeter
,
70
);
lv_obj_t
*
led1
=
lv_led_create
(
win
,
NULL
);
lv_obj_align
(
led1
,
lmeter
,
LV_ALIGN_OUT_BOTTOM_MID
,
0
,
LV_DPI
/
2
);
lv_led_on
(
led1
);
lv_obj_t
*
led2
=
lv_led_create
(
win
,
NULL
);
lv_obj_align
(
led2
,
led1
,
LV_ALIGN_OUT_RIGHT_MID
,
LV_DPI
/
2
,
0
);
lv_led_off
(
led2
);
lv_obj_t
*
page
=
lv_page_create
(
parent
,
NULL
);
lv_obj_set_size
(
page
,
LV_HOR_RES
/
3
,
LV_VER_RES
/
2
);
lv_obj_set_top
(
page
,
true
);
lv_obj_align
(
page
,
win
,
LV_ALIGN_IN_TOP_RIGHT
,
LV_DPI
,
LV_DPI
);
label
=
lv_label_create
(
page
,
NULL
);
lv_label_set_text
(
label
,
"Lorem ipsum dolor sit amet, repudiare voluptatibus pri cu. "
"Ei mundi pertinax posidonium eum, cum tempor maiorum at, "
"mea fuisset assentior ad. Usu cu suas civibus iudicabit. "
"Eum eu congue tempor facilisi. Tale hinc unum te vim. "
"Te cum populo animal eruditi, labitur inciderint at nec.
\n\n
"
"Eius corpora et quo. Everti voluptaria instructior est id, "
"vel in falli primis. Mea ei porro essent admodum, "
"his ei malis quodsi, te quis aeterno his. "
"Qui tritani recusabo reprehendunt ne, "
"per duis explicari at. Simul mediocritatem mei et."
);
lv_label_set_long_mode
(
label
,
LV_LABEL_LONG_BREAK
);
lv_obj_set_width
(
label
,
lv_page_get_scrl_width
(
page
));
static
const
char
*
mbox_btn_map
[]
=
{
"
\211
"
,
"
\222
Got it!"
,
"
\211
"
,
""
};
lv_obj_t
*
mbox
=
lv_mbox_create
(
parent
,
NULL
);
lv_mbox_set_text
(
mbox
,
"Click on the window or the page to bring it to the foreground"
);
lv_mbox_set_btns
(
mbox
,
mbox_btn_map
,
NULL
);
lv_obj_set_top
(
mbox
,
true
);
}
lv_themes/lv_theme.h
View file @
63d54b02
...
...
@@ -36,37 +36,19 @@ typedef struct {
#endif
#if USE_LV_BTN != 0
struct
{
struct
{
lv_style_t
*
rel
;
lv_style_t
*
pr
;
lv_style_t
*
tgl_rel
;
lv_style_t
*
tgl_pr
;
lv_style_t
*
ina
;
}
sm
;
struct
{
lv_style_t
*
rel
;
lv_style_t
*
pr
;
lv_style_t
*
tgl_rel
;
lv_style_t
*
tgl_pr
;
lv_style_t
*
ina
;
}
md
;
struct
{
lv_style_t
*
rel
;
lv_style_t
*
pr
;
lv_style_t
*
tgl_rel
;
lv_style_t
*
tgl_pr
;
lv_style_t
*
ina
;
}
lg
;
}
btn
;
#endif
#if USE_LV_LABEL != 0
struct
{
lv_style_t
*
s
m
;
lv_style_t
*
md
;
lv_style_t
*
lg
;
lv_style_t
*
pri
m
;
lv_style_t
*
sec
;
lv_style_t
*
hint
;
}
label
;
#endif
...
...
@@ -265,12 +247,6 @@ void lv_theme_set_current(lv_theme_t *th);
*/
lv_theme_t
*
lv_theme_get_current
(
void
);
/**
* Create a test screen with a lot objects and apply the given theme on them
* @param th pointer to a theme
*/
void
lv_theme_create_test_screen
(
lv_theme_t
*
th
);
/**********************
* MACROS
**********************/
...
...
@@ -278,6 +254,7 @@ void lv_theme_create_test_screen(lv_theme_t *th);
/**********************
* POST INCLUDE
*********************/
#include "lv_theme_templ.h"
#include "lv_theme_alien.h"
#ifdef __cplusplus
...
...
lv_themes/lv_theme_alien.c
View file @
63d54b02
...
...
@@ -33,10 +33,8 @@ static lv_style_t def;
static
lv_style_t
bg
;
static
lv_style_t
panel
;
/*General fancy background (for e.g. chart or ta)*/
static
lv_style_t
sb
;
static
lv_style_t
label_sm
,
label_md
,
label_lg
;
static
lv_style_t
btn_sm_rel
,
btn_sm_pr
,
btn_sm_trel
,
btn_sm_tpr
,
btn_sm_ina
;
static
lv_style_t
btn_md_rel
,
btn_md_pr
,
btn_md_trel
,
btn_md_tpr
,
btn_md_ina
;
static
lv_style_t
btn_lg_rel
,
btn_lg_pr
,
btn_lg_trel
,
btn_lg_tpr
,
btn_lg_ina
;
static
lv_style_t
label_prim
,
label_sec
,
label_hint
;
static
lv_style_t
btn_rel
,
btn_pr
,
btn_trel
,
btn_tpr
,
btn_ina
;
static
lv_style_t
img_light
,
img_dark
;
static
lv_style_t
line_decor
;
static
lv_style_t
led
;
...
...
@@ -50,14 +48,14 @@ static lv_style_t ddlist_bg, ddlist_sel;
static
lv_style_t
roller_bg
,
roller_sel
;
static
lv_style_t
cb_bg
,
cb_rel
,
cb_pr
,
cb_trel
,
cb_tpr
,
cb_ina
;
static
lv_style_t
btnm_bg
,
btnm_rel
,
btnm_pr
,
btnm_trel
,
btnm_ina
;
static
lv_style_t
mbox_bg
,
mbox_btn_rel
,
mbox_btn_pr
;
static
lv_style_t
mbox_bg
;
static
lv_style_t
tab_rel
,
tab_pr
,
tab_trel
,
tab_tpr
,
tab_indic
;
static
lv_style_t
win_header
;
static
uint16_t
_hue
;
static
font_t
*
_font
_sm
;
static
font_t
*
_font
_md
;
static
font_t
*
_font
_lg
;
static
font_t
*
_font
;
static
font_t
*
_font
;
static
font_t
*
_font
;
/**********************
* MACROS
...
...
@@ -75,8 +73,8 @@ static void basic_init(void)
def
.
glass
=
0
;
def
.
body
.
empty
=
0
;
def
.
body
.
color_main
=
COLOR_HEX3
(
0x222
);
def
.
body
.
color_gradient
=
COLOR_HEX3
(
0x222
);
def
.
body
.
main_color
=
COLOR_HEX3
(
0x222
);
def
.
body
.
gradient_color
=
COLOR_HEX3
(
0x222
);
def
.
body
.
radius
=
0
;
def
.
body
.
padding
.
hor
=
LV_DPI
/
8
;
def
.
body
.
padding
.
ver
=
LV_DPI
/
8
;
...
...
@@ -89,7 +87,7 @@ static void basic_init(void)
def
.
body
.
shadow
.
type
=
LV_SHADOW_FULL
;
def
.
text
.
color
=
COLOR_HEX3
(
0xDDD
);
def
.
text
.
font
=
_font
_sm
;
def
.
text
.
font
=
_font
;
def
.
text
.
letter_space
=
1
<<
LV_ANTIALIAS
;
def
.
text
.
line_space
=
2
<<
LV_ANTIALIAS
;
...
...
@@ -101,8 +99,8 @@ static void basic_init(void)
/*Background*/
lv_style_copy
(
&
bg
,
&
def
);
bg
.
body
.
color_main
=
COLOR_HEX3
(
0x333
);
bg
.
body
.
color_gradient
=
COLOR_HEX3
(
0x333
);
bg
.
body
.
main_color
=
COLOR_HEX3
(
0x333
);
bg
.
body
.
gradient_color
=
COLOR_HEX3
(
0x333
);
bg
.
body
.
border
.
width
=
0
;
bg
.
body
.
border
.
opa
=
OPA_70
;
bg
.
body
.
shadow
.
color
=
COLOR_SILVER
;
...
...
@@ -110,8 +108,8 @@ static void basic_init(void)
/*Panel*/
lv_style_copy
(
&
panel
,
&
def
);
panel
.
body
.
radius
=
LV_DPI
/
10
;
panel
.
body
.
color_main
=
COLOR_HEX3
(
0x666
);
panel
.
body
.
color_gradient
=
COLOR_HEX3
(
0x666
);
panel
.
body
.
main_color
=
COLOR_HEX3
(
0x666
);
panel
.
body
.
gradient_color
=
COLOR_HEX3
(
0x666
);
panel
.
body
.
border
.
color
=
COLOR_HEX3
(
0xccc
);
panel
.
body
.
border
.
width
=
2
<<
LV_ANTIALIAS
;
panel
.
body
.
border
.
opa
=
OPA_60
;
...
...
@@ -125,8 +123,8 @@ static void basic_init(void)
sb
.
body
.
border
.
color
=
COLOR_SILVER
;
sb
.
body
.
border
.
opa
=
OPA_40
;
sb
.
body
.
border
.
width
=
1
<<
LV_ANTIALIAS
;
sb
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
33
,
92
);
sb
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
33
,
92
);
sb
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
33
,
92
);
sb
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
33
,
92
);
sb
.
body
.
padding
.
hor
=
1
<<
LV_ANTIALIAS
;
sb
.
body
.
padding
.
ver
=
1
<<
LV_ANTIALIAS
;
sb
.
body
.
padding
.
inner
=
LV_DPI
/
15
;
/*Scrollbar width*/
...
...
@@ -139,129 +137,59 @@ static void basic_init(void)
static
void
btn_init
(
void
)
{
#if USE_LV_BTN != 0
lv_style_copy
(
&
btn_sm_rel
,
&
def
);
btn_sm_rel
.
glass
=
0
;
btn_sm_rel
.
body
.
empty
=
1
;
btn_sm_rel
.
body
.
radius
=
LV_RADIUS_CIRCLE
;
btn_sm_rel
.
body
.
border
.
width
=
2
<<
LV_ANTIALIAS
;
btn_sm_rel
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
70
,
90
);
btn_sm_rel
.
body
.
border
.
opa
=
OPA_80
;
btn_sm_rel
.
body
.
padding
.
hor
=
LV_DPI
/
4
;
btn_sm_rel
.
body
.
padding
.
ver
=
LV_DPI
/
6
;
btn_sm_rel
.
body
.
padding
.
inner
=
LV_DPI
/
10
;
btn_sm_rel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
8
,
96
);
btn_sm_rel
.
text
.
font
=
_font_sm
;
lv_style_copy
(
&
btn_sm_pr
,
&
btn_sm_rel
);
btn_sm_pr
.
body
.
opa
=
OPA_COVER
;
btn_sm_pr
.
body
.
empty
=
0
;
btn_sm_pr
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
50
,
50
);
btn_sm_pr
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
50
,
50
);
btn_sm_pr
.
body
.
border
.
opa
=
OPA_60
;
btn_sm_pr
.
text
.
font
=
_font_sm
;
btn_sm_pr
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
100
);
lv_style_copy
(
&
btn_sm_trel
,
&
btn_sm_pr
);
btn_sm_trel
.
body
.
opa
=
OPA_COVER
;
btn_sm_trel
.
body
.
empty
=
0
;
btn_sm_trel
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
50
,
60
);
btn_sm_trel
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
50
,
60
);
btn_sm_trel
.
body
.
border
.
opa
=
OPA_60
;
btn_sm_trel
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
80
,
90
);
btn_sm_trel
.
text
.
font
=
_font_sm
;
btn_sm_trel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
0
,
100
);
lv_style_copy
(
&
btn_sm_tpr
,
&
btn_sm_trel
);
btn_sm_tpr
.
body
.
opa
=
OPA_COVER
;
btn_sm_tpr
.
body
.
empty
=
0
;
btn_sm_tpr
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
50
,
50
);
btn_sm_tpr
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
50
,
50
);
btn_sm_tpr
.
body
.
border
.
opa
=
OPA_60
;
btn_sm_tpr
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
80
,
70
);
btn_sm_tpr
.
text
.
font
=
_font_sm
;
btn_sm_tpr
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
90
);
lv_style_copy
(
&
btn_sm_ina
,
&
btn_sm_rel
);
btn_sm_ina
.
body
.
border
.
opa
=
OPA_60
;
btn_sm_ina
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
50
);
btn_sm_ina
.
text
.
font
=
_font_sm
;
btn_sm_ina
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
90
);
lv_style_copy
(
&
btn_md_rel
,
&
btn_sm_rel
);
btn_md_rel
.
body
.
padding
.
hor
=
LV_DPI
/
3
;
btn_md_rel
.
body
.
padding
.
ver
=
LV_DPI
/
5
;
btn_md_rel
.
body
.
padding
.
inner
=
LV_DPI
/
8
;
btn_md_rel
.
text
.
font
=
_font_md
;
lv_style_copy
(
&
btn_md_pr
,
&
btn_sm_pr
);
btn_md_pr
.
body
.
padding
.
hor
=
LV_DPI
/
3
;
btn_md_pr
.
body
.
padding
.
ver
=
LV_DPI
/
5
;
btn_md_pr
.
body
.
padding
.
inner
=
LV_DPI
/
8
;
btn_md_pr
.
text
.
font
=
_font_md
;
lv_style_copy
(
&
btn_md_trel
,
&
btn_sm_trel
);
btn_md_trel
.
body
.
padding
.
hor
=
LV_DPI
/
3
;
btn_md_trel
.
body
.
padding
.
ver
=
LV_DPI
/
5
;
btn_md_trel
.
body
.
padding
.
inner
=
LV_DPI
/
8
;
btn_md_trel
.
text
.
font
=
_font_md
;
lv_style_copy
(
&
btn_md_tpr
,
&
btn_sm_tpr
);
btn_md_tpr
.
body
.
padding
.
hor
=
LV_DPI
/
3
;
btn_md_tpr
.
body
.
padding
.
ver
=
LV_DPI
/
5
;
btn_md_tpr
.
body
.
padding
.
inner
=
LV_DPI
/
8
;
btn_md_tpr
.
text
.
font
=
_font_md
;
lv_style_copy
(
&
btn_md_ina
,
&
btn_sm_ina
);
btn_md_ina
.
body
.
padding
.
hor
=
LV_DPI
/
3
;
btn_md_ina
.
body
.
padding
.
ver
=
LV_DPI
/
5
;
btn_md_ina
.
body
.
padding
.
inner
=
LV_DPI
/
8
;
btn_md_ina
.
text
.
font
=
_font_md
;
lv_style_copy
(
&
btn_lg_rel
,
&
btn_sm_rel
);
btn_lg_rel
.
body
.
padding
.
hor
=
LV_DPI
/
2
;
btn_lg_rel
.
body
.
padding
.
ver
=
LV_DPI
/
4
;
btn_lg_rel
.
body
.
padding
.
inner
=
LV_DPI
/
6
;
btn_lg_rel
.
text
.
font
=
_font_lg
;
lv_style_copy
(
&
btn_lg_pr
,
&
btn_sm_pr
);
btn_lg_pr
.
body
.
padding
.
hor
=
LV_DPI
/
2
;
btn_lg_pr
.
body
.
padding
.
ver
=
LV_DPI
/
4
;
btn_lg_pr
.
body
.
padding
.
inner
=
LV_DPI
/
6
;
btn_lg_pr
.
text
.
font
=
_font_lg
;
lv_style_copy
(
&
btn_lg_trel
,
&
btn_sm_trel
);
btn_lg_trel
.
body
.
padding
.
hor
=
LV_DPI
/
2
;
btn_lg_trel
.
body
.
padding
.
ver
=
LV_DPI
/
4
;
btn_lg_trel
.
body
.
padding
.
inner
=
LV_DPI
/
6
;
btn_lg_trel
.
text
.
font
=
_font_lg
;
lv_style_copy
(
&
btn_lg_tpr
,
&
btn_sm_tpr
);
btn_lg_tpr
.
body
.
padding
.
hor
=
LV_DPI
/
2
;
btn_lg_tpr
.
body
.
padding
.
ver
=
LV_DPI
/
4
;
btn_lg_tpr
.
body
.
padding
.
inner
=
LV_DPI
/
6
;
btn_lg_tpr
.
text
.
font
=
_font_lg
;
lv_style_copy
(
&
btn_lg_ina
,
&
btn_sm_ina
);
btn_lg_ina
.
body
.
padding
.
hor
=
LV_DPI
/
2
;
btn_lg_ina
.
body
.
padding
.
ver
=
LV_DPI
/
4
;
btn_lg_ina
.
body
.
padding
.
inner
=
LV_DPI
/
6
;
btn_lg_ina
.
text
.
font
=
_font_lg
;
theme
.
btn
.
sm
.
rel
=
&
btn_sm_rel
;
theme
.
btn
.
sm
.
pr
=
&
btn_sm_pr
;
theme
.
btn
.
sm
.
tgl_rel
=
&
btn_sm_trel
;
theme
.
btn
.
sm
.
tgl_pr
=
&
btn_sm_tpr
;
theme
.
btn
.
sm
.
ina
=
&
btn_sm_ina
;
theme
.
btn
.
md
.
rel
=
&
btn_md_rel
;
theme
.
btn
.
md
.
pr
=
&
btn_md_pr
;
theme
.
btn
.
md
.
tgl_rel
=
&
btn_md_trel
;
theme
.
btn
.
md
.
tgl_pr
=
&
btn_md_tpr
;
theme
.
btn
.
md
.
ina
=
&
btn_md_ina
;
theme
.
btn
.
lg
.
rel
=
&
btn_lg_rel
;
theme
.
btn
.
lg
.
pr
=
&
btn_lg_pr
;
theme
.
btn
.
lg
.
tgl_rel
=
&
btn_lg_trel
;
theme
.
btn
.
lg
.
tgl_pr
=
&
btn_lg_tpr
;
theme
.
btn
.
lg
.
ina
=
&
btn_lg_ina
;
lv_style_copy
(
&
btn_rel
,
&
def
);
btn_rel
.
glass
=
0
;
btn_rel
.
body
.
empty
=
1
;
btn_rel
.
body
.
radius
=
LV_RADIUS_CIRCLE
;
btn_rel
.
body
.
border
.
width
=
2
<<
LV_ANTIALIAS
;
btn_rel
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
70
,
90
);
btn_rel
.
body
.
border
.
opa
=
OPA_80
;
btn_rel
.
body
.
padding
.
hor
=
LV_DPI
/
4
;
btn_rel
.
body
.
padding
.
ver
=
LV_DPI
/
6
;
btn_rel
.
body
.
padding
.
inner
=
LV_DPI
/
10
;
btn_rel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
8
,
96
);
btn_rel
.
text
.
font
=
_font
;
lv_style_copy
(
&
btn_pr
,
&
btn_rel
);
btn_pr
.
body
.
opa
=
OPA_COVER
;
btn_pr
.
body
.
empty
=
0
;
btn_pr
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
50
,
50
);
btn_pr
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
50
,
50
);
btn_pr
.
body
.
border
.
opa
=
OPA_60
;
btn_pr
.
text
.
font
=
_font
;
btn_pr
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
100
);
lv_style_copy
(
&
btn_trel
,
&
btn_pr
);
btn_trel
.
body
.
opa
=
OPA_COVER
;
btn_trel
.
body
.
empty
=
0
;
btn_trel
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
50
,
60
);
btn_trel
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
50
,
60
);
btn_trel
.
body
.
border
.
opa
=
OPA_60
;
btn_trel
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
80
,
90
);
btn_trel
.
text
.
font
=
_font
;
btn_trel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
0
,
100
);
lv_style_copy
(
&
btn_tpr
,
&
btn_trel
);
btn_tpr
.
body
.
opa
=
OPA_COVER
;
btn_tpr
.
body
.
empty
=
0
;
btn_tpr
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
50
,
50
);
btn_tpr
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
50
,
50
);
btn_tpr
.
body
.
border
.
opa
=
OPA_60
;
btn_tpr
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
80
,
70
);
btn_tpr
.
text
.
font
=
_font
;
btn_tpr
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
90
);
lv_style_copy
(
&
btn_ina
,
&
btn_rel
);
btn_ina
.
body
.
border
.
opa
=
OPA_60
;
btn_ina
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
50
);
btn_ina
.
text
.
font
=
_font
;
btn_ina
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
90
);
theme
.
btn
.
rel
=
&
btn_rel
;
theme
.
btn
.
pr
=
&
btn_pr
;
theme
.
btn
.
tgl_rel
=
&
btn_trel
;
theme
.
btn
.
tgl_pr
=
&
btn_tpr
;
theme
.
btn
.
ina
=
&
btn_ina
;
#endif
}
...
...
@@ -269,19 +197,19 @@ static void btn_init(void)
static
void
label_init
(
void
)
{
#if USE_LV_LABEL != 0
lv_style_copy
(
&
label_
s
m
,
&
def
);
label_
sm
.
text
.
font
=
_font_sm
;
label_
sm
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
8
,
96
);
lv_style_copy
(
&
label_
pri
m
,
&
def
);
label_
prim
.
text
.
font
=
_font
;
label_
prim
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
80
,
96
);
lv_style_copy
(
&
label_
md
,
&
label_s
m
);
label_
md
.
text
.
font
=
_font_md
;
lv_style_copy
(
&
label_
sec
,
&
label_pri
m
);
label_
sec
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
40
,
85
)
;
lv_style_copy
(
&
label_
lg
,
&
label_s
m
);
label_
lg
.
text
.
font
=
_font_lg
;
lv_style_copy
(
&
label_
hint
,
&
label_pri
m
);
label_
hint
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
20
,
70
)
;
theme
.
label
.
sm
=
&
label_s
m
;
theme
.
label
.
md
=
&
label_md
;
theme
.
label
.
lg
=
&
label_lg
;
theme
.
label
.
prim
=
&
label_pri
m
;
theme
.
label
.
sec
=
&
label_sec
;
theme
.
label
.
hint
=
&
label_hint
;
#endif
}
...
...
@@ -292,8 +220,8 @@ static void bar_init(void)
lv_style_copy
(
&
bar_bg
,
&
def
);
bar_bg
.
body
.
opa
=
OPA_30
;
bar_bg
.
body
.
radius
=
LV_RADIUS_CIRCLE
;
bar_bg
.
body
.
color_main
=
COLOR_WHITE
;
bar_bg
.
body
.
color_gradient
=
COLOR_SILVER
;
bar_bg
.
body
.
main_color
=
COLOR_WHITE
;
bar_bg
.
body
.
gradient_color
=
COLOR_SILVER
;
bar_bg
.
body
.
border
.
width
=
2
<<
LV_ANTIALIAS
;
bar_bg
.
body
.
border
.
color
=
COLOR_SILVER
;
bar_bg
.
body
.
border
.
opa
=
OPA_20
;
...
...
@@ -308,9 +236,9 @@ static void bar_init(void)
bar_indic
.
body
.
border
.
opa
=
OPA_70
;
bar_indic
.
body
.
padding
.
hor
=
0
;
bar_indic
.
body
.
padding
.
ver
=
0
;
bar_indic
.
body
.
shadow
.
width
=
LV_DPI
/
12
;
bar_indic
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
40
,
80
);
bar_indic
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
40
,
80
);
bar_indic
.
body
.
shadow
.
width
=
LV_DPI
/
20
;
bar_indic
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
40
,
80
);
bar_indic
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
40
,
80
);
theme
.
bar
.
bg
=
&
bar_bg
;
theme
.
bar
.
indic
=
&
bar_indic
;
...
...
@@ -352,8 +280,8 @@ static void led_init(void)
led
.
body
.
radius
=
LV_RADIUS_CIRCLE
;
led
.
body
.
border
.
width
=
LV_DPI
/
30
;
led
.
body
.
border
.
opa
=
OPA_30
;
led
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
100
,
100
);
led
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
100
,
40
);
led
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
100
,
100
);
led
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
100
,
40
);
led
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
60
,
60
);
led
.
body
.
shadow
.
color
=
color_hsv_to_rgb
(
_hue
,
100
,
100
);
...
...
@@ -367,8 +295,8 @@ static void slider_init(void)
lv_style_copy
(
&
slider_knob
,
&
def
);
slider_knob
.
body
.
opa
=
OPA_60
;
slider_knob
.
body
.
radius
=
LV_RADIUS_CIRCLE
;
slider_knob
.
body
.
color_main
=
COLOR_WHITE
;
slider_knob
.
body
.
color_gradient
=
COLOR_SILVER
;
slider_knob
.
body
.
main_color
=
COLOR_WHITE
;
slider_knob
.
body
.
gradient_color
=
COLOR_SILVER
;
slider_knob
.
body
.
border
.
width
=
1
<<
LV_ANTIALIAS
;
slider_knob
.
body
.
border
.
color
=
COLOR_GRAY
;
slider_knob
.
body
.
border
.
opa
=
OPA_50
;
...
...
@@ -386,13 +314,13 @@ static void sw_init(void)
sw_bg
.
body
.
opa
=
OPA_COVER
;
sw_bg
.
body
.
padding
.
ver
=
-
2
<<
LV_ANTIALIAS
;
sw_bg
.
body
.
padding
.
hor
=
-
2
<<
LV_ANTIALIAS
;
sw_bg
.
body
.
color_main
=
COLOR_HEX3
(
0x666
);
sw_bg
.
body
.
color_gradient
=
COLOR_HEX3
(
0x999
);
sw_bg
.
body
.
main_color
=
COLOR_HEX3
(
0x666
);
sw_bg
.
body
.
gradient_color
=
COLOR_HEX3
(
0x999
);
sw_bg
.
body
.
border
.
width
=
2
<<
LV_ANTIALIAS
;
sw_bg
.
body
.
border
.
opa
=
OPA_50
;
lv_style_copy
(
&
sw_indic
,
&
bar_indic
);
sw_indic
.
body
.
shadow
.
width
=
LV_DPI
/
12
;
sw_indic
.
body
.
shadow
.
width
=
LV_DPI
/
20
;
sw_indic
.
body
.
padding
.
ver
=
0
;
sw_indic
.
body
.
padding
.
hor
=
0
;
...
...
@@ -411,8 +339,8 @@ static void lmeter_init(void)
{
#if USE_LV_LMETER != 0
lv_style_copy
(
&
lmeter_bg
,
&
def
);
lmeter_bg
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
10
,
70
);
lmeter_bg
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
80
,
80
);
lmeter_bg
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
10
,
70
);
lmeter_bg
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
80
,
80
);
lmeter_bg
.
body
.
padding
.
hor
=
LV_DPI
/
8
;
/*Scale line length*/
lmeter_bg
.
line
.
color
=
COLOR_HEX3
(
0x555
);
lmeter_bg
.
line
.
width
=
2
<<
LV_ANTIALIAS
;
...
...
@@ -426,8 +354,8 @@ static void gauge_init(void)
{
#if USE_LV_GAUGE != 0
lv_style_copy
(
&
gauge_bg
,
&
def
);
gauge_bg
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
10
,
70
);
gauge_bg
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
80
,
80
);
gauge_bg
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
10
,
70
);
gauge_bg
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
80
,
80
);
gauge_bg
.
body
.
padding
.
hor
=
LV_DPI
/
12
;
/*Scale line length*/
gauge_bg
.
body
.
padding
.
ver
=
LV_DPI
/
10
;
/*Needle center size*/
gauge_bg
.
body
.
padding
.
inner
=
LV_DPI
/
8
;
/*Label - scale distance*/
...
...
@@ -435,7 +363,7 @@ static void gauge_init(void)
gauge_bg
.
line
.
color
=
COLOR_HEX3
(
0x555
);
gauge_bg
.
line
.
width
=
2
<<
LV_ANTIALIAS
;
gauge_bg
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
90
);
gauge_bg
.
text
.
font
=
_font
_sm
;
gauge_bg
.
text
.
font
=
_font
;
theme
.
gauge
=
&
gauge_bg
;
#endif
...
...
@@ -456,8 +384,8 @@ static void cb_init(void)
cb_rel
.
body
.
radius
=
LV_DPI
/
20
;
cb_rel
.
body
.
border
.
width
=
1
<<
LV_ANTIALIAS
;
cb_rel
.
body
.
border
.
color
=
COLOR_GRAY
;
cb_rel
.
body
.
color_main
=
COLOR_WHITE
;
cb_rel
.
body
.
color_gradient
=
COLOR_SILVER
;
cb_rel
.
body
.
main_color
=
COLOR_WHITE
;
cb_rel
.
body
.
gradient_color
=
COLOR_SILVER
;
lv_style_copy
(
&
cb_bg
,
&
bg
);
cb_bg
.
body
.
empty
=
1
;
...
...
@@ -465,30 +393,30 @@ static void cb_init(void)
cb_bg
.
body
.
padding
.
inner
=
LV_DPI
/
8
;
cb_bg
.
body
.
padding
.
hor
=
0
;
cb_bg
.
body
.
padding
.
ver
=
0
;
cb_bg
.
text
.
font
=
_font
_sm
;
cb_bg
.
text
.
font
=
_font
;
lv_style_copy
(
&
cb_pr
,
&
cb_rel
);
cb_pr
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
10
,
90
);
cb_pr
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
10
,
82
);
cb_pr
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
10
,
90
);
cb_pr
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
10
,
82
);
lv_style_copy
(
&
cb_trel
,
&
cb_rel
);
cb_trel
.
body
.
border
.
width
=
4
<<
LV_ANTIALIAS
;
cb_trel
.
body
.
border
.
color
=
COLOR_WHITE
;
cb_trel
.
body
.
border
.
opa
=
OPA_60
;
cb_trel
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
50
,
82
);
cb_trel
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
50
,
62
);
cb_trel
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
50
,
82
);
cb_trel
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
50
,
62
);
lv_style_copy
(
&
cb_tpr
,
&
cb_trel
);
cb_tpr
.
body
.
border
.
color
=
COLOR_SILVER
;
cb_tpr
.
body
.
border
.
opa
=
OPA_70
;
cb_tpr
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
50
,
72
);
cb_tpr
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
50
,
52
);
cb_tpr
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
50
,
72
);
cb_tpr
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
50
,
52
);
lv_style_copy
(
&
cb_ina
,
&
cb_trel
);
cb_ina
.
body
.
border
.
width
=
1
<<
LV_ANTIALIAS
;
cb_ina
.
body
.
border
.
color
=
COLOR_GRAY
;
cb_ina
.
body
.
color_main
=
COLOR_SILVER
;
cb_ina
.
body
.
color_gradient
=
COLOR_SILVER
;
cb_ina
.
body
.
main_color
=
COLOR_SILVER
;
cb_ina
.
body
.
gradient_color
=
COLOR_SILVER
;
theme
.
cb
.
bg
=
&
cb_bg
;
theme
.
cb
.
box
.
rel
=
&
cb_rel
;
...
...
@@ -513,14 +441,14 @@ static void btnm_init(void)
btnm_rel
.
body
.
empty
=
1
;
btnm_rel
.
body
.
radius
=
LV_DPI
/
8
;
btnm_rel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
60
,
80
);
btnm_rel
.
text
.
font
=
_font
_md
;
btnm_rel
.
text
.
font
=
_font
;
lv_style_copy
(
&
btnm_pr
,
&
lv_style_plain
);
btnm_pr
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
40
,
70
);
btnm_pr
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
40
,
70
);
btnm_pr
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
40
,
70
);
btnm_pr
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
40
,
70
);
btnm_pr
.
body
.
radius
=
LV_DPI
/
8
;
btnm_pr
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
40
,
40
);
btnm_pr
.
text
.
font
=
_font
_md
;
btnm_pr
.
text
.
font
=
_font
;
lv_style_copy
(
&
btnm_trel
,
&
btnm_rel
);
btnm_trel
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
80
,
80
);
...
...
@@ -559,8 +487,8 @@ static void mbox_init(void)
theme
.
mbox
.
bg
=
&
mbox_bg
;
theme
.
mbox
.
btn
.
bg
=
&
lv_style_transp
;
theme
.
mbox
.
btn
.
rel
=
&
btn_
sm_
trel
;
theme
.
mbox
.
btn
.
pr
=
&
btn_
sm_
tpr
;
theme
.
mbox
.
btn
.
rel
=
&
btn_trel
;
theme
.
mbox
.
btn
.
pr
=
&
btn_tpr
;
#endif
}
...
...
@@ -591,13 +519,13 @@ static void list_init(void)
list_rel
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
50
,
85
);
list_rel
.
body
.
border
.
opa
=
OPA_COVER
;
list_rel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
94
);
list_rel
.
text
.
font
=
_font
_sm
;
list_rel
.
text
.
font
=
_font
;
lv_style_copy
(
&
list_pr
,
&
list_rel
);
list_pr
.
body
.
empty
=
0
;
list_pr
.
body
.
opa
=
OPA_COVER
;
list_pr
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
34
,
41
);
list_pr
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
34
,
41
);
list_pr
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
34
,
41
);
list_pr
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
34
,
41
);
list_pr
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
7
,
96
);
lv_style_copy
(
&
list_trel
,
&
list_rel
);
...
...
@@ -626,8 +554,8 @@ static void ddlist_init(void)
ddlist_bg
.
text
.
line_space
=
LV_DPI
/
10
;
lv_style_copy
(
&
ddlist_sel
,
&
panel
);
ddlist_sel
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
45
,
70
);
ddlist_sel
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
45
,
70
);
ddlist_sel
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
45
,
70
);
ddlist_sel
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
45
,
70
);
ddlist_sel
.
body
.
opa
=
OPA_COVER
;
ddlist_sel
.
body
.
radius
=
0
;
...
...
@@ -643,8 +571,8 @@ static void roller_init(void)
lv_style_copy
(
&
roller_bg
,
&
ddlist_bg
);
roller_bg
.
text
.
line_space
=
LV_DPI
/
6
;
roller_bg
.
body
.
radius
=
LV_DPI
/
20
;
roller_bg
.
body
.
color_main
=
COLOR_HEX3
(
0x222
);
roller_bg
.
body
.
color_gradient
=
COLOR_HEX3
(
0x999
);
roller_bg
.
body
.
main_color
=
COLOR_HEX3
(
0x222
);
roller_bg
.
body
.
gradient_color
=
COLOR_HEX3
(
0x999
);
roller_bg
.
body
.
border
.
opa
=
OPA_30
;
roller_bg
.
text
.
opa
=
OPA_70
;
roller_bg
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
20
,
70
);
...
...
@@ -654,7 +582,7 @@ static void roller_init(void)
lv_style_copy
(
&
roller_sel
,
&
panel
);
roller_sel
.
body
.
empty
=
1
;
roller_sel
.
body
.
radius
=
0
;
roller_sel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
55
,
90
);
roller_sel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
70
,
95
);
theme
.
roller
.
bg
=
&
roller_bg
;
theme
.
roller
.
sel
=
&
roller_sel
;
...
...
@@ -665,8 +593,8 @@ static void tabview_init(void)
{
#if USE_LV_TABVIEW != 0
lv_style_copy
(
&
tab_rel
,
&
def
);
tab_rel
.
body
.
color_main
=
COLOR_HEX3
(
0x666
);
tab_rel
.
body
.
color_gradient
=
COLOR_HEX3
(
0x666
);
tab_rel
.
body
.
main_color
=
COLOR_HEX3
(
0x666
);
tab_rel
.
body
.
gradient_color
=
COLOR_HEX3
(
0x666
);
tab_rel
.
body
.
padding
.
hor
=
0
;
tab_rel
.
body
.
padding
.
ver
=
0
;
tab_rel
.
body
.
padding
.
inner
=
0
;
...
...
@@ -674,11 +602,11 @@ static void tabview_init(void)
tab_rel
.
body
.
border
.
color
=
COLOR_SILVER
;
tab_rel
.
body
.
border
.
opa
=
OPA_40
;
tab_rel
.
text
.
color
=
COLOR_HEX3
(
0xDDD
);
tab_rel
.
text
.
font
=
_font
_sm
;
tab_rel
.
text
.
font
=
_font
;
lv_style_copy
(
&
tab_pr
,
&
tab_rel
);
tab_pr
.
body
.
color_main
=
COLOR_HEX3
(
0x444
);
tab_pr
.
body
.
color_gradient
=
COLOR_HEX3
(
0x444
);
tab_pr
.
body
.
main_color
=
COLOR_HEX3
(
0x444
);
tab_pr
.
body
.
gradient_color
=
COLOR_HEX3
(
0x444
);
lv_style_copy
(
&
tab_trel
,
&
def
);
tab_trel
.
body
.
empty
=
1
;
...
...
@@ -689,11 +617,11 @@ static void tabview_init(void)
tab_trel
.
body
.
border
.
color
=
COLOR_SILVER
;
tab_trel
.
body
.
border
.
opa
=
OPA_40
;
tab_trel
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
94
);
tab_trel
.
text
.
font
=
_font
_md
;
tab_trel
.
text
.
font
=
_font
;
lv_style_copy
(
&
tab_tpr
,
&
def
);
tab_tpr
.
body
.
color_main
=
COLOR_GRAY
;
tab_tpr
.
body
.
color_gradient
=
COLOR_GRAY
;
tab_tpr
.
body
.
main_color
=
COLOR_GRAY
;
tab_tpr
.
body
.
gradient_color
=
COLOR_GRAY
;
tab_tpr
.
body
.
padding
.
hor
=
0
;
tab_tpr
.
body
.
padding
.
ver
=
0
;
tab_tpr
.
body
.
padding
.
inner
=
0
;
...
...
@@ -701,12 +629,12 @@ static void tabview_init(void)
tab_tpr
.
body
.
border
.
color
=
COLOR_SILVER
;
tab_tpr
.
body
.
border
.
opa
=
OPA_40
;
tab_tpr
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
10
,
94
);
tab_tpr
.
text
.
font
=
_font
_md
;
tab_tpr
.
text
.
font
=
_font
;
lv_style_copy
(
&
tab_indic
,
&
def
);
tab_indic
.
body
.
border
.
width
=
0
;
tab_indic
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
80
,
87
);
tab_indic
.
body
.
color_gradient
=
color_hsv_to_rgb
(
_hue
,
80
,
87
);
tab_indic
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
80
,
87
);
tab_indic
.
body
.
gradient_color
=
color_hsv_to_rgb
(
_hue
,
80
,
87
);
tab_indic
.
body
.
padding
.
inner
=
LV_DPI
/
10
;
/*Indicator height*/
theme
.
tabview
.
bg
=
&
bg
;
...
...
@@ -719,27 +647,27 @@ static void tabview_init(void)
#endif
}
static
void
win_init
(
void
)
{
#if USE_LV_WIN != 0
lv_style_copy
(
&
win_header
,
&
def
);
win_header
.
body
.
radius
=
panel
.
body
.
radius
;
win_header
.
body
.
radius
=
0
;
win_header
.
body
.
padding
.
hor
=
LV_DPI
/
12
;
win_header
.
body
.
padding
.
ver
=
LV_DPI
/
12
;
win_header
.
body
.
color_main
=
color_hsv_to_rgb
(
_hue
,
20
,
50
);
win_header
.
body
.
color_gradient
=
win_header
.
body
.
color_main
;
win_header
.
body
.
padding
.
ver
=
LV_DPI
/
20
;
win_header
.
body
.
main_color
=
color_hsv_to_rgb
(
_hue
,
20
,
50
);
win_header
.
body
.
gradient_color
=
win_header
.
body
.
main_color
;
win_header
.
body
.
border
.
opa
=
panel
.
body
.
border
.
opa
;
win_header
.
body
.
border
.
width
=
panel
.
body
.
border
.
width
;
win_header
.
body
.
border
.
color
=
color_hsv_to_rgb
(
_hue
,
20
,
80
);
win_header
.
body
.
border
.
part
=
LV_BORDER_BOTTOM
;
win_header
.
text
.
color
=
color_hsv_to_rgb
(
_hue
,
5
,
100
);
theme
.
win
.
bg
=
&
panel
;
theme
.
win
.
sb
=
&
sb
;
theme
.
win
.
header
=
&
win_header
;
theme
.
win
.
content
=
&
lv_style_transp
;
theme
.
win
.
btn
.
rel
=
&
btn_
sm_
rel
;
theme
.
win
.
btn
.
pr
=
&
btn_
sm_
pr
;
theme
.
win
.
btn
.
rel
=
&
btn_rel
;
theme
.
win
.
btn
.
pr
=
&
btn_pr
;
#endif
}
...
...
@@ -748,23 +676,17 @@ static void win_init(void)
**********************/
/**
* Initalize the alien theme
* Init
i
alize the alien theme
* @param hue [0..360] hue value from HSV color space to define the theme's base color
* @param font_sm pointer to a small font (NULL to use the default)
* @param font_md pointer to a medium font (NULL to use the default)
* @param font_lg pointer to a large font (NULL to use the default)
* @param font pointer to a font (NULL to use the default)
* @return pointer to the initialized theme
*/
void
lv_theme_alien_init
(
uint16_t
hue
,
font_t
*
font_sm
,
font_t
*
font_md
,
font_t
*
font_lg
)
lv_theme_t
*
lv_theme_alien_init
(
uint16_t
hue
,
font_t
*
font
)
{
if
(
font_sm
==
NULL
)
font_sm
=
FONT_DEFAULT
;
if
(
font_md
==
NULL
)
font_md
=
FONT_DEFAULT
;
if
(
font_lg
==
NULL
)
font_lg
=
FONT_DEFAULT
;
if
(
font
==
NULL
)
font
=
FONT_DEFAULT
;
_hue
=
hue
;
_font_sm
=
font_sm
;
_font_md
=
font_md
;
_font_lg
=
font_lg
;
_font
=
font
;
/*For backward compatibility initialize all theme elements with a default style */
uint16_t
i
;
...
...
@@ -797,6 +719,8 @@ void lv_theme_alien_init(uint16_t hue, font_t *font_sm, font_t *font_md, font_t
roller_init
();
tabview_init
();
win_init
();
return
&
theme
;
}
/**
...
...
lv_themes/lv_theme_alien.h
View file @
63d54b02
...
...
@@ -28,15 +28,14 @@ extern "C" {
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Initalize the alien theme
* Init
i
alize the alien theme
* @param hue [0..360] hue value from HSV color space to define the theme's base color
* @param font_sm pointer to a small font (NULL to use the default)
* @param font_md pointer to a medium font (NULL to use the default)
* @param font_lg pointer to a large font (NULL to use the default)
* @param font pointer to a font (NULL to use the default)
* @return pointer to the initialized theme
*/
void
lv_theme_alien_init
(
uint16_t
hue
,
font_t
*
font_sm
,
font_t
*
font_md
,
font_t
*
font_lg
);
lv_theme_t
*
lv_theme_alien_init
(
uint16_t
hue
,
font_t
*
font
);
/**
* Get a pointer to the theme
* @return pointer to the theme
...
...
lv_themes/lv_theme_templ.c
0 → 100644
View file @
63d54b02
/**
* @file lv_theme_alien.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lvgl/lvgl.h"
#include "lv_theme.h"
#include "lv_conf.h"
#if USE_LV_THEME_ALIEN
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
static
lv_theme_t
theme
;
static
lv_style_t
def
;
/*Static style definitions*/
/*Saved input parameters*/
static
uint16_t
_hue
;
static
font_t
*
_font
;
/**********************
* MACROS
**********************/
/**********************
* STATIC FUNCTIONS
**********************/
static
void
basic_init
(
void
)
{
lv_style_copy
(
&
def
,
&
lv_style_pretty
);
/*Initialize the default style*/
theme
.
bg
=
&
def
;
theme
.
panel
=
&
def
;
}
static
void
btn_init
(
void
)
{
#if USE_LV_BTN != 0
theme
.
btn
.
rel
=
&
def
;
theme
.
btn
.
pr
=
&
def
;
theme
.
btn
.
tgl_rel
=
&
def
;
theme
.
btn
.
tgl_pr
=
&
def
;
theme
.
btn
.
ina
=
&
def
;
#endif
}
static
void
label_init
(
void
)
{
#if USE_LV_LABEL != 0
theme
.
label
.
prim
=
&
def
;
theme
.
label
.
sec
=
&
def
;
theme
.
label
.
hint
=
&
def
;
#endif
}
static
void
bar_init
(
void
)
{
#if USE_LV_BAR
theme
.
bar
.
bg
=
&
def
;
theme
.
bar
.
indic
=
&
def
;
#endif
}
static
void
img_init
(
void
)
{
#if USE_LV_IMG != 0
theme
.
img
.
light
=
&
def
;
theme
.
img
.
dark
=
&
def
;
#endif
}
static
void
line_init
(
void
)
{
#if USE_LV_LINE != 0
theme
.
line
.
decor
=
&
def
;
#endif
}
static
void
led_init
(
void
)
{
#if USE_LV_LED != 0
theme
.
led
=
&
def
;
#endif
}
static
void
slider_init
(
void
)
{
#if USE_LV_SLIDER != 0
theme
.
slider
.
bg
=
&
def
;
theme
.
slider
.
indic
=
&
def
;
theme
.
slider
.
knob
=
&
def
;
#endif
}
static
void
sw_init
(
void
)
{
#if USE_LV_SW != 0
theme
.
sw
.
bg
=
&
def
;
theme
.
sw
.
indic
=
&
def
;
theme
.
sw
.
knob_off
=
&
def
;
theme
.
sw
.
knob_on
=
&
def
;
#endif
}
static
void
lmeter_init
(
void
)
{
#if USE_LV_LMETER != 0
theme
.
lmeter
=
&
def
;
#endif
}
static
void
gauge_init
(
void
)
{
#if USE_LV_GAUGE != 0
theme
.
gauge
=
&
def
;
#endif
}
static
void
chart_init
(
void
)
{
#if USE_LV_CHART
theme
.
chart
=
&
def
;
#endif
}
static
void
cb_init
(
void
)
{
#if USE_LV_CB != 0
theme
.
cb
.
bg
=
&
def
;
theme
.
cb
.
box
.
rel
=
&
def
;
theme
.
cb
.
box
.
pr
=
&
def
;
theme
.
cb
.
box
.
tgl_rel
=
&
def
;
theme
.
cb
.
box
.
tgl_pr
=
&
def
;
theme
.
cb
.
box
.
ina
=
&
def
;
#endif
}
static
void
btnm_init
(
void
)
{
#if USE_LV_BTNM
theme
.
btnm
.
bg
=
&
def
;
theme
.
btnm
.
btn
.
rel
=
&
def
;
theme
.
btnm
.
btn
.
pr
=
&
def
;
theme
.
btnm
.
btn
.
tgl_rel
=
&
def
;
theme
.
btnm
.
btn
.
tgl_pr
=
&
def
;
theme
.
btnm
.
btn
.
ina
=
&
def
;
#endif
}
static
void
kb_init
(
void
)
{
#if USE_LV_KB
theme
.
kb
.
bg
=
&
def
;
theme
.
kb
.
btn
.
rel
=
&
def
;
theme
.
kb
.
btn
.
pr
=
&
def
;
theme
.
kb
.
btn
.
tgl_rel
=
&
def
;
theme
.
kb
.
btn
.
tgl_pr
=
&
def
;
theme
.
kb
.
btn
.
ina
=
&
def
;
#endif
}
static
void
mbox_init
(
void
)
{
#if USE_LV_MBOX
theme
.
mbox
.
bg
=
&
def
;
theme
.
mbox
.
btn
.
bg
=
&
def
;
theme
.
mbox
.
btn
.
rel
=
&
def
;
theme
.
mbox
.
btn
.
pr
=
&
def
;
#endif
}
static
void
page_init
(
void
)
{
#if USE_LV_PAGE
theme
.
page
.
bg
=
&
def
;
theme
.
page
.
scrl
=
&
def
;
theme
.
page
.
sb
=
&
def
;
#endif
}
static
void
ta_init
(
void
)
{
#if USE_LV_TA
theme
.
ta
.
area
=
&
def
;
theme
.
ta
.
oneline
=
&
def
;
theme
.
ta
.
sb
=
&
def
;
#endif
}
static
void
list_init
(
void
)
{
#if USE_LV_LIST != 0
theme
.
list
.
sb
=
&
def
;
theme
.
list
.
bg
=
&
def
;
theme
.
list
.
scrl
=
&
def
;
theme
.
list
.
btn
.
rel
=
&
def
;
theme
.
list
.
btn
.
pr
=
&
def
;
theme
.
list
.
btn
.
tgl_rel
=
&
def
;
theme
.
list
.
btn
.
tgl_pr
=
&
def
;
theme
.
list
.
btn
.
ina
=
&
def
;
#endif
}
static
void
ddlist_init
(
void
)
{
#if USE_LV_DDLIST != 0
theme
.
ddlist
.
bg
=
&
def
;
theme
.
ddlist
.
sel
=
&
def
;
theme
.
ddlist
.
sb
=
&
def
;
#endif
}
static
void
roller_init
(
void
)
{
#if USE_LV_ROLLER != 0
theme
.
roller
.
bg
=
&
def
;
theme
.
roller
.
sel
=
&
def
;
#endif
}
static
void
tabview_init
(
void
)
{
#if USE_LV_TABVIEW != 0
theme
.
tabview
.
bg
=
&
def
;
theme
.
tabview
.
indic
=
&
def
;
theme
.
tabview
.
btn
.
bg
=
&
def
;
theme
.
tabview
.
btn
.
rel
=
&
def
;
theme
.
tabview
.
btn
.
pr
=
&
def
;
theme
.
tabview
.
btn
.
tgl_rel
=
&
def
;
theme
.
tabview
.
btn
.
tgl_pr
=
&
def
;
#endif
}
static
void
win_init
(
void
)
{
#if USE_LV_WIN != 0
theme
.
win
.
bg
=
&
def
;
theme
.
win
.
sb
=
&
def
;
theme
.
win
.
header
=
&
def
;
theme
.
win
.
content
=
&
def
;
theme
.
win
.
btn
.
rel
=
&
def
;
theme
.
win
.
btn
.
pr
=
&
def
;
#endif
}
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the alien theme
* @param hue [0..360] hue value from HSV color space to define the theme's base color
* @param font pointer to a font (NULL to use the default)
* @return pointer to the initialized theme
*/
lv_theme_t
*
lv_theme_templ_init
(
uint16_t
hue
,
font_t
*
font
)
{
if
(
font
==
NULL
)
font
=
FONT_DEFAULT
;
_hue
=
hue
;
_font
=
font
;
/*For backward compatibility initialize all theme elements with a default style */
uint16_t
i
;
lv_style_t
**
style_p
=
(
lv_style_t
**
)
&
theme
;
for
(
i
=
0
;
i
<
sizeof
(
lv_theme_t
)
/
sizeof
(
lv_style_t
*
);
i
++
)
{
*
style_p
=
&
def
;
style_p
++
;
}
basic_init
();
btn_init
();
label_init
();
bar_init
();
img_init
();
line_init
();
led_init
();
slider_init
();
sw_init
();
lmeter_init
();
gauge_init
();
chart_init
();
cb_init
();
btnm_init
();
kb_init
();
mbox_init
();
page_init
();
ta_init
();
list_init
();
ddlist_init
();
roller_init
();
tabview_init
();
win_init
();
return
&
theme
;
}
/**
* Get a pointer to the theme
* @return pointer to the theme
*/
lv_theme_t
*
lv_theme_get_templ
(
void
)
{
return
&
theme
;
}
/**********************
* STATIC FUNCTIONS
**********************/
#endif
lv_themes/lv_theme_templ.h
0 → 100644
View file @
63d54b02
/**
* @file lv_theme_alien.h
*
*/
#ifndef LV_THEME_TEMPL_H
#define LV_THEME_TEMPL_H
#ifdef __cplusplus
extern
"C"
{
#endif
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_THEME_TEMPL
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Initialize the alien theme
* @param hue [0..360] hue value from HSV color space to define the theme's base color
* @param font pointer to a font (NULL to use the default)
* @return pointer to the initialized theme
*/
lv_theme_t
*
lv_theme_templ_init
(
uint16_t
hue
,
font_t
*
font
);
/**
* Get a pointer to the theme
* @return pointer to the theme
*/
lv_theme_t
*
lv_theme_get_templ
(
void
);
/**********************
* MACROS
**********************/
#endif
#ifdef __cplusplus
}
/* extern "C" */
#endif
#endif
/*LV_THEME_TEMPL_H*/
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