From 8b7cd2de44f17c62618d14d6c317515a3ba2fd22 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 11 Mar 2024 22:31:44 +0100 Subject: [PATCH] HASPmota moved to a distinct library `lv_haspmota` (#20929) --- CHANGELOG.md | 1 + lib/libesp32/berry/gen.sh | 2 +- .../berry_tasmota/src/be_lv_tasmota_lib.c | 2 + .../berry_tasmota/src/embedded/lv_tasmota.be | 1 + .../src/solidify/solidified_lv_tasmota.h | 141 ++-- .../lv_binding_berry/src/lv_berry.c | 24 +- .../lv_binding_berry/tools/lv_constants.be | 696 ++++++++++++++++++ .../lv_binding_berry/tools/lv_export_const.be | 54 ++ lib/libesp32_lvgl/lv_haspmota/LICENSE | 19 + lib/libesp32_lvgl/lv_haspmota/library.json | 15 + .../lv_haspmota/src/be_lv_haspmota.c | 2 + .../lv_haspmota/src/be_lv_haspmota.h | 1 + .../lv_haspmota/src/embedded}/haspmota.be | 6 +- .../src/solidify/be_lv_haspmota_solidified.h} | 0 pio-tools/gen-berry-structures.py | 2 +- tasmota/berry/haspmota/haspmota_demo.tapp | Bin 138332 -> 138279 bytes .../haspmota_src/haspmota_core/autoexec.be | 7 - .../haspmota_src/haspmota_demo/pages.jsonl | 2 +- .../xdrv_52_3_berry_lvgl.ino | 3 + 19 files changed, 897 insertions(+), 81 deletions(-) create mode 100644 lib/libesp32_lvgl/lv_binding_berry/tools/lv_constants.be create mode 100644 lib/libesp32_lvgl/lv_binding_berry/tools/lv_export_const.be create mode 100644 lib/libesp32_lvgl/lv_haspmota/LICENSE create mode 100644 lib/libesp32_lvgl/lv_haspmota/library.json create mode 100644 lib/libesp32_lvgl/lv_haspmota/src/be_lv_haspmota.c create mode 100644 lib/libesp32_lvgl/lv_haspmota/src/be_lv_haspmota.h rename {tasmota/berry/haspmota_src/haspmota_core => lib/libesp32_lvgl/lv_haspmota/src/embedded}/haspmota.be (99%) rename lib/{libesp32/berry_tasmota/src/be_lv_haspmota.c => libesp32_lvgl/lv_haspmota/src/solidify/be_lv_haspmota_solidified.h} (100%) delete mode 100644 tasmota/berry/haspmota_src/haspmota_core/autoexec.be diff --git a/CHANGELOG.md b/CHANGELOG.md index 899b0ac15..faef1002d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. ### Changed - LVGL optimize fonts and add icons (#20880) - LVGL improved readability of montserrat-10 (#20900) +- HASPmota moved to a distinct library `lv_haspmota` ### Fixed - Berry bug when parsing ternary operator (#20839) diff --git a/lib/libesp32/berry/gen.sh b/lib/libesp32/berry/gen.sh index a0edbd2df..e248a977f 100755 --- a/lib/libesp32/berry/gen.sh +++ b/lib/libesp32/berry/gen.sh @@ -5,4 +5,4 @@ # Included in the Platformio build process with `pio-tools/gen-berry-structures.py # rm -Rf ./generate/be_*.h -python3 tools/coc/coc -o generate src default ../berry_tasmota/src ../berry_mapping/src ../berry_int64/src ../../libesp32_lvgl/lv_binding_berry/src ../berry_matter/src/solidify ../berry_matter/src ../berry_animate/src/solidify ../berry_animate/src ../../libesp32_lvgl/lv_binding_berry/src/solidify ../../libesp32_lvgl/lv_binding_berry/generate -c default/berry_conf.h +python3 tools/coc/coc -o generate src default ../berry_tasmota/src ../berry_mapping/src ../berry_int64/src ../../libesp32_lvgl/lv_binding_berry/src ../../libesp32_lvgl/lv_haspmota/src/solidify ../berry_matter/src/solidify ../berry_matter/src ../berry_animate/src/solidify ../berry_animate/src ../../libesp32_lvgl/lv_binding_berry/src/solidify ../../libesp32_lvgl/lv_binding_berry/generate -c default/berry_conf.h diff --git a/lib/libesp32/berry_tasmota/src/be_lv_tasmota_lib.c b/lib/libesp32/berry_tasmota/src/be_lv_tasmota_lib.c index 5fa0d4d58..3ca0b4bf7 100644 --- a/lib/libesp32/berry_tasmota/src/be_lv_tasmota_lib.c +++ b/lib/libesp32/berry_tasmota/src/be_lv_tasmota_lib.c @@ -6,6 +6,7 @@ #ifdef USE_LVGL extern int lv0_start(bvm *vm); +extern int lv0_constants_as_hash(bvm *vm); // dump all integer constants extern int lv0_register_button_encoder(bvm *vm); // add buttons with encoder logic @@ -22,6 +23,7 @@ extern int lv0_load_freetype_font(bvm *vm); /* @const_object_info_begin module lv_tasmota (scope: global, strings: weak) { init, closure(lv_tasmota_init_closure) + _constants, func(lv0_constants_as_hash) start, func(lv0_start) splash, closure(lv_tasmota_splash_closure) diff --git a/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota.be b/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota.be index 3edea396c..f98dea1dc 100644 --- a/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota.be +++ b/lib/libesp32/berry_tasmota/src/embedded/lv_tasmota.be @@ -8,6 +8,7 @@ lv_tasmota = module("lv_tasmota") def init(lv_tasmota) import lv lv.start = lv_tasmota.start + lv._constants = lv_tasmota._constants lv.splash_init = lv_tasmota.splash_init lv.splash_remove = lv_tasmota.splash_remove lv.splash = lv_tasmota.splash diff --git a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h index 5ff64c7fd..f982fdcb3 100644 --- a/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h +++ b/lib/libesp32/berry_tasmota/src/solidify/solidified_lv_tasmota.h @@ -17,46 +17,47 @@ be_local_closure(lv_tasmota_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[35]) { /* constants */ + ( &(const bvalue[36]) { /* constants */ /* K0 */ be_nested_str_weak(lv), /* K1 */ be_nested_str_weak(start), - /* K2 */ be_nested_str_weak(splash_init), - /* K3 */ be_nested_str_weak(splash_remove), - /* K4 */ be_nested_str_weak(splash), - /* K5 */ be_nested_str_weak(_splash), - /* K6 */ be_nested_str_weak(font_montserrat), - /* K7 */ be_nested_str_weak(montserrat_font), - /* K8 */ be_nested_str_weak(font_seg7), - /* K9 */ be_nested_str_weak(seg7_font), - /* K10 */ be_nested_str_weak(font_embedded), - /* K11 */ be_nested_str_weak(load_freetype_font), - /* K12 */ be_nested_str_weak(register_button_encoder), - /* K13 */ be_nested_str_weak(screenshot), - /* K14 */ be_nested_str_weak(version), - /* K15 */ be_nested_str_weak(version_major), - /* K16 */ be_nested_str_weak(clock), - /* K17 */ be_nested_str_weak(lv_clock), - /* K18 */ be_nested_str_weak(clock_icon), - /* K19 */ be_nested_str_weak(lv_clock_icon), - /* K20 */ be_nested_str_weak(signal_arcs), - /* K21 */ be_nested_str_weak(lv_signal_arcs), - /* K22 */ be_nested_str_weak(signal_bars), - /* K23 */ be_nested_str_weak(lv_signal_bars), - /* K24 */ be_nested_str_weak(wifi_arcs_icon), - /* K25 */ be_nested_str_weak(lv_wifi_arcs_icon), - /* K26 */ be_nested_str_weak(wifi_arcs), - /* K27 */ be_nested_str_weak(lv_wifi_arcs), - /* K28 */ be_nested_str_weak(wifi_bars_icon), - /* K29 */ be_nested_str_weak(lv_wifi_bars_icon), - /* K30 */ be_nested_str_weak(wifi_bars), - /* K31 */ be_nested_str_weak(lv_wifi_bars), - /* K32 */ be_nested_str_weak(tasmota), - /* K33 */ be_nested_str_weak(get_option), - /* K34 */ be_const_int(0), + /* K2 */ be_nested_str_weak(_constants), + /* K3 */ be_nested_str_weak(splash_init), + /* K4 */ be_nested_str_weak(splash_remove), + /* K5 */ be_nested_str_weak(splash), + /* K6 */ be_nested_str_weak(_splash), + /* K7 */ be_nested_str_weak(font_montserrat), + /* K8 */ be_nested_str_weak(montserrat_font), + /* K9 */ be_nested_str_weak(font_seg7), + /* K10 */ be_nested_str_weak(seg7_font), + /* K11 */ be_nested_str_weak(font_embedded), + /* K12 */ be_nested_str_weak(load_freetype_font), + /* K13 */ be_nested_str_weak(register_button_encoder), + /* K14 */ be_nested_str_weak(screenshot), + /* K15 */ be_nested_str_weak(version), + /* K16 */ be_nested_str_weak(version_major), + /* K17 */ be_nested_str_weak(clock), + /* K18 */ be_nested_str_weak(lv_clock), + /* K19 */ be_nested_str_weak(clock_icon), + /* K20 */ be_nested_str_weak(lv_clock_icon), + /* K21 */ be_nested_str_weak(signal_arcs), + /* K22 */ be_nested_str_weak(lv_signal_arcs), + /* K23 */ be_nested_str_weak(signal_bars), + /* K24 */ be_nested_str_weak(lv_signal_bars), + /* K25 */ be_nested_str_weak(wifi_arcs_icon), + /* K26 */ be_nested_str_weak(lv_wifi_arcs_icon), + /* K27 */ be_nested_str_weak(wifi_arcs), + /* K28 */ be_nested_str_weak(lv_wifi_arcs), + /* K29 */ be_nested_str_weak(wifi_bars_icon), + /* K30 */ be_nested_str_weak(lv_wifi_bars_icon), + /* K31 */ be_nested_str_weak(wifi_bars), + /* K32 */ be_nested_str_weak(lv_wifi_bars), + /* K33 */ be_nested_str_weak(tasmota), + /* K34 */ be_nested_str_weak(get_option), + /* K35 */ be_const_int(0), }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ + ( &(const binstruction[58]) { /* code */ 0xA4060000, // 0000 IMPORT R1 K0 0x88080101, // 0001 GETMBR R2 R0 K1 0x90060202, // 0002 SETMBR R1 K1 R2 @@ -66,17 +67,17 @@ be_local_closure(lv_tasmota_init, /* name */ 0x90060602, // 0006 SETMBR R1 K3 R2 0x88080104, // 0007 GETMBR R2 R0 K4 0x90060802, // 0008 SETMBR R1 K4 R2 - 0x4C080000, // 0009 LDNIL R2 + 0x88080105, // 0009 GETMBR R2 R0 K5 0x90060A02, // 000A SETMBR R1 K5 R2 - 0x88080106, // 000B GETMBR R2 R0 K6 + 0x4C080000, // 000B LDNIL R2 0x90060C02, // 000C SETMBR R1 K6 R2 - 0x88080106, // 000D GETMBR R2 R0 K6 + 0x88080107, // 000D GETMBR R2 R0 K7 0x90060E02, // 000E SETMBR R1 K7 R2 - 0x88080108, // 000F GETMBR R2 R0 K8 + 0x88080107, // 000F GETMBR R2 R0 K7 0x90061002, // 0010 SETMBR R1 K8 R2 - 0x88080108, // 0011 GETMBR R2 R0 K8 + 0x88080109, // 0011 GETMBR R2 R0 K9 0x90061202, // 0012 SETMBR R1 K9 R2 - 0x8808010A, // 0013 GETMBR R2 R0 K10 + 0x88080109, // 0013 GETMBR R2 R0 K9 0x90061402, // 0014 SETMBR R1 K10 R2 0x8808010B, // 0015 GETMBR R2 R0 K11 0x90061602, // 0016 SETMBR R1 K11 R2 @@ -84,35 +85,37 @@ be_local_closure(lv_tasmota_init, /* name */ 0x90061802, // 0018 SETMBR R1 K12 R2 0x8808010D, // 0019 GETMBR R2 R0 K13 0x90061A02, // 001A SETMBR R1 K13 R2 - 0x8C08030F, // 001B GETMET R2 R1 K15 - 0x7C080200, // 001C CALL R2 1 - 0x90061C02, // 001D SETMBR R1 K14 R2 - 0xB80A2200, // 001E GETNGBL R2 K17 - 0x90062002, // 001F SETMBR R1 K16 R2 - 0xB80A2600, // 0020 GETNGBL R2 K19 - 0x90062402, // 0021 SETMBR R1 K18 R2 - 0xB80A2A00, // 0022 GETNGBL R2 K21 - 0x90062802, // 0023 SETMBR R1 K20 R2 - 0xB80A2E00, // 0024 GETNGBL R2 K23 - 0x90062C02, // 0025 SETMBR R1 K22 R2 - 0xB80A3200, // 0026 GETNGBL R2 K25 - 0x90063002, // 0027 SETMBR R1 K24 R2 - 0xB80A3600, // 0028 GETNGBL R2 K27 - 0x90063402, // 0029 SETMBR R1 K26 R2 - 0xB80A3A00, // 002A GETNGBL R2 K29 - 0x90063802, // 002B SETMBR R1 K28 R2 - 0xB80A3E00, // 002C GETNGBL R2 K31 - 0x90063C02, // 002D SETMBR R1 K30 R2 + 0x8808010E, // 001B GETMBR R2 R0 K14 + 0x90061C02, // 001C SETMBR R1 K14 R2 + 0x8C080310, // 001D GETMET R2 R1 K16 + 0x7C080200, // 001E CALL R2 1 + 0x90061E02, // 001F SETMBR R1 K15 R2 + 0xB80A2400, // 0020 GETNGBL R2 K18 + 0x90062202, // 0021 SETMBR R1 K17 R2 + 0xB80A2800, // 0022 GETNGBL R2 K20 + 0x90062602, // 0023 SETMBR R1 K19 R2 + 0xB80A2C00, // 0024 GETNGBL R2 K22 + 0x90062A02, // 0025 SETMBR R1 K21 R2 + 0xB80A3000, // 0026 GETNGBL R2 K24 + 0x90062E02, // 0027 SETMBR R1 K23 R2 + 0xB80A3400, // 0028 GETNGBL R2 K26 + 0x90063202, // 0029 SETMBR R1 K25 R2 + 0xB80A3800, // 002A GETNGBL R2 K28 + 0x90063602, // 002B SETMBR R1 K27 R2 + 0xB80A3C00, // 002C GETNGBL R2 K30 + 0x90063A02, // 002D SETMBR R1 K29 R2 0xB80A4000, // 002E GETNGBL R2 K32 - 0x8C080521, // 002F GETMET R2 R2 K33 - 0x54120086, // 0030 LDINT R4 135 - 0x7C080400, // 0031 CALL R2 2 - 0x1C080522, // 0032 EQ R2 R2 K34 - 0x780A0001, // 0033 JMPF R2 #0036 - 0x8C080302, // 0034 GETMET R2 R1 K2 - 0x7C080200, // 0035 CALL R2 1 - 0x4C080000, // 0036 LDNIL R2 - 0x80040400, // 0037 RET 1 R2 + 0x90063E02, // 002F SETMBR R1 K31 R2 + 0xB80A4200, // 0030 GETNGBL R2 K33 + 0x8C080522, // 0031 GETMET R2 R2 K34 + 0x54120086, // 0032 LDINT R4 135 + 0x7C080400, // 0033 CALL R2 2 + 0x1C080523, // 0034 EQ R2 R2 K35 + 0x780A0001, // 0035 JMPF R2 #0038 + 0x8C080303, // 0036 GETMET R2 R1 K3 + 0x7C080200, // 0037 CALL R2 1 + 0x4C080000, // 0038 LDNIL R2 + 0x80040400, // 0039 RET 1 R2 }) ) ); diff --git a/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c b/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c index 4361c7ab9..0323f25f5 100644 --- a/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c +++ b/lib/libesp32_lvgl/lv_binding_berry/src/lv_berry.c @@ -355,7 +355,29 @@ int lv0_member(bvm *vm) { be_return(vm); } -// temporarily fix lv_span_get_style() +/*********************************************************************************************\ + * Return a hash of all LV int constants +\*********************************************************************************************/ +int lv0_constants_as_hash(bvm *vm) { + be_newobject(vm, "map"); + + for (int i = 0; i < lv0_constants_size; i++) { + char first_char = lv0_constants[i].name[0]; + if ( !(first_char >= 'a' && first_char <='z') && !(first_char >= 'A' && first_char <='Z') ) { + continue; + } + be_pushstring(vm, lv0_constants[i].name); + be_pushint(vm, lv0_constants[i].value); + be_data_insert(vm, -3); + be_pop(vm, 2); + } + be_pop(vm, 1); + be_return(vm); +} + +/*********************************************************************************************\ + * temporarily fix lv_span_get_style() +\*********************************************************************************************/ lv_style_t * lv_span_get_style(lv_span_t * span) { return &span->style; } \ No newline at end of file diff --git a/lib/libesp32_lvgl/lv_binding_berry/tools/lv_constants.be b/lib/libesp32_lvgl/lv_binding_berry/tools/lv_constants.be new file mode 100644 index 000000000..72f5dab07 --- /dev/null +++ b/lib/libesp32_lvgl/lv_binding_berry/tools/lv_constants.be @@ -0,0 +1,696 @@ +# LVGL integer constants +# LVGL version 9 + +lv.ALIGN_BOTTOM_LEFT = 4 +lv.ALIGN_BOTTOM_MID = 5 +lv.ALIGN_BOTTOM_RIGHT = 6 +lv.ALIGN_CENTER = 9 +lv.ALIGN_DEFAULT = 0 +lv.ALIGN_LEFT_MID = 7 +lv.ALIGN_OUT_BOTTOM_LEFT = 13 +lv.ALIGN_OUT_BOTTOM_MID = 14 +lv.ALIGN_OUT_BOTTOM_RIGHT = 15 +lv.ALIGN_OUT_LEFT_BOTTOM = 18 +lv.ALIGN_OUT_LEFT_MID = 17 +lv.ALIGN_OUT_LEFT_TOP = 16 +lv.ALIGN_OUT_RIGHT_BOTTOM = 21 +lv.ALIGN_OUT_RIGHT_MID = 20 +lv.ALIGN_OUT_RIGHT_TOP = 19 +lv.ALIGN_OUT_TOP_LEFT = 10 +lv.ALIGN_OUT_TOP_MID = 11 +lv.ALIGN_OUT_TOP_RIGHT = 12 +lv.ALIGN_RIGHT_MID = 8 +lv.ALIGN_TOP_LEFT = 1 +lv.ALIGN_TOP_MID = 2 +lv.ALIGN_TOP_RIGHT = 3 +lv.ANIM_IMAGE_PART_MAIN = 0 +lv.ANIM_OFF = 0 +lv.ANIM_ON = 1 +lv.ANIM_PLAYTIME_INFINITE = -1 +lv.ANIM_REPEAT_INFINITE = 65535 +lv.ARC_MODE_NORMAL = 0 +lv.ARC_MODE_REVERSE = 2 +lv.ARC_MODE_SYMMETRICAL = 1 +lv.BAR_MODE_NORMAL = 0 +lv.BAR_MODE_RANGE = 2 +lv.BAR_MODE_SYMMETRICAL = 1 +lv.BASE_DIR_AUTO = 2 +lv.BASE_DIR_LTR = 0 +lv.BASE_DIR_NEUTRAL = 32 +lv.BASE_DIR_RTL = 1 +lv.BASE_DIR_WEAK = 33 +lv.BLEND_MODE_ADDITIVE = 1 +lv.BLEND_MODE_MULTIPLY = 3 +lv.BLEND_MODE_NORMAL = 0 +lv.BLEND_MODE_SUBTRACTIVE = 2 +lv.BORDER_SIDE_BOTTOM = 1 +lv.BORDER_SIDE_FULL = 15 +lv.BORDER_SIDE_INTERNAL = 16 +lv.BORDER_SIDE_LEFT = 4 +lv.BORDER_SIDE_NONE = 0 +lv.BORDER_SIDE_RIGHT = 8 +lv.BORDER_SIDE_TOP = 2 +lv.BTNMATRIX_BTN_NONE = 65535 +lv.BTNMATRIX_CTRL_CHECKABLE = 128 +lv.BTNMATRIX_CTRL_CHECKED = 256 +lv.BTNMATRIX_CTRL_CLICK_TRIG = 512 +lv.BTNMATRIX_CTRL_CUSTOM_1 = 16384 +lv.BTNMATRIX_CTRL_CUSTOM_2 = 32768 +lv.BTNMATRIX_CTRL_DISABLED = 64 +lv.BTNMATRIX_CTRL_HIDDEN = 16 +lv.BTNMATRIX_CTRL_NO_REPEAT = 32 +lv.BTNMATRIX_CTRL_POPOVER = 1024 +lv.BUTTONMATRIX_BUTTON_NONE = 65535 +lv.BUTTONMATRIX_CTRL_CHECKABLE = 128 +lv.BUTTONMATRIX_CTRL_CHECKED = 256 +lv.BUTTONMATRIX_CTRL_CLICK_TRIG = 512 +lv.BUTTONMATRIX_CTRL_CUSTOM_1 = 16384 +lv.BUTTONMATRIX_CTRL_CUSTOM_2 = 32768 +lv.BUTTONMATRIX_CTRL_DISABLED = 64 +lv.BUTTONMATRIX_CTRL_HIDDEN = 16 +lv.BUTTONMATRIX_CTRL_NO_REPEAT = 32 +lv.BUTTONMATRIX_CTRL_POPOVER = 1024 +lv.CHART_AXIS_PRIMARY_X = 2 +lv.CHART_AXIS_PRIMARY_Y = 0 +lv.CHART_AXIS_SECONDARY_X = 4 +lv.CHART_AXIS_SECONDARY_Y = 1 +lv.CHART_POINT_NONE = 2147483647 +lv.CHART_TYPE_BAR = 2 +lv.CHART_TYPE_LINE = 1 +lv.CHART_TYPE_NONE = 0 +lv.CHART_TYPE_SCATTER = 3 +lv.CHART_UPDATE_MODE_CIRCULAR = 1 +lv.CHART_UPDATE_MODE_SHIFT = 0 +lv.COLOR_AQUA = 65535 +lv.COLOR_BLACK = 0 +lv.COLOR_BLUE = 255 +lv.COLOR_CYAN = 65535 +lv.COLOR_DEPTH = 16 +lv.COLOR_FORMAT_A1 = 11 +lv.COLOR_FORMAT_A2 = 12 +lv.COLOR_FORMAT_A4 = 13 +lv.COLOR_FORMAT_A8 = 14 +lv.COLOR_FORMAT_ARGB8888 = 16 +lv.COLOR_FORMAT_I1 = 7 +lv.COLOR_FORMAT_I2 = 8 +lv.COLOR_FORMAT_I4 = 9 +lv.COLOR_FORMAT_I400 = 35 +lv.COLOR_FORMAT_I420 = 32 +lv.COLOR_FORMAT_I422 = 33 +lv.COLOR_FORMAT_I444 = 34 +lv.COLOR_FORMAT_I8 = 10 +lv.COLOR_FORMAT_L8 = 6 +lv.COLOR_FORMAT_NATIVE = 18 +lv.COLOR_FORMAT_NATIVE_WITH_ALPHA = 20 +lv.COLOR_FORMAT_NV12 = 37 +lv.COLOR_FORMAT_NV21 = 36 +lv.COLOR_FORMAT_RAW = 1 +lv.COLOR_FORMAT_RAW_ALPHA = 2 +lv.COLOR_FORMAT_RGB565 = 18 +lv.COLOR_FORMAT_RGB565A8 = 20 +lv.COLOR_FORMAT_RGB888 = 15 +lv.COLOR_FORMAT_UNKNOWN = 0 +lv.COLOR_FORMAT_UYVY = 39 +lv.COLOR_FORMAT_XRGB8888 = 17 +lv.COLOR_FORMAT_YUV_END = 39 +lv.COLOR_FORMAT_YUV_START = 32 +lv.COLOR_FORMAT_YUY2 = 38 +lv.COLOR_GRAY = 8421504 +lv.COLOR_GREEN = 32768 +lv.COLOR_LIME = 65280 +lv.COLOR_MAGENTA = 16711935 +lv.COLOR_MAROON = 8388608 +lv.COLOR_NAVY = 128 +lv.COLOR_OLIVE = 8421376 +lv.COLOR_ORANGE = 16744192 +lv.COLOR_PURPLE = 8388736 +lv.COLOR_RED = 16711680 +lv.COLOR_SILVER = 12632256 +lv.COLOR_TEAL = 32896 +lv.COLOR_WHITE = 16777215 +lv.COLOR_YELLOW = 16776960 +lv.COORD_MAX = 536870911 +lv.COORD_MIN = -536870911 +lv.COVER_RES_COVER = 0 +lv.COVER_RES_MASKED = 2 +lv.COVER_RES_NOT_COVER = 1 +lv.DIR_ALL = 15 +lv.DIR_BOTTOM = 8 +lv.DIR_HOR = 3 +lv.DIR_LEFT = 1 +lv.DIR_NONE = 0 +lv.DIR_RIGHT = 2 +lv.DIR_TOP = 4 +lv.DIR_VER = 12 +lv.DISPLAY_RENDER_MODE_DIRECT = 1 +lv.DISPLAY_RENDER_MODE_FULL = 2 +lv.DISPLAY_RENDER_MODE_PARTIAL = 0 +lv.DISPLAY_ROTATION_0 = 0 +lv.DISPLAY_ROTATION_180 = 2 +lv.DISPLAY_ROTATION_270 = 3 +lv.DISPLAY_ROTATION_90 = 1 +lv.DISP_RENDER_MODE_DIRECT = 1 +lv.DISP_RENDER_MODE_FULL = 2 +lv.DISP_RENDER_MODE_PARTIAL = 0 +lv.DISP_ROTATION_0 = 0 +lv.DISP_ROTATION_180 = 2 +lv.DISP_ROTATION_270 = 3 +lv.DISP_ROTATION_90 = 1 +lv.DRAW_LETTER_BITMAP_FORMAT_A8 = 1 +lv.DRAW_LETTER_BITMAP_FORMAT_IMAGE = 2 +lv.DRAW_LETTER_BITMAP_FORMAT_INVALID = 0 +lv.DRAW_LETTER_VECTOR_FORMAT = 3 +lv.DRAW_TASK_STATE_IN_PROGRESS = 2 +lv.DRAW_TASK_STATE_QUEUED = 1 +lv.DRAW_TASK_STATE_READY = 3 +lv.DRAW_TASK_STATE_WAITING = 0 +lv.DRAW_TASK_TYPE_ARC = 7 +lv.DRAW_TASK_TYPE_BORDER = 1 +lv.DRAW_TASK_TYPE_BOX_SHADOW = 2 +lv.DRAW_TASK_TYPE_FILL = 0 +lv.DRAW_TASK_TYPE_IMAGE = 4 +lv.DRAW_TASK_TYPE_LABEL = 3 +lv.DRAW_TASK_TYPE_LAYER = 5 +lv.DRAW_TASK_TYPE_LINE = 6 +lv.DRAW_TASK_TYPE_MASK_BITMAP = 10 +lv.DRAW_TASK_TYPE_MASK_RECTANGLE = 9 +lv.DRAW_TASK_TYPE_TRIANGLE = 8 +lv.DRAW_TASK_TYPE_VECTOR = 11 +lv.DROPDOWN_POS_LAST = 65535 +lv.EVENT_ALL = 0 +lv.EVENT_CANCEL = 33 +lv.EVENT_CHILD_CHANGED = 36 +lv.EVENT_CHILD_CREATED = 37 +lv.EVENT_CHILD_DELETED = 38 +lv.EVENT_CLICKED = 7 +lv.EVENT_COLOR_FORMAT_CHANGED = 49 +lv.EVENT_COVER_CHECK = 20 +lv.EVENT_CREATE = 34 +lv.EVENT_DEFOCUSED = 16 +lv.EVENT_DELETE = 35 +lv.EVENT_DRAW_MAIN = 23 +lv.EVENT_DRAW_MAIN_BEGIN = 22 +lv.EVENT_DRAW_MAIN_END = 24 +lv.EVENT_DRAW_POST = 26 +lv.EVENT_DRAW_POST_BEGIN = 25 +lv.EVENT_DRAW_POST_END = 27 +lv.EVENT_DRAW_TASK_ADDED = 28 +lv.EVENT_FLUSH_FINISH = 56 +lv.EVENT_FLUSH_START = 55 +lv.EVENT_FOCUSED = 15 +lv.EVENT_GESTURE = 13 +lv.EVENT_GET_SELF_SIZE = 46 +lv.EVENT_HIT_TEST = 18 +lv.EVENT_INDEV_RESET = 19 +lv.EVENT_INSERT = 30 +lv.EVENT_INVALIDATE_AREA = 47 +lv.EVENT_KEY = 14 +lv.EVENT_LAYOUT_CHANGED = 45 +lv.EVENT_LEAVE = 17 +lv.EVENT_LONG_PRESSED = 5 +lv.EVENT_LONG_PRESSED_REPEAT = 6 +lv.EVENT_PREPROCESS = 32768 +lv.EVENT_PRESSED = 1 +lv.EVENT_PRESSING = 2 +lv.EVENT_PRESS_LOST = 3 +lv.EVENT_READY = 32 +lv.EVENT_REFRESH = 31 +lv.EVENT_REFR_EXT_DRAW_SIZE = 21 +lv.EVENT_REFR_READY = 52 +lv.EVENT_REFR_REQUEST = 50 +lv.EVENT_REFR_START = 51 +lv.EVENT_RELEASED = 8 +lv.EVENT_RENDER_READY = 54 +lv.EVENT_RENDER_START = 53 +lv.EVENT_RESOLUTION_CHANGED = 48 +lv.EVENT_SCREEN_LOADED = 41 +lv.EVENT_SCREEN_LOAD_START = 40 +lv.EVENT_SCREEN_UNLOADED = 42 +lv.EVENT_SCREEN_UNLOAD_START = 39 +lv.EVENT_SCROLL = 12 +lv.EVENT_SCROLL_BEGIN = 9 +lv.EVENT_SCROLL_END = 11 +lv.EVENT_SCROLL_THROW_BEGIN = 10 +lv.EVENT_SHORT_CLICKED = 4 +lv.EVENT_SIZE_CHANGED = 43 +lv.EVENT_STYLE_CHANGED = 44 +lv.EVENT_VALUE_CHANGED = 29 +lv.EVENT_VSYNC = 57 +lv.FLEX_ALIGN_CENTER = 2 +lv.FLEX_ALIGN_END = 1 +lv.FLEX_ALIGN_SPACE_AROUND = 4 +lv.FLEX_ALIGN_SPACE_BETWEEN = 5 +lv.FLEX_ALIGN_SPACE_EVENLY = 3 +lv.FLEX_ALIGN_START = 0 +lv.FLEX_FLOW_COLUMN = 1 +lv.FLEX_FLOW_COLUMN_REVERSE = 9 +lv.FLEX_FLOW_COLUMN_WRAP = 5 +lv.FLEX_FLOW_COLUMN_WRAP_REVERSE = 13 +lv.FLEX_FLOW_ROW = 0 +lv.FLEX_FLOW_ROW_REVERSE = 8 +lv.FLEX_FLOW_ROW_WRAP = 4 +lv.FLEX_FLOW_ROW_WRAP_REVERSE = 12 +lv.FS_MODE_RD = 2 +lv.FS_MODE_WR = 1 +lv.FS_RES_BUSY = 7 +lv.FS_RES_DENIED = 6 +lv.FS_RES_FS_ERR = 2 +lv.FS_RES_FULL = 4 +lv.FS_RES_HW_ERR = 1 +lv.FS_RES_INV_PARAM = 11 +lv.FS_RES_LOCKED = 5 +lv.FS_RES_NOT_EX = 3 +lv.FS_RES_NOT_IMP = 9 +lv.FS_RES_OK = 0 +lv.FS_RES_OUT_OF_MEM = 10 +lv.FS_RES_TOUT = 8 +lv.FS_RES_UNKNOWN = 12 +lv.FS_SEEK_CUR = 1 +lv.FS_SEEK_END = 2 +lv.FS_SEEK_SET = 0 +lv.FT_FONT_STYLE_BOLD = 2 +lv.FT_FONT_STYLE_ITALIC = 1 +lv.FT_FONT_STYLE_NORMAL = 0 +lv.GRAD_DIR_HOR = 2 +lv.GRAD_DIR_NONE = 0 +lv.GRAD_DIR_VER = 1 +lv.GRID_ALIGN_CENTER = 1 +lv.GRID_ALIGN_END = 2 +lv.GRID_ALIGN_SPACE_AROUND = 5 +lv.GRID_ALIGN_SPACE_BETWEEN = 6 +lv.GRID_ALIGN_SPACE_EVENLY = 4 +lv.GRID_ALIGN_START = 0 +lv.GRID_ALIGN_STRETCH = 3 +lv.GRID_CONTENT = 536870810 +lv.GRID_FR = 536870811 +lv.GRID_TEMPLATE_LAST = 536870911 +lv.GROUP_REFOCUS_POLICY_NEXT = 0 +lv.GROUP_REFOCUS_POLICY_PREV = 1 +lv.IMAGEBUTTON_STATE_CHECKED_DISABLED = 5 +lv.IMAGEBUTTON_STATE_CHECKED_PRESSED = 4 +lv.IMAGEBUTTON_STATE_CHECKED_RELEASED = 3 +lv.IMAGEBUTTON_STATE_DISABLED = 2 +lv.IMAGEBUTTON_STATE_PRESSED = 1 +lv.IMAGEBUTTON_STATE_RELEASED = 0 +lv.IMAGE_ALIGN_BOTTOM_LEFT = 4 +lv.IMAGE_ALIGN_BOTTOM_MID = 5 +lv.IMAGE_ALIGN_BOTTOM_RIGHT = 6 +lv.IMAGE_ALIGN_CENTER = 9 +lv.IMAGE_ALIGN_DEFAULT = 0 +lv.IMAGE_ALIGN_LEFT_MID = 7 +lv.IMAGE_ALIGN_RIGHT_MID = 8 +lv.IMAGE_ALIGN_STRETCH = 11 +lv.IMAGE_ALIGN_TILE = 12 +lv.IMAGE_ALIGN_TOP_LEFT = 1 +lv.IMAGE_ALIGN_TOP_MID = 2 +lv.IMAGE_ALIGN_TOP_RIGHT = 3 +lv.IMAGE_COMPRESS_LZ4 = 2 +lv.IMAGE_COMPRESS_NONE = 0 +lv.IMAGE_COMPRESS_RLE = 1 +lv.IMAGE_FLAGS_ALLOCATED = 16 +lv.IMAGE_FLAGS_COMPRESSED = 8 +lv.IMAGE_FLAGS_MODIFIABLE = 2 +lv.IMAGE_FLAGS_PREMULTIPLIED = 1 +lv.IMAGE_FLAGS_USER1 = 4096 +lv.IMAGE_FLAGS_USER2 = 8192 +lv.IMAGE_FLAGS_USER3 = 16384 +lv.IMAGE_FLAGS_USER4 = 32768 +lv.IMAGE_FLAGS_USER5 = 256 +lv.IMAGE_FLAGS_USER6 = 512 +lv.IMAGE_FLAGS_USER7 = 1024 +lv.IMAGE_FLAGS_USER8 = 2048 +lv.IMAGE_FLAGS_VECTORS = 4 +lv.IMAGE_SRC_FILE = 1 +lv.IMAGE_SRC_SYMBOL = 2 +lv.IMAGE_SRC_UNKNOWN = 3 +lv.IMAGE_SRC_VARIABLE = 0 +lv.INDEV_STATE_PR = 1 +lv.INDEV_STATE_REL = 0 +lv.KEYBOARD_MODE_NUMBER = 3 +lv.KEYBOARD_MODE_SPECIAL = 2 +lv.KEYBOARD_MODE_TEXT_LOWER = 0 +lv.KEYBOARD_MODE_TEXT_UPPER = 1 +lv.KEYBOARD_MODE_USER_1 = 4 +lv.KEYBOARD_MODE_USER_2 = 5 +lv.KEYBOARD_MODE_USER_3 = 6 +lv.KEYBOARD_MODE_USER_4 = 7 +lv.KEY_BACKSPACE = 8 +lv.KEY_DEL = 127 +lv.KEY_DOWN = 18 +lv.KEY_END = 3 +lv.KEY_ENTER = 10 +lv.KEY_ESC = 27 +lv.KEY_HOME = 2 +lv.KEY_LEFT = 20 +lv.KEY_NEXT = 9 +lv.KEY_PREV = 11 +lv.KEY_RIGHT = 19 +lv.KEY_UP = 17 +lv.LABEL_DOT_NUM = 3 +lv.LABEL_LONG_CLIP = 4 +lv.LABEL_LONG_DOT = 1 +lv.LABEL_LONG_SCROLL = 2 +lv.LABEL_LONG_SCROLL_CIRCULAR = 3 +lv.LABEL_LONG_WRAP = 0 +lv.LABEL_POS_LAST = 65535 +lv.LABEL_TEXT_SELECTION_OFF = 65535 +lv.LAYER_TYPE_NONE = 0 +lv.LAYER_TYPE_SIMPLE = 1 +lv.LAYER_TYPE_TRANSFORM = 2 +lv.LAYOUT_FLEX = 1 +lv.LAYOUT_GRID = 2 +lv.LAYOUT_NONE = 0 +lv.LOG_LEVEL_ERROR = 3 +lv.LOG_LEVEL_INFO = 1 +lv.LOG_LEVEL_NONE = 5 +lv.LOG_LEVEL_TRACE = 0 +lv.LOG_LEVEL_USER = 4 +lv.LOG_LEVEL_WARN = 2 +lv.MENU_HEADER_BOTTOM_FIXED = 2 +lv.MENU_HEADER_TOP_FIXED = 0 +lv.MENU_HEADER_TOP_UNFIXED = 1 +lv.MENU_ROOT_BACK_BUTTON_DISABLED = 0 +lv.MENU_ROOT_BACK_BUTTON_ENABLED = 1 +lv.OBJ_CLASS_EDITABLE_FALSE = 2 +lv.OBJ_CLASS_EDITABLE_INHERIT = 0 +lv.OBJ_CLASS_EDITABLE_TRUE = 1 +lv.OBJ_CLASS_GROUP_DEF_FALSE = 2 +lv.OBJ_CLASS_GROUP_DEF_INHERIT = 0 +lv.OBJ_CLASS_GROUP_DEF_TRUE = 1 +lv.OBJ_CLASS_THEME_INHERITABLE_FALSE = 0 +lv.OBJ_CLASS_THEME_INHERITABLE_TRUE = 1 +lv.OBJ_FLAG_ADV_HITTEST = 65536 +lv.OBJ_FLAG_CHECKABLE = 8 +lv.OBJ_FLAG_CLICKABLE = 2 +lv.OBJ_FLAG_CLICK_FOCUSABLE = 4 +lv.OBJ_FLAG_EVENT_BUBBLE = 16384 +lv.OBJ_FLAG_FLEX_IN_NEW_TRACK = 2097152 +lv.OBJ_FLAG_FLOATING = 262144 +lv.OBJ_FLAG_GESTURE_BUBBLE = 32768 +lv.OBJ_FLAG_HIDDEN = 1 +lv.OBJ_FLAG_IGNORE_LAYOUT = 131072 +lv.OBJ_FLAG_LAYOUT_1 = 8388608 +lv.OBJ_FLAG_LAYOUT_2 = 16777216 +lv.OBJ_FLAG_OVERFLOW_VISIBLE = 1048576 +lv.OBJ_FLAG_PRESS_LOCK = 8192 +lv.OBJ_FLAG_SCROLLABLE = 16 +lv.OBJ_FLAG_SCROLL_CHAIN = 768 +lv.OBJ_FLAG_SCROLL_CHAIN_HOR = 256 +lv.OBJ_FLAG_SCROLL_CHAIN_VER = 512 +lv.OBJ_FLAG_SCROLL_ELASTIC = 32 +lv.OBJ_FLAG_SCROLL_MOMENTUM = 64 +lv.OBJ_FLAG_SCROLL_ONE = 128 +lv.OBJ_FLAG_SCROLL_ON_FOCUS = 1024 +lv.OBJ_FLAG_SCROLL_WITH_ARROW = 2048 +lv.OBJ_FLAG_SEND_DRAW_TASK_EVENTS = 524288 +lv.OBJ_FLAG_SNAPPABLE = 4096 +lv.OBJ_FLAG_USER_1 = 134217728 +lv.OBJ_FLAG_USER_2 = 268435456 +lv.OBJ_FLAG_USER_3 = 536870912 +lv.OBJ_FLAG_USER_4 = 1073741824 +lv.OBJ_FLAG_WIDGET_1 = 33554432 +lv.OBJ_FLAG_WIDGET_2 = 67108864 +lv.OBJ_TREE_WALK_END = 2 +lv.OBJ_TREE_WALK_NEXT = 0 +lv.OBJ_TREE_WALK_SKIP_CHILDREN = 1 +lv.OPA_0 = 0 +lv.OPA_10 = 25 +lv.OPA_100 = 255 +lv.OPA_20 = 51 +lv.OPA_30 = 76 +lv.OPA_40 = 102 +lv.OPA_50 = 127 +lv.OPA_60 = 153 +lv.OPA_70 = 178 +lv.OPA_80 = 204 +lv.OPA_90 = 229 +lv.OPA_COVER = 255 +lv.OPA_TRANSP = 0 +lv.PALETTE_AMBER = 13 +lv.PALETTE_BLUE = 5 +lv.PALETTE_BLUE_GREY = 17 +lv.PALETTE_BROWN = 16 +lv.PALETTE_CYAN = 7 +lv.PALETTE_DEEP_ORANGE = 15 +lv.PALETTE_DEEP_PURPLE = 3 +lv.PALETTE_GREEN = 9 +lv.PALETTE_GREY = 18 +lv.PALETTE_INDIGO = 4 +lv.PALETTE_LIGHT_BLUE = 6 +lv.PALETTE_LIGHT_GREEN = 10 +lv.PALETTE_LIME = 11 +lv.PALETTE_NONE = 255 +lv.PALETTE_ORANGE = 14 +lv.PALETTE_PINK = 1 +lv.PALETTE_PURPLE = 2 +lv.PALETTE_RED = 0 +lv.PALETTE_TEAL = 8 +lv.PALETTE_YELLOW = 12 +lv.PART_ANY = 983040 +lv.PART_CURSOR = 393216 +lv.PART_CUSTOM_FIRST = 524288 +lv.PART_INDICATOR = 131072 +lv.PART_ITEMS = 327680 +lv.PART_KNOB = 196608 +lv.PART_MAIN = 0 +lv.PART_SCROLLBAR = 65536 +lv.PART_SELECTED = 262144 +lv.PART_TEXTAREA_PLACEHOLDER = 524288 +lv.RADIUS_CIRCLE = 32767 +lv.RB_COLOR_BLACK = 1 +lv.RB_COLOR_RED = 0 +lv.RESULT_INVALID = 0 +lv.RESULT_OK = 1 +lv.RES_INV = 0 +lv.RES_OK = 1 +lv.ROLLER_MODE_INFINITE = 1 +lv.ROLLER_MODE_NORMAL = 0 +lv.SCALE_LABEL_ENABLED_DEFAULT = 1 +lv.SCALE_MAJOR_TICK_EVERY_DEFAULT = 5 +lv.SCALE_MODE_HORIZONTAL_BOTTOM = 1 +lv.SCALE_MODE_HORIZONTAL_TOP = 0 +lv.SCALE_MODE_ROUND_INNER = 8 +lv.SCALE_MODE_ROUND_OUTER = 16 +lv.SCALE_MODE_VERTICAL_LEFT = 2 +lv.SCALE_MODE_VERTICAL_RIGHT = 4 +lv.SCALE_NONE = 256 +lv.SCALE_TOTAL_TICK_COUNT_DEFAULT = 11 +lv.SCROLLBAR_MODE_ACTIVE = 2 +lv.SCROLLBAR_MODE_AUTO = 3 +lv.SCROLLBAR_MODE_OFF = 0 +lv.SCROLLBAR_MODE_ON = 1 +lv.SCROLL_SNAP_CENTER = 3 +lv.SCROLL_SNAP_END = 2 +lv.SCROLL_SNAP_NONE = 0 +lv.SCROLL_SNAP_START = 1 +lv.SCR_LOAD_ANIM_FADE_IN = 9 +lv.SCR_LOAD_ANIM_FADE_ON = 9 +lv.SCR_LOAD_ANIM_FADE_OUT = 10 +lv.SCR_LOAD_ANIM_MOVE_BOTTOM = 8 +lv.SCR_LOAD_ANIM_MOVE_LEFT = 5 +lv.SCR_LOAD_ANIM_MOVE_RIGHT = 6 +lv.SCR_LOAD_ANIM_MOVE_TOP = 7 +lv.SCR_LOAD_ANIM_NONE = 0 +lv.SCR_LOAD_ANIM_OUT_BOTTOM = 14 +lv.SCR_LOAD_ANIM_OUT_LEFT = 11 +lv.SCR_LOAD_ANIM_OUT_RIGHT = 12 +lv.SCR_LOAD_ANIM_OUT_TOP = 13 +lv.SCR_LOAD_ANIM_OVER_BOTTOM = 4 +lv.SCR_LOAD_ANIM_OVER_LEFT = 1 +lv.SCR_LOAD_ANIM_OVER_RIGHT = 2 +lv.SCR_LOAD_ANIM_OVER_TOP = 3 +lv.SIZE_CONTENT = 536872913 +lv.SLIDER_MODE_NORMAL = 0 +lv.SLIDER_MODE_RANGE = 2 +lv.SLIDER_MODE_SYMMETRICAL = 1 +lv.SPAN_MODE_BREAK = 2 +lv.SPAN_MODE_EXPAND = 1 +lv.SPAN_MODE_FIXED = 0 +lv.SPAN_OVERFLOW_CLIP = 0 +lv.SPAN_OVERFLOW_ELLIPSIS = 1 +lv.STATE_ANY = 65535 +lv.STATE_CHECKED = 1 +lv.STATE_DEFAULT = 0 +lv.STATE_DISABLED = 128 +lv.STATE_EDITED = 8 +lv.STATE_FOCUSED = 2 +lv.STATE_FOCUS_KEY = 4 +lv.STATE_HOVERED = 16 +lv.STATE_PRESSED = 32 +lv.STATE_SCROLLED = 64 +lv.STATE_USER_1 = 4096 +lv.STATE_USER_2 = 8192 +lv.STATE_USER_3 = 16384 +lv.STATE_USER_4 = 32768 +lv.STRIDE_AUTO = 0 +lv.STYLE_ALIGN = 10 +lv.STYLE_ANIM = 99 +lv.STYLE_ANIM_DURATION = 100 +lv.STYLE_ANIM_TIME = 100 +lv.STYLE_ARC_COLOR = 82 +lv.STYLE_ARC_IMAGE_SRC = 84 +lv.STYLE_ARC_OPA = 83 +lv.STYLE_ARC_ROUNDED = 81 +lv.STYLE_ARC_WIDTH = 80 +lv.STYLE_BASE_DIR = 39 +lv.STYLE_BG_COLOR = 28 +lv.STYLE_BG_GRAD = 38 +lv.STYLE_BG_GRAD_COLOR = 35 +lv.STYLE_BG_GRAD_DIR = 32 +lv.STYLE_BG_GRAD_OPA = 37 +lv.STYLE_BG_GRAD_STOP = 34 +lv.STYLE_BG_IMAGE_OPA = 41 +lv.STYLE_BG_IMAGE_RECOLOR = 42 +lv.STYLE_BG_IMAGE_RECOLOR_OPA = 43 +lv.STYLE_BG_IMAGE_SRC = 40 +lv.STYLE_BG_IMAGE_TILED = 44 +lv.STYLE_BG_MAIN_OPA = 36 +lv.STYLE_BG_MAIN_STOP = 33 +lv.STYLE_BG_OPA = 29 +lv.STYLE_BLEND_MODE = 103 +lv.STYLE_BORDER_COLOR = 49 +lv.STYLE_BORDER_OPA = 50 +lv.STYLE_BORDER_POST = 53 +lv.STYLE_BORDER_SIDE = 52 +lv.STYLE_BORDER_WIDTH = 48 +lv.STYLE_CLIP_CORNER = 45 +lv.STYLE_COLOR_FILTER_DSC = 97 +lv.STYLE_COLOR_FILTER_OPA = 98 +lv.STYLE_FLEX_CROSS_PLACE = 117 +lv.STYLE_FLEX_FLOW = 115 +lv.STYLE_FLEX_GROW = 119 +lv.STYLE_FLEX_MAIN_PLACE = 116 +lv.STYLE_FLEX_TRACK_PLACE = 118 +lv.STYLE_GRID_CELL_COLUMN_POS = 124 +lv.STYLE_GRID_CELL_COLUMN_SPAN = 125 +lv.STYLE_GRID_CELL_ROW_POS = 127 +lv.STYLE_GRID_CELL_ROW_SPAN = 128 +lv.STYLE_GRID_CELL_X_ALIGN = 126 +lv.STYLE_GRID_CELL_Y_ALIGN = 129 +lv.STYLE_GRID_COLUMN_ALIGN = 120 +lv.STYLE_GRID_COLUMN_DSC_ARRAY = 123 +lv.STYLE_GRID_ROW_ALIGN = 121 +lv.STYLE_GRID_ROW_DSC_ARRAY = 122 +lv.STYLE_HEIGHT = 2 +lv.STYLE_IMAGE_OPA = 68 +lv.STYLE_IMAGE_RECOLOR = 69 +lv.STYLE_IMAGE_RECOLOR_OPA = 70 +lv.STYLE_IMG_OPA = 68 +lv.STYLE_IMG_RECOLOR = 69 +lv.STYLE_IMG_RECOLOR_OPA = 70 +lv.STYLE_LAYOUT = 22 +lv.STYLE_LENGTH = 3 +lv.STYLE_LINE_COLOR = 76 +lv.STYLE_LINE_DASH_GAP = 74 +lv.STYLE_LINE_DASH_WIDTH = 73 +lv.STYLE_LINE_OPA = 77 +lv.STYLE_LINE_ROUNDED = 75 +lv.STYLE_LINE_WIDTH = 72 +lv.STYLE_MARGIN_BOTTOM = 25 +lv.STYLE_MARGIN_LEFT = 26 +lv.STYLE_MARGIN_RIGHT = 27 +lv.STYLE_MARGIN_TOP = 24 +lv.STYLE_MAX_HEIGHT = 7 +lv.STYLE_MAX_WIDTH = 5 +lv.STYLE_MIN_HEIGHT = 6 +lv.STYLE_MIN_WIDTH = 4 +lv.STYLE_OPA = 95 +lv.STYLE_OPA_LAYERED = 96 +lv.STYLE_OUTLINE_COLOR = 57 +lv.STYLE_OUTLINE_OPA = 58 +lv.STYLE_OUTLINE_PAD = 59 +lv.STYLE_OUTLINE_WIDTH = 56 +lv.STYLE_PAD_BOTTOM = 17 +lv.STYLE_PAD_COLUMN = 21 +lv.STYLE_PAD_LEFT = 18 +lv.STYLE_PAD_RIGHT = 19 +lv.STYLE_PAD_ROW = 20 +lv.STYLE_PAD_TOP = 16 +lv.STYLE_PROP_ANY = 255 +lv.STYLE_PROP_INV = 0 +lv.STYLE_RADIUS = 12 +lv.STYLE_RES_FOUND = 1 +lv.STYLE_RES_NOT_FOUND = 0 +lv.STYLE_SHADOW_COLOR = 61 +lv.STYLE_SHADOW_OFFSET_X = 64 +lv.STYLE_SHADOW_OFFSET_Y = 65 +lv.STYLE_SHADOW_OFS_X = 64 +lv.STYLE_SHADOW_OFS_Y = 65 +lv.STYLE_SHADOW_OPA = 62 +lv.STYLE_SHADOW_SPREAD = 66 +lv.STYLE_SHADOW_WIDTH = 60 +lv.STYLE_TEXT_ALIGN = 94 +lv.STYLE_TEXT_COLOR = 88 +lv.STYLE_TEXT_DECOR = 93 +lv.STYLE_TEXT_FONT = 90 +lv.STYLE_TEXT_LETTER_SPACE = 91 +lv.STYLE_TEXT_LINE_SPACE = 92 +lv.STYLE_TEXT_OPA = 89 +lv.STYLE_TRANSFORM_ANGLE = 110 +lv.STYLE_TRANSFORM_HEIGHT = 105 +lv.STYLE_TRANSFORM_PIVOT_X = 111 +lv.STYLE_TRANSFORM_PIVOT_Y = 112 +lv.STYLE_TRANSFORM_ROTATION = 110 +lv.STYLE_TRANSFORM_SCALE_X = 108 +lv.STYLE_TRANSFORM_SCALE_Y = 109 +lv.STYLE_TRANSFORM_SKEW_X = 113 +lv.STYLE_TRANSFORM_SKEW_Y = 114 +lv.STYLE_TRANSFORM_WIDTH = 104 +lv.STYLE_TRANSITION = 102 +lv.STYLE_TRANSLATE_X = 106 +lv.STYLE_TRANSLATE_Y = 107 +lv.STYLE_WIDTH = 1 +lv.STYLE_X = 8 +lv.STYLE_Y = 9 +lv.TABLE_CELL_CTRL_CUSTOM_1 = 16 +lv.TABLE_CELL_CTRL_CUSTOM_2 = 32 +lv.TABLE_CELL_CTRL_CUSTOM_3 = 64 +lv.TABLE_CELL_CTRL_CUSTOM_4 = 128 +lv.TABLE_CELL_CTRL_MERGE_RIGHT = 1 +lv.TABLE_CELL_CTRL_TEXT_CROP = 2 +lv.TABLE_CELL_NONE = 65535 +lv.TEXTAREA_CURSOR_LAST = 32767 +lv.TEXT_ALIGN_AUTO = 0 +lv.TEXT_ALIGN_CENTER = 2 +lv.TEXT_ALIGN_LEFT = 1 +lv.TEXT_ALIGN_RIGHT = 3 +lv.TEXT_DECOR_NONE = 0 +lv.TEXT_DECOR_STRIKETHROUGH = 2 +lv.TEXT_DECOR_UNDERLINE = 1 +lv.TEXT_FLAG_EXPAND = 1 +lv.TEXT_FLAG_FIT = 2 +lv.TEXT_FLAG_NONE = 0 +lv.VECTOR_BLEND_ADDITIVE = 7 +lv.VECTOR_BLEND_DST_IN = 3 +lv.VECTOR_BLEND_DST_OVER = 2 +lv.VECTOR_BLEND_MULTIPLY = 5 +lv.VECTOR_BLEND_NONE = 6 +lv.VECTOR_BLEND_SCREEN = 4 +lv.VECTOR_BLEND_SRC_IN = 1 +lv.VECTOR_BLEND_SRC_OVER = 0 +lv.VECTOR_BLEND_SUBTRACTIVE = 8 +lv.VECTOR_DRAW_STYLE_GRADIENT = 2 +lv.VECTOR_DRAW_STYLE_PATTERN = 1 +lv.VECTOR_DRAW_STYLE_SOLID = 0 +lv.VECTOR_FILL_EVENODD = 1 +lv.VECTOR_FILL_NONZERO = 0 +lv.VECTOR_GRADIENT_SPREAD_PAD = 0 +lv.VECTOR_GRADIENT_SPREAD_REFLECT = 2 +lv.VECTOR_GRADIENT_SPREAD_REPEAT = 1 +lv.VECTOR_GRADIENT_STYLE_LINEAR = 0 +lv.VECTOR_GRADIENT_STYLE_RADIAL = 1 +lv.VECTOR_PATH_OP_CLOSE = 4 +lv.VECTOR_PATH_OP_CUBIC_TO = 3 +lv.VECTOR_PATH_OP_LINE_TO = 1 +lv.VECTOR_PATH_OP_MOVE_TO = 0 +lv.VECTOR_PATH_OP_QUAD_TO = 2 +lv.VECTOR_PATH_QUALITY_HIGH = 1 +lv.VECTOR_PATH_QUALITY_LOW = 2 +lv.VECTOR_PATH_QUALITY_MEDIUM = 0 +lv.VECTOR_STROKE_CAP_BUTT = 0 +lv.VECTOR_STROKE_CAP_ROUND = 2 +lv.VECTOR_STROKE_CAP_SQUARE = 1 +lv.VECTOR_STROKE_JOIN_BEVEL = 1 +lv.VECTOR_STROKE_JOIN_MITER = 0 +lv.VECTOR_STROKE_JOIN_ROUND = 2 +lv.ZOOM_NONE = 256 diff --git a/lib/libesp32_lvgl/lv_binding_berry/tools/lv_export_const.be b/lib/libesp32_lvgl/lv_binding_berry/tools/lv_export_const.be new file mode 100644 index 000000000..26c1ce5e3 --- /dev/null +++ b/lib/libesp32_lvgl/lv_binding_berry/tools/lv_export_const.be @@ -0,0 +1,54 @@ +# use this simple script with every LVGL update +# +# generate `lv_constants.be` containing all lvgl integer constants + +var f_out = open("lv_constants.be", "w") + +f_out.write("# LVGL integer constants\n") +f_out.write(f"# LVGL version {lv.version}\n\n") + +var cc = lv._constants() + +# get keys of a map in sorted order +def k2l(m) var l=[] if m==nil return l end for k:m.keys() l.push(k) end return l end + +def qsort(data) + # do once sort + def once(left, right) + var pivot = data[left] # use the 0th value as the pivot + while left < right # check if sort is complete + # put the value less than the pivot to the left + while left < right && data[right] >= pivot + right -= 1 # skip values greater than pivot + end + data[left] = data[right] + # put the value greater than the pivot on the right + while left < right && data[left] <= pivot + left += 1 # skip values less than pivot + end + data[right] = data[left] + end + # now we have the index of the pivot, store it + data[left] = pivot + return left # return the index of the pivot + end + # recursive quick sort algorithm + def _sort(left, right) + if left < right # executed when the array is not empty + var index = once(left, right) # get index of pivot for divide and conquer + _sort(left, index - 1) # sort the data on the left + _sort(index + 1, right) # sort the data on the right + end + end + # start quick sort + _sort(0, data.size() - 1) + return data +end + + +var keys = qsort(k2l(cc)) + +for k: keys + f_out.write(f"lv.{k} = {cc[k]}\n") +end +f_out.close() diff --git a/lib/libesp32_lvgl/lv_haspmota/LICENSE b/lib/libesp32_lvgl/lv_haspmota/LICENSE new file mode 100644 index 000000000..ad32e03bf --- /dev/null +++ b/lib/libesp32_lvgl/lv_haspmota/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2021 Stephan Hadinger, LVGL Kft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/lib/libesp32_lvgl/lv_haspmota/library.json b/lib/libesp32_lvgl/lv_haspmota/library.json new file mode 100644 index 000000000..17f02b2d4 --- /dev/null +++ b/lib/libesp32_lvgl/lv_haspmota/library.json @@ -0,0 +1,15 @@ +{ + "name": "HASPmota", + "version": "1.0", + "description": "HASPmota is a tool for easy display interfaces, inspired from OpenHASP", + "frameworks": "arduino", + "platforms": "espressif32", + "authors": + { + "name": "Stephan Hadinger", + "maintainer": true + }, + "build": { + "flags": [ "-I$PROJECT_DIR/include", "-includetasmota_options.h" ] + } + } \ No newline at end of file diff --git a/lib/libesp32_lvgl/lv_haspmota/src/be_lv_haspmota.c b/lib/libesp32_lvgl/lv_haspmota/src/be_lv_haspmota.c new file mode 100644 index 000000000..5a27f2c56 --- /dev/null +++ b/lib/libesp32_lvgl/lv_haspmota/src/be_lv_haspmota.c @@ -0,0 +1,2 @@ + +#include "solidify/be_lv_haspmota_solidified.h" diff --git a/lib/libesp32_lvgl/lv_haspmota/src/be_lv_haspmota.h b/lib/libesp32_lvgl/lv_haspmota/src/be_lv_haspmota.h new file mode 100644 index 000000000..ea90b2a49 --- /dev/null +++ b/lib/libesp32_lvgl/lv_haspmota/src/be_lv_haspmota.h @@ -0,0 +1 @@ +/* empty include, used to make sure this package is compiled */ diff --git a/tasmota/berry/haspmota_src/haspmota_core/haspmota.be b/lib/libesp32_lvgl/lv_haspmota/src/embedded/haspmota.be similarity index 99% rename from tasmota/berry/haspmota_src/haspmota_core/haspmota.be rename to lib/libesp32_lvgl/lv_haspmota/src/embedded/haspmota.be index 218f69f53..d72ed5f8f 100644 --- a/tasmota/berry/haspmota_src/haspmota_core/haspmota.be +++ b/lib/libesp32_lvgl/lv_haspmota/src/embedded/haspmota.be @@ -1238,6 +1238,10 @@ class lvh_qrcode : lvh_obj static var _lv_class = lv.qrcode var qr_text # any change needs the text to be update again + def post_config() + super(self).post_config() + self._update() + end def _update() var t = self.qr_text if (t != nil) @@ -2417,7 +2421,7 @@ def solidify_haspmota() # new internal names "button", "image", "buttonmatrix", ] - var f = open("be_lv_haspmota.c", "w") + var f = open("be_lv_haspmota_solidified.h", "w") f.write( '/********************************************************************\n' ' * Tasmota HASPmota solidified\n' diff --git a/lib/libesp32/berry_tasmota/src/be_lv_haspmota.c b/lib/libesp32_lvgl/lv_haspmota/src/solidify/be_lv_haspmota_solidified.h similarity index 100% rename from lib/libesp32/berry_tasmota/src/be_lv_haspmota.c rename to lib/libesp32_lvgl/lv_haspmota/src/solidify/be_lv_haspmota_solidified.h diff --git a/pio-tools/gen-berry-structures.py b/pio-tools/gen-berry-structures.py index f1cf36052..9e338b91e 100644 --- a/pio-tools/gen-berry-structures.py +++ b/pio-tools/gen-berry-structures.py @@ -16,6 +16,6 @@ for filePath in fileList: # print("Deleting file : ", filePath) except: print("Error while deleting file : ", filePath) -cmd = (env["PYTHONEXE"],join("tools","coc","coc"),"-o","generate","src","default",join("..","berry_tasmota","src"),join("..","berry_matter","src","solidify"),join("..","berry_matter","src"),join("..","berry_animate","src","solidify"),join("..","berry_animate","src"),join("..","berry_tasmota","src","solidify"),join("..","berry_mapping","src"),join("..","berry_int64","src"),join("..","..","libesp32_lvgl","lv_binding_berry","src"),join("..","..","libesp32_lvgl","lv_binding_berry","src","solidify"),join("..","..","libesp32_lvgl","lv_binding_berry","generate"),"-c",join("default","berry_conf.h")) +cmd = (env["PYTHONEXE"],join("tools","coc","coc"),"-o","generate","src","default",join("..","berry_tasmota","src"),join("..","berry_matter","src","solidify"),join("..","berry_matter","src"),join("..","berry_animate","src","solidify"),join("..","berry_animate","src"),join("..","berry_tasmota","src","solidify"),join("..","berry_mapping","src"),join("..","berry_int64","src"),join("..","..","libesp32_lvgl","lv_binding_berry","src"),join("..","..","libesp32_lvgl","lv_binding_berry","src","solidify"),join("..","..","libesp32_lvgl","lv_binding_berry","generate"),join("..","..","libesp32_lvgl","lv_haspmota","src","solidify"),"-c",join("default","berry_conf.h")) returncode = subprocess.call(cmd, shell=False) os.chdir(CURRENT_DIR) diff --git a/tasmota/berry/haspmota/haspmota_demo.tapp b/tasmota/berry/haspmota/haspmota_demo.tapp index 83ce5b9830da0d478355c61c5a5e999b01340468..1c0a6c2840d761cb6e1eecde01110bf5c079898a 100644 GIT binary patch delta 185 zcmcb!gJby)jt#v$OpQAx_wy*R1?jy@4c6PdoyXISuYE^Wg#VJ$4yQ#K7*2~$<_i{M ziv>!@>21~u-o@Q48NXdJo>6TlQ0sI@2_^#;klyKy(oE9ZCrB_cGok69zEFxug#}~) zNR9kt&rCjE2?iKg(#STQS(+)DQGa?okYZl{fpI$HM@EV1Rnkmq(|=1dNijxD7n5Of LVEZn{1k?loADTH3 delta 203 zcmZ3!gX7K)jt#v$OvT$K_wy*RWof@l&DP$$oyXISPi03|gs|#~GYn!33=CqE`GUpR zmgv4qU81{LD|i>TijGoYQG8BjdPYfna(+&Jk&=~?vKtsEfu&Lsi?Sy-CW6@jPq!_KIpOa#WW=xr` jCCwDg{Nw}U^fMnAC8jTsW^!Qco&FF=vFV620UZbcj^9CT diff --git a/tasmota/berry/haspmota_src/haspmota_core/autoexec.be b/tasmota/berry/haspmota_src/haspmota_core/autoexec.be deleted file mode 100644 index 138301eab..000000000 --- a/tasmota/berry/haspmota_src/haspmota_core/autoexec.be +++ /dev/null @@ -1,7 +0,0 @@ -# start haspmota -# package with -# rm haspmota.tapp; zip -j -0 haspmota.tapp haspmota_core/* -import haspmota - -# defer start to make sure all modules and tapp applications were loaded first -tasmota.set_timer(1000, /-> haspmota.start()) diff --git a/tasmota/berry/haspmota_src/haspmota_demo/pages.jsonl b/tasmota/berry/haspmota_src/haspmota_demo/pages.jsonl index 2d580ac45..ea98c0d62 100644 --- a/tasmota/berry/haspmota_src/haspmota_demo/pages.jsonl +++ b/tasmota/berry/haspmota_src/haspmota_demo/pages.jsonl @@ -33,7 +33,7 @@ {"page":3,"comment":"---------- Page 3 - qrcode ----------"} {"id":0,"bg_color":"#0000A0","bg_grad_color":"#000000","bg_grad_dir":1,"text_color":"#FFFFFF"} -{"id":1,"obj":"qrcode","qr_text":"https://github.com/arendst/Tasmota","x":85,"y":40,"qr_size":150,"qr_light_color":"#FFFFFF","qr_dark_color":"#000000"} +{"id":1,"obj":"qrcode","qr_text":"https://github.com/arendst/Tasmota","x":85,"y":40,"qr_size":150} {"page":4,"comment":"---------- Page 4 - fan animation ----------"} {"id":0,"bg_color":"#0000A0","bg_grad_color":"#000000","bg_grad_dir":1,"text_color":"#FFFFFF"} diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_lvgl.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_lvgl.ino index a6d4ce7f8..185516bc4 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_lvgl.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_lvgl.ino @@ -34,6 +34,9 @@ #include "be_mapping.h" #include "be_ctypes.h" #include "lv_berry.h" +#ifdef USE_LVGL_HASPMOTA + #include "be_lv_haspmota.h" +#endif // USE_LVGL_HASPMOTA // Berry easy logging extern "C" {