Update to LVGL 9.0.0 (#47)
- Updated LVGL from 8.3 to 9.0 (removed example/docs/demo folders) - Updated esp_lvgl_port to current status of the `lvgl9` branch on `esp-bsp`: https://github.com/espressif/esp-bsp/tree/lvgl9 - Updated all boards and drivers - Removed `libs/lv_drivers` subproject as SDL is now supported by LVGL directly (although keyboard input seems broken) - Updated `libs/lv_screenshot` - Fixed the way `tt_statusbar` widget works due to behaviour change in LVGL - Updated other lvgl code
This commit is contained in:
committed by
GitHub
parent
5fef25fb13
commit
473fb673bd
@@ -4,47 +4,47 @@ option(LV_LVGL_H_INCLUDE_SIMPLE
|
||||
|
||||
# Option to define LV_CONF_INCLUDE_SIMPLE, default: ON
|
||||
option(LV_CONF_INCLUDE_SIMPLE
|
||||
"Simple include of \"lv_conf.h\" and \"lv_drv_conf.h\"" ON)
|
||||
"Use #include \"lv_conf.h\" instead of #include \"../../lv_conf.h\"" ON)
|
||||
|
||||
# Option to set LV_CONF_PATH, if set parent path LV_CONF_DIR is added to
|
||||
# includes
|
||||
option(LV_CONF_PATH "Path defined for lv_conf.h")
|
||||
get_filename_component(LV_CONF_DIR ${LV_CONF_PATH} DIRECTORY)
|
||||
# Option LV_CONF_PATH, which should be the path for lv_conf.h
|
||||
# If set parent path LV_CONF_DIR is added to includes
|
||||
if( LV_CONF_PATH )
|
||||
get_filename_component(LV_CONF_DIR ${LV_CONF_PATH} DIRECTORY)
|
||||
endif( LV_CONF_PATH )
|
||||
|
||||
# Option to build shared libraries (as opposed to static), default: OFF
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
||||
|
||||
file(GLOB_RECURSE SOURCES ${LVGL_ROOT_DIR}/src/*.c)
|
||||
file(GLOB_RECURSE EXAMPLE_SOURCES ${LVGL_ROOT_DIR}/examples/*.c)
|
||||
file(GLOB_RECURSE DEMO_SOURCES ${LVGL_ROOT_DIR}/demos/*.c)
|
||||
|
||||
if (BUILD_SHARED_LIBS)
|
||||
add_library(lvgl SHARED ${SOURCES})
|
||||
else()
|
||||
add_library(lvgl STATIC ${SOURCES})
|
||||
endif()
|
||||
# Set sources used for LVGL components
|
||||
file(GLOB_RECURSE SOURCES ${LVGL_ROOT_DIR}/src/*.c ${LVGL_ROOT_DIR}/src/*.S)
|
||||
file(GLOB_RECURSE THORVG_SOURCES ${LVGL_ROOT_DIR}/src/libs/thorvg/*.cpp ${LVGL_ROOT_DIR}/src/others/vg_lite_tvg/*.cpp)
|
||||
|
||||
# Build LVGL library
|
||||
add_library(lvgl ${SOURCES})
|
||||
add_library(lvgl::lvgl ALIAS lvgl)
|
||||
add_library(lvgl_examples STATIC ${EXAMPLE_SOURCES})
|
||||
add_library(lvgl::examples ALIAS lvgl_examples)
|
||||
add_library(lvgl_demos STATIC ${DEMO_SOURCES})
|
||||
add_library(lvgl::demos ALIAS lvgl_demos)
|
||||
|
||||
target_compile_definitions(
|
||||
lvgl PUBLIC $<$<BOOL:${LV_LVGL_H_INCLUDE_SIMPLE}>:LV_LVGL_H_INCLUDE_SIMPLE>
|
||||
$<$<BOOL:${LV_CONF_INCLUDE_SIMPLE}>:LV_CONF_INCLUDE_SIMPLE>)
|
||||
$<$<BOOL:${LV_CONF_INCLUDE_SIMPLE}>:LV_CONF_INCLUDE_SIMPLE>
|
||||
$<$<COMPILE_LANGUAGE:ASM>:__ASSEMBLY__>)
|
||||
|
||||
# Add definition of LV_CONF_PATH only if needed
|
||||
if(LV_CONF_PATH)
|
||||
target_compile_definitions(lvgl PUBLIC LV_CONF_PATH=${LV_CONF_PATH})
|
||||
endif()
|
||||
|
||||
# Include root and optional parent path of LV_CONF_PATH
|
||||
target_include_directories(lvgl SYSTEM PUBLIC ${LVGL_ROOT_DIR} ${LV_CONF_DIR})
|
||||
|
||||
# Include /examples folder
|
||||
target_include_directories(lvgl_examples SYSTEM
|
||||
PUBLIC ${LVGL_ROOT_DIR}/examples)
|
||||
target_include_directories(lvgl_demos SYSTEM
|
||||
PUBLIC ${LVGL_ROOT_DIR}/demos)
|
||||
|
||||
target_link_libraries(lvgl_examples PUBLIC lvgl)
|
||||
target_link_libraries(lvgl_demos PUBLIC lvgl)
|
||||
if(NOT LV_CONF_BUILD_DISABLE_THORVG_INTERNAL)
|
||||
add_library(lvgl_thorvg ${THORVG_SOURCES})
|
||||
add_library(lvgl::thorvg ALIAS lvgl_thorvg)
|
||||
target_include_directories(lvgl_thorvg SYSTEM PUBLIC ${LVGL_ROOT_DIR}/src/libs/thorvg)
|
||||
if(LV_CONF_PATH)
|
||||
target_compile_definitions(lvgl_thorvg PUBLIC LV_CONF_PATH=${LV_CONF_PATH})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Lbrary and headers can be installed to system using make install
|
||||
file(GLOB LVGL_PUBLIC_HEADERS "${CMAKE_SOURCE_DIR}/lv_conf.h"
|
||||
@@ -53,26 +53,23 @@ file(GLOB LVGL_PUBLIC_HEADERS "${CMAKE_SOURCE_DIR}/lv_conf.h"
|
||||
if("${LIB_INSTALL_DIR}" STREQUAL "")
|
||||
set(LIB_INSTALL_DIR "lib")
|
||||
endif()
|
||||
if("${RUNTIME_INSTALL_DIR}" STREQUAL "")
|
||||
set(RUNTIME_INSTALL_DIR "bin")
|
||||
endif()
|
||||
if("${INC_INSTALL_DIR}" STREQUAL "")
|
||||
set(INC_INSTALL_DIR "include/lvgl")
|
||||
endif()
|
||||
|
||||
install(
|
||||
DIRECTORY "${CMAKE_SOURCE_DIR}/src"
|
||||
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src"
|
||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/"
|
||||
FILES_MATCHING
|
||||
PATTERN "*.h")
|
||||
|
||||
install(
|
||||
FILES "${LV_CONF_PATH}"
|
||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/../"
|
||||
RENAME "lv_conf.h"
|
||||
OPTIONAL)
|
||||
|
||||
configure_file("${LVGL_ROOT_DIR}/lvgl.pc.in" lvgl.pc @ONLY)
|
||||
|
||||
install(
|
||||
FILES "${CMAKE_BINARY_DIR}/lvgl.pc"
|
||||
FILES "${CMAKE_CURRENT_BINARY_DIR}/lvgl.pc"
|
||||
DESTINATION "${LIB_INSTALL_DIR}/pkgconfig/")
|
||||
|
||||
set_target_properties(
|
||||
@@ -87,5 +84,5 @@ install(
|
||||
TARGETS lvgl
|
||||
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
|
||||
LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
|
||||
RUNTIME DESTINATION "${LIB_INSTALL_DIR}"
|
||||
RUNTIME DESTINATION "${RUNTIME_INSTALL_DIR}"
|
||||
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
|
||||
|
||||
@@ -18,31 +18,8 @@ else()
|
||||
set_source_files_properties(${EXAMPLE_SOURCES} COMPILE_FLAGS "-Wno-unused-variable -Wno-format")
|
||||
endif()
|
||||
|
||||
if(CONFIG_LV_USE_DEMO_WIDGETS)
|
||||
file(GLOB_RECURSE DEMO_WIDGETS_SOURCES ${LVGL_ROOT_DIR}/demos/widgets/*.c)
|
||||
list(APPEND DEMO_SOURCES ${DEMO_WIDGETS_SOURCES})
|
||||
endif()
|
||||
if(CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER)
|
||||
file(GLOB_RECURSE DEMO_KEYPAD_AND_ENCODER_SOURCES ${LVGL_ROOT_DIR}/demos/keypad_encoder/*.c)
|
||||
list(APPEND DEMO_SOURCES ${DEMO_KEYPAD_AND_ENCODER_SOURCES})
|
||||
endif()
|
||||
if(CONFIG_LV_USE_DEMO_BENCHMARK)
|
||||
file(GLOB_RECURSE DEMO_BENCHMARK_SOURCES ${LVGL_ROOT_DIR}/demos/benchmark/*.c)
|
||||
list(APPEND DEMO_SOURCES ${DEMO_BENCHMARK_SOURCES})
|
||||
endif()
|
||||
if(CONFIG_LV_USE_DEMO_STRESS)
|
||||
file(GLOB_RECURSE DEMO_STRESS_SOURCES ${LVGL_ROOT_DIR}/demos/stress/*.c)
|
||||
list(APPEND DEMO_SOURCES ${DEMO_STRESS_SOURCES})
|
||||
endif()
|
||||
if(CONFIG_LV_USE_DEMO_MUSIC)
|
||||
file(GLOB_RECURSE DEMO_MUSIC_SOURCES ${LVGL_ROOT_DIR}/demos/music/*.c)
|
||||
list(APPEND DEMO_SOURCES ${DEMO_MUSIC_SOURCES})
|
||||
set_source_files_properties(${DEMO_MUSIC_SOURCES} COMPILE_FLAGS "-Wno-format")
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS ${SOURCES} ${EXAMPLE_SOURCES} ${DEMO_SOURCES}
|
||||
idf_component_register(SRCS ${SOURCES} ${EXAMPLE_SOURCES}
|
||||
INCLUDE_DIRS ${LVGL_ROOT_DIR} ${LVGL_ROOT_DIR}/src ${LVGL_ROOT_DIR}/../
|
||||
${LVGL_ROOT_DIR}/examples ${LVGL_ROOT_DIR}/demos
|
||||
REQUIRES esp_timer)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -13,6 +13,6 @@ target_sources(lvgl_interface INTERFACE ${SOURCES})
|
||||
# /home/test/build/lv_micropython/ports/rp2/build-PICO/lv_mp.c:29316:16: error:
|
||||
# 'lv_style_transition_dsc_t_path_xcb_callback' defined but not used
|
||||
# [-Werror=unused-function] 29316 | STATIC int32_t
|
||||
# lv_style_transition_dsc_t_path_xcb_callback(const struct _lv_anim_t * arg0) |
|
||||
# lv_style_transition_dsc_t_path_xcb_callback(const lv_anim_t * arg0) |
|
||||
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
target_compile_options(lvgl_interface INTERFACE -Wno-unused-function)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -2,8 +2,8 @@
|
||||
<index schemaVersion="1.0.0" xs:noNamespaceSchemaLocation="PackIndex.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<vendor>LVGL</vendor>
|
||||
<url>https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/</url>
|
||||
<timestamp>2023-12-09</timestamp>
|
||||
<timestamp>2024-01-22</timestamp>
|
||||
<pindex>
|
||||
<pdsc url="https://raw.githubusercontent.com/lvgl/lvgl/release/v8.3/env_support/cmsis-pack/" vendor="LVGL" name="lvgl" version="8.3.11"/>
|
||||
<pdsc url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/" vendor="LVGL" name="lvgl" version="9.0.0"/>
|
||||
</pindex>
|
||||
</index>
|
||||
</index>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
1. Copy the **lv_conf_template.h** to '**cmsis-pack**' directory
|
||||
|
||||
2. Set the macro protector to '1'
|
||||
2. Set the macro protector to '1'
|
||||
|
||||
```c
|
||||
...
|
||||
@@ -34,117 +34,190 @@ remove the misleading guide above this code segment.
|
||||
#ifndef LV_CONF_H
|
||||
#define LV_CONF_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "RTE_Components.h"
|
||||
...
|
||||
```
|
||||
|
||||
4. Remove macro definitions for
|
||||
- LV_USE_GPU_STM32_DMA2D
|
||||
- LV_USE_GPU_NXP_PXP
|
||||
- LV_USE_GPU_NXP_VG_LITE
|
||||
- LV_USE_GPU_SWM341_DMA2D
|
||||
- LV_USE_GPU_ARM2D
|
||||
|
||||
- LV_USE_DEMO_WIDGETS
|
||||
|
||||
- LV_USE_DEMO_BENCHMARK
|
||||
|
||||
- LV_USE_IME_PINYIN
|
||||
- LV_USE_PNG
|
||||
- LV_USE_BMP
|
||||
- LV_USE_SJPG
|
||||
- LV_USE_GIF
|
||||
- LV_USE_QRCODE
|
||||
- LV_USE_FREETYPE
|
||||
- LV_USE_TINY_TTF
|
||||
- LV_USE_RLOTTIE
|
||||
- LV_USE_FFMPEG
|
||||
|
||||
- LV_USE_OS
|
||||
|
||||
- LV_USE_FILE_EXPLORER
|
||||
|
||||
- LV_USE_DEMO_WIDGETS
|
||||
|
||||
- LV_USE_DEMO_KEYPAD_AND_ENCODER
|
||||
|
||||
- LV_USE_DEMO_BENCHMARK
|
||||
|
||||
- LV_USE_DEMO_RENDER
|
||||
|
||||
- LV_USE_DEMO_STRESS
|
||||
|
||||
- LV_USE_DEMO_MUSIC
|
||||
|
||||
- LV_USE_DEMO_FLEX_LAYOUT
|
||||
|
||||
- LV_USE_DEMO_MULTILANG
|
||||
|
||||
- LV_USE_DEMO_TRANSFORM
|
||||
|
||||
- LV_USE_DEMO_SCROLL
|
||||
|
||||
- LV_USE_DEMO_VECTOR_GRAPHIC
|
||||
|
||||
- LV_USE_DRAW_VGLITE
|
||||
|
||||
- LV_USE_DRAW_VG_LITE
|
||||
|
||||
- LV_USE_DRAW_PXP
|
||||
|
||||
- LV_USE_DRAW_SDL
|
||||
|
||||
- LV_USE_DRAW_ARM2D
|
||||
|
||||
- LV_USE_SNAPSHOT
|
||||
|
||||
- LV_USE_MONKEY
|
||||
|
||||
- LV_USE_GRIDNAV
|
||||
|
||||
- LV_USE_FRAGMENT
|
||||
|
||||
- LV_USE_IMGFONT
|
||||
- LV_USE_MSG
|
||||
- LV_USE_IME_PINYIN
|
||||
5. Update macro `LV_ATTRIBUTE_MEM_ALIGN` and `LV_ATTRIBUTE_MEM_ALIGN_SIZE` to force a WORD alignment.
|
||||
|
||||
- LV_USE_LINUX_DRM
|
||||
|
||||
- LV_USE_TFT_ESPI
|
||||
|
||||
- LV_USE_ST7735
|
||||
|
||||
- LV_USE_ST7789
|
||||
|
||||
- LV_USE_ST7796
|
||||
|
||||
- LV_USE_ILI9341
|
||||
|
||||
|
||||
|
||||
5. Update `LV_LOG_PRINTF` to `1` and `LV_LOG_LEVEL` to `LV_LOG_LEVEL_USER`
|
||||
|
||||
|
||||
6. Set `LV_FONT_MONTSERRAT_12`, `LV_FONT_MONTSERRAT_24` and `LV_FONT_MONTSERRAT_16` to `1` (So Widgets and Benchmark can be compiled correctly, this is for improving the out of box experience.)
|
||||
|
||||
|
||||
7. Update macro `LV_ATTRIBUTE_MEM_ALIGN` and `LV_ATTRIBUTE_MEM_ALIGN_SIZE` to force a WORD alignment.
|
||||
```c
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 4
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 1
|
||||
#define LV_DRAW_BUF_STRIDE_ALIGN 4
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN __attribute__((aligned(4)))
|
||||
```
|
||||
Update macro `LV_MEM_SIZE` to `(64*1024U)`.
|
||||
Make sure `LV_MEM_SIZE` is no less than `(96*1024U)`.
|
||||
|
||||
Update macro `LV_FONT_MONTSERRAT_12` to `1`.
|
||||
8. Remove following macro definitions in the `3rd party libraries` section:
|
||||
|
||||
Update macro `LV_FONT_MONTSERRAT_12` to `1`.
|
||||
- \#define LV_USE_FS_STDIO 0
|
||||
- \#define LV_USE_FS_POSIX 0
|
||||
- \#define LV_USE_FS_WIN32 0
|
||||
- \#define LV_USE_FS_FATFS 0
|
||||
- #define LV_USE_FS_MEMFS 0
|
||||
- \#define LV_USE_LODEPNG 0
|
||||
- #define LV_USE_LIBPNG 0
|
||||
- \#define LV_USE_BMP 0
|
||||
- \#define LV_USE_RLE 0
|
||||
- #define LV_USE_TJPGD 0
|
||||
- #define LV_USE_LIBJPEG_TURBO 0
|
||||
- \#define LV_USE_GIF 0
|
||||
- \#define LV_USE_BARCODE 0
|
||||
- \#define LV_USE_QRCODE 0
|
||||
- \#define LV_USE_FREETYPE 0
|
||||
- \#define LV_USE_TINY_TTF 0
|
||||
- \#define LV_USE_RLOTTIE 0
|
||||
- \#define LV_USE_FFMPEG 0
|
||||
|
||||
6. Update Theme related macros:
|
||||
9. update the definition of following macros: `LV_USE_VECTOR_GRAPHIC`, `LV_USE_THORVE_INTERNAL` and `LV_USE_THORVE_EXTERNAL` as
|
||||
|
||||
```c
|
||||
/*Enable Vector Graphic APIs*/
|
||||
#ifndef LV_USE_VECTOR_GRAPHIC
|
||||
# define LV_USE_VECTOR_GRAPHIC 0
|
||||
|
||||
/* Enable ThorVG (vector graphics library) from the src/libs folder */
|
||||
# define LV_USE_THORVG_INTERNAL 0
|
||||
|
||||
/* Enable ThorVG by assuming that its installed and linked to the project */
|
||||
# define LV_USE_THORVG_EXTERNAL 0
|
||||
#endif
|
||||
```
|
||||
|
||||
10. update the definition of following macros: `LV_USE_LZ4`, `LV_USE_LZ4_INTERNAL` and `LV_USE_LZ4_EXTERNAL` as
|
||||
|
||||
```c
|
||||
/*Enable LZ4 compress/decompress lib*/
|
||||
#ifndef LV_USE_LZ4
|
||||
# define LV_USE_LZ4 0
|
||||
|
||||
/*Use lvgl built-in LZ4 lib*/
|
||||
# define LV_USE_LZ4_INTERNAL 0
|
||||
|
||||
/*Use external LZ4 library*/
|
||||
# define LV_USE_LZ4_EXTERNAL 0
|
||||
#endif
|
||||
```
|
||||
|
||||
|
||||
11. Add the following code to `HAL SETTINGS`:
|
||||
|
||||
```c
|
||||
#ifdef RTE_GRAPHICS_LVGL_USE_EXTRA_THEMES
|
||||
/*A simple, impressive and very complete theme*/
|
||||
#define LV_USE_THEME_DEFAULT 1
|
||||
#if LV_USE_THEME_DEFAULT
|
||||
|
||||
/*0: Light mode; 1: Dark mode*/
|
||||
#define LV_THEME_DEFAULT_DARK 0
|
||||
|
||||
/*1: Enable grow on press*/
|
||||
#define LV_THEME_DEFAULT_GROW 1
|
||||
|
||||
/*Default transition time in [ms]*/
|
||||
#define LV_THEME_DEFAULT_TRANSITION_TIME 80
|
||||
#endif /*LV_USE_THEME_DEFAULT*/
|
||||
|
||||
/*A very simple theme that is a good starting point for a custom theme*/
|
||||
#define LV_USE_THEME_BASIC 1
|
||||
|
||||
/*A theme designed for monochrome displays*/
|
||||
#define LV_USE_THEME_MONO 1
|
||||
#else
|
||||
#define LV_USE_THEME_DEFAULT 0
|
||||
#define LV_USE_THEME_BASIC 0
|
||||
#define LV_USE_THEME_MONO 0
|
||||
#endif
|
||||
```
|
||||
7. Update `LV_TICK_CUSTOM` related macros:
|
||||
```c
|
||||
/*Use a custom tick source that tells the elapsed time in milliseconds.
|
||||
*It removes the need to manually update the tick with `lv_tick_inc()`)*/
|
||||
#ifdef __PERF_COUNTER__
|
||||
#define LV_TICK_CUSTOM 1
|
||||
#if LV_TICK_CUSTOM
|
||||
extern uint32_t SystemCoreClock;
|
||||
#define LV_TICK_CUSTOM_INCLUDE "perf_counter.h"
|
||||
#define LV_TICK_CUSTOM_SYS_TIME_EXPR get_system_ms()
|
||||
#endif /*LV_TICK_CUSTOM*/
|
||||
#else
|
||||
#define LV_TICK_CUSTOM 0
|
||||
#if LV_TICK_CUSTOM
|
||||
#define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/
|
||||
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
|
||||
/*If using lvgl as ESP32 component*/
|
||||
// #define LV_TICK_CUSTOM_INCLUDE "esp_timer.h"
|
||||
// #define LV_TICK_CUSTOM_SYS_TIME_EXPR ((esp_timer_get_time() / 1000LL))
|
||||
#endif /*LV_TICK_CUSTOM*/
|
||||
#endif /*__PERF_COUNTER__*/
|
||||
```
|
||||
|
||||
|
||||
9. Remove all content in `DEMO USAGE` section but keep the following:
|
||||
|
||||
```c
|
||||
/*Show some widget. It might be required to increase `LV_MEM_SIZE` */
|
||||
#if LV_USE_DEMO_WIDGETS
|
||||
#define LV_DEMO_WIDGETS_SLIDESHOW 0
|
||||
#endif
|
||||
|
||||
/*Benchmark your system*/
|
||||
#if LV_USE_DEMO_BENCHMARK
|
||||
/*Use RGB565A8 images with 16 bit color depth instead of ARGB8565*/
|
||||
#define LV_DEMO_BENCHMARK_RGB565A8 1
|
||||
/*customize tick-get */
|
||||
#if defined(__PERF_COUNTER__) && __PERF_COUNTER__
|
||||
#define LV_GLOBAL_INIT(__GLOBAL_PTR) \
|
||||
do { \
|
||||
lv_global_init((lv_global_t *)(__GLOBAL_PTR)); \
|
||||
extern uint32_t perfc_tick_get(void); \
|
||||
(__GLOBAL_PTR)->tick_state.tick_get_cb = perfc_tick_get; \
|
||||
} while(0)
|
||||
#endif
|
||||
```
|
||||
|
||||
|
||||
|
||||
10. Thoroughly remove the `3rd party libraries` section.
|
||||
11. rename '**lv_conf_template.h**' to '**lv_conf_cmsis.h**'.
|
||||
12. Replace the macro definition:
|
||||
|
||||
```c
|
||||
#define LV_USE_DRAW_SW_ASM LV_DRAW_SW_ASM_NONE
|
||||
```
|
||||
|
||||
with:
|
||||
|
||||
```c
|
||||
#if !defined(LV_USE_DRAW_SW_ASM) && defined(RTE_Acceleration_Arm_2D)
|
||||
/*turn-on helium acceleration when Arm-2D and the Helium-powered device are detected */
|
||||
#if defined(__ARM_FEATURE_MVE) && __ARM_FEATURE_MVE
|
||||
#define LV_USE_DRAW_SW_ASM LV_DRAW_SW_ASM_HELIUM
|
||||
#define LV_USE_DRAW_ARM2D 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef LV_USE_DRAW_SW_ASM
|
||||
#define LV_USE_DRAW_SW_ASM LV_DRAW_SW_ASM_NONE
|
||||
#endif
|
||||
```
|
||||
|
||||
13. Update macro `LV_PROFILER_INCLUDE`:
|
||||
|
||||
```c
|
||||
#define LV_PROFILER_INCLUDE "src/misc/lv_profiler_builtin.h"
|
||||
```
|
||||
|
||||
|
||||
|
||||
14. rename '**lv_conf_template.h**' to '**lv_conf_cmsis.h**'.
|
||||
|
||||
|
||||
|
||||
@@ -156,7 +229,7 @@ if [ `uname -s` = "Linux" ]
|
||||
CMSIS_PACK_PATH="/home/$USER/.arm/Packs/ARM/CMSIS/5.7.0/"
|
||||
PATH_TO_ADD="$CMSIS_PACK_PATH/CMSIS/Utilities/Linux64/"
|
||||
else
|
||||
CMSIS_PACK_PATH="/C/Users/gabriel/AppData/Local/Arm/Packs/ARM/CMSIS/5.7.0"
|
||||
CMSIS_PACK_PATH="/C/Users/$USER/AppData/Local/Arm/Packs/ARM/CMSIS/5.7.0"
|
||||
PATH_TO_ADD="/C/Program Files (x86)/7-Zip/:$CMSIS_PACK_PATH/CMSIS/Utilities/Win32/:/C/xmllint/"
|
||||
fi
|
||||
[[ ":$PATH:" != *":$PATH_TO_ADD}:"* ]] && PATH="${PATH}:${PATH_TO_ADD}"
|
||||
@@ -193,4 +266,3 @@ enter the following command:
|
||||
```sh
|
||||
./gen_pack.sh
|
||||
```
|
||||
|
||||
|
||||
Regular → Executable
+17
-12
@@ -44,8 +44,8 @@ PACK_BUILD=build/
|
||||
# alternative: specify directory names to be added to pack base directory
|
||||
PACK_DIRS="
|
||||
../../src
|
||||
../../docs
|
||||
../../demos
|
||||
../../env_support/pikascript
|
||||
"
|
||||
|
||||
|
||||
@@ -53,7 +53,6 @@ PACK_DIRS="
|
||||
PACK_BASE_FILES="
|
||||
../../LICENCE.txt
|
||||
../../README.md
|
||||
../../README_zh.md
|
||||
../../lvgl.h
|
||||
lv_conf_cmsis.h
|
||||
lv_cmsis_pack.txt
|
||||
@@ -138,10 +137,6 @@ fi
|
||||
mkdir -p ${PACK_BUILD}/examples
|
||||
mkdir -p ${PACK_BUILD}/examples/porting
|
||||
|
||||
# Copy files into build base directory: $PACK_BUILD
|
||||
# pdsc file is mandatory in base directory:
|
||||
cp -f ./$PACK_VENDOR.$PACK_NAME.pdsc ${PACK_BUILD}
|
||||
cp -f ../../examples/porting/* ${PACK_BUILD}/examples/porting
|
||||
|
||||
|
||||
# directories
|
||||
@@ -162,6 +157,13 @@ do
|
||||
cp -f "$f" $PACK_BUILD/
|
||||
done
|
||||
|
||||
# Copy files into build base directory: $PACK_BUILD
|
||||
# pdsc file is mandatory in base directory:
|
||||
cp -f ./$PACK_VENDOR.$PACK_NAME.pdsc ${PACK_BUILD}
|
||||
cp -f ../../examples/porting/* ${PACK_BUILD}/examples/porting
|
||||
cp -f ./lv_os_custom_c.txt ${PACK_BUILD}/src/osal/lv_os_custom.c
|
||||
cp -f ./lv_os_custom_h.txt ${PACK_BUILD}/src/osal/lv_os_custom.h
|
||||
|
||||
mv "${PACK_BUILD}/lv_cmsis_pack.txt" "${PACK_BUILD}/lv_cmsis_pack.c"
|
||||
|
||||
# Run Schema Check (for Linux only):
|
||||
@@ -188,16 +190,19 @@ fi
|
||||
PACKNAME=`cat PackName.txt`
|
||||
rm -rf PackName.txt
|
||||
|
||||
echo remove unrequired files and folders...
|
||||
rm -rf $PACK_BUILD/demos/keypad_encoder
|
||||
rm -rf $PACK_BUILD/demos/music
|
||||
rm -rf $PACK_BUILD/demos/stress
|
||||
rm -rf $PACK_BUILD/demos/widgets/screenshot1.gif
|
||||
|
||||
# echo apply patches...
|
||||
# rm -rf $PACK_BUILD/demos/lv_demos.h
|
||||
# cp -f ./lv_demos.h $PACK_BUILD/demos/
|
||||
|
||||
echo delete files...
|
||||
find $PACK_BUILD/demos/ -type f -name "*.png" -delete
|
||||
find $PACK_BUILD/demos/ -type f -name "*.gif" -delete
|
||||
find $PACK_BUILD/demos/ -type f -name "*.gif" -delete
|
||||
find $PACK_BUILD/demos/ -type f -name "*.ttf" -delete
|
||||
find $PACK_BUILD/demos/ -type f -name "*.otf" -delete
|
||||
find $PACK_BUILD/demos/ -type f -name "*.jpg" -delete
|
||||
find $PACK_BUILD/demos/ -type f -name "*.fnt" -delete
|
||||
|
||||
# Archiving
|
||||
# $ZIP a $PACKNAME
|
||||
echo creating pack file $PACKNAME
|
||||
|
||||
@@ -27,9 +27,18 @@
|
||||
#include "RTE_Components.h"
|
||||
#include <time.h>
|
||||
|
||||
/*********************
|
||||
#if defined(__PERF_COUNTER__) && __PERF_COUNTER__
|
||||
# include "perf_counter.h"
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include "lv_global.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define state LV_GLOBAL_DEFAULT()->tick_state
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
@@ -98,18 +107,33 @@
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
/* only arm compilers will use microLib that doesn't implement time() */
|
||||
#if defined(__MICROLIB)
|
||||
/* When Arm Compilers using the MicroLib, provide an empty implementation for
|
||||
* time() which is not included in the MicroLib
|
||||
*/
|
||||
#if defined(__IS_COMPILER_ARM_COMPILER__) && __IS_COMPILER_ARM_COMPILER__
|
||||
# if defined(__MICROLIB)
|
||||
__attribute__((weak))
|
||||
_ARMABI time_t time(time_t * time)
|
||||
{
|
||||
return (time_t)(-1);
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
|
||||
/* when people don't want to use src/extra */
|
||||
__attribute__((weak))
|
||||
void lv_extra_init(void)
|
||||
|
||||
|
||||
# if defined(__PERF_COUNTER__) && __PERF_COUNTER__
|
||||
/**
|
||||
* Get the elapsed milliseconds since start up from perf_counter
|
||||
* @return the elapsed milliseconds
|
||||
*/
|
||||
uint32_t perfc_tick_get(void)
|
||||
{
|
||||
return (uint32_t)get_system_ms();
|
||||
}
|
||||
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,120 @@
|
||||
/**
|
||||
* @file lv_os_custom.c
|
||||
*
|
||||
*/
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "lv_os.h"
|
||||
|
||||
#if LV_USE_OS == LV_OS_CUSTOM
|
||||
#include "../misc/lv_types.h"
|
||||
#include "../misc/lv_assert.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
|
||||
void * user_data)
|
||||
{
|
||||
LV_UNUSED(thread);
|
||||
LV_UNUSED(callback);
|
||||
LV_UNUSED(prio);
|
||||
LV_UNUSED(stack_size);
|
||||
LV_UNUSED(user_data);
|
||||
LV_ASSERT(0);
|
||||
return LV_RESULT_INVALID;
|
||||
}
|
||||
|
||||
lv_result_t lv_thread_delete(lv_thread_t * thread)
|
||||
{
|
||||
LV_UNUSED(thread);
|
||||
LV_ASSERT(0);
|
||||
return LV_RESULT_INVALID;
|
||||
}
|
||||
|
||||
lv_result_t lv_mutex_init(lv_mutex_t * mutex)
|
||||
{
|
||||
LV_UNUSED(mutex);
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
lv_result_t lv_mutex_lock(lv_mutex_t * mutex)
|
||||
{
|
||||
LV_UNUSED(mutex);
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
lv_result_t lv_mutex_lock_isr(lv_mutex_t * mutex)
|
||||
{
|
||||
LV_UNUSED(mutex);
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
lv_result_t lv_mutex_unlock(lv_mutex_t * mutex)
|
||||
{
|
||||
LV_UNUSED(mutex);
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
lv_result_t lv_mutex_delete(lv_mutex_t * mutex)
|
||||
{
|
||||
LV_UNUSED(mutex);
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
lv_result_t lv_thread_sync_init(lv_thread_sync_t * sync)
|
||||
{
|
||||
LV_UNUSED(sync);
|
||||
LV_ASSERT(0);
|
||||
return LV_RESULT_INVALID;
|
||||
}
|
||||
|
||||
lv_result_t lv_thread_sync_wait(lv_thread_sync_t * sync)
|
||||
{
|
||||
LV_UNUSED(sync);
|
||||
LV_ASSERT(0);
|
||||
return LV_RESULT_INVALID;
|
||||
}
|
||||
|
||||
lv_result_t lv_thread_sync_signal(lv_thread_sync_t * sync)
|
||||
{
|
||||
LV_UNUSED(sync);
|
||||
LV_ASSERT(0);
|
||||
return LV_RESULT_INVALID;
|
||||
}
|
||||
|
||||
lv_result_t lv_thread_sync_delete(lv_thread_sync_t * sync)
|
||||
{
|
||||
LV_UNUSED(sync);
|
||||
LV_ASSERT(0);
|
||||
return LV_RESULT_INVALID;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
|
||||
#endif /*LV_USE_OS == LV_OS_CUSTOM*/
|
||||
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* @file lv_os_custom.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LV_OS_CUSTOM_H
|
||||
#define LV_OS_CUSTOM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#if LV_USE_OS == LV_OS_CUSTOM
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
typedef int lv_mutex_t;
|
||||
typedef int lv_thread_t;
|
||||
typedef int lv_thread_sync_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#endif /*LV_USE_OS == LV_OS_CUSTOM*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*LV_OS_CUSTOM_H*/
|
||||
@@ -0,0 +1,90 @@
|
||||
From 18083a559734d297838e4cf34a856a4770062319 Mon Sep 17 00:00:00 2001
|
||||
From: tvanfossen <vanfosst@gmail.com>
|
||||
Date: Tue, 23 Aug 2022 10:06:53 -0400
|
||||
Subject: [PATCH] changes to compile with esp-idf
|
||||
|
||||
---
|
||||
CMakeLists.txt | 11 ++++++-----
|
||||
src/vector/vimageloader.cpp | 23 +++++++++++++----------
|
||||
2 files changed, 19 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 38a9862..ee6d2cd 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -95,10 +95,11 @@ if (NOT APPLE AND NOT WIN32)
|
||||
)
|
||||
endif()
|
||||
|
||||
-if (LOTTIE_MODULE)
|
||||
- # for dlopen, dlsym and dlclose dependency
|
||||
- target_link_libraries(rlottie PRIVATE ${CMAKE_DL_LIBS})
|
||||
-endif()
|
||||
+# No Sym links in ESP-IDF
|
||||
+# if (LOTTIE_MODULE)
|
||||
+# # for dlopen, dlsym and dlclose dependency
|
||||
+# target_link_libraries(rlottie PRIVATE ${CMAKE_DL_LIBS})
|
||||
+# endif()
|
||||
|
||||
if (NOT LOTTIE_ASAN)
|
||||
if(APPLE)
|
||||
@@ -137,7 +138,7 @@ endif (NOT LIB_INSTALL_DIR)
|
||||
#declare source and include files
|
||||
add_subdirectory(inc)
|
||||
add_subdirectory(src)
|
||||
-add_subdirectory(example)
|
||||
+# add_subdirectory(example) // We dont need example dir in ESP-IDF
|
||||
|
||||
if (LOTTIE_TEST)
|
||||
enable_testing()
|
||||
diff --git a/src/vector/vimageloader.cpp b/src/vector/vimageloader.cpp
|
||||
index c2446be..3df4c6a 100644
|
||||
--- a/src/vector/vimageloader.cpp
|
||||
+++ b/src/vector/vimageloader.cpp
|
||||
@@ -6,7 +6,7 @@
|
||||
#ifdef _WIN32
|
||||
# include <windows.h>
|
||||
#else
|
||||
-# include <dlfcn.h>
|
||||
+// # include <dlfcn.h> //Does not work on ESP-IDF
|
||||
#endif // _WIN32
|
||||
|
||||
using lottie_image_load_f = unsigned char *(*)(const char *filename, int *x,
|
||||
@@ -61,22 +61,25 @@ struct VImageLoader::Impl {
|
||||
void *dl_handle{nullptr};
|
||||
void init()
|
||||
{
|
||||
- imageLoad = reinterpret_cast<lottie_image_load_f>(
|
||||
- dlsym(dl_handle, "lottie_image_load"));
|
||||
- imageFree = reinterpret_cast<lottie_image_free_f>(
|
||||
- dlsym(dl_handle, "lottie_image_free"));
|
||||
- imageFromData = reinterpret_cast<lottie_image_load_data_f>(
|
||||
- dlsym(dl_handle, "lottie_image_load_from_data"));
|
||||
+ // No sym links in ESP-iDF
|
||||
+ // imageLoad = reinterpret_cast<lottie_image_load_f>(
|
||||
+ // dlsym(dl_handle, "lottie_image_load"));
|
||||
+ // imageFree = reinterpret_cast<lottie_image_free_f>(
|
||||
+ // dlsym(dl_handle, "lottie_image_free"));
|
||||
+ // imageFromData = reinterpret_cast<lottie_image_load_data_f>(
|
||||
+ // dlsym(dl_handle, "lottie_image_load_from_data"));
|
||||
}
|
||||
|
||||
void moduleFree()
|
||||
{
|
||||
- if (dl_handle) dlclose(dl_handle);
|
||||
+ // if (dl_handle) dlclose(dl_handle); // No sym links in ESP-iDF
|
||||
}
|
||||
bool moduleLoad()
|
||||
{
|
||||
- dl_handle = dlopen(LOTTIE_IMAGE_MODULE_PLUGIN, RTLD_LAZY);
|
||||
- return (dl_handle == nullptr);
|
||||
+ // No sym links in ESP idf
|
||||
+ // dl_handle = dlopen(LOTTIE_IMAGE_MODULE_PLUGIN, RTLD_LAZY);
|
||||
+ // return (dl_handle == nullptr);
|
||||
+ return true
|
||||
}
|
||||
# endif // _WIN32
|
||||
#else // LOTTIE_IMAGE_MODULE_SUPPORT
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
if (0)
|
||||
if (LV_USE_RLOTTIE)
|
||||
|
||||
idf_component_register(SRCS ${SOURCES}
|
||||
INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/rlottie/inc"
|
||||
)
|
||||
|
||||
set(LOTTIE_MODULE OFF)
|
||||
set(LOTTIE_THREAD OFF)
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
option(BUILD_TESTING OFF)
|
||||
|
||||
function(install)
|
||||
endfunction()
|
||||
|
||||
function(export)
|
||||
endfunction()
|
||||
|
||||
add_subdirectory(rlottie)
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE rlottie)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,11 @@
|
||||
# PikaScript Binding for LVGL
|
||||
|
||||
[PikaScript](https://github.com/pikasTech/pikascript) is an ultralightweight python engine that can run with 4KB of RAM and 32KB of Flash (such as STM32G030C8 and STM32F103C8), and is very easy to deploy and expand.
|
||||
|
||||
More details to see: [PikaScript and lvgl: Make Python Lighter, Easier and Smarter](https://blog.lvgl.io/2022-08-24/pikascript-and-lvgl)
|
||||
|
||||
The available Python APIs are in the `pika_lvgl.pyi`, and you need copy the `pika_lvgl.pyi` to the root path of pikascript, then `import pika_lvgl` in `main.py`.
|
||||
|
||||
The available simulation project on windows: https://github.com/pikasTech/lv_pikascript
|
||||
|
||||
More document about PikaScript: https://pikadoc.readthedocs.io/en/latest/index.html
|
||||
@@ -0,0 +1,16 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "../../lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifdef PIKASCRIPT
|
||||
|
||||
#include "pika_lvgl_point_t.h"
|
||||
|
||||
void pika_lvgl_point_t___init__(PikaObj* self) {
|
||||
lv_point_t lv_point = {0};
|
||||
args_setStruct(self->list, "lv_point_struct", lv_point);
|
||||
obj_setPtr(self, "lv_point", args_getStruct(self->list, "lv_point_struct"));
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,44 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "../../lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifdef PIKASCRIPT
|
||||
|
||||
#include "pika_lvgl_lv_timer_t.h"
|
||||
|
||||
PikaEventListener* g_pika_lv_timer_event_listener;
|
||||
|
||||
void __pika_timer_cb(lv_timer_t* timer) {
|
||||
PikaObj* eventHandleObj = pks_eventLisener_getEventHandleObj(
|
||||
g_pika_lv_timer_event_listener, (uint32_t)timer);
|
||||
obj_newDirectObj(eventHandleObj, "timer", New_pika_lvgl_lv_timer_t);
|
||||
obj_setPtr(obj_getPtr(eventHandleObj, "timer"), "lv_timer", timer);
|
||||
obj_run(eventHandleObj, "eventCallBack(timer)");
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_timer_t_set_period(PikaObj* self, int period) {
|
||||
lv_timer_t* lv_timer = obj_getPtr(self, "lv_timer");
|
||||
lv_timer_set_period(lv_timer, period);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_timer_t_set_cb(PikaObj* self, Arg* cb) {
|
||||
lv_timer_t* lv_timer = obj_getPtr(self, "lv_timer");
|
||||
lv_timer_set_cb(lv_timer, __pika_timer_cb);
|
||||
|
||||
obj_setArg(self, "eventCallBack", cb);
|
||||
/* init event_listener for the first time */
|
||||
if (NULL == g_pika_lv_timer_event_listener) {
|
||||
pks_eventLisener_init(&g_pika_lv_timer_event_listener);
|
||||
}
|
||||
pks_eventLicener_registerEvent(g_pika_lv_timer_event_listener,
|
||||
(uint32_t)lv_timer, self);
|
||||
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_timer_t__delete(PikaObj* self) {
|
||||
lv_timer_t* lv_timer = obj_getPtr(self, "lv_timer");
|
||||
lv_timer_delete(lv_timer);
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,364 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "../../lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifdef PIKASCRIPT
|
||||
#include "BaseObj.h"
|
||||
#include "pika_lvgl.h"
|
||||
#include "pika_lvgl_arc.h"
|
||||
#include "pika_lvgl_bar.h"
|
||||
#include "pika_lvgl_btn.h"
|
||||
#include "pika_lvgl_checkbox.h"
|
||||
#include "pika_lvgl_dropdown.h"
|
||||
#include "pika_lvgl_label.h"
|
||||
#include "pika_lvgl_lv_obj.h"
|
||||
#include "pika_lvgl_roller.h"
|
||||
#include "pika_lvgl_slider.h"
|
||||
#include "pika_lvgl_switch.h"
|
||||
#include "pika_lvgl_table.h"
|
||||
#include "pika_lvgl_textarea.h"
|
||||
|
||||
void pika_lvgl_arc___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_arc_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
obj_setInt(self, "MODE_NORMAL", LV_ARC_MODE_NORMAL);
|
||||
obj_setInt(self, "MODE_SYMMETRICAL", LV_ARC_MODE_SYMMETRICAL);
|
||||
obj_setInt(self, "MODE_REVERSE", LV_ARC_MODE_REVERSE);
|
||||
}
|
||||
|
||||
void pika_lvgl_arc_set_end_angle(PikaObj* self, int angle) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_end_angle(lv_obj, angle);
|
||||
}
|
||||
|
||||
void pika_lvgl_arc_set_bg_angles(PikaObj* self, int start, int end) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_bg_angles(lv_obj, start, end);
|
||||
}
|
||||
|
||||
void pika_lvgl_arc_set_angles(PikaObj* self, int start, int end) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_angles(lv_obj, start, end);
|
||||
}
|
||||
|
||||
int pika_lvgl_arc_get_angle_end(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_arc_get_angle_end(lv_obj);
|
||||
}
|
||||
int pika_lvgl_arc_get_angle_start(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_arc_get_angle_start(lv_obj);
|
||||
}
|
||||
int pika_lvgl_arc_get_bg_angle_end(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_arc_get_bg_angle_end(lv_obj);
|
||||
}
|
||||
int pika_lvgl_arc_get_bg_angle_start(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_arc_get_bg_angle_start(lv_obj);
|
||||
}
|
||||
int pika_lvgl_arc_get_max_value(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_arc_get_max_value(lv_obj);
|
||||
}
|
||||
int pika_lvgl_arc_get_min_value(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_arc_get_min_value(lv_obj);
|
||||
}
|
||||
int pika_lvgl_arc_get_mode(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_arc_get_mode(lv_obj);
|
||||
}
|
||||
// int pika_lvgl_arc_get_rotation(PikaObj *self){
|
||||
// lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
// return lv_arc_get_rotation(lv_obj);
|
||||
// }
|
||||
int pika_lvgl_arc_get_value(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_arc_get_value(lv_obj);
|
||||
}
|
||||
void pika_lvgl_arc_set_mode(PikaObj *self, int mode){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_mode(lv_obj, mode);
|
||||
}
|
||||
void pika_lvgl_arc_set_range(PikaObj *self, int min, int max){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_range(lv_obj, min, max);
|
||||
}
|
||||
void pika_lvgl_arc_set_rotation(PikaObj *self, int rotation){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_rotation(lv_obj, rotation);
|
||||
}
|
||||
void pika_lvgl_arc_set_start_angle(PikaObj *self, int start){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_start_angle(lv_obj, start);
|
||||
}
|
||||
void pika_lvgl_arc_set_value(PikaObj *self, int value){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_value(lv_obj, value);
|
||||
}
|
||||
void pika_lvgl_arc_set_bg_end_angle(PikaObj *self, int angle){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_bg_end_angle(lv_obj, angle);
|
||||
}
|
||||
void pika_lvgl_arc_set_bg_start_angle(PikaObj *self, int start){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_bg_start_angle(lv_obj, start);
|
||||
}
|
||||
|
||||
void pika_lvgl_arc_set_change_rate(PikaObj *self, int rate){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_arc_set_change_rate(lv_obj, rate);
|
||||
}
|
||||
|
||||
void pika_lvgl_bar___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_bar_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_bar_set_value(PikaObj* self, int value, int anim) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_bar_set_value(lv_obj, value, value);
|
||||
}
|
||||
|
||||
int pika_lvgl_bar_get_max_value(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_bar_get_max_value(lv_obj);
|
||||
}
|
||||
int pika_lvgl_bar_get_min_value(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_bar_get_min_value(lv_obj);
|
||||
}
|
||||
int pika_lvgl_bar_get_mode(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_bar_get_mode(lv_obj);
|
||||
}
|
||||
int pika_lvgl_bar_get_start_value(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_bar_get_start_value(lv_obj);
|
||||
}
|
||||
int pika_lvgl_bar_get_value(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_bar_get_value(lv_obj);
|
||||
}
|
||||
void pika_lvgl_bar_set_mode(PikaObj *self, int mode){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_bar_set_mode(lv_obj, mode);
|
||||
}
|
||||
void pika_lvgl_bar_set_range(PikaObj *self, int min, int max){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_bar_set_range(lv_obj, min, max);
|
||||
}
|
||||
void pika_lvgl_bar_set_start_value(PikaObj *self, int start_value, int anim){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_bar_set_start_value(lv_obj, start_value, anim);
|
||||
}
|
||||
|
||||
void pika_lvgl_btn___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_button_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_checkbox___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_checkbox_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_checkbox_set_text(PikaObj* self, char* txt) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_checkbox_set_text(lv_obj, txt);
|
||||
}
|
||||
|
||||
void pika_lvgl_checkbox_set_text_static(PikaObj *self, char* txt){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_checkbox_set_text_static(lv_obj, txt);
|
||||
}
|
||||
|
||||
char* pika_lvgl_checkbox_get_text(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return (char*) lv_checkbox_get_text(lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_dropdown___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_dropdown_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_dropdown_set_options(PikaObj* self, char* options) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_set_options(lv_obj, options);
|
||||
}
|
||||
|
||||
void pika_lvgl_dropdown_add_option(PikaObj *self, char* options, int pos){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_add_option(lv_obj, options, pos);
|
||||
}
|
||||
void pika_lvgl_dropdown_clear_options(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_clear_options(lv_obj);
|
||||
}
|
||||
void pika_lvgl_dropdown_close(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_close(lv_obj);
|
||||
}
|
||||
int pika_lvgl_dropdown_get_dir(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_dropdown_get_dir(lv_obj);
|
||||
}
|
||||
// PikaObj* pika_lvgl_dropdown_get_list(PikaObj *self){
|
||||
// lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
// return obj_getObj(lv_dropdown_get_list(lv_obj));
|
||||
// }
|
||||
int pika_lvgl_dropdown_get_option_count(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_dropdown_get_option_count(lv_obj);
|
||||
}
|
||||
int pika_lvgl_dropdown_get_option_index(PikaObj *self, char* txt){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_dropdown_get_option_index(lv_obj, txt);
|
||||
}
|
||||
char* pika_lvgl_dropdown_get_options(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return (char*) lv_dropdown_get_options(lv_obj);
|
||||
}
|
||||
int pika_lvgl_dropdown_get_selected(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_dropdown_get_selected(lv_obj);
|
||||
}
|
||||
int pika_lvgl_dropdown_get_selected_highlight(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_dropdown_get_selected_highlight(lv_obj);
|
||||
}
|
||||
|
||||
char* pika_lvgl_dropdown_get_selected_str(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
obj_setBytes(self, "_buff",NULL, 128);
|
||||
char* _buff = (char*)obj_getBytes(self, "_buff");
|
||||
lv_dropdown_get_selected_str(lv_obj, _buff, 128);
|
||||
return _buff;
|
||||
}
|
||||
char* pika_lvgl_dropdown_get_symbol(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return (char*)lv_dropdown_get_symbol(lv_obj);
|
||||
}
|
||||
char* pika_lvgl_dropdown_get_text(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return (char*)lv_dropdown_get_text(lv_obj);
|
||||
}
|
||||
int pika_lvgl_dropdown_is_open(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_dropdown_is_open(lv_obj);
|
||||
}
|
||||
void pika_lvgl_dropdown_open(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_open(lv_obj);
|
||||
}
|
||||
void pika_lvgl_dropdown_set_dir(PikaObj *self, int dir){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_set_dir(lv_obj, dir);
|
||||
}
|
||||
void pika_lvgl_dropdown_set_selected(PikaObj *self, int sel_opt){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_set_selected(lv_obj, sel_opt);
|
||||
}
|
||||
void pika_lvgl_dropdown_set_selected_highlight(PikaObj *self, int en){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_set_selected_highlight(lv_obj, en);
|
||||
}
|
||||
void pika_lvgl_dropdown_set_symbol(PikaObj *self, char* symbol){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_set_symbol(lv_obj, symbol);
|
||||
}
|
||||
void pika_lvgl_dropdown_set_text(PikaObj *self, char* txt){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_dropdown_set_text(lv_obj, txt);
|
||||
}
|
||||
|
||||
void pika_lvgl_label___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_label_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_label_set_long_mode(PikaObj* self, int mode) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_label_set_long_mode(lv_obj, mode);
|
||||
}
|
||||
|
||||
void pika_lvgl_label_set_recolor(PikaObj* self, int en) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_label_set_recolor(lv_obj, en);
|
||||
}
|
||||
|
||||
void pika_lvgl_label_set_text(PikaObj* self, char* txt) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_label_set_text(lv_obj, txt);
|
||||
}
|
||||
|
||||
void pika_lvgl_label_set_style_text_align(PikaObj* self,
|
||||
int value,
|
||||
int selector) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_set_style_text_align(lv_obj, value, selector);
|
||||
}
|
||||
|
||||
void pika_lvgl_roller___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_roller_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_roller_set_options(PikaObj* self, char* options, int mode) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_roller_set_options(lv_obj, options, mode);
|
||||
}
|
||||
|
||||
void pika_lvgl_roller_set_visible_row_count(PikaObj* self, int row_cnt) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_roller_set_visible_row_count(lv_obj, row_cnt);
|
||||
}
|
||||
|
||||
void pika_lvgl_slider___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_slider_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_switch___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_switch_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_table___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_table_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_table_set_cell_value(PikaObj* self,
|
||||
int row,
|
||||
int col,
|
||||
char* txt) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_table_set_cell_value(lv_obj, row, col, txt);
|
||||
}
|
||||
|
||||
void pika_lvgl_textarea___init__(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_textarea_create(lv_parent);
|
||||
obj_setPtr(self, "lv_obj", lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_textarea_set_one_line(PikaObj* self, int en) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_textarea_set_one_line(lv_obj, en);
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,199 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "../../lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifdef PIKASCRIPT
|
||||
#include "pika_lvgl.h"
|
||||
#include "BaseObj.h"
|
||||
#include "pika_lvgl_ALIGN.h"
|
||||
#include "pika_lvgl_ANIM.h"
|
||||
#include "pika_lvgl_EVENT.h"
|
||||
#include "pika_lvgl_OPA.h"
|
||||
#include "pika_lvgl_PALETTE.h"
|
||||
#include "pika_lvgl_STATE.h"
|
||||
#include "pika_lvgl_arc.h"
|
||||
#include "pika_lvgl_lv_color_t.h"
|
||||
#include "pika_lvgl_lv_obj.h"
|
||||
#include "pika_lvgl_indev_t.h"
|
||||
#include "pika_lvgl_lv_timer_t.h"
|
||||
|
||||
PikaObj* pika_lv_event_listener_g;
|
||||
|
||||
void pika_lvgl_STATE___init__(PikaObj* self) {
|
||||
obj_setInt(self, "DEFAULT", LV_STATE_DEFAULT);
|
||||
obj_setInt(self, "CHECKED", LV_STATE_CHECKED);
|
||||
obj_setInt(self, "FOCUSED", LV_STATE_FOCUSED);
|
||||
obj_setInt(self, "FOCUS_KEY", LV_STATE_FOCUS_KEY);
|
||||
obj_setInt(self, "EDITED", LV_STATE_EDITED);
|
||||
obj_setInt(self, "HOVERED", LV_STATE_HOVERED);
|
||||
obj_setInt(self, "PRESSED", LV_STATE_PRESSED);
|
||||
obj_setInt(self, "SCROLLED", LV_STATE_SCROLLED);
|
||||
obj_setInt(self, "DISABLED", LV_STATE_DISABLED);
|
||||
obj_setInt(self, "USER_1", LV_STATE_USER_1);
|
||||
obj_setInt(self, "USER_2", LV_STATE_USER_2);
|
||||
obj_setInt(self, "USER_3", LV_STATE_USER_3);
|
||||
obj_setInt(self, "USER_4", LV_STATE_USER_4);
|
||||
obj_setInt(self, "ANY", LV_STATE_ANY);
|
||||
}
|
||||
|
||||
void pika_lvgl_ANIM___init__(PikaObj* self) {
|
||||
obj_setInt(self, "ON", LV_ANIM_OFF);
|
||||
obj_setInt(self, "OFF", LV_ANIM_ON);
|
||||
}
|
||||
|
||||
void pika_lvgl_ALIGN___init__(PikaObj* self) {
|
||||
obj_setInt(self, "CENTER", LV_ALIGN_CENTER);
|
||||
obj_setInt(self, "DEFAULT", LV_ALIGN_DEFAULT);
|
||||
obj_setInt(self, "TOP_LEFT", LV_ALIGN_TOP_LEFT);
|
||||
obj_setInt(self, "TOP_MID", LV_ALIGN_TOP_MID);
|
||||
obj_setInt(self, "TOP_RIGHT", LV_ALIGN_TOP_RIGHT);
|
||||
obj_setInt(self, "BOTTOM_LEFT", LV_ALIGN_BOTTOM_LEFT);
|
||||
obj_setInt(self, "BOTTOM_MID", LV_ALIGN_BOTTOM_MID);
|
||||
obj_setInt(self, "BOTTOM_RIGHT", LV_ALIGN_BOTTOM_RIGHT);
|
||||
obj_setInt(self, "LEFT_MID", LV_ALIGN_LEFT_MID);
|
||||
obj_setInt(self, "RIGHT_MID", LV_ALIGN_RIGHT_MID);
|
||||
obj_setInt(self, "OUT_TOP_LEFT", LV_ALIGN_OUT_TOP_LEFT);
|
||||
obj_setInt(self, "OUT_TOP_MID", LV_ALIGN_OUT_TOP_MID);
|
||||
obj_setInt(self, "OUT_TOP_RIGHT", LV_ALIGN_OUT_TOP_RIGHT);
|
||||
obj_setInt(self, "OUT_BOTTOM_LEFT", LV_ALIGN_OUT_BOTTOM_LEFT);
|
||||
obj_setInt(self, "OUT_BOTTOM_MID", LV_ALIGN_OUT_BOTTOM_MID);
|
||||
obj_setInt(self, "OUT_BOTTOM_RIGHT", LV_ALIGN_OUT_BOTTOM_RIGHT);
|
||||
obj_setInt(self, "OUT_LEFT_TOP", LV_ALIGN_OUT_LEFT_TOP);
|
||||
obj_setInt(self, "OUT_LEFT_MID", LV_ALIGN_OUT_LEFT_MID);
|
||||
obj_setInt(self, "OUT_LEFT_BOTTOM", LV_ALIGN_OUT_LEFT_BOTTOM);
|
||||
obj_setInt(self, "OUT_RIGHT_TOP", LV_ALIGN_OUT_RIGHT_TOP);
|
||||
obj_setInt(self, "OUT_RIGHT_MID", LV_ALIGN_OUT_RIGHT_MID);
|
||||
obj_setInt(self, "OUT_RIGHT_BOTTOM", LV_ALIGN_OUT_RIGHT_BOTTOM);
|
||||
}
|
||||
|
||||
void pika_lvgl_EVENT___init__(PikaObj* self) {
|
||||
obj_setInt(self, "ALL", LV_EVENT_ALL);
|
||||
obj_setInt(self, "PRESSED", LV_EVENT_PRESSED);
|
||||
obj_setInt(self, "PRESSING", LV_EVENT_PRESSING);
|
||||
obj_setInt(self, "PRESS_LOST", LV_EVENT_PRESS_LOST);
|
||||
obj_setInt(self, "SHORT_CLICKED", LV_EVENT_SHORT_CLICKED);
|
||||
obj_setInt(self, "LONG_PRESSED", LV_EVENT_LONG_PRESSED);
|
||||
obj_setInt(self, "LONG_PRESSED_REPEAT", LV_EVENT_LONG_PRESSED_REPEAT);
|
||||
obj_setInt(self, "CLICKED", LV_EVENT_CLICKED);
|
||||
obj_setInt(self, "RELEASED", LV_EVENT_RELEASED);
|
||||
obj_setInt(self, "SCROLL_BEGIN", LV_EVENT_SCROLL_BEGIN);
|
||||
obj_setInt(self, "SCROLL_END", LV_EVENT_SCROLL_END);
|
||||
obj_setInt(self, "SCROLL", LV_EVENT_SCROLL);
|
||||
obj_setInt(self, "GESTURE", LV_EVENT_GESTURE);
|
||||
obj_setInt(self, "KEY", LV_EVENT_KEY);
|
||||
obj_setInt(self, "FOCUSED", LV_EVENT_FOCUSED);
|
||||
obj_setInt(self, "DEFOCUSED", LV_EVENT_DEFOCUSED);
|
||||
obj_setInt(self, "LEAVE", LV_EVENT_LEAVE);
|
||||
obj_setInt(self, "HIT_TEST", LV_EVENT_HIT_TEST);
|
||||
obj_setInt(self, "COVER_CHECK", LV_EVENT_COVER_CHECK);
|
||||
obj_setInt(self, "REFR_EXT_DRAW_SIZE", LV_EVENT_REFR_EXT_DRAW_SIZE);
|
||||
obj_setInt(self, "DRAW_MAIN_BEGIN", LV_EVENT_DRAW_MAIN_BEGIN);
|
||||
obj_setInt(self, "DRAW_MAIN", LV_EVENT_DRAW_MAIN);
|
||||
obj_setInt(self, "DRAW_MAIN_END", LV_EVENT_DRAW_MAIN_END);
|
||||
obj_setInt(self, "DRAW_POST_BEGIN", LV_EVENT_DRAW_POST_BEGIN);
|
||||
obj_setInt(self, "DRAW_POST", LV_EVENT_DRAW_POST);
|
||||
obj_setInt(self, "DRAW_POST_END", LV_EVENT_DRAW_POST_END);
|
||||
obj_setInt(self, "DRAW_PART_BEGIN", LV_EVENT_DRAW_PART_BEGIN);
|
||||
obj_setInt(self, "DRAW_PART_END", LV_EVENT_DRAW_PART_END);
|
||||
obj_setInt(self, "VALUE_CHANGED", LV_EVENT_VALUE_CHANGED);
|
||||
obj_setInt(self, "INSERT", LV_EVENT_INSERT);
|
||||
obj_setInt(self, "REFRESH", LV_EVENT_REFRESH);
|
||||
obj_setInt(self, "READY", LV_EVENT_READY);
|
||||
obj_setInt(self, "CANCEL", LV_EVENT_CANCEL);
|
||||
obj_setInt(self, "DELETE", LV_EVENT_DELETE);
|
||||
obj_setInt(self, "CHILD_CHANGED", LV_EVENT_CHILD_CHANGED);
|
||||
obj_setInt(self, "CHILD_CREATED", LV_EVENT_CHILD_CREATED);
|
||||
obj_setInt(self, "CHILD_DELETED", LV_EVENT_CHILD_DELETED);
|
||||
obj_setInt(self, "SCREEN_UNLOAD_START", LV_EVENT_SCREEN_UNLOAD_START);
|
||||
obj_setInt(self, "SCREEN_LOAD_START", LV_EVENT_SCREEN_LOAD_START);
|
||||
obj_setInt(self, "SCREEN_LOADED", LV_EVENT_SCREEN_LOADED);
|
||||
obj_setInt(self, "SCREEN_UNLOADED", LV_EVENT_SCREEN_UNLOADED);
|
||||
obj_setInt(self, "SIZE_CHANGED", LV_EVENT_SIZE_CHANGED);
|
||||
obj_setInt(self, "STYLE_CHANGED", LV_EVENT_STYLE_CHANGED);
|
||||
obj_setInt(self, "LAYOUT_CHANGED", LV_EVENT_LAYOUT_CHANGED);
|
||||
obj_setInt(self, "GET_SELF_SIZE", LV_EVENT_GET_SELF_SIZE);
|
||||
obj_setInt(self, "PREPROCESS", LV_EVENT_PREPROCESS);
|
||||
}
|
||||
|
||||
void pika_lvgl_OPA___init__(PikaObj* self) {
|
||||
obj_setInt(self, "TRANSP", LV_OPA_TRANSP);
|
||||
obj_setInt(self, "COVER", LV_OPA_COVER);
|
||||
}
|
||||
|
||||
void pika_lvgl_PALETTE___init__(PikaObj* self) {
|
||||
obj_setInt(self, "RED", LV_PALETTE_RED);
|
||||
obj_setInt(self, "PINK", LV_PALETTE_PINK);
|
||||
obj_setInt(self, "PURPLE", LV_PALETTE_PURPLE);
|
||||
obj_setInt(self, "DEEP_PURPLE", LV_PALETTE_DEEP_PURPLE);
|
||||
obj_setInt(self, "INDIGO", LV_PALETTE_INDIGO);
|
||||
obj_setInt(self, "BLUE", LV_PALETTE_BLUE);
|
||||
obj_setInt(self, "LIGHT_BLUE", LV_PALETTE_LIGHT_BLUE);
|
||||
obj_setInt(self, "CYAN", LV_PALETTE_CYAN);
|
||||
obj_setInt(self, "TEAL", LV_PALETTE_TEAL);
|
||||
obj_setInt(self, "GREEN", LV_PALETTE_GREEN);
|
||||
obj_setInt(self, "LIGHT_GREEN", LV_PALETTE_LIGHT_GREEN);
|
||||
obj_setInt(self, "LIME", LV_PALETTE_LIME);
|
||||
obj_setInt(self, "YELLOW", LV_PALETTE_YELLOW);
|
||||
obj_setInt(self, "AMBER", LV_PALETTE_AMBER);
|
||||
obj_setInt(self, "ORANGE", LV_PALETTE_ORANGE);
|
||||
obj_setInt(self, "DEEP_ORANGE", LV_PALETTE_DEEP_ORANGE);
|
||||
obj_setInt(self, "BROWN", LV_PALETTE_BROWN);
|
||||
obj_setInt(self, "BLUE_GREY", LV_PALETTE_BLUE_GREY);
|
||||
obj_setInt(self, "GREY", LV_PALETTE_GREY);
|
||||
obj_setInt(self, "NONE", LV_PALETTE_NONE);
|
||||
}
|
||||
|
||||
PikaObj* pika_lvgl_screen_active(PikaObj* self) {
|
||||
PikaObj* new_obj = newNormalObj(New_TinyObj);
|
||||
lv_obj_t* lv_obj = lv_screen_active();
|
||||
obj_setPtr(new_obj, "lv_obj", lv_obj);
|
||||
return new_obj;
|
||||
}
|
||||
|
||||
void pika_lvgl___init__(PikaObj* self) {
|
||||
obj_newDirectObj(self, "lv_event_listener", New_TinyObj);
|
||||
pika_lv_event_listener_g = obj_getObj(self, "lv_event_listener");
|
||||
}
|
||||
|
||||
PikaObj* pika_lvgl_obj(PikaObj* self, PikaObj* parent) {
|
||||
lv_obj_t* lv_parent = obj_getPtr(parent, "lv_obj");
|
||||
lv_obj_t* lv_obj = lv_obj_create(lv_parent);
|
||||
PikaObj* new_obj = newNormalObj(New_pika_lvgl_lv_obj);
|
||||
obj_setPtr(new_obj, "lv_obj", lv_obj);
|
||||
return new_obj;
|
||||
}
|
||||
|
||||
PikaObj* pika_lvgl_palette_lighten(PikaObj *self, int p, int lvl){
|
||||
PikaObj* new_obj = newNormalObj(New_pika_lvgl_lv_color_t);
|
||||
lv_color_t lv_color = lv_palette_lighten(p, lvl);
|
||||
args_setStruct(new_obj->list, "lv_color_struct", lv_color);
|
||||
lv_color_t* plv_color = args_getStruct(new_obj->list, "lv_color_struct");
|
||||
obj_setPtr(new_obj, "lv_color", plv_color);
|
||||
return new_obj;
|
||||
}
|
||||
|
||||
PikaObj* pika_lvgl_palette_main(PikaObj* self, int p) {
|
||||
PikaObj* new_obj = newNormalObj(New_pika_lvgl_lv_color_t);
|
||||
lv_color_t lv_color = lv_palette_main(p);
|
||||
args_setStruct(new_obj->list, "lv_color_struct", lv_color);
|
||||
obj_setPtr(new_obj, "lv_color",
|
||||
args_getStruct(new_obj->list, "lv_color_struct"));
|
||||
return new_obj;
|
||||
}
|
||||
|
||||
PikaObj* pika_lvgl_indev_get_active(PikaObj *self){
|
||||
PikaObj* new_obj = newNormalObj(New_pika_lvgl_indev_t);
|
||||
lv_indev_t *lv_indev = lv_indev_active();
|
||||
obj_setPtr(new_obj,"lv_indev", lv_indev);
|
||||
return new_obj;
|
||||
}
|
||||
|
||||
PikaObj* pika_lvgl_timer_create_basic(PikaObj *self){
|
||||
PikaObj* new_obj = newNormalObj(New_pika_lvgl_lv_timer_t);
|
||||
lv_timer_t *lv_timer = lv_timer_create_basic();
|
||||
obj_setPtr(new_obj,"lv_timer", lv_timer);
|
||||
return new_obj;
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,263 @@
|
||||
from PikaObj import *
|
||||
|
||||
def __init__(): ...
|
||||
|
||||
class EVENT:
|
||||
ALL: int
|
||||
PRESSED: int
|
||||
PRESSING: int
|
||||
PRESS_LOST: int
|
||||
SHORT_CLICKED: int
|
||||
LONG_PRESSED: int
|
||||
LONG_PRESSED_REPEAT: int
|
||||
CLICKED: int
|
||||
RELEASED: int
|
||||
SCROLL_BEGIN: int
|
||||
SCROLL_END: int
|
||||
SCROLL: int
|
||||
GESTURE: int
|
||||
KEY: int
|
||||
FOCUSED: int
|
||||
DEFOCUSED: int
|
||||
LEAVE: int
|
||||
HIT_TEST: int
|
||||
COVER_CHECK: int
|
||||
REFR_EXT_DRAW_SIZE: int
|
||||
DRAW_MAIN_BEGIN: int
|
||||
DRAW_MAIN: int
|
||||
DRAW_MAIN_END: int
|
||||
DRAW_POST_BEGIN: int
|
||||
DRAW_POST: int
|
||||
DRAW_POST_END: int
|
||||
DRAW_PART_BEGIN: int
|
||||
DRAW_PART_END: int
|
||||
VALUE_CHANGED: int
|
||||
INSERT: int
|
||||
REFRESH: int
|
||||
READY: int
|
||||
CANCEL: int
|
||||
DELETE: int
|
||||
CHILD_CHANGED: int
|
||||
CHILD_CREATED: int
|
||||
CHILD_DELETED: int
|
||||
SCREEN_UNLOAD_START: int
|
||||
SCREEN_LOAD_START: int
|
||||
SCREEN_LOADED: int
|
||||
SCREEN_UNLOADED: int
|
||||
SIZE_CHANGED: int
|
||||
STYLE_CHANGED: int
|
||||
LAYOUT_CHANGED: int
|
||||
GET_SELF_SIZE: int
|
||||
PREPROCESS: int
|
||||
def __init__(self): ...
|
||||
|
||||
class ALIGN:
|
||||
DEFAULT: int
|
||||
TOP_LEFT: int
|
||||
TOP_MID: int
|
||||
TOP_RIGHT: int
|
||||
BOTTOM_LEFT: int
|
||||
BOTTOM_MID: int
|
||||
BOTTOM_RIGHT: int
|
||||
LEFT_MID: int
|
||||
RIGHT_MID: int
|
||||
CENTER: int
|
||||
OUT_TOP_LEFT: int
|
||||
OUT_TOP_MID: int
|
||||
OUT_TOP_RIGHT: int
|
||||
OUT_BOTTOM_LEFT: int
|
||||
OUT_BOTTOM_MID: int
|
||||
OUT_BOTTOM_RIGHT: int
|
||||
OUT_LEFT_TOP: int
|
||||
OUT_LEFT_MID: int
|
||||
OUT_LEFT_BOTTOM: int
|
||||
OUT_RIGHT_TOP: int
|
||||
OUT_RIGHT_MID: int
|
||||
OUT_RIGHT_BOTTOM: int
|
||||
def __init__(self): ...
|
||||
|
||||
class PALETTE:
|
||||
RED: int
|
||||
PINK: int
|
||||
PURPLE: int
|
||||
DEEP_PURPLE: int
|
||||
INDIGO: int
|
||||
BLUE: int
|
||||
LIGHT_BLUE: int
|
||||
CYAN: int
|
||||
TEAL: int
|
||||
GREEN: int
|
||||
LIGHT_GREEN: int
|
||||
LIME: int
|
||||
YELLOW: int
|
||||
AMBER: int
|
||||
ORANGE: int
|
||||
DEEP_ORANGE: int
|
||||
BROWN: int
|
||||
BLUE_GREY: int
|
||||
GREY: int
|
||||
NONE: int
|
||||
def __init__(self): ...
|
||||
|
||||
class OPA:
|
||||
TRANSP: int
|
||||
COVER: int
|
||||
def __init__(self): ...
|
||||
|
||||
class ANIM:
|
||||
OFF: int
|
||||
ON: int
|
||||
def __init__(self): ...
|
||||
|
||||
class STATE:
|
||||
def __init__(self): ...
|
||||
|
||||
class lv_event:
|
||||
def get_code(self) -> int: ...
|
||||
def get_target(self) -> lv_obj: ...
|
||||
|
||||
class lv_color_t: ...
|
||||
|
||||
class lv_timer_t:
|
||||
def set_period(period: int): ...
|
||||
def set_cb(cb: any): ...
|
||||
def _del(self): ...
|
||||
|
||||
def palette_lighten(p: int, lvl: int) -> lv_color_t: ...
|
||||
def palette_main(p: int) -> lv_color_t: ...
|
||||
|
||||
class style_t:
|
||||
def __init__(self): ...
|
||||
def init(self): ...
|
||||
def set_radius(self, radius: int): ...
|
||||
def set_bg_opa(self, opa: int): ...
|
||||
def set_bg_color(self, color: lv_color_t): ...
|
||||
def set_outline_width(self, w: int): ...
|
||||
def set_outline_color(self, color: lv_color_t): ...
|
||||
def set_outline_pad(self, pad: int): ...
|
||||
def set_shadow_width(self, w: int): ...
|
||||
def set_shadow_spread(self, s: int): ...
|
||||
def set_shadow_color(self, color: lv_color_t): ...
|
||||
|
||||
class lv_obj:
|
||||
def center(self): ...
|
||||
def set_size(self, size_x: int, size_y: int): ...
|
||||
def align(self, align: int, x_ofs: int, y_ofs: int): ...
|
||||
def set_height(self, h: int): ...
|
||||
def update_layout(self): ...
|
||||
def set_width(self, w: int): ...
|
||||
def add_state(self, state: int): ...
|
||||
def add_event(self, event_cb: any, filter: int, user_data: pointer): ...
|
||||
def add_style(self, style: style_t, selector: int): ...
|
||||
def get_x(self) -> int: ...
|
||||
def get_y(self) -> int: ...
|
||||
def set_pos(self, x: int, y: int): ...
|
||||
|
||||
class indev_t:
|
||||
def get_vect(self, point: point_t): ...
|
||||
|
||||
def obj(parent: lv_obj) -> lv_obj: ...
|
||||
def indev_get_act() -> indev_t: ...
|
||||
|
||||
class point_t:
|
||||
def __init__(self): ...
|
||||
|
||||
class arc(lv_obj):
|
||||
MODE_NORMAL: int
|
||||
MODE_SYMMETRICAL: int
|
||||
MODE_REVERSE: int
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
def set_start_angle(self, start: int): ...
|
||||
def set_end_angle(self, angle: int): ...
|
||||
def set_angles(self, start: int, end: int): ...
|
||||
def set_bg_start_angle(self, start: int): ...
|
||||
def set_bg_end_angle(self, angle: int): ...
|
||||
def set_bg_angles(self, start: int, end: int): ...
|
||||
def set_rotation(self, rotation: int): ...
|
||||
def set_mode(self, mode: int): ...
|
||||
def set_value(self, value: int): ...
|
||||
def set_range(self, min: int, max: int): ...
|
||||
def set_change_rate(self, rate: int): ...
|
||||
def get_angle_start(self) -> int: ...
|
||||
def get_angle_end(self) -> int: ...
|
||||
def get_bg_angle_start(self) -> int: ...
|
||||
def get_bg_angle_end(self) -> int: ...
|
||||
def get_value(self) -> int: ...
|
||||
def get_min_value(self) -> int: ...
|
||||
def get_max_value(self) -> int: ...
|
||||
def get_mode(self) -> int: ...
|
||||
# def get_rotation(self) -> int: ...
|
||||
|
||||
class bar(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
def set_value(self, value: int, anim: int): ...
|
||||
def set_start_value(self, start_value: int, anim: int): ...
|
||||
def set_range(self, min: int, max: int): ...
|
||||
def set_mode(self, mode: int): ...
|
||||
def get_value(self) -> int: ...
|
||||
def get_start_value(self) -> int: ...
|
||||
def get_min_value(self) -> int: ...
|
||||
def get_max_value(self) -> int: ...
|
||||
def get_mode(self) -> int: ...
|
||||
|
||||
class btn(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
|
||||
class checkbox(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
def set_text(self, txt: str): ...
|
||||
def set_text_static(self, txt: str): ...
|
||||
def get_text(self) -> str: ...
|
||||
|
||||
class dropdown(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
def set_text(self, txt: str): ...
|
||||
def set_options(self, options: str): ...
|
||||
def add_option(self, option: str, pos:int): ...
|
||||
def clear_options(self): ...
|
||||
def set_selected(self, sel_opt: int): ...
|
||||
def set_dir(self, dir: int): ...
|
||||
def set_symbol(self, symbol: str): ...
|
||||
def set_selected_highlight(self, en: int): ...
|
||||
# def get_list(self) -> lv_obj: ...
|
||||
def get_text(self) -> str: ...
|
||||
def get_options(self) -> str: ...
|
||||
def get_selected(self) -> int: ...
|
||||
def get_option_cnt(self) -> int: ...
|
||||
def get_selected_str(self) -> str: ...
|
||||
def get_option_index(self, option: str) -> int: ...
|
||||
def get_symbol(self) -> str: ...
|
||||
def get_selected_highlight(self) -> int: ...
|
||||
def get_dir(self) -> int: ...
|
||||
def open(self): ...
|
||||
def close(self): ...
|
||||
def is_open(self) -> int: ...
|
||||
|
||||
class label(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
def set_text(self, txt: str): ...
|
||||
def set_long_mode(self, mode: int): ...
|
||||
def set_recolor(self, en: int): ...
|
||||
def set_style_text_align(self, value: int, selector: int): ...
|
||||
|
||||
class roller(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
def set_options(self, options: str, mode: int): ...
|
||||
def set_visible_row_count(self, row_cnt: int): ...
|
||||
|
||||
class slider(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
|
||||
class switch(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
|
||||
class table(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
def set_cell_value(self, row: int, col: int, txt: str): ...
|
||||
|
||||
class textarea(lv_obj):
|
||||
def __init__(self, parent: lv_obj): ...
|
||||
def set_one_line(en: int): ...
|
||||
|
||||
def scr_act() -> lv_obj: ...
|
||||
def timer_create_basic() -> lv_timer_t: ...
|
||||
@@ -0,0 +1,18 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "../../lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifdef PIKASCRIPT
|
||||
|
||||
#include "pika_lvgl_indev_t.h"
|
||||
|
||||
void pika_lvgl_indev_t_get_vect(PikaObj* self, PikaObj* point) {
|
||||
lv_indev_t* lv_indev = obj_getPtr(self, "lv_indev");
|
||||
lv_point_t* lv_point = obj_getPtr(point, "lv_point");
|
||||
lv_indev_get_vect(lv_indev, lv_point);
|
||||
obj_setInt(point, "x", lv_point->x);
|
||||
obj_setInt(point, "y", lv_point->y);
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,24 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "../../lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifdef PIKASCRIPT
|
||||
|
||||
#include "pika_lvgl_lv_event.h"
|
||||
|
||||
int pika_lvgl_lv_event_get_code(PikaObj *self){
|
||||
lv_event_t *lv_event = obj_getPtr(self, "lv_event");
|
||||
return lv_event_get_code(lv_event);
|
||||
}
|
||||
|
||||
PikaObj *New_pika_lvgl_lv_obj(Args *args);
|
||||
PikaObj* pika_lvgl_lv_event_get_target(PikaObj *self){
|
||||
lv_event_t *lv_event = obj_getPtr(self, "lv_event");
|
||||
lv_obj_t* lv_obj = lv_event_get_target(lv_event);
|
||||
PikaObj* new_obj = newNormalObj(New_pika_lvgl_lv_obj);
|
||||
obj_setPtr(new_obj, "lv_obj", lv_obj);
|
||||
return new_obj;
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,116 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "../../lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifdef PIKASCRIPT
|
||||
|
||||
#include "pika_lvgl_lv_obj.h"
|
||||
#include "BaseObj.h"
|
||||
#include "dataStrs.h"
|
||||
#include "pika_lvgl.h"
|
||||
#include "pika_lvgl_arc.h"
|
||||
#include "pika_lvgl_lv_event.h"
|
||||
|
||||
extern PikaObj* pika_lv_event_listener_g;
|
||||
|
||||
void pika_lvgl_lv_obj_center(PikaObj* self) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_center(lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_set_size(PikaObj* self, int size_x, int size_y) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_set_size(lv_obj, size_x, size_y);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_align(PikaObj* self, int align, int x_ofs, int y_ofs) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_align(lv_obj, align, x_ofs, y_ofs);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_set_height(PikaObj* self, int h) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_set_height(lv_obj, h);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_update_layout(PikaObj* self) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_update_layout(lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_set_width(PikaObj* self, int w) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_set_width(lv_obj, w);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_add_state(PikaObj* self, int state) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_add_state(lv_obj, state);
|
||||
}
|
||||
|
||||
PikaObj* eventLisener_getHandler(PikaObj* self, uintptr_t event_id) {
|
||||
Args buffs = {0};
|
||||
char* event_name =
|
||||
strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, "%d", event_id);
|
||||
PikaObj* event_item = obj_getObj(self, event_name);
|
||||
PikaObj* event_handler = obj_getPtr(event_item, "handler");
|
||||
strsDeinit(&buffs);
|
||||
return event_handler;
|
||||
}
|
||||
|
||||
static void __pika_event_cb(lv_event_t* e) {
|
||||
lv_obj_t* target = lv_event_get_target(e);
|
||||
PikaObj* event_handler =
|
||||
eventLisener_getHandler(pika_lv_event_listener_g, (uintptr_t)target);
|
||||
PikaObj* evt = obj_getObj(event_handler, "_event_evt");
|
||||
obj_setPtr(evt, "lv_event", e);
|
||||
obj_run(event_handler, "_event_cb(_event_evt)");
|
||||
}
|
||||
|
||||
void eventLicener_registerEvent(PikaObj* self,
|
||||
uintptr_t event_id,
|
||||
PikaObj* event_handler) {
|
||||
Args buffs = {0};
|
||||
char* event_name =
|
||||
strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, "%d", event_id);
|
||||
obj_newDirectObj(self, event_name, New_TinyObj);
|
||||
PikaObj* event_item = obj_getObj(self, event_name);
|
||||
obj_setRef(event_item, "handler", event_handler);
|
||||
strsDeinit(&buffs);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_add_event_cb(PikaObj* self,
|
||||
Arg* event_cb,
|
||||
int filter,
|
||||
void* user_data) {
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_add_event_cb(lv_obj, __pika_event_cb, filter, NULL);
|
||||
obj_setArg(self, "_event_cb", event_cb);
|
||||
obj_setPtr(self, "_event_user_data", user_data);
|
||||
obj_newDirectObj(self, "_event_evt", New_pika_lvgl_lv_event);
|
||||
eventLicener_registerEvent(pika_lv_event_listener_g, (uintptr_t)lv_obj, self);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_add_style(PikaObj *self, PikaObj* style, int selector){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_style_t* lv_style = obj_getPtr(style, "lv_style");
|
||||
lv_obj_add_style(lv_obj, lv_style, selector);
|
||||
}
|
||||
|
||||
int pika_lvgl_lv_obj_get_x(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_obj_get_x(lv_obj);
|
||||
}
|
||||
|
||||
int pika_lvgl_lv_obj_get_y(PikaObj *self){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
return lv_obj_get_y(lv_obj);
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_obj_set_pos(PikaObj *self, int x, int y){
|
||||
lv_obj_t* lv_obj = obj_getPtr(self, "lv_obj");
|
||||
lv_obj_set_pos(lv_obj, x, y);
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,70 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "../../lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifdef PIKASCRIPT
|
||||
|
||||
#include "pika_lvgl_style_t.h"
|
||||
|
||||
void pika_lvgl_style_t_init(PikaObj* self) {
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_style_init(lv_style);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_bg_color(PikaObj* self, PikaObj* color) {
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_color_t* lv_color = obj_getPtr(color, "lv_color");
|
||||
lv_style_set_bg_color(lv_style, *lv_color);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_bg_opa(PikaObj* self, int opa) {
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_style_set_bg_opa(lv_style, opa);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_outline_color(PikaObj* self, PikaObj* color) {
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_color_t* lv_color = obj_getPtr(color, "lv_color");
|
||||
lv_style_set_outline_color(lv_style, *lv_color);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_outline_pad(PikaObj* self, int pad) {
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_style_set_outline_pad(lv_style, pad);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_outline_width(PikaObj* self, int w) {
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_style_set_outline_width(lv_style, w);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_radius(PikaObj* self, int radius) {
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_style_set_radius(lv_style, radius);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t___init__(PikaObj* self) {
|
||||
lv_style_t lv_style_stack = {0};
|
||||
args_setStruct(self->list, "lv_style_struct", lv_style_stack);
|
||||
lv_style_t* lv_style = args_getStruct(self->list, "lv_style_struct");
|
||||
obj_setPtr(self, "lv_style", lv_style);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_shadow_color(PikaObj *self, PikaObj* color){
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_color_t* lv_color = obj_getPtr(color, "lv_color");
|
||||
lv_style_set_shadow_color(lv_style, *lv_color);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_shadow_spread(PikaObj *self, int s){
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_style_set_shadow_spread(lv_style, s);
|
||||
}
|
||||
|
||||
void pika_lvgl_style_t_set_shadow_width(PikaObj *self, int w){
|
||||
lv_style_t* lv_style = obj_getPtr(self, "lv_style");
|
||||
lv_style_set_shadow_width(lv_style, w);
|
||||
}
|
||||
#endif
|
||||
@@ -12,8 +12,8 @@ port_src = Glob('*.c')
|
||||
port_inc = [cwd]
|
||||
group = group + DefineGroup('LVGL-port', port_src, depend = ['PKG_USING_LVGL'], CPPPATH = port_inc)
|
||||
|
||||
# check if .h or .hpp files exsit
|
||||
def check_h_hpp_exsit(path):
|
||||
# check if .h or .hpp files exists
|
||||
def check_h_hpp_exists(path):
|
||||
file_dirs = os.listdir(path)
|
||||
for file_dir in file_dirs:
|
||||
if os.path.splitext(file_dir)[1] in ['.h', '.hpp']:
|
||||
@@ -28,7 +28,7 @@ for root, dirs, files in os.walk(lvgl_src_cwd):
|
||||
for dir in dirs:
|
||||
current_path = os.path.join(root, dir)
|
||||
src = src + Glob(os.path.join(current_path,'*.c')) # add all .c files
|
||||
if check_h_hpp_exsit(current_path): # add .h and .hpp path
|
||||
if check_h_hpp_exists(current_path): # add .h and .hpp path
|
||||
inc = inc + [current_path]
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ if GetDepend('PKG_LVGL_USING_EXAMPLES'):
|
||||
for dir in dirs:
|
||||
current_path = os.path.join(root, dir)
|
||||
src = src + Glob(os.path.join(current_path,'*.c'))
|
||||
if check_h_hpp_exsit(current_path):
|
||||
if check_h_hpp_exists(current_path):
|
||||
inc = inc + [current_path]
|
||||
|
||||
if GetDepend('PKG_LVGL_USING_DEMOS'):
|
||||
@@ -49,7 +49,7 @@ if GetDepend('PKG_LVGL_USING_DEMOS'):
|
||||
for dir in dirs:
|
||||
current_path = os.path.join(root, dir)
|
||||
src = src + Glob(os.path.join(current_path,'*.c'))
|
||||
if check_h_hpp_exsit(current_path):
|
||||
if check_h_hpp_exists(current_path):
|
||||
inc = inc + [current_path]
|
||||
|
||||
LOCAL_CFLAGS = ''
|
||||
|
||||
@@ -13,36 +13,30 @@
|
||||
|
||||
#ifdef __RTTHREAD__
|
||||
|
||||
#include <lvgl.h>
|
||||
|
||||
#define LV_RTTHREAD_INCLUDE <rtthread.h>
|
||||
#include LV_RTTHREAD_INCLUDE
|
||||
|
||||
/*=========================
|
||||
MEMORY SETTINGS
|
||||
STDLIB WRAPPER SETTINGS
|
||||
*=========================*/
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
# define LV_MEM_CUSTOM 1
|
||||
# define LV_MEM_CUSTOM_INCLUDE LV_RTTHREAD_INCLUDE
|
||||
# define LV_MEM_CUSTOM_ALLOC rt_malloc
|
||||
# define LV_MEM_CUSTOM_FREE rt_free
|
||||
# define LV_MEM_CUSTOM_REALLOC rt_realloc
|
||||
#define LV_USE_STDLIB_MALLOC LV_STDLIB_RTTHREAD
|
||||
#endif
|
||||
|
||||
/*====================
|
||||
HAL SETTINGS
|
||||
*====================*/
|
||||
#define LV_USE_STDLIB_STRING LV_STDLIB_RTTHREAD
|
||||
|
||||
#define LV_TICK_CUSTOM 1
|
||||
#define LV_TICK_CUSTOM_INCLUDE LV_RTTHREAD_INCLUDE
|
||||
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (rt_tick_get_millisecond()) /*Expression evaluating to current system time in ms*/
|
||||
|
||||
#ifdef PKG_LVGL_DISP_REFR_PERIOD
|
||||
#define LV_DISP_DEF_REFR_PERIOD PKG_LVGL_DISP_REFR_PERIOD
|
||||
#if LV_USE_FLOAT == 0
|
||||
#define LV_USE_STDLIB_SPRINTF LV_STDLIB_RTTHREAD
|
||||
#endif
|
||||
|
||||
/*=======================
|
||||
* FEATURE CONFIGURATION
|
||||
*=======================*/
|
||||
/*=================
|
||||
* OPERATING SYSTEM
|
||||
*=================*/
|
||||
|
||||
#define LV_USE_OS LV_OS_RTTHREAD
|
||||
|
||||
/*-------------
|
||||
* Asserts
|
||||
@@ -51,30 +45,20 @@
|
||||
#define LV_ASSERT_HANDLER_INCLUDE LV_RTTHREAD_INCLUDE
|
||||
#define LV_ASSERT_HANDLER RT_ASSERT(0);
|
||||
|
||||
/*-------------
|
||||
* Others
|
||||
*-----------*/
|
||||
|
||||
#define LV_SPRINTF_CUSTOM 1
|
||||
#define LV_SPRINTF_INCLUDE LV_RTTHREAD_INCLUDE
|
||||
#define lv_snprintf rt_snprintf
|
||||
#define lv_vsnprintf rt_vsnprintf
|
||||
#define LV_SPRINTF_USE_FLOAT 0
|
||||
|
||||
/*=====================
|
||||
* COMPILER SETTINGS
|
||||
*====================*/
|
||||
|
||||
#ifdef ARCH_CPU_BIG_ENDIAN
|
||||
# define LV_BIG_ENDIAN_SYSTEM 1
|
||||
#define LV_BIG_ENDIAN_SYSTEM 1
|
||||
#else
|
||||
# define LV_BIG_ENDIAN_SYSTEM 0
|
||||
#define LV_BIG_ENDIAN_SYSTEM 0
|
||||
#endif
|
||||
|
||||
#ifdef rt_align /* >= RT-Thread v5.0.0 */
|
||||
# define LV_ATTRIBUTE_MEM_ALIGN rt_align(RT_ALIGN_SIZE)
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN rt_align(RT_ALIGN_SIZE)
|
||||
#else
|
||||
# define LV_ATTRIBUTE_MEM_ALIGN ALIGN(RT_ALIGN_SIZE)
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN ALIGN(RT_ALIGN_SIZE)
|
||||
#endif
|
||||
|
||||
/*==================
|
||||
@@ -82,7 +66,7 @@
|
||||
*==================*/
|
||||
|
||||
#ifdef PKG_LVGL_USING_EXAMPLES
|
||||
# define LV_BUILD_EXAMPLES 1
|
||||
#define LV_BUILD_EXAMPLES 1
|
||||
#endif
|
||||
|
||||
/*--END OF LV_RT_THREAD_CONF_H--*/
|
||||
|
||||
@@ -19,13 +19,17 @@
|
||||
#include <rtdbg.h>
|
||||
|
||||
#ifndef PKG_LVGL_THREAD_STACK_SIZE
|
||||
#define PKG_LVGL_THREAD_STACK_SIZE 4096
|
||||
#define PKG_LVGL_THREAD_STACK_SIZE 4096
|
||||
#endif /* PKG_LVGL_THREAD_STACK_SIZE */
|
||||
|
||||
#ifndef PKG_LVGL_THREAD_PRIO
|
||||
#define PKG_LVGL_THREAD_PRIO (RT_THREAD_PRIORITY_MAX*2/3)
|
||||
#define PKG_LVGL_THREAD_PRIO (RT_THREAD_PRIORITY_MAX*2/3)
|
||||
#endif /* PKG_LVGL_THREAD_PRIO */
|
||||
|
||||
#ifndef PKG_LVGL_DISP_REFR_PERIOD
|
||||
#define PKG_LVGL_DISP_REFR_PERIOD 33
|
||||
#endif /* PKG_LVGL_DISP_REFR_PERIOD */
|
||||
|
||||
extern void lv_port_disp_init(void);
|
||||
extern void lv_port_indev_init(void);
|
||||
extern void lv_user_gui_init(void);
|
||||
@@ -33,9 +37,9 @@ extern void lv_user_gui_init(void);
|
||||
static struct rt_thread lvgl_thread;
|
||||
|
||||
#ifdef rt_align
|
||||
rt_align(RT_ALIGN_SIZE)
|
||||
rt_align(RT_ALIGN_SIZE)
|
||||
#else
|
||||
ALIGN(RT_ALIGN_SIZE)
|
||||
ALIGN(RT_ALIGN_SIZE)
|
||||
#endif
|
||||
static rt_uint8_t lvgl_thread_stack[PKG_LVGL_THREAD_STACK_SIZE];
|
||||
|
||||
@@ -56,11 +60,13 @@ static void lvgl_thread_entry(void *parameter)
|
||||
lv_port_indev_init();
|
||||
lv_user_gui_init();
|
||||
|
||||
lv_tick_set_cb(&rt_tick_get_millisecond);
|
||||
|
||||
/* handle the tasks of LVGL */
|
||||
while(1)
|
||||
{
|
||||
lv_task_handler();
|
||||
rt_thread_mdelay(LV_DISP_DEF_REFR_PERIOD);
|
||||
rt_thread_mdelay(PKG_LVGL_DISP_REFR_PERIOD);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
inc = [cwd]
|
||||
|
||||
# check if .h or .hpp files exsit
|
||||
def check_h_hpp_exsit(path):
|
||||
# check if .h or .hpp files exists
|
||||
def check_h_hpp_exists(path):
|
||||
file_dirs = os.listdir(path)
|
||||
for file_dir in file_dirs:
|
||||
if os.path.splitext(file_dir)[1] in ['.h', '.hpp']:
|
||||
@@ -17,7 +17,7 @@ for root, dirs, files in os.walk(sls_src_cwd):
|
||||
for dir in dirs:
|
||||
current_path = os.path.join(root, dir)
|
||||
src = src + Glob(os.path.join(current_path,'*.c')) # add all .c files
|
||||
if check_h_hpp_exsit(current_path): # add .h and .hpp path
|
||||
if check_h_hpp_exists(current_path): # add .h and .hpp path
|
||||
inc = inc + [current_path]
|
||||
|
||||
group = DefineGroup('LVGL-SquareLine', src, depend = ['PKG_USING_LVGL_SQUARELINE'], CPPPATH = inc)
|
||||
|
||||
Reference in New Issue
Block a user