From fe1bc615f00d12c6f98dffe77691640586d27324 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 3 May 2023 21:18:26 +0200 Subject: [PATCH] ESP32 LVGL library from v8.3.6 to v8.3.7 (no functional change) (#18573) * ESP32 LVGL library from v8.3.7 to v8.3.7 (no functional change) * Fix version --- CHANGELOG.md | 1 + lib/libesp32_lvgl/lvgl/library.json | 2 +- lib/libesp32_lvgl/lvgl/library.properties | 2 +- lib/libesp32_lvgl/lvgl/lv_conf_template.h | 2 +- lib/libesp32_lvgl/lvgl/lvgl.h | 2 +- .../lvgl/src/core/lv_indev_scroll.c | 5 ++- .../lvgl/src/core/lv_obj_style.c | 1 + .../lvgl/src/draw/arm2d/lv_gpu_arm2d.c | 45 +++++++++++++++++-- .../lvgl/src/extra/widgets/menu/lv_menu.c | 5 +++ .../src/extra/widgets/spinbox/lv_spinbox.c | 3 -- lib/libesp32_lvgl/lvgl/src/misc/lv_color.h | 9 +++- .../lvgl/src/widgets/lv_btnmatrix.h | 25 ++++++----- 12 files changed, 77 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee3c3bebb..61d7359d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. ### Changed - ESP32 Framework (Core) from v2.0.7 to v2.0.8 - Refactored Zero Cross Dimmer (#18481) +- ESP32 LVGL library from v8.3.6 to v8.3.7 (no functional change) ### Fixed - ESP8266 Energy Export Active no update regression from v12.3.1.3 diff --git a/lib/libesp32_lvgl/lvgl/library.json b/lib/libesp32_lvgl/lvgl/library.json index 928d7beed..2efd28a17 100644 --- a/lib/libesp32_lvgl/lvgl/library.json +++ b/lib/libesp32_lvgl/lvgl/library.json @@ -1,6 +1,6 @@ { "name": "lvgl", - "version": "8.3.6", + "version": "8.3.7", "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.", "repository": { diff --git a/lib/libesp32_lvgl/lvgl/library.properties b/lib/libesp32_lvgl/lvgl/library.properties index 19de5008b..c8f7ae9c1 100644 --- a/lib/libesp32_lvgl/lvgl/library.properties +++ b/lib/libesp32_lvgl/lvgl/library.properties @@ -1,5 +1,5 @@ name=lvgl -version=8.3.6 +version=8.3.7 author=kisvegabor maintainer=kisvegabor,embeddedt,pete-pjb sentence=Full-featured Graphics Library for Embedded Systems diff --git a/lib/libesp32_lvgl/lvgl/lv_conf_template.h b/lib/libesp32_lvgl/lvgl/lv_conf_template.h index f36af2a28..86ca20764 100644 --- a/lib/libesp32_lvgl/lvgl/lv_conf_template.h +++ b/lib/libesp32_lvgl/lvgl/lv_conf_template.h @@ -1,6 +1,6 @@ /** * @file lv_conf.h - * Configuration file for v8.3.6 + * Configuration file for v8.3.7 */ /* diff --git a/lib/libesp32_lvgl/lvgl/lvgl.h b/lib/libesp32_lvgl/lvgl/lvgl.h index 6eedc7f23..985c796c9 100644 --- a/lib/libesp32_lvgl/lvgl/lvgl.h +++ b/lib/libesp32_lvgl/lvgl/lvgl.h @@ -15,7 +15,7 @@ extern "C" { ***************************/ #define LVGL_VERSION_MAJOR 8 #define LVGL_VERSION_MINOR 3 -#define LVGL_VERSION_PATCH 6 +#define LVGL_VERSION_PATCH 7 #define LVGL_VERSION_INFO "" /********************* diff --git a/lib/libesp32_lvgl/lvgl/src/core/lv_indev_scroll.c b/lib/libesp32_lvgl/lvgl/src/core/lv_indev_scroll.c index 3a7318316..8a36ab30a 100644 --- a/lib/libesp32_lvgl/lvgl/src/core/lv_indev_scroll.c +++ b/lib/libesp32_lvgl/lvgl/src/core/lv_indev_scroll.c @@ -281,12 +281,13 @@ static lv_obj_t * find_scroll_obj(_lv_indev_proc_t * proc) while(obj_act) { /*Get the transformed scroll_sum with this object*/ int16_t angle = 0; - int16_t zoom = 256; + int32_t zoom = 256; lv_point_t pivot = { 0, 0 }; lv_obj_t * parent = obj_act; while(parent) { angle += lv_obj_get_style_transform_angle(parent, 0); - zoom *= (lv_obj_get_style_transform_zoom(parent, 0) / 256); + int32_t zoom_act = lv_obj_get_style_transform_zoom(parent, 0); + zoom = (zoom * zoom_act) >> 8; parent = lv_obj_get_parent(parent); } diff --git a/lib/libesp32_lvgl/lvgl/src/core/lv_obj_style.c b/lib/libesp32_lvgl/lvgl/src/core/lv_obj_style.c index c6cdf825c..c71c9f951 100644 --- a/lib/libesp32_lvgl/lvgl/src/core/lv_obj_style.c +++ b/lib/libesp32_lvgl/lvgl/src/core/lv_obj_style.c @@ -749,6 +749,7 @@ static void trans_anim_cb(void * _tr, int32_t v) else value_final.ptr = tr->end_value.ptr; break; case LV_STYLE_BG_COLOR: + case LV_STYLE_BG_GRAD_COLOR: case LV_STYLE_BORDER_COLOR: case LV_STYLE_TEXT_COLOR: case LV_STYLE_SHADOW_COLOR: diff --git a/lib/libesp32_lvgl/lvgl/src/draw/arm2d/lv_gpu_arm2d.c b/lib/libesp32_lvgl/lvgl/src/draw/arm2d/lv_gpu_arm2d.c index f294125be..83f3e6605 100644 --- a/lib/libesp32_lvgl/lvgl/src/draw/arm2d/lv_gpu_arm2d.c +++ b/lib/libesp32_lvgl/lvgl/src/draw/arm2d/lv_gpu_arm2d.c @@ -3,6 +3,24 @@ * */ +/* + * Copyright (C) 2010-2023 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /********************* * INCLUDES *********************/ @@ -94,6 +112,8 @@ arm_2dp_rgb565_tile_transform_with_src_mask_and_opacity_prepare #define arm_2d_tile_transform_with_opacity_prepare \ arm_2dp_rgb565_tile_transform_with_opacity_prepare +#define arm_2d_tile_transform_only_with_opacity_prepare \ + arm_2dp_rgb565_tile_transform_only_with_opacity_prepare #define arm_2d_tile_transform_prepare \ arm_2dp_rgb565_tile_transform_prepare @@ -131,6 +151,8 @@ arm_2dp_cccn888_tile_transform_with_src_mask_and_opacity_prepare #define arm_2d_tile_transform_with_opacity_prepare \ arm_2dp_cccn888_tile_transform_with_opacity_prepare +#define arm_2d_tile_transform_only_with_opacity_prepare \ + arm_2dp_cccn888_tile_transform_only_with_opacity_prepare #define arm_2d_tile_transform_prepare \ arm_2dp_cccn888_tile_transform_prepare @@ -345,7 +367,7 @@ #define __RECOLOUR_END() \ } while(0); \ if (NULL != rgb_tmp_buf) { \ - lv_free(rgb_tmp_buf); \ + lv_mem_buf_release(rgb_tmp_buf); \ } \ } while(0); \ src_buf = src_buf_org; @@ -1270,8 +1292,7 @@ static void lv_draw_arm2d_img_decoded(struct _lv_draw_ctx_t * draw_ctx, source_center.iX = draw_dsc->pivot.x; source_center.iY = draw_dsc->pivot.y; - if((LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED == cf) || - (LV_IMG_CF_TRUE_COLOR == cf)) { + if(LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED == cf) { __ARM_2D_PREPARE_TRANS_AND_TARGET_REGION( arm_2d_tile_transform_with_opacity_prepare, @@ -1289,6 +1310,24 @@ static void lv_draw_arm2d_img_decoded(struct _lv_draw_ctx_t * draw_ctx, ); is_accelerated = true; } + #if ARM_2D_VERISON >= 10103 + else if (LV_IMG_CF_TRUE_COLOR == cf) { + __ARM_2D_PREPARE_TRANS_AND_TARGET_REGION( + arm_2d_tile_transform_only_with_opacity_prepare, + &source_tile, + source_center, + ARM_2D_ANGLE((draw_dsc->angle / 10.0f)), + draw_dsc->zoom / 256.0f, + blend_dsc.opa); + + arm_2d_tile_transform( + &target_tile, + &target_region, + NULL + ); + is_accelerated = true; + } + #endif else if (LV_IMG_CF_RGB565A8 == cf) { static arm_2d_tile_t mask_tile; mask_tile = source_tile; diff --git a/lib/libesp32_lvgl/lvgl/src/extra/widgets/menu/lv_menu.c b/lib/libesp32_lvgl/lvgl/src/extra/widgets/menu/lv_menu.c index 78577e770..f8dfd41cb 100644 --- a/lib/libesp32_lvgl/lvgl/src/extra/widgets/menu/lv_menu.c +++ b/lib/libesp32_lvgl/lvgl/src/extra/widgets/menu/lv_menu.c @@ -195,6 +195,11 @@ void lv_menu_set_page(lv_obj_t * obj, lv_obj_t * page) lv_menu_t * menu = (lv_menu_t *)obj; + /* Guard against setting the same page again */ + if(menu->main_page == page) { + return; + } + /* Hide previous page */ if(menu->main_page != NULL) { lv_obj_set_parent(menu->main_page, menu->storage); diff --git a/lib/libesp32_lvgl/lvgl/src/extra/widgets/spinbox/lv_spinbox.c b/lib/libesp32_lvgl/lvgl/src/extra/widgets/spinbox/lv_spinbox.c index 34691053e..37db45c37 100644 --- a/lib/libesp32_lvgl/lvgl/src/extra/widgets/spinbox/lv_spinbox.c +++ b/lib/libesp32_lvgl/lvgl/src/extra/widgets/spinbox/lv_spinbox.c @@ -434,9 +434,6 @@ static void lv_spinbox_event(const lv_obj_class_t * class_p, lv_event_t * e) else if(c == LV_KEY_DOWN) { lv_spinbox_decrement(obj); } - else { - lv_textarea_add_char(obj, c); - } } } diff --git a/lib/libesp32_lvgl/lvgl/src/misc/lv_color.h b/lib/libesp32_lvgl/lvgl/src/misc/lv_color.h index 2cc92f277..5ff7b1a86 100644 --- a/lib/libesp32_lvgl/lvgl/src/misc/lv_color.h +++ b/lib/libesp32_lvgl/lvgl/src/misc/lv_color.h @@ -440,7 +440,11 @@ LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t c1, lv_co { lv_color_t ret; -#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP == 0 && LV_COLOR_MIX_ROUND_OFS == 0 +#if LV_COLOR_DEPTH == 16 && LV_COLOR_MIX_ROUND_OFS == 0 +#if LV_COLOR_16_SWAP == 1 + c1.full = c1.full << 8 | c1.full >> 8; + c2.full = c2.full << 8 | c2.full >> 8; +#endif /*Source: https://stackoverflow.com/a/50012418/1999969*/ mix = (uint32_t)((uint32_t)mix + 4) >> 3; uint32_t bg = (uint32_t)((uint32_t)c2.full | ((uint32_t)c2.full << 16)) & @@ -448,6 +452,9 @@ LV_ATTRIBUTE_FAST_MEM static inline lv_color_t lv_color_mix(lv_color_t c1, lv_co uint32_t fg = (uint32_t)((uint32_t)c1.full | ((uint32_t)c1.full << 16)) & 0x7E0F81F; uint32_t result = ((((fg - bg) * mix) >> 5) + bg) & 0x7E0F81F; ret.full = (uint16_t)((result >> 16) | result); +#if LV_COLOR_16_SWAP == 1 + ret.full = ret.full << 8 | ret.full >> 8; +#endif #elif LV_COLOR_DEPTH != 1 /*LV_COLOR_DEPTH == 8, 16 or 32*/ LV_COLOR_SET_R(ret, LV_UDIV255((uint16_t)LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * diff --git a/lib/libesp32_lvgl/lvgl/src/widgets/lv_btnmatrix.h b/lib/libesp32_lvgl/lvgl/src/widgets/lv_btnmatrix.h index 780d57b68..2edf202cc 100644 --- a/lib/libesp32_lvgl/lvgl/src/widgets/lv_btnmatrix.h +++ b/lib/libesp32_lvgl/lvgl/src/widgets/lv_btnmatrix.h @@ -32,18 +32,19 @@ LV_EXPORT_CONST_INT(LV_BTNMATRIX_BTN_NONE); /** Type to store button control bits (disabled, hidden etc.) * The first 3 bits are used to store the width*/ enum { - _LV_BTNMATRIX_WIDTH = 0x0007, /**< Reserved to stire the size units*/ - LV_BTNMATRIX_CTRL_HIDDEN = 0x0008, /**< Button hidden*/ - LV_BTNMATRIX_CTRL_NO_REPEAT = 0x0010, /**< Do not repeat press this button.*/ - LV_BTNMATRIX_CTRL_DISABLED = 0x0020, /**< Disable this button.*/ - LV_BTNMATRIX_CTRL_CHECKABLE = 0x0040, /**< The button can be toggled.*/ - LV_BTNMATRIX_CTRL_CHECKED = 0x0080, /**< Button is currently toggled (e.g. checked).*/ - LV_BTNMATRIX_CTRL_CLICK_TRIG = 0x0100, /**< 1: Send LV_EVENT_VALUE_CHANGE on CLICK, 0: Send LV_EVENT_VALUE_CHANGE on PRESS*/ - LV_BTNMATRIX_CTRL_POPOVER = 0x0200, /**< Show a popover when pressing this key*/ - LV_BTNMATRIX_CTRL_RECOLOR = 0x1000, /**< Enable text recoloring with `#color`*/ - _LV_BTNMATRIX_CTRL_RESERVED = 0x2000, /**< Reserved for later use*/ - LV_BTNMATRIX_CTRL_CUSTOM_1 = 0x4000, /**< Custom free to use flag*/ - LV_BTNMATRIX_CTRL_CUSTOM_2 = 0x8000, /**< Custom free to use flag*/ + _LV_BTNMATRIX_WIDTH = 0x000F, /**< Reserved to store the size units*/ + LV_BTNMATRIX_CTRL_HIDDEN = 0x0010, /**< Button hidden*/ + LV_BTNMATRIX_CTRL_NO_REPEAT = 0x0020, /**< Do not repeat press this button.*/ + LV_BTNMATRIX_CTRL_DISABLED = 0x0040, /**< Disable this button.*/ + LV_BTNMATRIX_CTRL_CHECKABLE = 0x0080, /**< The button can be toggled.*/ + LV_BTNMATRIX_CTRL_CHECKED = 0x0100, /**< Button is currently toggled (e.g. checked).*/ + LV_BTNMATRIX_CTRL_CLICK_TRIG = 0x0200, /**< 1: Send LV_EVENT_VALUE_CHANGE on CLICK, 0: Send LV_EVENT_VALUE_CHANGE on PRESS*/ + LV_BTNMATRIX_CTRL_POPOVER = 0x0400, /**< Show a popover when pressing this key*/ + LV_BTNMATRIX_CTRL_RECOLOR = 0x0800, /**< Enable text recoloring with `#color`*/ + _LV_BTNMATRIX_CTRL_RESERVED_1 = 0x1000, /**< Reserved for later use*/ + _LV_BTNMATRIX_CTRL_RESERVED_2 = 0x2000, /**< Reserved for later use*/ + LV_BTNMATRIX_CTRL_CUSTOM_1 = 0x4000, /**< Custom free to use flag*/ + LV_BTNMATRIX_CTRL_CUSTOM_2 = 0x8000, /**< Custom free to use flag*/ }; typedef uint16_t lv_btnmatrix_ctrl_t;