mirror of
https://github.com/lvgl/lvgl.git
synced 2025-02-04 07:13:00 +08:00
Merge branch 'master' into dev
This commit is contained in:
commit
6932b6c1da
12
CHANGELOG.md
12
CHANGELOG.md
@ -1,16 +1,16 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## v7.4.0 (planned on 01.09.2020)
|
## v7.4.0 (01.09.2020)
|
||||||
|
|
||||||
|
The main new features of v7.4 are run-time font loading, style caching and arc knob with value setting by click.
|
||||||
|
|
||||||
### New features
|
### New features
|
||||||
- arc: add set value by click feature
|
|
||||||
- arc: add `LV_ARC_PART_KNOB` similarly to slider
|
|
||||||
- send gestures even is the the obejct was dragged. User can check dragging with `lv_indev_is_dragging(lv_indev_act())` in the event function.
|
|
||||||
- Add `lv_font_load()` function - Loads a `lv_font_t` object from a binary font file
|
- Add `lv_font_load()` function - Loads a `lv_font_t` object from a binary font file
|
||||||
- Add `lv_font_free()` function - Frees the memory allocated by the `lv_font_load()` function
|
- Add `lv_font_free()` function - Frees the memory allocated by the `lv_font_load()` function
|
||||||
- Add style caching to reduce acces time of properties with default value
|
- Add style caching to reduce acces time of properties with default value
|
||||||
- Add `clean_dcache_cb` and `lv_disp_clean_dcache` to enable users to use their own cache management function
|
- arc: add set value by click feature
|
||||||
- Add `gpu_wait_cb` to wait until the GPU is working. It allows to run CPU a wait only when the rendered data is needed.
|
- arc: add `LV_ARC_PART_KNOB` similarly to slider
|
||||||
|
- send gestures even is the the obejct was dragged. User can check dragging with `lv_indev_is_dragging(lv_indev_act())` in the event function.
|
||||||
|
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
- Fix color bleeding on border drawing
|
- Fix color bleeding on border drawing
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lvgl",
|
"name": "lvgl",
|
||||||
"version": "7.3.1",
|
"version": "7.4.0",
|
||||||
"keywords": "graphics, gui, embedded, tft, lvgl",
|
"keywords": "graphics, gui, embedded, tft, lvgl",
|
||||||
"description": "Graphics library to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.",
|
"description": "Graphics library to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name=lvgl
|
name=lvgl
|
||||||
version=7.3.1
|
version=7.4.0
|
||||||
author=kisvegabor
|
author=kisvegabor
|
||||||
maintainer=kisvegabor,embeddedt,pete-pjb
|
maintainer=kisvegabor,embeddedt,pete-pjb
|
||||||
sentence=Full-featured Graphics Library for Embedded Systems
|
sentence=Full-featured Graphics Library for Embedded Systems
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @file lv_conf.h
|
* @file lv_conf.h
|
||||||
* Configuration file for v7.6.0-dev-dev
|
* Configuration file for v7.4.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
2
lvgl.h
2
lvgl.h
@ -17,7 +17,7 @@ extern "C" {
|
|||||||
#define LVGL_VERSION_MAJOR 7
|
#define LVGL_VERSION_MAJOR 7
|
||||||
#define LVGL_VERSION_MINOR 4
|
#define LVGL_VERSION_MINOR 4
|
||||||
#define LVGL_VERSION_PATCH 0
|
#define LVGL_VERSION_PATCH 0
|
||||||
#define LVGL_VERSION_INFO "dev"
|
#define LVGL_VERSION_INFO ""
|
||||||
|
|
||||||
/*********************
|
/*********************
|
||||||
* INCLUDES
|
* INCLUDES
|
||||||
|
@ -52,7 +52,7 @@ from os import path
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
upstream_org_url = "https://github.com/kisvegabor/"
|
upstream_org_url = "https://github.com/lvgl/"
|
||||||
workdir = "./release_tmp"
|
workdir = "./release_tmp"
|
||||||
proj_list = [ "lv_sim_eclipse_sdl"]
|
proj_list = [ "lv_sim_eclipse_sdl"]
|
||||||
|
|
||||||
@ -105,10 +105,10 @@ def clone_repos():
|
|||||||
os.chdir(workdir)
|
os.chdir(workdir)
|
||||||
|
|
||||||
#For debuging just copy the repos
|
#For debuging just copy the repos
|
||||||
cmd("cp -a ../repos/. .")
|
#cmd("cp -a ../repos/. .")
|
||||||
return
|
#return
|
||||||
|
|
||||||
cmd("git clone " + upstream("lvgl") + " lvgl; cd lvgl; git checkout master")
|
cmd("git clone " + upstream("lvgl") + "; cd lvgl; git checkout master")
|
||||||
cmd("git clone " + upstream("lv_examples") + "; cd lv_examples; git checkout master")
|
cmd("git clone " + upstream("lv_examples") + "; cd lv_examples; git checkout master")
|
||||||
cmd("git clone " + upstream("lv_drivers") + "; cd lv_drivers; git checkout master")
|
cmd("git clone " + upstream("lv_drivers") + "; cd lv_drivers; git checkout master")
|
||||||
cmd("git clone --recurse-submodules " + upstream("docs") + "; cd docs; git checkout master")
|
cmd("git clone --recurse-submodules " + upstream("docs") + "; cd docs; git checkout master")
|
||||||
@ -305,6 +305,17 @@ def update_release_branches():
|
|||||||
cmd("cd docs; " + merge_cmd)
|
cmd("cd docs; " + merge_cmd)
|
||||||
|
|
||||||
def publish_master():
|
def publish_master():
|
||||||
|
|
||||||
|
#Merge LVGL master to dev first to avoid "merge-to-dev.yml" running asynchronous
|
||||||
|
os.chdir("./lvgl")
|
||||||
|
cmd("git checkout dev")
|
||||||
|
cmd("git merge master -X theirs")
|
||||||
|
cmd("git add .")
|
||||||
|
cmd("git commit -am 'Merge master'")
|
||||||
|
cmd("git push origin dev")
|
||||||
|
cmd("git checkout master")
|
||||||
|
os.chdir("../")
|
||||||
|
|
||||||
pub_cmd = "git push origin master; git push origin " + ver_str
|
pub_cmd = "git push origin master; git push origin " + ver_str
|
||||||
cmd("cd lvgl; " + pub_cmd)
|
cmd("cd lvgl; " + pub_cmd)
|
||||||
cmd("cd lv_examples; " + pub_cmd)
|
cmd("cd lv_examples; " + pub_cmd)
|
||||||
@ -348,7 +359,7 @@ def lvgl_update_master_version():
|
|||||||
templ = fnmatch.filter(os.listdir('.'), '*templ*')
|
templ = fnmatch.filter(os.listdir('.'), '*templ*')
|
||||||
if templ[0]:
|
if templ[0]:
|
||||||
print("Updating version in " + templ[0])
|
print("Updating version in " + templ[0])
|
||||||
cmd("sed -i -r 's/v[0-9]+\.[0-9]+\.[0-9]+/"+ ver_str +"/' " + templ[0])
|
cmd("sed -i -r 's/v[0-9]+\.[0-9]+\.[0-9]+.*/"+ ver_str +"/' " + templ[0])
|
||||||
|
|
||||||
|
|
||||||
cmd("git commit -am 'Update version'")
|
cmd("git commit -am 'Update version'")
|
||||||
@ -381,7 +392,7 @@ def lvgl_update_dev_version():
|
|||||||
templ = fnmatch.filter(os.listdir('.'), '*templ*')
|
templ = fnmatch.filter(os.listdir('.'), '*templ*')
|
||||||
if templ[0]:
|
if templ[0]:
|
||||||
print("Updating version in " + templ[0])
|
print("Updating version in " + templ[0])
|
||||||
cmd("sed -i -r 's/v[0-9]+\.[0-9]+\.[0-9]+/"+ dev_ver_str +"/' " + templ[0])
|
cmd("sed -i -r 's/v[0-9]+\.[0-9]+\.[0-9]+.*/"+ dev_ver_str +"/' " + templ[0])
|
||||||
|
|
||||||
|
|
||||||
cmd("git commit -am 'Update dev version'")
|
cmd("git commit -am 'Update dev version'")
|
||||||
@ -450,23 +461,19 @@ def cleanup():
|
|||||||
cmd("rm -fr " + workdir)
|
cmd("rm -fr " + workdir)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if(len(sys.argv) != 2):
|
|
||||||
print("Argument error. Usage ./release.py bugfix | minor | major")
|
|
||||||
#exit(1)
|
|
||||||
|
|
||||||
#dev_prepare = sys.argv[1]
|
|
||||||
dev_prepare = 'minor'
|
dev_prepare = 'minor'
|
||||||
|
if(len(sys.argv) != 2):
|
||||||
|
print("Missing argument. Usage ./release.py bugfix | minor | major")
|
||||||
|
print("Use minor by deafult")
|
||||||
|
else:
|
||||||
|
dev_prepare = sys.argv[1]
|
||||||
|
|
||||||
if not (dev_prepare in prepare_type):
|
if not (dev_prepare in prepare_type):
|
||||||
print("Invalid argument. Usage ./release.py bugfix | minor | major")
|
print("Invalid argument. Usage ./release.py bugfix | minor | major")
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
clone_repos()
|
clone_repos()
|
||||||
get_lvgl_version("master")
|
get_lvgl_version("master")
|
||||||
|
|
||||||
projs_update()
|
|
||||||
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
lvgl_prepare()
|
lvgl_prepare()
|
||||||
lv_examples_prepare()
|
lv_examples_prepare()
|
||||||
lv_drivers_prepare()
|
lv_drivers_prepare()
|
||||||
|
@ -1047,6 +1047,11 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h" */
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*Rotary (dependencies: lv_arc, lv_btn)*/
|
||||||
|
#ifndef LV_USE_ROTARY
|
||||||
|
#define LV_USE_ROTARY 1
|
||||||
|
#endif
|
||||||
|
|
||||||
/*Slider (dependencies: lv_bar)*/
|
/*Slider (dependencies: lv_bar)*/
|
||||||
#ifndef LV_USE_SLIDER
|
#ifndef LV_USE_SLIDER
|
||||||
#define LV_USE_SLIDER 1
|
#define LV_USE_SLIDER 1
|
||||||
|
@ -572,10 +572,15 @@ static lv_obj_t * lv_refr_get_top_obj(const lv_area_t * area_p, lv_obj_t * obj)
|
|||||||
|
|
||||||
/*If this object is fully cover the draw area check the children too */
|
/*If this object is fully cover the draw area check the children too */
|
||||||
if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) {
|
if(_lv_area_is_in(area_p, &obj->coords, 0) && obj->hidden == 0) {
|
||||||
lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p,
|
lv_design_res_t design_res = obj->design_cb(obj, area_p, LV_DESIGN_COVER_CHK);
|
||||||
LV_DESIGN_COVER_CHK) : LV_DESIGN_RES_NOT_COVER;
|
|
||||||
if(design_res == LV_DESIGN_RES_MASKED) return NULL;
|
if(design_res == LV_DESIGN_RES_MASKED) return NULL;
|
||||||
|
|
||||||
|
#if LV_USE_OPA_SCALE
|
||||||
|
if(design_res == LV_DESIGN_RES_COVER && lv_obj_get_style_opa_scale(obj, LV_OBJ_PART_MAIN) != LV_OPA_COVER) {
|
||||||
|
design_res = LV_DESIGN_RES_NOT_COVER;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
lv_obj_t * i;
|
lv_obj_t * i;
|
||||||
_LV_LL_READ(obj->child_ll, i) {
|
_LV_LL_READ(obj->child_ll, i) {
|
||||||
found_p = lv_refr_get_top_obj(area_p, i);
|
found_p = lv_refr_get_top_obj(area_p, i);
|
||||||
|
@ -400,7 +400,36 @@ void lv_arc_set_value(lv_obj_t * arc, int16_t value)
|
|||||||
if(ext->cur_value == new_value) return;
|
if(ext->cur_value == new_value) return;
|
||||||
ext->cur_value = new_value;
|
ext->cur_value = new_value;
|
||||||
|
|
||||||
value_update(arc);
|
int16_t bg_midpoint, range_midpoint, bg_end = ext->bg_angle_end;
|
||||||
|
if(ext->bg_angle_end < ext->bg_angle_start) bg_end = ext->bg_angle_end + 360;
|
||||||
|
|
||||||
|
int16_t angle;
|
||||||
|
switch(ext->type) {
|
||||||
|
case LV_ARC_TYPE_SYMMETRIC:
|
||||||
|
bg_midpoint = (ext->bg_angle_start + bg_end) / 2;
|
||||||
|
range_midpoint = (int32_t)(ext->min_value + ext->max_value) / 2;
|
||||||
|
|
||||||
|
if(ext->cur_value < range_midpoint) {
|
||||||
|
angle = _lv_map(ext->cur_value, ext->min_value, range_midpoint, ext->bg_angle_start, bg_midpoint);
|
||||||
|
lv_arc_set_start_angle(arc, angle);
|
||||||
|
lv_arc_set_end_angle(arc, bg_midpoint);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
angle = _lv_map(ext->cur_value, range_midpoint, ext->max_value, bg_midpoint, bg_end);
|
||||||
|
lv_arc_set_start_angle(arc, bg_midpoint);
|
||||||
|
lv_arc_set_end_angle(arc, angle);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LV_ARC_TYPE_REVERSE:
|
||||||
|
angle = _lv_map(ext->cur_value, ext->min_value, ext->max_value, ext->bg_angle_start, bg_end);
|
||||||
|
lv_arc_set_start_angle(arc, angle);
|
||||||
|
break;
|
||||||
|
default: /** LV_ARC_TYPE_NORMAL*/
|
||||||
|
angle = _lv_map(ext->cur_value, ext->min_value, ext->max_value, ext->bg_angle_start, bg_end);
|
||||||
|
lv_arc_set_start_angle(arc, ext->bg_angle_start);
|
||||||
|
lv_arc_set_end_angle(arc, angle);
|
||||||
|
}
|
||||||
|
ext->last_angle = angle; /*Cache angle for slew rate limiting*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -619,7 +619,6 @@ static void lv_gauge_draw_needle(lv_obj_t * gauge, const lv_area_t * clip_area)
|
|||||||
lv_draw_img_dsc_t img_dsc;
|
lv_draw_img_dsc_t img_dsc;
|
||||||
lv_draw_img_dsc_init(&img_dsc);
|
lv_draw_img_dsc_init(&img_dsc);
|
||||||
lv_obj_init_draw_img_dsc(gauge, LV_GAUGE_PART_MAIN, &img_dsc);
|
lv_obj_init_draw_img_dsc(gauge, LV_GAUGE_PART_MAIN, &img_dsc);
|
||||||
img_dsc.recolor_opa = LV_OPA_COVER;
|
|
||||||
img_dsc.pivot.x = ext->needle_img_pivot.x;
|
img_dsc.pivot.x = ext->needle_img_pivot.x;
|
||||||
img_dsc.pivot.y = ext->needle_img_pivot.y;
|
img_dsc.pivot.y = ext->needle_img_pivot.y;
|
||||||
|
|
||||||
|
@ -605,6 +605,11 @@ static lv_design_res_t lv_img_design(lv_obj_t * img, const lv_area_t * clip_area
|
|||||||
if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER;
|
if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LV_USE_BLEND_MODES
|
||||||
|
if(lv_obj_get_style_bg_blend_mode(img, LV_IMG_PART_MAIN) != LV_BLEND_MODE_NORMAL) return LV_DESIGN_RES_NOT_COVER;
|
||||||
|
if(lv_obj_get_style_image_blend_mode(img, LV_IMG_PART_MAIN) != LV_BLEND_MODE_NORMAL) return LV_DESIGN_RES_NOT_COVER;
|
||||||
|
#endif
|
||||||
|
|
||||||
return LV_DESIGN_RES_COVER;
|
return LV_DESIGN_RES_COVER;
|
||||||
}
|
}
|
||||||
else if(mode == LV_DESIGN_DRAW_MAIN) {
|
else if(mode == LV_DESIGN_DRAW_MAIN) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user