LVGL add screen support

This commit is contained in:
Stephan Hadinger 2021-05-20 19:34:51 +02:00
parent be92738c57
commit 85a6ab797a
16 changed files with 2484 additions and 2383 deletions

View File

@ -9,6 +9,7 @@
#ifdef USE_LVGL
#include "lvgl.h"
#include "be_lvgl.h"
extern int lv0_member(bvm *vm); // resolve virtual members
@ -21,13 +22,33 @@ extern int lv0_load_seg7_font(bvm *vm);
extern int lv0_load_font(bvm *vm);
extern int lv0_load_freetype_font(bvm *vm);
extern int lv0_scr_act(bvm *vm);
extern int lv0_layer_top(bvm *vm);
extern int lv0_layer_sys(bvm *vm);
extern int lv0_get_hor_res(bvm *vm);
extern int lv0_get_ver_res(bvm *vm);
extern int lv0_screenshot(bvm *vm);
static int lv_get_hor_res(void) {
return lv_disp_get_hor_res(lv_disp_get_default());
}
static int lv_get_ver_res(bvm *vm) {
return lv_disp_get_ver_res(lv_disp_get_default());
}
/* `lv` methods */
const lvbe_call_c_t lv_func[] = {
// resolution
{ "get_hor_res", (void*) &lv_get_hor_res, "i", "" },
{ "get_ver_res", (void*) &lv_get_ver_res, "i", "" },
// layers
{ "layer_sys", (void*) &lv_layer_sys, "lv_obj", "" },
{ "layer_top", (void*) &lv_layer_top, "lv_obj", "" },
// screens
{ "scr_act", (void*) &lv_scr_act, "lv_obj", "" },
{ "scr_load", (void*) &lv_scr_load, "", "(lv_obj)" },
{ "scr_load_anim", (void*) &lv_scr_load_anim, "", "(lv_obj)iiib" },
};
const size_t lv_func_size = sizeof(lv_func) / sizeof(lv_func[0]);
typedef struct lvbe_constant_t {
@ -37,392 +58,439 @@ typedef struct lvbe_constant_t {
const lvbe_constant_t lv0_constants[] = {
{ "ALIGN_CENTER", 0 },
{ "ALIGN_IN_BOTTOM_LEFT", 4 },
{ "ALIGN_IN_BOTTOM_MID", 5 },
{ "ALIGN_IN_BOTTOM_RIGHT", 6 },
{ "ALIGN_IN_LEFT_MID", 7 },
{ "ALIGN_IN_RIGHT_MID", 8 },
{ "ALIGN_IN_TOP_LEFT", 1 },
{ "ALIGN_IN_TOP_MID", 2 },
{ "ALIGN_IN_TOP_RIGHT", 3 },
{ "ALIGN_OUT_BOTTOM_LEFT", 12 },
{ "ALIGN_OUT_BOTTOM_MID", 13 },
{ "ALIGN_OUT_BOTTOM_RIGHT", 14 },
{ "ALIGN_OUT_LEFT_BOTTOM", 17 },
{ "ALIGN_OUT_LEFT_MID", 16 },
{ "ALIGN_OUT_LEFT_TOP", 15 },
{ "ALIGN_OUT_RIGHT_BOTTOM", 20 },
{ "ALIGN_OUT_RIGHT_MID", 19 },
{ "ALIGN_OUT_RIGHT_TOP", 18 },
{ "ALIGN_OUT_TOP_LEFT", 9 },
{ "ALIGN_OUT_TOP_MID", 10 },
{ "ALIGN_OUT_TOP_RIGHT", 11 },
{ "ANIM_OFF", 0 },
{ "ANIM_ON", 1 },
{ "ALIGN_CENTER", LV_ALIGN_CENTER },
{ "ALIGN_IN_BOTTOM_LEFT", LV_ALIGN_IN_BOTTOM_LEFT },
{ "ALIGN_IN_BOTTOM_MID", LV_ALIGN_IN_BOTTOM_MID },
{ "ALIGN_IN_BOTTOM_RIGHT", LV_ALIGN_IN_BOTTOM_RIGHT },
{ "ALIGN_IN_LEFT_MID", LV_ALIGN_IN_LEFT_MID },
{ "ALIGN_IN_RIGHT_MID", LV_ALIGN_IN_RIGHT_MID },
{ "ALIGN_IN_TOP_LEFT", LV_ALIGN_IN_TOP_LEFT },
{ "ALIGN_IN_TOP_MID", LV_ALIGN_IN_TOP_MID },
{ "ALIGN_IN_TOP_RIGHT", LV_ALIGN_IN_TOP_RIGHT },
{ "ALIGN_OUT_BOTTOM_LEFT", LV_ALIGN_OUT_BOTTOM_LEFT },
{ "ALIGN_OUT_BOTTOM_MID", LV_ALIGN_OUT_BOTTOM_MID },
{ "ALIGN_OUT_BOTTOM_RIGHT", LV_ALIGN_OUT_BOTTOM_RIGHT },
{ "ALIGN_OUT_LEFT_BOTTOM", LV_ALIGN_OUT_LEFT_BOTTOM },
{ "ALIGN_OUT_LEFT_MID", LV_ALIGN_OUT_LEFT_MID },
{ "ALIGN_OUT_LEFT_TOP", LV_ALIGN_OUT_LEFT_TOP },
{ "ALIGN_OUT_RIGHT_BOTTOM", LV_ALIGN_OUT_RIGHT_BOTTOM },
{ "ALIGN_OUT_RIGHT_MID", LV_ALIGN_OUT_RIGHT_MID },
{ "ALIGN_OUT_RIGHT_TOP", LV_ALIGN_OUT_RIGHT_TOP },
{ "ALIGN_OUT_TOP_LEFT", LV_ALIGN_OUT_TOP_LEFT },
{ "ALIGN_OUT_TOP_MID", LV_ALIGN_OUT_TOP_MID },
{ "ALIGN_OUT_TOP_RIGHT", LV_ALIGN_OUT_TOP_RIGHT },
{ "ANIM_OFF", LV_ANIM_OFF },
{ "ANIM_ON", LV_ANIM_ON },
{ "AQUA", 65535 },
{ "ARC_PART_BG", 0 },
{ "ARC_PART_INDIC", 1 },
{ "ARC_PART_KNOB", 2 },
{ "ARC_TYPE_NORMAL", 0 },
{ "ARC_TYPE_REVERSE", 2 },
{ "ARC_TYPE_SYMMETRIC", 1 },
{ "BAR_TYPE_CUSTOM", 2 },
{ "BAR_TYPE_NORMAL", 0 },
{ "BAR_TYPE_SYMMETRICAL", 1 },
{ "ARC_PART_BG", LV_ARC_PART_BG },
{ "ARC_PART_INDIC", LV_ARC_PART_INDIC },
{ "ARC_PART_KNOB", LV_ARC_PART_KNOB },
{ "ARC_TYPE_NORMAL", LV_ARC_TYPE_NORMAL },
{ "ARC_TYPE_REVERSE", LV_ARC_TYPE_REVERSE },
{ "ARC_TYPE_SYMMETRIC", LV_ARC_TYPE_SYMMETRIC },
{ "BAR_TYPE_CUSTOM", LV_BAR_TYPE_CUSTOM },
{ "BAR_TYPE_NORMAL", LV_BAR_TYPE_NORMAL },
{ "BAR_TYPE_SYMMETRICAL", LV_BAR_TYPE_SYMMETRICAL },
{ "BLACK", 0 },
{ "BLEND_MODE_ADDITIVE", 1 },
{ "BLEND_MODE_NORMAL", 0 },
{ "BLEND_MODE_SUBTRACTIVE", 2 },
{ "BLEND_MODE_ADDITIVE", LV_BLEND_MODE_ADDITIVE },
{ "BLEND_MODE_NORMAL", LV_BLEND_MODE_NORMAL },
{ "BLEND_MODE_SUBTRACTIVE", LV_BLEND_MODE_SUBTRACTIVE },
{ "BLUE", 255 },
{ "BORDER_SIDE_BOTTOM", 1 },
{ "BORDER_SIDE_FULL", 15 },
{ "BORDER_SIDE_INTERNAL", 16 },
{ "BORDER_SIDE_LEFT", 4 },
{ "BORDER_SIDE_NONE", 0 },
{ "BORDER_SIDE_RIGHT", 8 },
{ "BORDER_SIDE_TOP", 2 },
{ "BTNMATRIX_CTRL_CHECKABLE", 64 },
{ "BTNMATRIX_CTRL_CHECK_STATE", 128 },
{ "BTNMATRIX_CTRL_CLICK_TRIG", 256 },
{ "BTNMATRIX_CTRL_DISABLED", 32 },
{ "BTNMATRIX_CTRL_HIDDEN", 8 },
{ "BTNMATRIX_CTRL_NO_REPEAT", 16 },
{ "BTN_STATE_CHECKED_DISABLED", 5 },
{ "BTN_STATE_CHECKED_PRESSED", 4 },
{ "BTN_STATE_CHECKED_RELEASED", 3 },
{ "BTN_STATE_DISABLED", 2 },
{ "BTN_STATE_PRESSED", 1 },
{ "BTN_STATE_RELEASED", 0 },
{ "CALENDAR_PART_BG", 0 },
{ "CALENDAR_PART_DATE", 3 },
{ "CALENDAR_PART_DAY_NAMES", 2 },
{ "CALENDAR_PART_HEADER", 1 },
{ "CHART_AXIS_DRAW_LAST_TICK", 1 },
{ "CHART_AXIS_INVERSE_LABELS_ORDER", 2 },
{ "CHART_AXIS_PRIMARY_Y", 0 },
{ "CHART_AXIS_SECONDARY_Y", 1 },
{ "CHART_AXIS_SKIP_LAST_TICK", 0 },
{ "CHART_CURSOR_DOWN", 8 },
{ "CHART_CURSOR_LEFT", 4 },
{ "CHART_CURSOR_NONE", 0 },
{ "CHART_CURSOR_RIGHT", 1 },
{ "CHART_CURSOR_UP", 2 },
{ "CHART_PART_BG", 0 },
{ "CHART_PART_CURSOR", 3 },
{ "CHART_PART_SERIES", 2 },
{ "CHART_PART_SERIES_BG", 1 },
{ "CHART_TYPE_COLUMN", 2 },
{ "CHART_TYPE_LINE", 1 },
{ "CHART_TYPE_NONE", 0 },
{ "CHART_UPDATE_MODE_CIRCULAR", 1 },
{ "CHART_UPDATE_MODE_SHIFT", 0 },
{ "CHECKBOX_PART_BG", 0 },
{ "CHECKBOX_PART_BULLET", 64 },
{ "CPICKER_COLOR_MODE_HUE", 0 },
{ "CPICKER_COLOR_MODE_SATURATION", 1 },
{ "CPICKER_COLOR_MODE_VALUE", 2 },
{ "CPICKER_PART_KNOB", 1 },
{ "CPICKER_PART_MAIN", 0 },
{ "CPICKER_TYPE_DISC", 1 },
{ "CPICKER_TYPE_RECT", 0 },
{ "BORDER_SIDE_BOTTOM", LV_BORDER_SIDE_BOTTOM },
{ "BORDER_SIDE_FULL", LV_BORDER_SIDE_FULL },
{ "BORDER_SIDE_INTERNAL", LV_BORDER_SIDE_INTERNAL },
{ "BORDER_SIDE_LEFT", LV_BORDER_SIDE_LEFT },
{ "BORDER_SIDE_NONE", LV_BORDER_SIDE_NONE },
{ "BORDER_SIDE_RIGHT", LV_BORDER_SIDE_RIGHT },
{ "BORDER_SIDE_TOP", LV_BORDER_SIDE_TOP },
{ "BTNMATRIX_CTRL_CHECKABLE", LV_BTNMATRIX_CTRL_CHECKABLE },
{ "BTNMATRIX_CTRL_CHECK_STATE", LV_BTNMATRIX_CTRL_CHECK_STATE },
{ "BTNMATRIX_CTRL_CLICK_TRIG", LV_BTNMATRIX_CTRL_CLICK_TRIG },
{ "BTNMATRIX_CTRL_DISABLED", LV_BTNMATRIX_CTRL_DISABLED },
{ "BTNMATRIX_CTRL_HIDDEN", LV_BTNMATRIX_CTRL_HIDDEN },
{ "BTNMATRIX_CTRL_NO_REPEAT", LV_BTNMATRIX_CTRL_NO_REPEAT },
{ "BTN_STATE_CHECKED_DISABLED", LV_BTN_STATE_CHECKED_DISABLED },
{ "BTN_STATE_CHECKED_PRESSED", LV_BTN_STATE_CHECKED_PRESSED },
{ "BTN_STATE_CHECKED_RELEASED", LV_BTN_STATE_CHECKED_RELEASED },
{ "BTN_STATE_DISABLED", LV_BTN_STATE_DISABLED },
{ "BTN_STATE_PRESSED", LV_BTN_STATE_PRESSED },
{ "BTN_STATE_RELEASED", LV_BTN_STATE_RELEASED },
{ "CALENDAR_PART_BG", LV_CALENDAR_PART_BG },
{ "CALENDAR_PART_DATE", LV_CALENDAR_PART_DATE },
{ "CALENDAR_PART_DAY_NAMES", LV_CALENDAR_PART_DAY_NAMES },
{ "CALENDAR_PART_HEADER", LV_CALENDAR_PART_HEADER },
{ "CHART_AXIS_DRAW_LAST_TICK", LV_CHART_AXIS_DRAW_LAST_TICK },
{ "CHART_AXIS_INVERSE_LABELS_ORDER", LV_CHART_AXIS_INVERSE_LABELS_ORDER },
{ "CHART_AXIS_PRIMARY_Y", LV_CHART_AXIS_PRIMARY_Y },
{ "CHART_AXIS_SECONDARY_Y", LV_CHART_AXIS_SECONDARY_Y },
{ "CHART_AXIS_SKIP_LAST_TICK", LV_CHART_AXIS_SKIP_LAST_TICK },
{ "CHART_CURSOR_DOWN", LV_CHART_CURSOR_DOWN },
{ "CHART_CURSOR_LEFT", LV_CHART_CURSOR_LEFT },
{ "CHART_CURSOR_NONE", LV_CHART_CURSOR_NONE },
{ "CHART_CURSOR_RIGHT", LV_CHART_CURSOR_RIGHT },
{ "CHART_CURSOR_UP", LV_CHART_CURSOR_UP },
{ "CHART_PART_BG", LV_CHART_PART_BG },
{ "CHART_PART_CURSOR", LV_CHART_PART_CURSOR },
{ "CHART_PART_SERIES", LV_CHART_PART_SERIES },
{ "CHART_PART_SERIES_BG", LV_CHART_PART_SERIES_BG },
{ "CHART_TYPE_COLUMN", LV_CHART_TYPE_COLUMN },
{ "CHART_TYPE_LINE", LV_CHART_TYPE_LINE },
{ "CHART_TYPE_NONE", LV_CHART_TYPE_NONE },
{ "CHART_UPDATE_MODE_CIRCULAR", LV_CHART_UPDATE_MODE_CIRCULAR },
{ "CHART_UPDATE_MODE_SHIFT", LV_CHART_UPDATE_MODE_SHIFT },
{ "CHECKBOX_PART_BG", LV_CHECKBOX_PART_BG },
{ "CHECKBOX_PART_BULLET", LV_CHECKBOX_PART_BULLET },
{ "CPICKER_COLOR_MODE_HUE", LV_CPICKER_COLOR_MODE_HUE },
{ "CPICKER_COLOR_MODE_SATURATION", LV_CPICKER_COLOR_MODE_SATURATION },
{ "CPICKER_COLOR_MODE_VALUE", LV_CPICKER_COLOR_MODE_VALUE },
{ "CPICKER_PART_KNOB", LV_CPICKER_PART_KNOB },
{ "CPICKER_PART_MAIN", LV_CPICKER_PART_MAIN },
{ "CPICKER_TYPE_DISC", LV_CPICKER_TYPE_DISC },
{ "CPICKER_TYPE_RECT", LV_CPICKER_TYPE_RECT },
{ "CYAN", 65535 },
{ "DISP_ROT_180", 2 },
{ "DISP_ROT_270", 3 },
{ "DISP_ROT_90", 1 },
{ "DISP_ROT_NONE", 0 },
{ "DISP_SIZE_EXTRA_LARGE", 3 },
{ "DISP_SIZE_LARGE", 2 },
{ "DISP_SIZE_MEDIUM", 1 },
{ "DISP_SIZE_SMALL", 0 },
{ "DRAG_DIR_BOTH", 3 },
{ "DRAG_DIR_HOR", 1 },
{ "DRAG_DIR_ONE", 4 },
{ "DRAG_DIR_VER", 2 },
{ "DROPDOWN_DIR_DOWN", 0 },
{ "DROPDOWN_DIR_LEFT", 2 },
{ "DROPDOWN_DIR_RIGHT", 3 },
{ "DROPDOWN_DIR_UP", 1 },
{ "DROPDOWN_PART_LIST", 64 },
{ "DROPDOWN_PART_MAIN", 0 },
{ "DROPDOWN_PART_SCROLLBAR", 65 },
{ "DROPDOWN_PART_SELECTED", 66 },
{ "EVENT_APPLY", 19 },
{ "EVENT_CANCEL", 20 },
{ "EVENT_CLICKED", 6 },
{ "EVENT_DEFOCUSED", 14 },
{ "EVENT_DELETE", 21 },
{ "EVENT_DRAG_BEGIN", 8 },
{ "EVENT_DRAG_END", 9 },
{ "EVENT_DRAG_THROW_BEGIN", 10 },
{ "EVENT_FOCUSED", 13 },
{ "EVENT_GESTURE", 11 },
{ "EVENT_INSERT", 17 },
{ "EVENT_KEY", 12 },
{ "EVENT_LEAVE", 15 },
{ "EVENT_LONG_PRESSED", 4 },
{ "EVENT_LONG_PRESSED_REPEAT", 5 },
{ "EVENT_PRESSED", 0 },
{ "EVENT_PRESSING", 1 },
{ "EVENT_PRESS_LOST", 2 },
{ "EVENT_REFRESH", 18 },
{ "EVENT_RELEASED", 7 },
{ "EVENT_SHORT_CLICKED", 3 },
{ "EVENT_VALUE_CHANGED", 16 },
{ "FIT_MAX", 3 },
{ "FIT_NONE", 0 },
{ "FIT_PARENT", 2 },
{ "FIT_TIGHT", 1 },
{ "FS_MODE_RD", 2 },
{ "FS_MODE_WR", 1 },
{ "FS_RES_BUSY", 7 },
{ "FS_RES_DENIED", 6 },
{ "FS_RES_FS_ERR", 2 },
{ "FS_RES_FULL", 4 },
{ "FS_RES_HW_ERR", 1 },
{ "FS_RES_INV_PARAM", 11 },
{ "FS_RES_LOCKED", 5 },
{ "FS_RES_NOT_EX", 3 },
{ "FS_RES_NOT_IMP", 9 },
{ "FS_RES_OK", 0 },
{ "FS_RES_OUT_OF_MEM", 10 },
{ "FS_RES_TOUT", 8 },
{ "FS_RES_UNKNOWN", 12 },
{ "GAUGE_PART_MAIN", 0 },
{ "GAUGE_PART_MAJOR", 1 },
{ "GAUGE_PART_NEEDLE", 2 },
{ "GESTURE_DIR_BOTTOM", 1 },
{ "GESTURE_DIR_LEFT", 2 },
{ "GESTURE_DIR_RIGHT", 3 },
{ "GESTURE_DIR_TOP", 0 },
{ "GRAD_DIR_HOR", 2 },
{ "GRAD_DIR_NONE", 0 },
{ "GRAD_DIR_VER", 1 },
{ "DISP_ROT_180", LV_DISP_ROT_180 },
{ "DISP_ROT_270", LV_DISP_ROT_270 },
{ "DISP_ROT_90", LV_DISP_ROT_90 },
{ "DISP_ROT_NONE", LV_DISP_ROT_NONE },
{ "DISP_SIZE_EXTRA_LARGE", LV_DISP_SIZE_EXTRA_LARGE },
{ "DISP_SIZE_LARGE", LV_DISP_SIZE_LARGE },
{ "DISP_SIZE_MEDIUM", LV_DISP_SIZE_MEDIUM },
{ "DISP_SIZE_SMALL", LV_DISP_SIZE_SMALL },
{ "DRAG_DIR_BOTH", LV_DRAG_DIR_BOTH },
{ "DRAG_DIR_HOR", LV_DRAG_DIR_HOR },
{ "DRAG_DIR_ONE", LV_DRAG_DIR_ONE },
{ "DRAG_DIR_VER", LV_DRAG_DIR_VER },
{ "DROPDOWN_DIR_DOWN", LV_DROPDOWN_DIR_DOWN },
{ "DROPDOWN_DIR_LEFT", LV_DROPDOWN_DIR_LEFT },
{ "DROPDOWN_DIR_RIGHT", LV_DROPDOWN_DIR_RIGHT },
{ "DROPDOWN_DIR_UP", LV_DROPDOWN_DIR_UP },
{ "DROPDOWN_PART_LIST", LV_DROPDOWN_PART_LIST },
{ "DROPDOWN_PART_MAIN", LV_DROPDOWN_PART_MAIN },
{ "DROPDOWN_PART_SCROLLBAR", LV_DROPDOWN_PART_SCROLLBAR },
{ "DROPDOWN_PART_SELECTED", LV_DROPDOWN_PART_SELECTED },
{ "EVENT_APPLY", LV_EVENT_APPLY },
{ "EVENT_CANCEL", LV_EVENT_CANCEL },
{ "EVENT_CLICKED", LV_EVENT_CLICKED },
{ "EVENT_DEFOCUSED", LV_EVENT_DEFOCUSED },
{ "EVENT_DELETE", LV_EVENT_DELETE },
{ "EVENT_DRAG_BEGIN", LV_EVENT_DRAG_BEGIN },
{ "EVENT_DRAG_END", LV_EVENT_DRAG_END },
{ "EVENT_DRAG_THROW_BEGIN", LV_EVENT_DRAG_THROW_BEGIN },
{ "EVENT_FOCUSED", LV_EVENT_FOCUSED },
{ "EVENT_GESTURE", LV_EVENT_GESTURE },
{ "EVENT_INSERT", LV_EVENT_INSERT },
{ "EVENT_KEY", LV_EVENT_KEY },
{ "EVENT_LEAVE", LV_EVENT_LEAVE },
{ "EVENT_LONG_PRESSED", LV_EVENT_LONG_PRESSED },
{ "EVENT_LONG_PRESSED_REPEAT", LV_EVENT_LONG_PRESSED_REPEAT },
{ "EVENT_PRESSED", LV_EVENT_PRESSED },
{ "EVENT_PRESSING", LV_EVENT_PRESSING },
{ "EVENT_PRESS_LOST", LV_EVENT_PRESS_LOST },
{ "EVENT_REFRESH", LV_EVENT_REFRESH },
{ "EVENT_RELEASED", LV_EVENT_RELEASED },
{ "EVENT_SHORT_CLICKED", LV_EVENT_SHORT_CLICKED },
{ "EVENT_VALUE_CHANGED", LV_EVENT_VALUE_CHANGED },
{ "FIT_MAX", LV_FIT_MAX },
{ "FIT_NONE", LV_FIT_NONE },
{ "FIT_PARENT", LV_FIT_PARENT },
{ "FIT_TIGHT", LV_FIT_TIGHT },
{ "FS_MODE_RD", LV_FS_MODE_RD },
{ "FS_MODE_WR", LV_FS_MODE_WR },
{ "FS_RES_BUSY", LV_FS_RES_BUSY },
{ "FS_RES_DENIED", LV_FS_RES_DENIED },
{ "FS_RES_FS_ERR", LV_FS_RES_FS_ERR },
{ "FS_RES_FULL", LV_FS_RES_FULL },
{ "FS_RES_HW_ERR", LV_FS_RES_HW_ERR },
{ "FS_RES_INV_PARAM", LV_FS_RES_INV_PARAM },
{ "FS_RES_LOCKED", LV_FS_RES_LOCKED },
{ "FS_RES_NOT_EX", LV_FS_RES_NOT_EX },
{ "FS_RES_NOT_IMP", LV_FS_RES_NOT_IMP },
{ "FS_RES_OK", LV_FS_RES_OK },
{ "FS_RES_OUT_OF_MEM", LV_FS_RES_OUT_OF_MEM },
{ "FS_RES_TOUT", LV_FS_RES_TOUT },
{ "FS_RES_UNKNOWN", LV_FS_RES_UNKNOWN },
{ "GAUGE_PART_MAIN", LV_GAUGE_PART_MAIN },
{ "GAUGE_PART_MAJOR", LV_GAUGE_PART_MAJOR },
{ "GAUGE_PART_NEEDLE", LV_GAUGE_PART_NEEDLE },
{ "GESTURE_DIR_BOTTOM", LV_GESTURE_DIR_BOTTOM },
{ "GESTURE_DIR_LEFT", LV_GESTURE_DIR_LEFT },
{ "GESTURE_DIR_RIGHT", LV_GESTURE_DIR_RIGHT },
{ "GESTURE_DIR_TOP", LV_GESTURE_DIR_TOP },
{ "GRAD_DIR_HOR", LV_GRAD_DIR_HOR },
{ "GRAD_DIR_NONE", LV_GRAD_DIR_NONE },
{ "GRAD_DIR_VER", LV_GRAD_DIR_VER },
{ "GRAY", 8421504 },
{ "GREEN", 32768 },
{ "INDEV_STATE_PR", 1 },
{ "INDEV_STATE_REL", 0 },
{ "KEYBOARD_MODE_NUM", 3 },
{ "KEYBOARD_MODE_SPECIAL", 2 },
{ "KEYBOARD_MODE_TEXT_LOWER", 0 },
{ "KEYBOARD_MODE_TEXT_UPPER", 1 },
{ "KEYBOARD_PART_BG", 0 },
{ "KEYBOARD_PART_BTN", 1 },
{ "KEY_BACKSPACE", 8 },
{ "KEY_DEL", 127 },
{ "KEY_DOWN", 18 },
{ "KEY_END", 3 },
{ "KEY_ENTER", 10 },
{ "KEY_ESC", 27 },
{ "KEY_HOME", 2 },
{ "KEY_LEFT", 20 },
{ "KEY_NEXT", 9 },
{ "KEY_PREV", 11 },
{ "KEY_RIGHT", 19 },
{ "KEY_UP", 17 },
{ "LABEL_ALIGN_AUTO", 3 },
{ "LABEL_ALIGN_CENTER", 1 },
{ "LABEL_ALIGN_LEFT", 0 },
{ "LABEL_ALIGN_RIGHT", 2 },
{ "LABEL_LONG_BREAK", 1 },
{ "LABEL_LONG_CROP", 5 },
{ "LABEL_LONG_DOT", 2 },
{ "LABEL_LONG_EXPAND", 0 },
{ "LABEL_LONG_SROLL", 3 },
{ "LABEL_LONG_SROLL_CIRC", 4 },
{ "LAYOUT_CENTER", 1 },
{ "LAYOUT_COLUMN_LEFT", 2 },
{ "LAYOUT_COLUMN_MID", 3 },
{ "LAYOUT_COLUMN_RIGHT", 4 },
{ "LAYOUT_GRID", 11 },
{ "LAYOUT_OFF", 0 },
{ "LAYOUT_PRETTY_BOTTOM", 10 },
{ "LAYOUT_PRETTY_MID", 9 },
{ "LAYOUT_PRETTY_TOP", 8 },
{ "LAYOUT_ROW_BOTTOM", 7 },
{ "LAYOUT_ROW_MID", 6 },
{ "LAYOUT_ROW_TOP", 5 },
{ "LED_PART_MAIN", 0 },
{ "INDEV_STATE_PR", LV_INDEV_STATE_PR },
{ "INDEV_STATE_REL", LV_INDEV_STATE_REL },
{ "KEYBOARD_MODE_NUM", LV_KEYBOARD_MODE_NUM },
{ "KEYBOARD_MODE_SPECIAL", LV_KEYBOARD_MODE_SPECIAL },
{ "KEYBOARD_MODE_TEXT_LOWER", LV_KEYBOARD_MODE_TEXT_LOWER },
{ "KEYBOARD_MODE_TEXT_UPPER", LV_KEYBOARD_MODE_TEXT_UPPER },
{ "KEYBOARD_PART_BG", LV_KEYBOARD_PART_BG },
{ "KEYBOARD_PART_BTN", LV_KEYBOARD_PART_BTN },
{ "KEY_BACKSPACE", LV_KEY_BACKSPACE },
{ "KEY_DEL", LV_KEY_DEL },
{ "KEY_DOWN", LV_KEY_DOWN },
{ "KEY_END", LV_KEY_END },
{ "KEY_ENTER", LV_KEY_ENTER },
{ "KEY_ESC", LV_KEY_ESC },
{ "KEY_HOME", LV_KEY_HOME },
{ "KEY_LEFT", LV_KEY_LEFT },
{ "KEY_NEXT", LV_KEY_NEXT },
{ "KEY_PREV", LV_KEY_PREV },
{ "KEY_RIGHT", LV_KEY_RIGHT },
{ "KEY_UP", LV_KEY_UP },
{ "LABEL_ALIGN_AUTO", LV_LABEL_ALIGN_AUTO },
{ "LABEL_ALIGN_CENTER", LV_LABEL_ALIGN_CENTER },
{ "LABEL_ALIGN_LEFT", LV_LABEL_ALIGN_LEFT },
{ "LABEL_ALIGN_RIGHT", LV_LABEL_ALIGN_RIGHT },
{ "LABEL_LONG_BREAK", LV_LABEL_LONG_BREAK },
{ "LABEL_LONG_CROP", LV_LABEL_LONG_CROP },
{ "LABEL_LONG_DOT", LV_LABEL_LONG_DOT },
{ "LABEL_LONG_EXPAND", LV_LABEL_LONG_EXPAND },
{ "LABEL_LONG_SROLL", LV_LABEL_LONG_SROLL },
{ "LABEL_LONG_SROLL_CIRC", LV_LABEL_LONG_SROLL_CIRC },
{ "LAYOUT_CENTER", LV_LAYOUT_CENTER },
{ "LAYOUT_COLUMN_LEFT", LV_LAYOUT_COLUMN_LEFT },
{ "LAYOUT_COLUMN_MID", LV_LAYOUT_COLUMN_MID },
{ "LAYOUT_COLUMN_RIGHT", LV_LAYOUT_COLUMN_RIGHT },
{ "LAYOUT_GRID", LV_LAYOUT_GRID },
{ "LAYOUT_OFF", LV_LAYOUT_OFF },
{ "LAYOUT_PRETTY_BOTTOM", LV_LAYOUT_PRETTY_BOTTOM },
{ "LAYOUT_PRETTY_MID", LV_LAYOUT_PRETTY_MID },
{ "LAYOUT_PRETTY_TOP", LV_LAYOUT_PRETTY_TOP },
{ "LAYOUT_ROW_BOTTOM", LV_LAYOUT_ROW_BOTTOM },
{ "LAYOUT_ROW_MID", LV_LAYOUT_ROW_MID },
{ "LAYOUT_ROW_TOP", LV_LAYOUT_ROW_TOP },
{ "LED_PART_MAIN", LV_LED_PART_MAIN },
{ "LIME", 65280 },
{ "LINEMETER_PART_MAIN", 0 },
{ "LIST_PART_BG", 0 },
{ "LIST_PART_EDGE_FLASH", 2 },
{ "LIST_PART_SCROLLBAR", 1 },
{ "LINEMETER_PART_MAIN", LV_LINEMETER_PART_MAIN },
{ "LIST_PART_BG", LV_LIST_PART_BG },
{ "LIST_PART_EDGE_FLASH", LV_LIST_PART_EDGE_FLASH },
{ "LIST_PART_SCROLLBAR", LV_LIST_PART_SCROLLBAR },
{ "MAGENTA", 16711935 },
{ "MAROON", 8388608 },
{ "MSGBOX_PART_BG", LV_MSGBOX_PART_BG },
{ "MSGBOX_PART_BTN", LV_MSGBOX_PART_BTN },
{ "MSGBOX_PART_BTN_BG", LV_MSGBOX_PART_BTN_BG },
{ "NAVY", 128 },
{ "OBJMASK_PART_MAIN", 0 },
{ "OBJ_PART_ALL", 255 },
{ "OBJ_PART_MAIN", 0 },
{ "OBJ_PART_REAL_FIRST", 64 },
{ "OBJ_PART_VIRTUAL_FIRST", 1 },
{ "OBJMASK_PART_MAIN", LV_OBJMASK_PART_MAIN },
{ "OBJ_PART_ALL", LV_OBJ_PART_ALL },
{ "OBJ_PART_MAIN", LV_OBJ_PART_MAIN },
{ "OLIVE", 8421376 },
{ "OPA_0", 0 },
{ "OPA_10", 25 },
{ "OPA_100", 255 },
{ "OPA_20", 51 },
{ "OPA_30", 76 },
{ "OPA_40", 102 },
{ "OPA_50", 127 },
{ "OPA_60", 153 },
{ "OPA_70", 178 },
{ "OPA_80", 204 },
{ "OPA_90", 229 },
{ "OPA_COVER", 255 },
{ "OPA_TRANSP", 0 },
{ "PAGE_EDGE_BOTTOM", 8 },
{ "PAGE_EDGE_LEFT", 1 },
{ "PAGE_EDGE_RIGHT", 4 },
{ "PAGE_EDGE_TOP", 2 },
{ "PROTECT_CHILD_CHG", 1 },
{ "PROTECT_CLICK_FOCUS", 32 },
{ "PROTECT_EVENT_TO_DISABLED", 64 },
{ "PROTECT_FOLLOW", 8 },
{ "PROTECT_NONE", 0 },
{ "PROTECT_PARENT", 2 },
{ "PROTECT_POS", 4 },
{ "PROTECT_PRESS_LOST", 16 },
{ "OPA_0", LV_OPA_0 },
{ "OPA_10", LV_OPA_10 },
{ "OPA_100", LV_OPA_100 },
{ "OPA_20", LV_OPA_20 },
{ "OPA_30", LV_OPA_30 },
{ "OPA_40", LV_OPA_40 },
{ "OPA_50", LV_OPA_50 },
{ "OPA_60", LV_OPA_60 },
{ "OPA_70", LV_OPA_70 },
{ "OPA_80", LV_OPA_80 },
{ "OPA_90", LV_OPA_90 },
{ "OPA_COVER", LV_OPA_COVER },
{ "OPA_TRANSP", LV_OPA_TRANSP },
{ "PAGE_EDGE_BOTTOM", LV_PAGE_EDGE_BOTTOM },
{ "PAGE_EDGE_LEFT", LV_PAGE_EDGE_LEFT },
{ "PAGE_EDGE_RIGHT", LV_PAGE_EDGE_RIGHT },
{ "PAGE_EDGE_TOP", LV_PAGE_EDGE_TOP },
{ "PAGE_PART_BG", LV_PAGE_PART_BG },
{ "PAGE_PART_EDGE_FLASH", LV_PAGE_PART_EDGE_FLASH },
{ "PAGE_PART_SCROLLABLE", LV_PAGE_PART_SCROLLABLE },
{ "PAGE_PART_SCROLLBAR", LV_PAGE_PART_SCROLLBAR },
{ "PROTECT_CHILD_CHG", LV_PROTECT_CHILD_CHG },
{ "PROTECT_CLICK_FOCUS", LV_PROTECT_CLICK_FOCUS },
{ "PROTECT_EVENT_TO_DISABLED", LV_PROTECT_EVENT_TO_DISABLED },
{ "PROTECT_FOLLOW", LV_PROTECT_FOLLOW },
{ "PROTECT_NONE", LV_PROTECT_NONE },
{ "PROTECT_PARENT", LV_PROTECT_PARENT },
{ "PROTECT_POS", LV_PROTECT_POS },
{ "PROTECT_PRESS_LOST", LV_PROTECT_PRESS_LOST },
{ "PURPLE", 8388736 },
{ "RED", 16711680 },
{ "ROLLER_MODE_INFINITE", 1 },
{ "ROLLER_MODE_NORMAL", 0 },
{ "SCROLLBAR_MODE_AUTO", 3 },
{ "SCROLLBAR_MODE_DRAG", 2 },
{ "SCROLLBAR_MODE_HIDE", 4 },
{ "SCROLLBAR_MODE_OFF", 0 },
{ "SCROLLBAR_MODE_ON", 1 },
{ "SCROLLBAR_MODE_UNHIDE", 8 },
{ "ROLLER_MODE_INFINITE", LV_ROLLER_MODE_INFINITE },
{ "ROLLER_MODE_NORMAL", LV_ROLLER_MODE_NORMAL },
{ "ROLLER_PART_BG", LV_ROLLER_PART_BG },
{ "ROLLER_PART_SELECTED", LV_ROLLER_PART_SELECTED },
{ "SCROLLBAR_MODE_AUTO", LV_SCROLLBAR_MODE_AUTO },
{ "SCROLLBAR_MODE_DRAG", LV_SCROLLBAR_MODE_DRAG },
{ "SCROLLBAR_MODE_HIDE", LV_SCROLLBAR_MODE_HIDE },
{ "SCROLLBAR_MODE_OFF", LV_SCROLLBAR_MODE_OFF },
{ "SCROLLBAR_MODE_ON", LV_SCROLLBAR_MODE_ON },
{ "SCROLLBAR_MODE_UNHIDE", LV_SCROLLBAR_MODE_UNHIDE },
{ "SCR_LOAD_ANIM_FADE_ON", LV_SCR_LOAD_ANIM_FADE_ON },
{ "SCR_LOAD_ANIM_MOVE_BOTTOM", LV_SCR_LOAD_ANIM_MOVE_BOTTOM },
{ "SCR_LOAD_ANIM_MOVE_LEFT", LV_SCR_LOAD_ANIM_MOVE_LEFT },
{ "SCR_LOAD_ANIM_MOVE_RIGHT", LV_SCR_LOAD_ANIM_MOVE_RIGHT },
{ "SCR_LOAD_ANIM_MOVE_TOP", LV_SCR_LOAD_ANIM_MOVE_TOP },
{ "SCR_LOAD_ANIM_NONE", LV_SCR_LOAD_ANIM_NONE },
{ "SCR_LOAD_ANIM_OVER_BOTTOM", LV_SCR_LOAD_ANIM_OVER_BOTTOM },
{ "SCR_LOAD_ANIM_OVER_LEFT", LV_SCR_LOAD_ANIM_OVER_LEFT },
{ "SCR_LOAD_ANIM_OVER_RIGHT", LV_SCR_LOAD_ANIM_OVER_RIGHT },
{ "SCR_LOAD_ANIM_OVER_TOP", LV_SCR_LOAD_ANIM_OVER_TOP },
{ "SILVER", 12632256 },
{ "SLIDER_TYPE_NORMAL", 0 },
{ "SLIDER_TYPE_RANGE", 2 },
{ "SLIDER_TYPE_SYMMETRICAL", 1 },
{ "SPINNER_DIR_BACKWARD", 1 },
{ "SPINNER_DIR_FORWARD", 0 },
{ "SPINNER_TYPE_CONSTANT_ARC", 2 },
{ "SPINNER_TYPE_FILLSPIN_ARC", 1 },
{ "SPINNER_TYPE_SPINNING_ARC", 0 },
{ "STATE_CHECKED", 1 },
{ "STATE_DEFAULT", 0 },
{ "STATE_DISABLED", 32 },
{ "STATE_EDITED", 4 },
{ "STATE_FOCUSED", 2 },
{ "STATE_HOVERED", 8 },
{ "STATE_PRESSED", 16 },
{ "STYLE_BG_BLEND_MODE", 32 },
{ "STYLE_BG_COLOR", 41 },
{ "STYLE_BG_GRAD_COLOR", 42 },
{ "STYLE_BG_GRAD_DIR", 35 },
{ "STYLE_BG_GRAD_STOP", 34 },
{ "STYLE_BG_MAIN_STOP", 33 },
{ "STYLE_BG_OPA", 44 },
{ "STYLE_BORDER_BLEND_MODE", 50 },
{ "STYLE_BORDER_COLOR", 57 },
{ "STYLE_BORDER_OPA", 60 },
{ "STYLE_BORDER_POST", 51 },
{ "STYLE_BORDER_SIDE", 49 },
{ "STYLE_BORDER_WIDTH", 48 },
{ "STYLE_CLIP_CORNER", 2 },
{ "STYLE_IMAGE_BLEND_MODE", 32928 },
{ "STYLE_IMAGE_OPA", 32940 },
{ "STYLE_IMAGE_RECOLOR", 32937 },
{ "STYLE_IMAGE_RECOLOR_OPA", 32941 },
{ "STYLE_LINE_BLEND_MODE", 145 },
{ "STYLE_LINE_COLOR", 153 },
{ "STYLE_LINE_DASH_GAP", 147 },
{ "STYLE_LINE_DASH_WIDTH", 146 },
{ "STYLE_LINE_OPA", 156 },
{ "STYLE_LINE_ROUNDED", 148 },
{ "STYLE_LINE_WIDTH", 144 },
{ "STYLE_MARGIN_BOTTOM", 22 },
{ "STYLE_MARGIN_LEFT", 23 },
{ "STYLE_MARGIN_RIGHT", 24 },
{ "STYLE_MARGIN_TOP", 21 },
{ "STYLE_OPA_SCALE", 32780 },
{ "STYLE_OUTLINE_BLEND_MODE", 66 },
{ "STYLE_OUTLINE_COLOR", 73 },
{ "STYLE_OUTLINE_OPA", 76 },
{ "STYLE_OUTLINE_PAD", 65 },
{ "STYLE_OUTLINE_WIDTH", 64 },
{ "STYLE_PAD_BOTTOM", 17 },
{ "STYLE_PAD_INNER", 20 },
{ "STYLE_PAD_LEFT", 18 },
{ "STYLE_PAD_RIGHT", 19 },
{ "STYLE_PAD_TOP", 16 },
{ "STYLE_PATTERN_BLEND_MODE", 96 },
{ "STYLE_PATTERN_IMAGE", 110 },
{ "STYLE_PATTERN_OPA", 108 },
{ "STYLE_PATTERN_RECOLOR", 105 },
{ "STYLE_PATTERN_RECOLOR_OPA", 109 },
{ "STYLE_PATTERN_REPEAT", 97 },
{ "STYLE_RADIUS", 1 },
{ "STYLE_SCALE_BORDER_WIDTH", 193 },
{ "STYLE_SCALE_END_BORDER_WIDTH", 194 },
{ "STYLE_SCALE_END_COLOR", 202 },
{ "STYLE_SCALE_END_LINE_WIDTH", 195 },
{ "STYLE_SCALE_GRAD_COLOR", 201 },
{ "STYLE_SCALE_WIDTH", 192 },
{ "STYLE_SHADOW_BLEND_MODE", 84 },
{ "STYLE_SHADOW_COLOR", 89 },
{ "STYLE_SHADOW_OFS_X", 81 },
{ "STYLE_SHADOW_OFS_Y", 82 },
{ "STYLE_SHADOW_OPA", 92 },
{ "STYLE_SHADOW_SPREAD", 83 },
{ "STYLE_SHADOW_WIDTH", 80 },
{ "STYLE_SIZE", 3 },
{ "STYLE_TEXT_BLEND_MODE", 32899 },
{ "STYLE_TEXT_COLOR", 32905 },
{ "STYLE_TEXT_DECOR", 32898 },
{ "STYLE_TEXT_FONT", 32910 },
{ "STYLE_TEXT_LETTER_SPACE", 32896 },
{ "STYLE_TEXT_LINE_SPACE", 32897 },
{ "STYLE_TEXT_OPA", 32908 },
{ "STYLE_TEXT_SEL_BG_COLOR", 32907 },
{ "STYLE_TEXT_SEL_COLOR", 32906 },
{ "STYLE_TRANSFORM_ANGLE", 6 },
{ "STYLE_TRANSFORM_HEIGHT", 5 },
{ "STYLE_TRANSFORM_WIDTH", 4 },
{ "STYLE_TRANSFORM_ZOOM", 7 },
{ "STYLE_TRANSITION_DELAY", 177 },
{ "STYLE_TRANSITION_PATH", 190 },
{ "STYLE_TRANSITION_PROP_1", 178 },
{ "STYLE_TRANSITION_PROP_2", 179 },
{ "STYLE_TRANSITION_PROP_3", 180 },
{ "STYLE_TRANSITION_PROP_4", 181 },
{ "STYLE_TRANSITION_PROP_5", 182 },
{ "STYLE_TRANSITION_PROP_6", 183 },
{ "STYLE_TRANSITION_TIME", 176 },
{ "STYLE_VALUE_ALIGN", 117 },
{ "STYLE_VALUE_BLEND_MODE", 114 },
{ "STYLE_VALUE_COLOR", 121 },
{ "STYLE_VALUE_FONT", 126 },
{ "STYLE_VALUE_LETTER_SPACE", 112 },
{ "STYLE_VALUE_LINE_SPACE", 113 },
{ "STYLE_VALUE_OFS_X", 115 },
{ "STYLE_VALUE_OFS_Y", 116 },
{ "STYLE_VALUE_OPA", 124 },
{ "STYLE_VALUE_STR", 127 },
{ "TABVIEW_TAB_POS_BOTTOM", 2 },
{ "TABVIEW_TAB_POS_LEFT", 3 },
{ "TABVIEW_TAB_POS_NONE", 0 },
{ "TABVIEW_TAB_POS_RIGHT", 4 },
{ "TABVIEW_TAB_POS_TOP", 1 },
{ "SLIDER_PART_BG", LV_SLIDER_PART_BG },
{ "SLIDER_PART_INDIC", LV_SLIDER_PART_INDIC },
{ "SLIDER_PART_KNOB", LV_SLIDER_PART_KNOB },
{ "SLIDER_TYPE_NORMAL", LV_SLIDER_TYPE_NORMAL },
{ "SLIDER_TYPE_RANGE", LV_SLIDER_TYPE_RANGE },
{ "SLIDER_TYPE_SYMMETRICAL", LV_SLIDER_TYPE_SYMMETRICAL },
{ "SPINBOX_PART_BG", LV_SPINBOX_PART_BG },
{ "SPINBOX_PART_CURSOR", LV_SPINBOX_PART_CURSOR },
{ "SPINNER_DIR_BACKWARD", LV_SPINNER_DIR_BACKWARD },
{ "SPINNER_DIR_FORWARD", LV_SPINNER_DIR_FORWARD },
{ "SPINNER_PART_BG", LV_SPINNER_PART_BG },
{ "SPINNER_PART_INDIC", LV_SPINNER_PART_INDIC },
{ "SPINNER_TYPE_CONSTANT_ARC", LV_SPINNER_TYPE_CONSTANT_ARC },
{ "SPINNER_TYPE_FILLSPIN_ARC", LV_SPINNER_TYPE_FILLSPIN_ARC },
{ "SPINNER_TYPE_SPINNING_ARC", LV_SPINNER_TYPE_SPINNING_ARC },
{ "STATE_CHECKED", LV_STATE_CHECKED },
{ "STATE_DEFAULT", LV_STATE_DEFAULT },
{ "STATE_DISABLED", LV_STATE_DISABLED },
{ "STATE_EDITED", LV_STATE_EDITED },
{ "STATE_FOCUSED", LV_STATE_FOCUSED },
{ "STATE_HOVERED", LV_STATE_HOVERED },
{ "STATE_PRESSED", LV_STATE_PRESSED },
{ "STYLE_BG_BLEND_MODE", LV_STYLE_BG_BLEND_MODE },
{ "STYLE_BG_COLOR", LV_STYLE_BG_COLOR },
{ "STYLE_BG_GRAD_COLOR", LV_STYLE_BG_GRAD_COLOR },
{ "STYLE_BG_GRAD_DIR", LV_STYLE_BG_GRAD_DIR },
{ "STYLE_BG_GRAD_STOP", LV_STYLE_BG_GRAD_STOP },
{ "STYLE_BG_MAIN_STOP", LV_STYLE_BG_MAIN_STOP },
{ "STYLE_BG_OPA", LV_STYLE_BG_OPA },
{ "STYLE_BORDER_BLEND_MODE", LV_STYLE_BORDER_BLEND_MODE },
{ "STYLE_BORDER_COLOR", LV_STYLE_BORDER_COLOR },
{ "STYLE_BORDER_OPA", LV_STYLE_BORDER_OPA },
{ "STYLE_BORDER_POST", LV_STYLE_BORDER_POST },
{ "STYLE_BORDER_SIDE", LV_STYLE_BORDER_SIDE },
{ "STYLE_BORDER_WIDTH", LV_STYLE_BORDER_WIDTH },
{ "STYLE_CLIP_CORNER", LV_STYLE_CLIP_CORNER },
{ "STYLE_IMAGE_BLEND_MODE", LV_STYLE_IMAGE_BLEND_MODE },
{ "STYLE_IMAGE_OPA", LV_STYLE_IMAGE_OPA },
{ "STYLE_IMAGE_RECOLOR", LV_STYLE_IMAGE_RECOLOR },
{ "STYLE_IMAGE_RECOLOR_OPA", LV_STYLE_IMAGE_RECOLOR_OPA },
{ "STYLE_LINE_BLEND_MODE", LV_STYLE_LINE_BLEND_MODE },
{ "STYLE_LINE_COLOR", LV_STYLE_LINE_COLOR },
{ "STYLE_LINE_DASH_GAP", LV_STYLE_LINE_DASH_GAP },
{ "STYLE_LINE_DASH_WIDTH", LV_STYLE_LINE_DASH_WIDTH },
{ "STYLE_LINE_OPA", LV_STYLE_LINE_OPA },
{ "STYLE_LINE_ROUNDED", LV_STYLE_LINE_ROUNDED },
{ "STYLE_LINE_WIDTH", LV_STYLE_LINE_WIDTH },
{ "STYLE_MARGIN_BOTTOM", LV_STYLE_MARGIN_BOTTOM },
{ "STYLE_MARGIN_LEFT", LV_STYLE_MARGIN_LEFT },
{ "STYLE_MARGIN_RIGHT", LV_STYLE_MARGIN_RIGHT },
{ "STYLE_MARGIN_TOP", LV_STYLE_MARGIN_TOP },
{ "STYLE_OPA_SCALE", LV_STYLE_OPA_SCALE },
{ "STYLE_OUTLINE_BLEND_MODE", LV_STYLE_OUTLINE_BLEND_MODE },
{ "STYLE_OUTLINE_COLOR", LV_STYLE_OUTLINE_COLOR },
{ "STYLE_OUTLINE_OPA", LV_STYLE_OUTLINE_OPA },
{ "STYLE_OUTLINE_PAD", LV_STYLE_OUTLINE_PAD },
{ "STYLE_OUTLINE_WIDTH", LV_STYLE_OUTLINE_WIDTH },
{ "STYLE_PAD_BOTTOM", LV_STYLE_PAD_BOTTOM },
{ "STYLE_PAD_INNER", LV_STYLE_PAD_INNER },
{ "STYLE_PAD_LEFT", LV_STYLE_PAD_LEFT },
{ "STYLE_PAD_RIGHT", LV_STYLE_PAD_RIGHT },
{ "STYLE_PAD_TOP", LV_STYLE_PAD_TOP },
{ "STYLE_PATTERN_BLEND_MODE", LV_STYLE_PATTERN_BLEND_MODE },
{ "STYLE_PATTERN_IMAGE", LV_STYLE_PATTERN_IMAGE },
{ "STYLE_PATTERN_OPA", LV_STYLE_PATTERN_OPA },
{ "STYLE_PATTERN_RECOLOR", LV_STYLE_PATTERN_RECOLOR },
{ "STYLE_PATTERN_RECOLOR_OPA", LV_STYLE_PATTERN_RECOLOR_OPA },
{ "STYLE_PATTERN_REPEAT", LV_STYLE_PATTERN_REPEAT },
{ "STYLE_RADIUS", LV_STYLE_RADIUS },
{ "STYLE_SCALE_BORDER_WIDTH", LV_STYLE_SCALE_BORDER_WIDTH },
{ "STYLE_SCALE_END_BORDER_WIDTH", LV_STYLE_SCALE_END_BORDER_WIDTH },
{ "STYLE_SCALE_END_COLOR", LV_STYLE_SCALE_END_COLOR },
{ "STYLE_SCALE_END_LINE_WIDTH", LV_STYLE_SCALE_END_LINE_WIDTH },
{ "STYLE_SCALE_GRAD_COLOR", LV_STYLE_SCALE_GRAD_COLOR },
{ "STYLE_SCALE_WIDTH", LV_STYLE_SCALE_WIDTH },
{ "STYLE_SHADOW_BLEND_MODE", LV_STYLE_SHADOW_BLEND_MODE },
{ "STYLE_SHADOW_COLOR", LV_STYLE_SHADOW_COLOR },
{ "STYLE_SHADOW_OFS_X", LV_STYLE_SHADOW_OFS_X },
{ "STYLE_SHADOW_OFS_Y", LV_STYLE_SHADOW_OFS_Y },
{ "STYLE_SHADOW_OPA", LV_STYLE_SHADOW_OPA },
{ "STYLE_SHADOW_SPREAD", LV_STYLE_SHADOW_SPREAD },
{ "STYLE_SHADOW_WIDTH", LV_STYLE_SHADOW_WIDTH },
{ "STYLE_SIZE", LV_STYLE_SIZE },
{ "STYLE_TEXT_BLEND_MODE", LV_STYLE_TEXT_BLEND_MODE },
{ "STYLE_TEXT_COLOR", LV_STYLE_TEXT_COLOR },
{ "STYLE_TEXT_DECOR", LV_STYLE_TEXT_DECOR },
{ "STYLE_TEXT_FONT", LV_STYLE_TEXT_FONT },
{ "STYLE_TEXT_LETTER_SPACE", LV_STYLE_TEXT_LETTER_SPACE },
{ "STYLE_TEXT_LINE_SPACE", LV_STYLE_TEXT_LINE_SPACE },
{ "STYLE_TEXT_OPA", LV_STYLE_TEXT_OPA },
{ "STYLE_TEXT_SEL_BG_COLOR", LV_STYLE_TEXT_SEL_BG_COLOR },
{ "STYLE_TEXT_SEL_COLOR", LV_STYLE_TEXT_SEL_COLOR },
{ "STYLE_TRANSFORM_ANGLE", LV_STYLE_TRANSFORM_ANGLE },
{ "STYLE_TRANSFORM_HEIGHT", LV_STYLE_TRANSFORM_HEIGHT },
{ "STYLE_TRANSFORM_WIDTH", LV_STYLE_TRANSFORM_WIDTH },
{ "STYLE_TRANSFORM_ZOOM", LV_STYLE_TRANSFORM_ZOOM },
{ "STYLE_TRANSITION_DELAY", LV_STYLE_TRANSITION_DELAY },
{ "STYLE_TRANSITION_PATH", LV_STYLE_TRANSITION_PATH },
{ "STYLE_TRANSITION_PROP_1", LV_STYLE_TRANSITION_PROP_1 },
{ "STYLE_TRANSITION_PROP_2", LV_STYLE_TRANSITION_PROP_2 },
{ "STYLE_TRANSITION_PROP_3", LV_STYLE_TRANSITION_PROP_3 },
{ "STYLE_TRANSITION_PROP_4", LV_STYLE_TRANSITION_PROP_4 },
{ "STYLE_TRANSITION_PROP_5", LV_STYLE_TRANSITION_PROP_5 },
{ "STYLE_TRANSITION_PROP_6", LV_STYLE_TRANSITION_PROP_6 },
{ "STYLE_TRANSITION_TIME", LV_STYLE_TRANSITION_TIME },
{ "STYLE_VALUE_ALIGN", LV_STYLE_VALUE_ALIGN },
{ "STYLE_VALUE_BLEND_MODE", LV_STYLE_VALUE_BLEND_MODE },
{ "STYLE_VALUE_COLOR", LV_STYLE_VALUE_COLOR },
{ "STYLE_VALUE_FONT", LV_STYLE_VALUE_FONT },
{ "STYLE_VALUE_LETTER_SPACE", LV_STYLE_VALUE_LETTER_SPACE },
{ "STYLE_VALUE_LINE_SPACE", LV_STYLE_VALUE_LINE_SPACE },
{ "STYLE_VALUE_OFS_X", LV_STYLE_VALUE_OFS_X },
{ "STYLE_VALUE_OFS_Y", LV_STYLE_VALUE_OFS_Y },
{ "STYLE_VALUE_OPA", LV_STYLE_VALUE_OPA },
{ "STYLE_VALUE_STR", LV_STYLE_VALUE_STR },
{ "SWITCH_PART_BG", LV_SWITCH_PART_BG },
{ "SWITCH_PART_INDIC", LV_SWITCH_PART_INDIC },
{ "SWITCH_PART_KNOB", LV_SWITCH_PART_KNOB },
{ "TABLE_PART_BG", LV_TABLE_PART_BG },
{ "TABLE_PART_CELL1", LV_TABLE_PART_CELL1 },
{ "TABLE_PART_CELL2", LV_TABLE_PART_CELL2 },
{ "TABLE_PART_CELL3", LV_TABLE_PART_CELL3 },
{ "TABLE_PART_CELL4", LV_TABLE_PART_CELL4 },
{ "TABVIEW_PART_BG", LV_TABVIEW_PART_BG },
{ "TABVIEW_PART_BG_SCROLLABLE", LV_TABVIEW_PART_BG_SCROLLABLE },
{ "TABVIEW_PART_INDIC", LV_TABVIEW_PART_INDIC },
{ "TABVIEW_PART_TAB_BG", LV_TABVIEW_PART_TAB_BG },
{ "TABVIEW_PART_TAB_BTN", LV_TABVIEW_PART_TAB_BTN },
{ "TABVIEW_TAB_POS_BOTTOM", LV_TABVIEW_TAB_POS_BOTTOM },
{ "TABVIEW_TAB_POS_LEFT", LV_TABVIEW_TAB_POS_LEFT },
{ "TABVIEW_TAB_POS_NONE", LV_TABVIEW_TAB_POS_NONE },
{ "TABVIEW_TAB_POS_RIGHT", LV_TABVIEW_TAB_POS_RIGHT },
{ "TABVIEW_TAB_POS_TOP", LV_TABVIEW_TAB_POS_TOP },
{ "TEAL", 32896 },
{ "TEMPL_STYLE_X", 0 },
{ "TEMPL_STYLE_Y", 1 },
{ "TEXTAREA_CURSOR_LAST", 32767 },
{ "TEXT_DECOR_NONE", 0 },
{ "TEXT_DECOR_STRIKETHROUGH", 2 },
{ "TEXT_DECOR_UNDERLINE", 1 },
{ "TXT_CMD_STATE_IN", 2 },
{ "TXT_CMD_STATE_PAR", 1 },
{ "TXT_CMD_STATE_WAIT", 0 },
{ "TXT_FLAG_CENTER", 4 },
{ "TXT_FLAG_EXPAND", 2 },
{ "TXT_FLAG_FIT", 16 },
{ "TXT_FLAG_NONE", 0 },
{ "TXT_FLAG_RECOLOR", 1 },
{ "TXT_FLAG_RIGHT", 8 },
{ "TEXTAREA_CURSOR_LAST", LV_TEXTAREA_CURSOR_LAST },
{ "TEXTAREA_PART_BG", LV_TEXTAREA_PART_BG },
{ "TEXTAREA_PART_CURSOR", LV_TEXTAREA_PART_CURSOR },
{ "TEXTAREA_PART_EDGE_FLASH", LV_TEXTAREA_PART_EDGE_FLASH },
{ "TEXTAREA_PART_PLACEHOLDER", LV_TEXTAREA_PART_PLACEHOLDER },
{ "TEXTAREA_PART_SCROLLBAR", LV_TEXTAREA_PART_SCROLLBAR },
{ "TEXT_DECOR_NONE", LV_TEXT_DECOR_NONE },
{ "TEXT_DECOR_STRIKETHROUGH", LV_TEXT_DECOR_STRIKETHROUGH },
{ "TEXT_DECOR_UNDERLINE", LV_TEXT_DECOR_UNDERLINE },
{ "TILEVIEW_PART_BG", LV_TILEVIEW_PART_BG },
{ "TILEVIEW_PART_EDGE_FLASH", LV_TILEVIEW_PART_EDGE_FLASH },
{ "TILEVIEW_PART_SCROLLBAR", LV_TILEVIEW_PART_SCROLLBAR },
{ "TXT_CMD_STATE_IN", LV_TXT_CMD_STATE_IN },
{ "TXT_CMD_STATE_PAR", LV_TXT_CMD_STATE_PAR },
{ "TXT_CMD_STATE_WAIT", LV_TXT_CMD_STATE_WAIT },
{ "TXT_FLAG_CENTER", LV_TXT_FLAG_CENTER },
{ "TXT_FLAG_EXPAND", LV_TXT_FLAG_EXPAND },
{ "TXT_FLAG_FIT", LV_TXT_FLAG_FIT },
{ "TXT_FLAG_NONE", LV_TXT_FLAG_NONE },
{ "TXT_FLAG_RECOLOR", LV_TXT_FLAG_RECOLOR },
{ "TXT_FLAG_RIGHT", LV_TXT_FLAG_RIGHT },
{ "WHITE", 16777215 },
{ "WIN_PART_BG", LV_WIN_PART_BG },
{ "WIN_PART_CONTENT_SCROLLABLE", LV_WIN_PART_CONTENT_SCROLLABLE },
{ "WIN_PART_HEADER", LV_WIN_PART_HEADER },
{ "WIN_PART_SCROLLBAR", LV_WIN_PART_SCROLLBAR },
{ "YELLOW", 16776960 },
};
@ -513,13 +581,6 @@ be_native_module_attr_table(lvgl) {
be_native_module_function("load_font", lv0_load_font),
be_native_module_function("load_freetype_font", lv0_load_freetype_font),
// screen and layers
be_native_module_function("scr_act", lv0_scr_act),
be_native_module_function("layer_top", lv0_layer_top),
be_native_module_function("layer_sys", lv0_layer_sys),
be_native_module_function("get_hor_res", lv0_get_hor_res),
be_native_module_function("get_ver_res", lv0_get_ver_res),
be_native_module_function("screenshot", lv0_screenshot),
@ -667,11 +728,6 @@ module lvgl (scope: global) {
load_font, func(lv0_load_font)
load_freetype_font, func(lv0_load_freetype_font)
scr_act, func(lv0_scr_act)
layer_top, func(lv0_layer_top)
layer_sys, func(lv0_layer_sys)
get_hor_res, func(lv0_get_hor_res)
get_ver_res, func(lv0_get_ver_res)
screenshot, func(lv0_screenshot)

View File

@ -11,6 +11,7 @@
#ifdef USE_LVGL
#include "lvgl.h"
#include "be_lvgl.h"
extern int lv0_init(bvm *vm);

View File

@ -75,7 +75,7 @@
* Set the maximum total stack size.
* Default: 20000
**/
#define BE_STACK_TOTAL_MAX 4000
#define BE_STACK_TOTAL_MAX 8000
/* Macro: BE_STACK_FREE_MIN
* Set the minimum free count of the stack. The stack idles will

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,83 +1,78 @@
#include "be_constobj.h"
static be_define_const_map_slots(m_liblvgl_map) {
{ be_const_key(SYMBOL_EYE_CLOSE, -1), be_const_str(&be_local_const_str_SYMBOL_EYE_CLOSE) },
{ be_const_key(SYMBOL_IMAGE, 15), be_const_str(&be_local_const_str_SYMBOL_IMAGE) },
{ be_const_key(SYMBOL_SETTINGS, 70), be_const_str(&be_local_const_str_SYMBOL_SETTINGS) },
{ be_const_key(SYMBOL_UPLOAD, -1), be_const_str(&be_local_const_str_SYMBOL_UPLOAD) },
{ be_const_key(SYMBOL_AUDIO, -1), be_const_str(&be_local_const_str_SYMBOL_AUDIO) },
{ be_const_key(SYMBOL_USB, -1), be_const_str(&be_local_const_str_SYMBOL_USB) },
{ be_const_key(SYMBOL_EDIT, -1), be_const_str(&be_local_const_str_SYMBOL_EDIT) },
{ be_const_key(SYMBOL_BELL, 2), be_const_str(&be_local_const_str_SYMBOL_BELL) },
{ be_const_key(SYMBOL_LOOP, -1), be_const_str(&be_local_const_str_SYMBOL_LOOP) },
{ be_const_key(SYMBOL_CALL, 16), be_const_str(&be_local_const_str_SYMBOL_CALL) },
{ be_const_key(SYMBOL_CUT, -1), be_const_str(&be_local_const_str_SYMBOL_CUT) },
{ be_const_key(SYMBOL_MUTE, -1), be_const_str(&be_local_const_str_SYMBOL_MUTE) },
{ be_const_key(SYMBOL_RIGHT, -1), be_const_str(&be_local_const_str_SYMBOL_RIGHT) },
{ be_const_key(SYMBOL_HOME, -1), be_const_str(&be_local_const_str_SYMBOL_HOME) },
{ be_const_key(SYMBOL_PREV, 54), be_const_str(&be_local_const_str_SYMBOL_PREV) },
{ be_const_key(SYMBOL_WIFI, 49), be_const_str(&be_local_const_str_SYMBOL_WIFI) },
{ be_const_key(SYMBOL_CLOSE, -1), be_const_str(&be_local_const_str_SYMBOL_CLOSE) },
{ be_const_key(SYMBOL_BLUETOOTH, -1), be_const_str(&be_local_const_str_SYMBOL_BLUETOOTH) },
{ be_const_key(SYMBOL_DUMMY, -1), be_const_str(&be_local_const_str_SYMBOL_DUMMY) },
{ be_const_key(SYMBOL_VIDEO, -1), be_const_str(&be_local_const_str_SYMBOL_VIDEO) },
{ be_const_key(SYMBOL_PAUSE, -1), be_const_str(&be_local_const_str_SYMBOL_PAUSE) },
{ be_const_key(SYMBOL_PASTE, 13), be_const_str(&be_local_const_str_SYMBOL_PASTE) },
{ be_const_key(SYMBOL_MINUS, -1), be_const_str(&be_local_const_str_SYMBOL_MINUS) },
{ be_const_key(SYMBOL_STOP, -1), be_const_str(&be_local_const_str_SYMBOL_STOP) },
{ be_const_key(get_hor_res, 12), be_const_func(lv0_get_hor_res) },
{ be_const_key(screenshot, 19), be_const_func(lv0_screenshot) },
{ be_const_key(SYMBOL_GPS, -1), be_const_str(&be_local_const_str_SYMBOL_GPS) },
{ be_const_key(SYMBOL_POWER, -1), be_const_str(&be_local_const_str_SYMBOL_POWER) },
{ be_const_key(SYMBOL_VOLUME_MID, 51), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MID) },
{ be_const_key(SYMBOL_BATTERY_EMPTY, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_EMPTY) },
{ be_const_key(SYMBOL_DRIVE, 61), be_const_str(&be_local_const_str_SYMBOL_DRIVE) },
{ be_const_key(SYMBOL_KEYBOARD, -1), be_const_str(&be_local_const_str_SYMBOL_KEYBOARD) },
{ be_const_key(load_freetype_font, -1), be_const_func(lv0_load_freetype_font) },
{ be_const_key(SYMBOL_REFRESH, 28), be_const_str(&be_local_const_str_SYMBOL_REFRESH) },
{ be_const_key(SYMBOL_BATTERY_2, 53), be_const_str(&be_local_const_str_SYMBOL_BATTERY_2) },
{ be_const_key(SYMBOL_NEW_LINE, -1), be_const_str(&be_local_const_str_SYMBOL_NEW_LINE) },
{ be_const_key(SYMBOL_SD_CARD, -1), be_const_str(&be_local_const_str_SYMBOL_SD_CARD) },
{ be_const_key(SYMBOL_VOLUME_MAX, -1), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MAX) },
{ be_const_key(SYMBOL_PLUS, -1), be_const_str(&be_local_const_str_SYMBOL_PLUS) },
{ be_const_key(SYMBOL_EJECT, -1), be_const_str(&be_local_const_str_SYMBOL_EJECT) },
{ be_const_key(layer_sys, -1), be_const_func(lv0_layer_sys) },
{ be_const_key(SYMBOL_BATTERY_FULL, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_FULL) },
{ be_const_key(SYMBOL_DOWNLOAD, 23), be_const_str(&be_local_const_str_SYMBOL_DOWNLOAD) },
{ be_const_key(load_font, -1), be_const_func(lv0_load_font) },
{ be_const_key(SYMBOL_EYE_OPEN, -1), be_const_str(&be_local_const_str_SYMBOL_EYE_OPEN) },
{ be_const_key(register_button_encoder, -1), be_const_func(lv0_register_button_encoder) },
{ be_const_key(SYMBOL_BULLET, 9), be_const_str(&be_local_const_str_SYMBOL_BULLET) },
{ be_const_key(start, 3), be_const_func(lv0_start) },
{ be_const_key(scr_act, 5), be_const_func(lv0_scr_act) },
{ be_const_key(SYMBOL_UP, -1), be_const_str(&be_local_const_str_SYMBOL_UP) },
{ be_const_key(SYMBOL_CHARGE, -1), be_const_str(&be_local_const_str_SYMBOL_CHARGE) },
{ be_const_key(seg7_font, -1), be_const_func(lv0_load_seg7_font) },
{ be_const_key(SYMBOL_PLAY, 17), be_const_str(&be_local_const_str_SYMBOL_PLAY) },
{ be_const_key(layer_top, -1), be_const_func(lv0_layer_top) },
{ be_const_key(SYMBOL_SAVE, -1), be_const_str(&be_local_const_str_SYMBOL_SAVE) },
{ be_const_key(SYMBOL_COPY, 1), be_const_str(&be_local_const_str_SYMBOL_COPY) },
{ be_const_key(get_ver_res, 48), be_const_func(lv0_get_ver_res) },
{ be_const_key(SYMBOL_DIRECTORY, -1), be_const_str(&be_local_const_str_SYMBOL_DIRECTORY) },
{ be_const_key(montserrat_font, -1), be_const_func(lv0_load_montserrat_font) },
{ be_const_key(SYMBOL_SHUFFLE, -1), be_const_str(&be_local_const_str_SYMBOL_SHUFFLE) },
{ be_const_key(SYMBOL_FILE, -1), be_const_str(&be_local_const_str_SYMBOL_FILE) },
{ be_const_key(SYMBOL_WARNING, -1), be_const_str(&be_local_const_str_SYMBOL_WARNING) },
{ be_const_key(SYMBOL_LIST, 45), be_const_str(&be_local_const_str_SYMBOL_LIST) },
{ be_const_key(SYMBOL_LEFT, -1), be_const_str(&be_local_const_str_SYMBOL_LEFT) },
{ be_const_key(SYMBOL_TRASH, -1), be_const_str(&be_local_const_str_SYMBOL_TRASH) },
{ be_const_key(SYMBOL_BACKSPACE, -1), be_const_str(&be_local_const_str_SYMBOL_BACKSPACE) },
{ be_const_key(SYMBOL_DOWN, -1), be_const_str(&be_local_const_str_SYMBOL_DOWN) },
{ be_const_key(member, -1), be_const_func(lv0_member) },
{ be_const_key(SYMBOL_OK, -1), be_const_str(&be_local_const_str_SYMBOL_OK) },
{ be_const_key(SYMBOL_BATTERY_3, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_3) },
{ be_const_key(SYMBOL_NEXT, -1), be_const_str(&be_local_const_str_SYMBOL_NEXT) },
{ be_const_key(SYMBOL_BATTERY_1, 14), be_const_str(&be_local_const_str_SYMBOL_BATTERY_1) },
{ be_const_key(SYMBOL_GPS, -1), be_const_str(&be_local_const_str_SYMBOL_GPS) },
{ be_const_key(SYMBOL_POWER, 29), be_const_str(&be_local_const_str_SYMBOL_POWER) },
{ be_const_key(SYMBOL_WARNING, -1), be_const_str(&be_local_const_str_SYMBOL_WARNING) },
{ be_const_key(SYMBOL_MUTE, 43), be_const_str(&be_local_const_str_SYMBOL_MUTE) },
{ be_const_key(SYMBOL_UP, -1), be_const_str(&be_local_const_str_SYMBOL_UP) },
{ be_const_key(SYMBOL_SHUFFLE, -1), be_const_str(&be_local_const_str_SYMBOL_SHUFFLE) },
{ be_const_key(SYMBOL_BATTERY_3, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_3) },
{ be_const_key(SYMBOL_VOLUME_MAX, -1), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MAX) },
{ be_const_key(SYMBOL_PLUS, 31), be_const_str(&be_local_const_str_SYMBOL_PLUS) },
{ be_const_key(SYMBOL_SETTINGS, -1), be_const_str(&be_local_const_str_SYMBOL_SETTINGS) },
{ be_const_key(SYMBOL_PLAY, 58), be_const_str(&be_local_const_str_SYMBOL_PLAY) },
{ be_const_key(screenshot, 59), be_const_func(lv0_screenshot) },
{ be_const_key(SYMBOL_UPLOAD, -1), be_const_str(&be_local_const_str_SYMBOL_UPLOAD) },
{ be_const_key(SYMBOL_LEFT, -1), be_const_str(&be_local_const_str_SYMBOL_LEFT) },
{ be_const_key(load_font, -1), be_const_func(lv0_load_font) },
{ be_const_key(SYMBOL_CALL, -1), be_const_str(&be_local_const_str_SYMBOL_CALL) },
{ be_const_key(SYMBOL_KEYBOARD, -1), be_const_str(&be_local_const_str_SYMBOL_KEYBOARD) },
{ be_const_key(SYMBOL_PAUSE, 40), be_const_str(&be_local_const_str_SYMBOL_PAUSE) },
{ be_const_key(SYMBOL_DOWN, -1), be_const_str(&be_local_const_str_SYMBOL_DOWN) },
{ be_const_key(SYMBOL_BATTERY_FULL, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_FULL) },
{ be_const_key(SYMBOL_BATTERY_EMPTY, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_EMPTY) },
{ be_const_key(SYMBOL_CLOSE, -1), be_const_str(&be_local_const_str_SYMBOL_CLOSE) },
{ be_const_key(SYMBOL_PASTE, 49), be_const_str(&be_local_const_str_SYMBOL_PASTE) },
{ be_const_key(SYMBOL_RIGHT, -1), be_const_str(&be_local_const_str_SYMBOL_RIGHT) },
{ be_const_key(SYMBOL_USB, 21), be_const_str(&be_local_const_str_SYMBOL_USB) },
{ be_const_key(SYMBOL_BULLET, -1), be_const_str(&be_local_const_str_SYMBOL_BULLET) },
{ be_const_key(SYMBOL_BELL, 7), be_const_str(&be_local_const_str_SYMBOL_BELL) },
{ be_const_key(SYMBOL_WIFI, -1), be_const_str(&be_local_const_str_SYMBOL_WIFI) },
{ be_const_key(SYMBOL_SAVE, -1), be_const_str(&be_local_const_str_SYMBOL_SAVE) },
{ be_const_key(SYMBOL_DOWNLOAD, -1), be_const_str(&be_local_const_str_SYMBOL_DOWNLOAD) },
{ be_const_key(start, -1), be_const_func(lv0_start) },
{ be_const_key(SYMBOL_DIRECTORY, 28), be_const_str(&be_local_const_str_SYMBOL_DIRECTORY) },
{ be_const_key(SYMBOL_TRASH, 35), be_const_str(&be_local_const_str_SYMBOL_TRASH) },
{ be_const_key(SYMBOL_IMAGE, -1), be_const_str(&be_local_const_str_SYMBOL_IMAGE) },
{ be_const_key(SYMBOL_VOLUME_MID, 54), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MID) },
{ be_const_key(SYMBOL_STOP, 10), be_const_str(&be_local_const_str_SYMBOL_STOP) },
{ be_const_key(SYMBOL_DUMMY, -1), be_const_str(&be_local_const_str_SYMBOL_DUMMY) },
{ be_const_key(member, -1), be_const_func(lv0_member) },
{ be_const_key(SYMBOL_EDIT, -1), be_const_str(&be_local_const_str_SYMBOL_EDIT) },
{ be_const_key(seg7_font, 41), be_const_func(lv0_load_seg7_font) },
{ be_const_key(SYMBOL_NEW_LINE, -1), be_const_str(&be_local_const_str_SYMBOL_NEW_LINE) },
{ be_const_key(register_button_encoder, -1), be_const_func(lv0_register_button_encoder) },
{ be_const_key(load_freetype_font, -1), be_const_func(lv0_load_freetype_font) },
{ be_const_key(SYMBOL_REFRESH, 16), be_const_str(&be_local_const_str_SYMBOL_REFRESH) },
{ be_const_key(SYMBOL_SD_CARD, -1), be_const_str(&be_local_const_str_SYMBOL_SD_CARD) },
{ be_const_key(SYMBOL_EJECT, 20), be_const_str(&be_local_const_str_SYMBOL_EJECT) },
{ be_const_key(SYMBOL_CUT, 5), be_const_str(&be_local_const_str_SYMBOL_CUT) },
{ be_const_key(SYMBOL_LIST, 13), be_const_str(&be_local_const_str_SYMBOL_LIST) },
{ be_const_key(SYMBOL_MINUS, -1), be_const_str(&be_local_const_str_SYMBOL_MINUS) },
{ be_const_key(SYMBOL_LOOP, 8), be_const_str(&be_local_const_str_SYMBOL_LOOP) },
{ be_const_key(SYMBOL_EYE_CLOSE, 66), be_const_str(&be_local_const_str_SYMBOL_EYE_CLOSE) },
{ be_const_key(SYMBOL_BACKSPACE, -1), be_const_str(&be_local_const_str_SYMBOL_BACKSPACE) },
{ be_const_key(SYMBOL_OK, -1), be_const_str(&be_local_const_str_SYMBOL_OK) },
{ be_const_key(SYMBOL_AUDIO, -1), be_const_str(&be_local_const_str_SYMBOL_AUDIO) },
{ be_const_key(SYMBOL_EYE_OPEN, -1), be_const_str(&be_local_const_str_SYMBOL_EYE_OPEN) },
{ be_const_key(SYMBOL_BLUETOOTH, -1), be_const_str(&be_local_const_str_SYMBOL_BLUETOOTH) },
{ be_const_key(SYMBOL_VIDEO, -1), be_const_str(&be_local_const_str_SYMBOL_VIDEO) },
{ be_const_key(SYMBOL_HOME, -1), be_const_str(&be_local_const_str_SYMBOL_HOME) },
{ be_const_key(SYMBOL_BATTERY_2, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_2) },
{ be_const_key(SYMBOL_COPY, -1), be_const_str(&be_local_const_str_SYMBOL_COPY) },
{ be_const_key(SYMBOL_DRIVE, -1), be_const_str(&be_local_const_str_SYMBOL_DRIVE) },
{ be_const_key(montserrat_font, 30), be_const_func(lv0_load_montserrat_font) },
{ be_const_key(SYMBOL_PREV, -1), be_const_str(&be_local_const_str_SYMBOL_PREV) },
{ be_const_key(SYMBOL_BATTERY_1, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_1) },
{ be_const_key(SYMBOL_FILE, -1), be_const_str(&be_local_const_str_SYMBOL_FILE) },
{ be_const_key(SYMBOL_CHARGE, -1), be_const_str(&be_local_const_str_SYMBOL_CHARGE) },
};
static be_define_const_map(
m_liblvgl_map,
72
67
);
static be_define_const_module(

View File

@ -0,0 +1,39 @@
/********************************************************************
* Tasmota LVGL Headers
*******************************************************************/
#ifndef __BE_LVGL_H__
#define __BE_LVGL_H__
#include "be_constobj.h"
#ifdef USE_LVGL
#include "lvgl.h"
#ifdef __cplusplus
extern "C" {
#endif
// table of functions per class
typedef struct lvbe_call_c_t {
const char * name;
void * func;
const char * return_type;
const char * arg_type;
} lvbe_call_c_t;
// list of classes and function tables
typedef struct lvbe_call_c_classes_t {
const char * name;
const lvbe_call_c_t * func_table;
size_t size;
} lvbe_call_c_classes_t;
extern const lvbe_call_c_classes_t lv_classes[];
extern const size_t lv_classes_size;
#ifdef __cplusplus
}
#endif
#endif // USE_LVGL
#endif // __BE_LVGL_H__

View File

@ -216,14 +216,30 @@ int be_instance_member(bvm *vm, binstance *obj, bstring *name, bvalue *dst)
return type;
}
bbool be_instance_setmember(bvm *vm, binstance *obj, bstring *name, bvalue *src)
bbool be_instance_setmember(bvm *vm, binstance *o, bstring *name, bvalue *src)
{
bvalue v;
be_assert(name != NULL);
obj = instance_member(vm, obj, name, &v);
binstance * obj = instance_member(vm, o, name, &v);
if (obj && var_istype(&v, MT_VARIABLE)) {
obj->members[var_toint(&v)] = *src;
return btrue;
} else {
obj = instance_member(vm, o, str_literal(vm, "setmember"), &v);
if (obj && var_type(&v) == MT_VARIABLE) {
v = obj->members[v.v.i];
}
if (var_basetype(&v) == BE_FUNCTION) {
bvalue *top = vm->top;
var_setval(top, &v);
var_setinstance(top + 1, o); /* move instance to argv[0] */
var_setstr(top + 2, name); /* move method name to argv[1] */
var_setval(top + 3, src); /* move method name to argv[1] */
vm->top += 4; /* prevent collection results */
be_dofunc(vm, top, 3); /* call method 'member' */
vm->top -= 4;
return var_tobool(top);
}
}
return bfalse;
}

View File

@ -778,7 +778,7 @@ newframe: /* a new call frame */
binstance *obj = var_toobj(b);
int type = obj_attribute(vm, b, c, a);
reg = vm->reg;
if (var_basetype(a) == BE_FUNCTION) {
if (basetype(type) == BE_FUNCTION) {
a[1] = self;
} else {
vm_error(vm, "attribute_error",
@ -793,10 +793,24 @@ newframe: /* a new call frame */
var_settype(a, NOT_METHOD);
a[1] = *src;
} else {
bvalue *member = be_module_attr(vm, module, str_literal(vm, "member"));
var_setnil(a);
if (member && var_basetype(member) == BE_FUNCTION) {
bvalue *top = vm->top;
top[0] = *member;
top[1] = *c; /* move name to argv[0] */
vm->top += 2; /* prevent collection results */
be_dofunc(vm, top, 1); /* call method 'method' */
vm->top -= 2;
var_settype(a, NOT_METHOD);
a[1] = *vm->top; /* copy result to R(A) */
}
if (var_basetype(a) == BE_NIL) {
vm_error(vm, "attribute_error",
"module '%s' has no method '%s'",
be_module_name(module), str(attr));
}
}
} else {
attribute_error(vm, "method", b, c);
}

View File

@ -7,20 +7,6 @@
extern "C" {
#endif
// table of functions per class
// typedef struct lvbe_call_c_t {
// const char * name;
// void * func;
// const char * return_type;
// const char * arg_type;
// } lvbe_call_c_t;
// list of classes and function tables
// typedef struct lvbe_call_c_classes_t {
// const char * name;
// const lvbe_call_c_t * func_table;
// size_t size;
// } lvbe_call_c_classes_t;
/* `lv_img` methods */

View File

@ -357,7 +357,7 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i
* The behavior of asserts can be overwritten by redefining them here.
* E.g. #define LV_ASSERT_MEM(p) <my_assert_code>
*/
#define LV_USE_DEBUG 1
#define LV_USE_DEBUG 0
#if LV_USE_DEBUG
/*Check if the parameter is NULL. (Quite fast) */
@ -499,13 +499,15 @@ typedef void * lv_font_user_data_t;
* texts and borders will be black and the background will be
* white. Else the colors are inverted.
* No flags. Set LV_THEME_DEFAULT_FLAG 0 */
#define LV_USE_THEME_MONO 1
#define LV_USE_THEME_MONO 0
#define LV_THEME_DEFAULT_INCLUDE <stdint.h> /*Include a header for the init. function*/
#define LV_THEME_DEFAULT_INIT lv_theme_material_init
// #define LV_THEME_DEFAULT_INIT lv_theme_empty_init
#define LV_THEME_DEFAULT_COLOR_PRIMARY lv_color_hex(0x01a2b1)
#define LV_THEME_DEFAULT_COLOR_SECONDARY lv_color_hex(0x44d1b6)
#define LV_THEME_DEFAULT_FLAG LV_THEME_MATERIAL_FLAG_LIGHT
#define LV_THEME_DEFAULT_FLAG LV_THEME_MATERIAL_FLAG_DARK
// #define LV_THEME_DEFAULT_FLAG 0
// #define LV_THEME_DEFAULT_FONT_SMALL &lv_font_montserrat_14
#define LV_THEME_DEFAULT_FONT_SMALL &lv_font_montserrat_10
#define LV_THEME_DEFAULT_FONT_NORMAL &lv_font_montserrat_14

View File

@ -937,6 +937,7 @@
#define USE_LVGL_FREETYPE_MAX_FACES 64 // max number of FreeType faces in cache
#define USE_LVGL_FREETYPE_MAX_SIZES 4 // max number of sizes in cache
#define USE_LVGL_FREETYPE_MAX_BYTES 16*1024 // max bytes in cache
#define USE_LVGL_FREETYPE_MAX_BYTES_PSRAM 64*1024 // max bytes in cache when using PSRAM
#define USE_LVGL_BG_DEFAULT 0x000000 // Default color for the uninitialized background screen (black)

View File

@ -23,6 +23,7 @@
#include <berry.h>
#include "lvgl.h"
#include "be_lvgl.h"
#include "Adafruit_LvGL_Glue.h"
#ifdef USE_LVGL_FREETYPE
@ -352,23 +353,6 @@ extern "C" {
return be_call_c_func(vm, func, return_type, arg_type);
}
// table of functions per class
typedef struct lvbe_call_c_t {
const char * name;
void * func;
const char * return_type;
const char * arg_type;
} lvbe_call_c_t;
// list of classes and function tables
typedef struct lvbe_call_c_classes_t {
const char * name;
const lvbe_call_c_t * func_table;
size_t size;
} lvbe_call_c_classes_t;
extern const lvbe_call_c_classes_t lv_classes[];
extern const size_t lv_classes_size;
// virtual method, arg1: instance, arg2: name of method
int lvx_member(bvm *vm) {
int32_t argc = be_top(vm); // Get the number of arguments
@ -800,6 +784,10 @@ extern "C" {
int32_t value;
} lvbe_constant_t;
extern const lvbe_call_c_t lv_func[];
extern const size_t lv_func_size;
extern const lvbe_constant_t lv0_constants[];
extern const size_t lv0_constants_size;
@ -808,29 +796,42 @@ extern "C" {
int32_t argc = be_top(vm); // Get the number of arguments
if (argc == 1 && be_isstring(vm, 1)) {
const char * needle = be_tostring(vm, 1);
int32_t low = 0;
int32_t high = lv0_constants_size - 1;
int32_t mid = (low + high) / 2;
// start a dissect
while (low <= high) {
int32_t comp = strcmp(needle, lv0_constants[mid].name);
if (comp < 0) {
high = mid - 1;
} else if (comp > 0) {
low = mid + 1;
} else {
break;
}
mid = (low + high) / 2;
}
if (low <= high) {
int32_t constant_idx = bin_search(needle, &lv0_constants[0].name, sizeof(lv0_constants[0]), lv0_constants_size);
if (constant_idx >= 0) {
// we did have a match, low == high
be_pushint(vm, lv0_constants[mid].value);
be_pushint(vm, lv0_constants[constant_idx].value);
be_return(vm);
} else {
// search for a method with this name
int32_t method_idx = bin_search(needle, &lv_func[0].name, sizeof(lv_func[0]), lv_func_size);
if (method_idx >= 0) {
const lvbe_call_c_t * method = &lv_func[method_idx];
// push native closure
be_pushntvclosure(vm, &lvx_call_c, 3); // 3 upvals
be_pushcomptr(vm, method->func);
be_setupval(vm, -2, 0);
be_pop(vm, 1);
be_pushstring(vm, method->return_type);
be_setupval(vm, -2, 1);
be_pop(vm, 1);
be_pushstring(vm, method->arg_type);
be_setupval(vm, -2, 2);
be_pop(vm, 1);
// all good
be_return(vm);
} else {
be_return_nil(vm);
}
}
}
be_raise(vm, kTypeError, nullptr);
}
@ -942,23 +943,6 @@ extern "C" {
return more_to_report;
}
/*********************************************************************************************\
* Methods specific to Tasmota LVGL
\*********************************************************************************************/
// lv.scr_act() -> lv_obj() instance
int lv0_scr_act(bvm *vm) { return lv0_lvobj__void_call(vm, &lv_scr_act); }
int lv0_layer_top(bvm *vm) { return lv0_lvobj__void_call(vm, &lv_layer_top); }
int lv0_layer_sys(bvm *vm) { return lv0_lvobj__void_call(vm, &lv_layer_sys); }
int lv0_get_hor_res(bvm *vm) {
be_pushint(vm, lv_disp_get_hor_res(lv_disp_get_default()));
be_return(vm);
}
int lv0_get_ver_res(bvm *vm) {
be_pushint(vm, lv_disp_get_ver_res(lv_disp_get_default()));
be_return(vm);
}
/*********************************************************************************************\
* Support for lv_indev and objects that don't need creator
\*********************************************************************************************/

View File

@ -428,7 +428,7 @@ void start_lvgl(const char * uconfig) {
// initialize the FreeType renderer
lv_freetype_init(USE_LVGL_FREETYPE_MAX_FACES,
USE_LVGL_FREETYPE_MAX_SIZES,
USE_LVGL_FREETYPE_MAX_BYTES);
psramFound() ? USE_LVGL_FREETYPE_MAX_BYTES_PSRAM : USE_LVGL_FREETYPE_MAX_BYTES);
#endif
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_LVGL "LVGL initialized"));

View File

@ -202,17 +202,26 @@ with open(lv_module_file) as f:
lv_module.append( [ None, l_raw ] ) # if key in None then add comment line
l_raw = re.sub('//.*$', '', l_raw) # remove trailing comments
l_raw = re.sub('\s+', '', l_raw) # remove all spaces
l_raw = re.sub(',.*$', '', l_raw) # remove comma and anything after it
if (len(l_raw) == 0): continue
k_v = l_raw.split("=")
if len(k_v) != 2:
if len(k_v) > 2:
print(f"Error: cannot match {l_raw}")
continue
# extract the key name
k = k_v[0]
if k.startswith("_"):
continue # skip any label starting with '_'
k = re.sub('^LV_', '', k) # remove remove any LV_ prefix
if len(k_v) == 2: # value is included
v = k_v[1]
if k is None or v is None: continue
v_num = try_int(eval(v))
else: # no value, we use the C value instead
v_num = None
v = None
if not k.isidentifier():
print(f"Error: {k} is not an identifier")
@ -221,7 +230,7 @@ with open(lv_module_file) as f:
if v_num is not None:
lv_module.append( [k, v_num] )
else:
lv_module.append( [k, v] ) # keep as string
lv_module.append( [k, v] ) # keep as string or None
# recursively try to match value
# TODO
@ -263,20 +272,6 @@ print("""
extern "C" {
#endif
// table of functions per class
// typedef struct lvbe_call_c_t {
// const char * name;
// void * func;
// const char * return_type;
// const char * arg_type;
// } lvbe_call_c_t;
// list of classes and function tables
// typedef struct lvbe_call_c_classes_t {
// const char * name;
// const lvbe_call_c_t * func_table;
// size_t size;
// } lvbe_call_c_classes_t;
""")
@ -368,6 +363,7 @@ print("""
#ifdef USE_LVGL
#include "lvgl.h"
#include "be_lvgl.h"
extern int lv0_init(bvm *vm);
@ -498,6 +494,7 @@ print("""/********************************************************************
#ifdef USE_LVGL
#include "lvgl.h"
#include "be_lvgl.h"
extern int lv0_member(bvm *vm); // resolve virtual members
@ -510,12 +507,32 @@ extern int lv0_load_seg7_font(bvm *vm);
extern int lv0_load_font(bvm *vm);
extern int lv0_load_freetype_font(bvm *vm);
extern int lv0_scr_act(bvm *vm);
extern int lv0_layer_top(bvm *vm);
extern int lv0_layer_sys(bvm *vm);
extern int lv0_get_hor_res(bvm *vm);
extern int lv0_get_ver_res(bvm *vm);
extern int lv0_screenshot(bvm *vm);
static int lv_get_hor_res(void) {
return lv_disp_get_hor_res(lv_disp_get_default());
}
static int lv_get_ver_res(bvm *vm) {
return lv_disp_get_ver_res(lv_disp_get_default());
}
/* `lv` methods */
const lvbe_call_c_t lv_func[] = {
// resolution
{ "get_hor_res", (void*) &lv_get_hor_res, "i", "" },
{ "get_ver_res", (void*) &lv_get_ver_res, "i", "" },
// layers
{ "layer_sys", (void*) &lv_layer_sys, "lv_obj", "" },
{ "layer_top", (void*) &lv_layer_top, "lv_obj", "" },
// screens
{ "scr_act", (void*) &lv_scr_act, "lv_obj", "" },
{ "scr_load", (void*) &lv_scr_load, "", "(lv_obj)" },
{ "scr_load_anim", (void*) &lv_scr_load_anim, "", "(lv_obj)iiib" },
};
const size_t lv_func_size = sizeof(lv_func) / sizeof(lv_func[0]);
""")
print("""
@ -536,7 +553,10 @@ for k_v in lv_module:
for k in sorted(lv_module2):
v = lv_module2[k]
if v is not None:
print(f" {{ \"{k}\", {v} }},")
else:
print(f" {{ \"{k}\", LV_{k} }},")
print("""
};
@ -653,13 +673,6 @@ print("""
be_native_module_function("load_font", lv0_load_font),
be_native_module_function("load_freetype_font", lv0_load_freetype_font),
// screen and layers
be_native_module_function("scr_act", lv0_scr_act),
be_native_module_function("layer_top", lv0_layer_top),
be_native_module_function("layer_sys", lv0_layer_sys),
be_native_module_function("get_hor_res", lv0_get_hor_res),
be_native_module_function("get_ver_res", lv0_get_ver_res),
be_native_module_function("screenshot", lv0_screenshot),
""")
@ -823,11 +836,6 @@ print("""
load_font, func(lv0_load_font)
load_freetype_font, func(lv0_load_freetype_font)
scr_act, func(lv0_scr_act)
layer_top, func(lv0_layer_top)
layer_sys, func(lv0_layer_sys)
get_hor_res, func(lv0_get_hor_res)
get_ver_res, func(lv0_get_ver_res)
screenshot, func(lv0_screenshot)
""")

File diff suppressed because it is too large Load Diff