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
5b7559ea
Commit
5b7559ea
authored
Mar 20, 2017
by
Gabor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Further draw speed optimizations
parent
7f49404d
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
91 additions
and
35 deletions
+91
-35
lv_app.c
lv_app/lv_app.c
+67
-22
lv_draw_vbasic.c
lv_draw/lv_draw_vbasic.c
+12
-5
lv_refr.c
lv_obj/lv_refr.c
+8
-2
lv_ddlist.c
lv_objx/lv_ddlist.c
+4
-3
lv_rect.c
lv_objx/lv_rect.c
+0
-3
No files found.
lv_app/lv_app.c
View file @
5b7559ea
...
...
@@ -10,17 +10,19 @@
#if LV_APP_ENABLE != 0
#include <stdio.h>
#include "lvgl/lv_misc/anim.h"
#include "lvgl/lv_obj/lv_refr.h"
#include "lv_app_util/lv_app_kb.h"
#include "lv_app_util/lv_app_notice.h"
#include "lv_app_util/lv_app_fsel.h"
#include "lvgl/lv_misc/anim.h"
#include "../lv_appx/lv_app_example.h"
#include "../lv_appx/lv_app_sysmon.h"
#include "../lv_appx/lv_app_terminal.h"
#include "../lv_appx/lv_app_files.h"
#include "../lv_appx/lv_app_visual.h"
/*********************
* DEFINES
...
...
@@ -75,7 +77,7 @@ static lv_obj_t * app_list; /*A list which is opened on 'app_btn' release*/
static
lv_obj_t
*
sc_page
;
/*A page for the shortcuts */
static
lv_app_inst_t
*
con_send
;
/*The sender application in connection mode. Not NLL means connection mode is active*/
static
lv_app_style_t
app_style
;
/*Styles for application related things*/
static
lv_wins_t
wins_
no_sb
;
/*Used when the window is animated. (Do not use scrollbar during the anim.)*/
static
lv_wins_t
wins_
anim
;
/*Used when the window is animated. (Do not use scrollbar during the anim.)*/
/*Declare icons*/
#if USE_IMG_CLOSE != 0
LV_IMG_DECLARE
(
img_close
);
...
...
@@ -254,7 +256,7 @@ lv_obj_t * lv_app_sc_open(lv_app_inst_t * app)
#if LV_APP_EFFECT_ANIM != 0
lv_label_set_long_mode
(
app
->
sc_title
,
LV_LABEL_LONG_SCROLL
);
#else
lv_obj_set_size
(
app
->
sc_title
,
LV_APP_SC_WIDTH
,
font_get_height
(
font_get
(
app_style
.
sc_title_style
.
font
)));
lv_obj_set_size
(
app
->
sc_title
,
LV_APP_SC_WIDTH
,
font_get_height
(
font_get
(
app_style
.
sc_title_style
.
font
))
>>
LV_FONT_ANTIALIAS
);
lv_label_set_long_mode
(
app
->
sc_title
,
LV_LABEL_LONG_DOTS
);
#endif
lv_label_set_text
(
app
->
sc_title
,
app
->
name
);
...
...
@@ -799,14 +801,24 @@ static lv_action_res_t lv_app_win_close_action(lv_obj_t * close_btn, lv_dispi_t
lv_app_kb_close
(
false
);
#if LV_APP_EFFECT_ANIM != 0 && LV_APP_EFFECT_OPA != 0 && LV_APP_ANIM_WIN != 0
/*Temporally set no scrollbar style for the window*/
memcpy
(
&
wins_no_sb
,
lv_obj_get_style
(
app
->
win
),
sizeof
(
lv_wins_t
));
wins_no_sb
.
pages
.
sb_mode
=
LV_PAGE_SB_MODE_OFF
;
lv_obj_set_style
(
app
->
win
,
&
wins_no_sb
);
/*Temporally set a simpler style for the window during the animation*/
memcpy
(
&
wins_anim
,
lv_obj_get_style
(
app
->
win
),
sizeof
(
lv_wins_t
));
wins_anim
.
pages
.
sb_mode
=
LV_PAGE_SB_MODE_OFF
;
/*Mix a new color for the header instead of using opacity */
wins_anim
.
header_opa
=
OPA_COVER
;
wins_anim
.
header
.
gcolor
=
color_mix
(
wins_anim
.
header
.
gcolor
,
app_style
.
win_style
.
pages
.
bg_rects
.
gcolor
,
app_style
.
win_style
.
header_opa
);
wins_anim
.
header
.
objs
.
color
=
color_mix
(
wins_anim
.
header
.
objs
.
color
,
app_style
.
win_style
.
pages
.
bg_rects
.
objs
.
color
,
app_style
.
win_style
.
header_opa
);
lv_obj_set_style
(
app
->
win
,
&
wins_anim
);
/*Hide
the control buttons and the title during
the animation*/
/*Hide
some elements to speed up
the animation*/
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
ctrl_holder
,
true
);
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
title
,
true
);
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
page
.
scrl
,
true
);
lv_obj_anim
(
app
->
win
,
LV_ANIM_FLOAT_BOTTOM
|
ANIM_OUT
,
LV_APP_ANIM_WIN
,
0
,
NULL
);
lv_obj_anim
(
app
->
win
,
LV_ANIM_FLOAT_LEFT
|
ANIM_OUT
,
LV_APP_ANIM_WIN
,
0
,
lv_app_win_close_anim_cb
);
...
...
@@ -898,14 +910,24 @@ static lv_action_res_t lv_app_win_open_anim_create(lv_app_inst_t * app)
lv_obj_get_cords
(
app
->
sc
,
&
cords
);
}
/*Temporally set no scrollbar style for the window*/
memcpy
(
&
wins_no_sb
,
lv_obj_get_style
(
app
->
win
),
sizeof
(
lv_wins_t
));
wins_no_sb
.
pages
.
sb_mode
=
LV_PAGE_SB_MODE_OFF
;
lv_obj_set_style
(
app
->
win
,
&
wins_no_sb
);
/*Temporally set a simpler style for the window during the animation*/
memcpy
(
&
wins_anim
,
lv_obj_get_style
(
app
->
win
),
sizeof
(
lv_wins_t
));
wins_anim
.
pages
.
sb_mode
=
LV_PAGE_SB_MODE_OFF
;
/*Mix a new color for the header instead of using opacity */
wins_anim
.
header_opa
=
OPA_COVER
;
wins_anim
.
header
.
gcolor
=
color_mix
(
wins_anim
.
header
.
gcolor
,
app_style
.
win_style
.
pages
.
bg_rects
.
gcolor
,
app_style
.
win_style
.
header_opa
);
wins_anim
.
header
.
objs
.
color
=
color_mix
(
wins_anim
.
header
.
objs
.
color
,
app_style
.
win_style
.
pages
.
bg_rects
.
objs
.
color
,
app_style
.
win_style
.
header_opa
);
lv_obj_set_style
(
app
->
win
,
&
wins_anim
);
/*Hide
the control buttons and the title during
the animation*/
/*Hide
some elements to speed up
the animation*/
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
ctrl_holder
,
true
);
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
title
,
true
);
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
page
.
scrl
,
true
);
anim_t
a
;
a
.
act_time
=
0
;
...
...
@@ -939,6 +961,14 @@ static lv_action_res_t lv_app_win_open_anim_create(lv_app_inst_t * app)
#endif
/*LV_APP_EFFECT_ANIM != 0 && LV_APP_ANIM_WIN != 0*/
/* Now a screen sized window is created but is is resized by the animations.
* Therefore the whole screen invalidated but only a small part is changed.
* So clear the invalidate buffer an refresh only the real area.
* Independently other parts on the screen might be changed
* but they will be covered by the window after the animations*/
lv_inv_area
(
NULL
);
lv_inv_area
(
&
cords
);
return
LV_ACTION_RES_OK
;
}
...
...
@@ -959,15 +989,25 @@ static lv_action_res_t lv_app_win_minim_anim_create(lv_app_inst_t * app)
}
else
{
lv_obj_get_cords
(
app
->
sc
,
&
cords
);
}
/*Temporally set no scrollbar style for the window*/
memcpy
(
&
wins_no_sb
,
lv_obj_get_style
(
app
->
win
),
sizeof
(
lv_wins_t
));
wins_no_sb
.
pages
.
sb_mode
=
LV_PAGE_SB_MODE_OFF
;
lv_obj_set_style
(
app
->
win
,
&
wins_no_sb
);
/*Hide the control buttons and the title during the animation*/
/*Temporally set a simpler style for the window during the animation*/
memcpy
(
&
wins_anim
,
lv_obj_get_style
(
app
->
win
),
sizeof
(
lv_wins_t
));
wins_anim
.
pages
.
sb_mode
=
LV_PAGE_SB_MODE_OFF
;
/*Mix a new color for the header instead of using opacity */
wins_anim
.
header_opa
=
OPA_COVER
;
wins_anim
.
header
.
gcolor
=
color_mix
(
wins_anim
.
header
.
gcolor
,
app_style
.
win_style
.
pages
.
bg_rects
.
gcolor
,
app_style
.
win_style
.
header_opa
);
wins_anim
.
header
.
objs
.
color
=
color_mix
(
wins_anim
.
header
.
objs
.
color
,
app_style
.
win_style
.
pages
.
bg_rects
.
objs
.
color
,
app_style
.
win_style
.
header_opa
);
lv_obj_set_style
(
app
->
win
,
&
wins_anim
);
/*Hide some elements to speed up the animation*/
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
ctrl_holder
,
true
);
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
title
,
true
);
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app
->
win
->
ext
)
->
page
.
scrl
,
true
);
anim_t
a
;
a
.
act_time
=
0
;
...
...
@@ -1016,9 +1056,10 @@ static lv_action_res_t lv_app_win_minim_anim_create(lv_app_inst_t * app)
*/
static
void
lv_app_win_open_anim_cb
(
lv_obj_t
*
app_win
)
{
/*Unhide the t
itle and the ctrl btn holder
*/
/*Unhide the t
he elements
*/
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app_win
->
ext
)
->
ctrl_holder
,
false
);
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app_win
->
ext
)
->
title
,
false
);
lv_obj_set_hidden
(((
lv_win_ext_t
*
)
app_win
->
ext
)
->
page
.
scrl
,
false
);
/*Restore the style*/
lv_obj_set_style
(
app_win
,
&
app_style
.
win_style
);
...
...
@@ -1065,7 +1106,11 @@ static void lv_app_init_style(void)
#else
app_style
.
menu_opa
=
OPA_80
;
app_style
.
menu_btn_opa
=
OPA_50
;
app_style
.
sc_opa
=
OPA_80
;
app_style
.
sc_opa
=
OPA_70
;
// app_style.menu_opa = OPA_COVER;
// app_style.menu_btn_opa = OPA_COVER;
// app_style.sc_opa = OPA_COVER;
#endif
/*Menu style*/
...
...
@@ -1176,7 +1221,7 @@ static void lv_app_init_style(void)
memcpy
(
&
app_style
.
win_style
.
title
,
&
app_style
.
menu_btn_label_style
,
sizeof
(
lv_labels_t
));
memcpy
(
&
app_style
.
win_style
.
ctrl_btn
,
&
app_style
.
menu_btn_style
,
sizeof
(
lv_btns_t
));
memcpy
(
&
app_style
.
win_style
.
ctrl_img
,
&
app_style
.
menu_btn_img_style
,
sizeof
(
lv_imgs_t
));
app_style
.
win_style
.
header_opa
=
OPA_COVER
;
//
app_style.menu_opa;
app_style
.
win_style
.
header_opa
=
app_style
.
menu_opa
;
app_style
.
win_style
.
ctrl_btn_opa
=
app_style
.
menu_btn_opa
;
app_style
.
win_style
.
header
.
vpad
=
5
*
LV_DOWNSCALE
;
app_style
.
win_style
.
header
.
hpad
=
5
*
LV_DOWNSCALE
;
...
...
lv_draw/lv_draw_vbasic.c
View file @
5b7559ea
...
...
@@ -385,12 +385,19 @@ void lv_vmap(const area_t * cords_p, const area_t * mask_p,
color_t
prev_color
=
COLOR_BLACK
;
cord_t
map_col
;
/*The most simple case (but upscale): o opacity, no recolor, no transp. pixels*/
if
(
transp
==
false
&&
opa
==
OPA_COVER
&&
recolor_opa
==
OPA_TRANSP
)
{
/*The most simple case (but upscale): 0 opacity, no recolor, no transp. pixels*/
if
(
transp
==
false
&&
opa
==
OPA_COVER
&&
recolor_opa
==
OPA_TRANSP
)
{
cord_t
map_col_start
=
masked_a
.
x1
>>
1
;
cord_t
map_col_end
=
masked_a
.
x2
>>
1
;
cord_t
map_col
;
cord_t
vdb_col
=
masked_a
.
x1
;
for
(
row
=
masked_a
.
y1
;
row
<=
masked_a
.
y2
;
row
++
)
{
for
(
col
=
masked_a
.
x1
;
col
<=
masked_a
.
x2
;
col
++
)
{
map_col
=
col
>>
1
;
vdb_buf_tmp
[
col
].
full
=
map_p
[
map_col
].
full
;
map_col_start
=
masked_a
.
x1
>>
1
;
map_col_end
=
masked_a
.
x2
>>
1
;
vdb_col
=
masked_a
.
x1
;
for
(
map_col
=
map_col_start
;
map_col
<=
map_col_end
;
map_col
++
,
vdb_col
+=
2
)
{
vdb_buf_tmp
[
vdb_col
].
full
=
map_p
[
map_col
].
full
;
vdb_buf_tmp
[
vdb_col
+
1
].
full
=
map_p
[
map_col
].
full
;
}
if
((
row
&
0x1
)
!=
0
)
map_p
+=
map_width
;
/*Next row on the map*/
vdb_buf_tmp
+=
vdb_width
;
/*Next row on the VDB*/
...
...
lv_obj/lv_refr.c
View file @
5b7559ea
...
...
@@ -45,8 +45,8 @@ static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p);
/**********************
* STATIC VARIABLES
**********************/
lv_join_t
inv_buf
[
LV_INV_FIFO_SIZE
];
uint16_t
inv_buf_p
;
static
lv_join_t
inv_buf
[
LV_INV_FIFO_SIZE
];
static
uint16_t
inv_buf_p
;
/**********************
* MACROS
...
...
@@ -76,6 +76,12 @@ void lv_refr_init(void)
*/
void
lv_inv_area
(
const
area_t
*
area_p
)
{
/*Clear the invalidate buffer if the parameter is NULL*/
if
(
area_p
==
NULL
)
{
inv_buf_p
=
0
;
return
;
}
area_t
scr_area
;
scr_area
.
x1
=
0
;
scr_area
.
y1
=
0
;
...
...
lv_objx/lv_ddlist.c
View file @
5b7559ea
...
...
@@ -314,7 +314,7 @@ static bool lv_ddlist_design(lv_obj_t * ddlist, const area_t * mask, lv_design_m
cord_t
font_h
=
font_get_height
(
font
)
>>
LV_FONT_ANTIALIAS
;
area_t
rect_area
;
rect_area
.
y1
=
ext
->
opt_label
->
cords
.
y1
;
rect_area
.
y1
+=
ext
->
sel_opt
*
font_h
+
style
->
list_labels
.
line_space
;
rect_area
.
y1
+=
ext
->
sel_opt
*
(
font_h
+
style
->
list_labels
.
line_space
)
;
rect_area
.
y1
-=
style
->
sel_rects
.
vpad
;
rect_area
.
y2
=
rect_area
.
y1
+
font_h
+
2
*
style
->
sel_rects
.
vpad
;
...
...
@@ -434,9 +434,10 @@ static void lv_ddlist_pos_act_option(lv_obj_t * ddlist)
lv_ddlist_ext_t
*
ext
=
lv_obj_get_ext
(
ddlist
);
lv_ddlists_t
*
style
=
lv_obj_get_style
(
ddlist
);
const
font_t
*
font
=
font_get
(
style
->
list_labels
.
font
);
cord_t
font_h
=
font_get_height
(
font
)
>>
LV_FONT_ANTIALIAS
;
lv_obj_set_y
(
lv_page_get_scrl
(
ddlist
),
-
(
ext
->
sel_opt
*
(
font_
get_height
(
font
)
+
style
->
list_labels
.
line_space
)
+
-
(
ext
->
sel_opt
*
(
font_
h
+
style
->
list_labels
.
line_space
)
+
style
->
pages
.
scrl_rects
.
vpad
)
+
style
->
sel_rects
.
vpad
);
}
...
...
lv_objx/lv_rect.c
View file @
5b7559ea
...
...
@@ -342,9 +342,6 @@ static void lv_rect_draw_light(lv_obj_t * rect, const area_t * mask)
memcpy
(
&
light_style
,
style
,
sizeof
(
lv_rects_t
));
light_style
.
empty
=
1
;
light_style
.
bwidth
=
light_size
;
light_style
.
round
=
style
->
round
;
...
...
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