diff --git a/core/app-framework/app-native-shared/bi-inc/wgl_shared_utils.h b/core/app-framework/app-native-shared/bi-inc/wgl_shared_utils.h index 2fee5b38f..7a391a193 100644 --- a/core/app-framework/app-native-shared/bi-inc/wgl_shared_utils.h +++ b/core/app-framework/app-native-shared/bi-inc/wgl_shared_utils.h @@ -15,238 +15,6 @@ extern "C" { #include -#include "lv_conf.h" - -typedef lv_coord_t wgl_coord_t; /* lv_coord_t is defined in lv_conf.h */ -typedef void * wgl_font_user_data_t; - -/** - * Represents a point on the screen. - */ -typedef struct -{ - lv_coord_t x; - lv_coord_t y; -} wgl_point_t; - -/** Represents an area of the screen. */ -typedef struct -{ - lv_coord_t x1; - lv_coord_t y1; - lv_coord_t x2; - lv_coord_t y2; -} wgl_area_t; - - -/** Describes the properties of a glyph. */ -typedef struct -{ - uint16_t adv_w; /**< The glyph needs this space. Draw the next glyph after this width. 8 bit integer, 4 bit fractional */ - uint8_t box_w; /**< Width of the glyph's bounding box*/ - uint8_t box_h; /**< Height of the glyph's bounding box*/ - int8_t ofs_x; /**< x offset of the bounding box*/ - int8_t ofs_y; /**< y offset of the bounding box*/ - uint8_t bpp; /**< Bit-per-pixel: 1, 2, 4, 8*/ -}wgl_font_glyph_dsc_t; - -/*Describe the properties of a font*/ -typedef struct _wgl_font_struct -{ - /** Get a glyph's descriptor from a font*/ - bool (*get_glyph_dsc)(const struct _wgl_font_struct *, wgl_font_glyph_dsc_t *, uint32_t letter, uint32_t letter_next); - - /** Get a glyph's bitmap from a font*/ - const uint8_t * (*get_glyph_bitmap)(const struct _wgl_font_struct *, uint32_t); - - /*Pointer to the font in a font pack (must have the same line height)*/ - uint8_t line_height; /**< The real line height where any text fits*/ - uint8_t base_line; /**< Base line measured from the top of the line_height*/ - void * dsc; /**< Store implementation specific data here*/ -#if LV_USE_USER_DATA - wgl_font_user_data_t user_data; /**< Custom user data for font. */ -#endif -} wgl_font_t; - -#if LV_COLOR_DEPTH == 1 -#define LV_COLOR_SIZE 8 -#elif LV_COLOR_DEPTH == 8 -#define LV_COLOR_SIZE 8 -#elif LV_COLOR_DEPTH == 16 -#define LV_COLOR_SIZE 16 -#elif LV_COLOR_DEPTH == 32 -#define LV_COLOR_SIZE 32 -#else -#error "Invalid LV_COLOR_DEPTH in lv_conf.h! Set it to 1, 8, 16 or 32!" -#endif - -/********************** - * TYPEDEFS - **********************/ - -typedef union -{ - uint8_t blue : 1; - uint8_t green : 1; - uint8_t red : 1; - uint8_t full : 1; -} wgl_color1_t; - -typedef union -{ - struct - { - uint8_t blue : 2; - uint8_t green : 3; - uint8_t red : 3; - } ch; - uint8_t full; -} wgl_color8_t; - -typedef union -{ - struct - { -#if LV_COLOR_16_SWAP == 0 - uint16_t blue : 5; - uint16_t green : 6; - uint16_t red : 5; -#else - uint16_t green_h : 3; - uint16_t red : 5; - uint16_t blue : 5; - uint16_t green_l : 3; -#endif - } ch; - uint16_t full; -} wgl_color16_t; - -typedef union -{ - struct - { - uint8_t blue; - uint8_t green; - uint8_t red; - uint8_t alpha; - } ch; - uint32_t full; -} wgl_color32_t; - -#if LV_COLOR_DEPTH == 1 -typedef uint8_t wgl_color_int_t; -typedef wgl_color1_t wgl_color_t; -#elif LV_COLOR_DEPTH == 8 -typedef uint8_t wgl_color_int_t; -typedef wgl_color8_t wgl_color_t; -#elif LV_COLOR_DEPTH == 16 -typedef uint16_t wgl_color_int_t; -typedef wgl_color16_t wgl_color_t; -#elif LV_COLOR_DEPTH == 32 -typedef uint32_t wgl_color_int_t; -typedef wgl_color32_t wgl_color_t; -#else -#error "Invalid LV_COLOR_DEPTH in lv_conf.h! Set it to 1, 8, 16 or 32!" -#endif - -typedef uint8_t wgl_opa_t; - - - -/*Border types (Use 'OR'ed values)*/ -enum { - WGL_BORDER_NONE = 0x00, - WGL_BORDER_BOTTOM = 0x01, - WGL_BORDER_TOP = 0x02, - WGL_BORDER_LEFT = 0x04, - WGL_BORDER_RIGHT = 0x08, - WGL_BORDER_FULL = 0x0F, - WGL_BORDER_INTERNAL = 0x10, /**< FOR matrix-like objects (e.g. Button matrix)*/ -}; -typedef uint8_t wgl_border_part_t; - -/*Shadow types*/ -enum { - WGL_SHADOW_BOTTOM = 0, /**< Only draw bottom shadow */ - WGL_SHADOW_FULL, /**< Draw shadow on all sides */ -}; -typedef uint8_t wgl_shadow_type_t; - -/** - * Objects in LittlevGL can be assigned a style - which holds information about - * how the object should be drawn. - * - * This allows for easy customization without having to modify the object's design - * function. - */ -typedef struct -{ - uint8_t glass : 1; /**< 1: Do not inherit this style*/ - - /** Object background. */ - struct - { - wgl_color_t main_color; /**< Object's main background color. */ - wgl_color_t grad_color; /**< Second color. If not equal to `main_color` a gradient will be drawn for the background. */ - wgl_coord_t radius; /**< Object's corner radius. You can use #WGL_RADIUS_CIRCLE if you want to draw a circle. */ - wgl_opa_t opa; /**< Object's opacity (0-255). */ - - struct - { - wgl_color_t color; /**< Border color */ - wgl_coord_t width; /**< Border width */ - wgl_border_part_t part; /**< Which borders to draw */ - wgl_opa_t opa; /**< Border opacity. */ - } border; - - - struct - { - wgl_color_t color; - wgl_coord_t width; - wgl_shadow_type_t type; /**< Which parts of the shadow to draw */ - } shadow; - - struct - { - wgl_coord_t top; - wgl_coord_t bottom; - wgl_coord_t left; - wgl_coord_t right; - wgl_coord_t inner; - } padding; - } body; - - /** Style for text drawn by this object. */ - struct - { - wgl_color_t color; /**< Text color */ - wgl_color_t sel_color; /**< Text selection background color. */ - const wgl_font_t * font; - wgl_coord_t letter_space; /**< Space between letters */ - wgl_coord_t line_space; /**< Space between lines (vertical) */ - wgl_opa_t opa; /**< Text opacity */ - } text; - - /**< Style of images. */ - struct - { - wgl_color_t color; /**< Color to recolor the image with */ - wgl_opa_t intense; /**< Opacity of recoloring (0 means no recoloring) */ - wgl_opa_t opa; /**< Opacity of whole image */ - } image; - - /**< Style of lines (not borders). */ - struct - { - wgl_color_t color; - wgl_coord_t width; - wgl_opa_t opa; - uint8_t rounded : 1; /**< 1: rounded line endings*/ - } line; -} wgl_style_t; - - /* Object native function IDs */ enum { diff --git a/core/app-framework/wgl/app/gui_api.h b/core/app-framework/wgl/app/gui_api.h index 991b079ee..a258474cf 100644 --- a/core/app-framework/wgl/app/gui_api.h +++ b/core/app-framework/wgl/app/gui_api.h @@ -7,6 +7,7 @@ #define _GUI_API_H_ #include "bh_platform.h" +#include "bi-inc/wgl_shared_utils.h" #ifdef __cplusplus extern "C" { diff --git a/core/app-framework/wgl/app/src/wgl_btn.c b/core/app-framework/wgl/app/src/wgl_btn.c index 63a9a84b0..89dbbca67 100644 --- a/core/app-framework/wgl/app/src/wgl_btn.c +++ b/core/app-framework/wgl/app/src/wgl_btn.c @@ -10,17 +10,17 @@ #define ARGC sizeof(argv)/sizeof(uint32) #define CALL_BTN_NATIVE_FUNC(id) wasm_btn_native_call(id, argv, ARGC) -lv_obj_t * lv_btn_create(lv_obj_t * par, const lv_obj_t * copy); +lv_obj_t * lv_btn_create(lv_obj_t * par, const lv_obj_t * copy) { uint32 argv[2] = {0}; argv[0] = (uint32)par; argv[1] = (uint32)copy; CALL_BTN_NATIVE_FUNC(BTN_FUNC_ID_CREATE); - return (wgl_obj_t)argv[0]; + return (lv_obj_t *)argv[0]; } -void lv_btn_set_toggle(lv_obj_t * btn, bool tgl); +void lv_btn_set_toggle(lv_obj_t * btn, bool tgl) { uint32 argv[2] = {0}; argv[0] = (uint32)btn; @@ -28,7 +28,7 @@ void lv_btn_set_toggle(lv_obj_t * btn, bool tgl); CALL_BTN_NATIVE_FUNC(BTN_FUNC_ID_SET_TOGGLE); } -void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state); +void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state) { uint32 argv[2] = {0}; argv[0] = (uint32)btn; @@ -36,14 +36,14 @@ void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state); CALL_BTN_NATIVE_FUNC(BTN_FUNC_ID_SET_STATE); } -void lv_btn_toggle(lv_obj_t * btn); +void lv_btn_toggle(lv_obj_t * btn) { uint32 argv[1] = {0}; argv[0] = (uint32)btn; CALL_BTN_NATIVE_FUNC(BTN_FUNC_ID_TOGGLE); } -void lv_btn_set_ink_in_time(lv_obj_t * btn, uint16_t time); +void lv_btn_set_ink_in_time(lv_obj_t * btn, uint16_t time) { uint32 argv[2] = {0}; argv[0] = (uint32)btn; @@ -51,7 +51,7 @@ void lv_btn_set_ink_in_time(lv_obj_t * btn, uint16_t time); CALL_BTN_NATIVE_FUNC(BTN_FUNC_ID_SET_INK_IN_TIME); } -void lv_btn_set_ink_wait_time(lv_obj_t * btn, uint16_t time); +void lv_btn_set_ink_wait_time(lv_obj_t * btn, uint16_t time) { uint32 argv[2] = {0}; argv[0] = (uint32)btn; @@ -59,7 +59,7 @@ void lv_btn_set_ink_wait_time(lv_obj_t * btn, uint16_t time); CALL_BTN_NATIVE_FUNC(BTN_FUNC_ID_SET_INK_WAIT_TIME); } -void lv_btn_set_ink_out_time(lv_obj_t * btn, uint16_t time); +void lv_btn_set_ink_out_time(lv_obj_t * btn, uint16_t time) { uint32 argv[2] = {0}; argv[0] = (uint32)btn; @@ -73,15 +73,15 @@ void lv_btn_set_ink_out_time(lv_obj_t * btn, uint16_t time); // //wasm_btn_set_style(btn, type, style); //} // -lv_btn_state_t lv_btn_get_state(const lv_obj_t * btn); +lv_btn_state_t lv_btn_get_state(const lv_obj_t * btn) { uint32 argv[1] = {0}; argv[0] = (uint32)btn; CALL_BTN_NATIVE_FUNC(BTN_FUNC_ID_GET_STATE); - return (wgl_btn_state_t)argv[0]; + return (lv_btn_state_t)argv[0]; } -bool lv_btn_get_toggle(const lv_obj_t * btn); +bool lv_btn_get_toggle(const lv_obj_t * btn) { uint32 argv[1] = {0}; argv[0] = (uint32)btn; @@ -89,7 +89,7 @@ bool lv_btn_get_toggle(const lv_obj_t * btn); return (bool)argv[0]; } -uint16_t lv_btn_get_ink_in_time(const lv_obj_t * btn); +uint16_t lv_btn_get_ink_in_time(const lv_obj_t * btn) { uint32 argv[1] = {0}; argv[0] = (uint32)btn; @@ -97,7 +97,7 @@ uint16_t lv_btn_get_ink_in_time(const lv_obj_t * btn); return (uint16_t)argv[0]; } -uint16_t lv_btn_get_ink_wait_time(const lv_obj_t * btn); +uint16_t lv_btn_get_ink_wait_time(const lv_obj_t * btn) { uint32 argv[1] = {0}; argv[0] = (uint32)btn; @@ -105,7 +105,7 @@ uint16_t lv_btn_get_ink_wait_time(const lv_obj_t * btn); return (uint16_t)argv[0]; } -uint16_t lv_btn_get_ink_out_time(const lv_obj_t * btn); +uint16_t lv_btn_get_ink_out_time(const lv_obj_t * btn) { uint32 argv[1] = {0}; argv[0] = (uint32)btn; diff --git a/core/app-framework/wgl/app/src/wgl_cb.c b/core/app-framework/wgl/app/src/wgl_cb.c index 81428ee59..83a541ab3 100644 --- a/core/app-framework/wgl/app/src/wgl_cb.c +++ b/core/app-framework/wgl/app/src/wgl_cb.c @@ -12,17 +12,17 @@ #define ARGC sizeof(argv)/sizeof(uint32) #define CALL_CB_NATIVE_FUNC(id) wasm_cb_native_call(id, argv, ARGC) -lv_obj_t * lv_cb_create(lv_obj_t * par, const lv_obj_t * copy); +lv_obj_t * lv_cb_create(lv_obj_t * par, const lv_obj_t * copy) { uint32 argv[2] = {0}; argv[0] = (uint32)par; argv[1] = (uint32)copy; CALL_CB_NATIVE_FUNC(CB_FUNC_ID_CREATE); - return (wgl_obj_t)argv[0]; + return (lv_obj_t *)argv[0]; } -void lv_cb_set_text(lv_obj_t * cb, const char * txt); +void lv_cb_set_text(lv_obj_t * cb, const char * txt) { uint32 argv[3] = {0}; argv[0] = (uint32)cb; @@ -31,7 +31,7 @@ void lv_cb_set_text(lv_obj_t * cb, const char * txt); CALL_CB_NATIVE_FUNC(CB_FUNC_ID_SET_TEXT); } -void lv_cb_set_static_text(lv_obj_t * cb, const char * txt); +void lv_cb_set_static_text(lv_obj_t * cb, const char * txt) { uint32 argv[3] = {0}; argv[0] = (uint32)cb; @@ -46,7 +46,7 @@ void lv_cb_set_static_text(lv_obj_t * cb, const char * txt); //} // -static unsigned int wgl_cb_get_text_length(wgl_obj_t cb) +static unsigned int wgl_cb_get_text_length(lv_obj_t * cb) { uint32 argv[1] = {0}; argv[0] = (uint32)cb; @@ -54,7 +54,7 @@ static unsigned int wgl_cb_get_text_length(wgl_obj_t cb) return argv[0]; } -static char *wgl_cb_get_text(wgl_obj_t cb, char *buffer, int buffer_len) +static char *wgl_cb_get_text(lv_obj_t * cb, char *buffer, int buffer_len) { uint32 argv[3] = {0}; argv[0] = (uint32)cb; diff --git a/core/app-framework/wgl/app/src/wgl_label.c b/core/app-framework/wgl/app/src/wgl_label.c index ff28b7535..cecd9910f 100644 --- a/core/app-framework/wgl/app/src/wgl_label.c +++ b/core/app-framework/wgl/app/src/wgl_label.c @@ -13,17 +13,17 @@ #define ARGC sizeof(argv)/sizeof(uint32) #define CALL_LABEL_NATIVE_FUNC(id) wasm_label_native_call(id, argv, ARGC) -lv_obj_t * lv_label_create(lv_obj_t * par, const lv_obj_t * copy); +lv_obj_t * lv_label_create(lv_obj_t * par, const lv_obj_t * copy) { uint32 argv[2] = {0}; argv[0] = (uint32)par; argv[1] = (uint32)copy; CALL_LABEL_NATIVE_FUNC(LABEL_FUNC_ID_CREATE); - return (wgl_obj_t)argv[0]; + return (lv_obj_t *)argv[0]; } -void lv_label_set_text(lv_obj_t * label, const char * text); +void lv_label_set_text(lv_obj_t * label, const char * text) { uint32 argv[3] = {0}; argv[0] = (uint32)label; @@ -33,7 +33,7 @@ void lv_label_set_text(lv_obj_t * label, const char * text); } -void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size); +void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size) { uint32 argv[3] = {0}; argv[0] = (uint32)label; @@ -43,7 +43,7 @@ void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size } -void lv_label_set_static_text(lv_obj_t * label, const char * text); +void lv_label_set_static_text(lv_obj_t * label, const char * text) { uint32 argv[3] = {0}; argv[0] = (uint32)label; @@ -53,7 +53,7 @@ void lv_label_set_static_text(lv_obj_t * label, const char * text); } -void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode); +void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode) { uint32 argv[2] = {0}; argv[0] = (uint32)label; @@ -62,7 +62,7 @@ void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode); } -void lv_label_set_align(lv_obj_t * label, lv_label_align_t align); +void lv_label_set_align(lv_obj_t * label, lv_label_align_t align) { uint32 argv[2] = {0}; argv[0] = (uint32)label; @@ -71,7 +71,7 @@ void lv_label_set_align(lv_obj_t * label, lv_label_align_t align); } -void lv_label_set_recolor(lv_obj_t * label, bool en); +void lv_label_set_recolor(lv_obj_t * label, bool en) { uint32 argv[2] = {0}; argv[0] = (uint32)label; @@ -80,7 +80,7 @@ void lv_label_set_recolor(lv_obj_t * label, bool en); } -void lv_label_set_body_draw(lv_obj_t * label, bool en); +void lv_label_set_body_draw(lv_obj_t * label, bool en) { uint32 argv[2] = {0}; argv[0] = (uint32)label; @@ -89,7 +89,7 @@ void lv_label_set_body_draw(lv_obj_t * label, bool en); } -void lv_label_set_anim_speed(lv_obj_t * label, uint16_t anim_speed); +void lv_label_set_anim_speed(lv_obj_t * label, uint16_t anim_speed) { uint32 argv[2] = {0}; argv[0] = (uint32)label; @@ -98,7 +98,7 @@ void lv_label_set_anim_speed(lv_obj_t * label, uint16_t anim_speed); } -void lv_label_set_text_sel_start(lv_obj_t * label, uint16_t index); +void lv_label_set_text_sel_start(lv_obj_t * label, uint16_t index) { uint32 argv[2] = {0}; argv[0] = (uint32)label; @@ -107,7 +107,7 @@ void lv_label_set_text_sel_start(lv_obj_t * label, uint16_t index); } -void lv_label_set_text_sel_end(lv_obj_t * label, uint16_t index); +void lv_label_set_text_sel_end(lv_obj_t * label, uint16_t index) { uint32 argv[2] = {0}; argv[0] = (uint32)label; @@ -115,7 +115,7 @@ void lv_label_set_text_sel_end(lv_obj_t * label, uint16_t index); CALL_LABEL_NATIVE_FUNC(LABEL_FUNC_ID_SET_TEXT_SEL_END); } -unsigned int wgl_label_get_text_length(wgl_obj_t label) +unsigned int wgl_label_get_text_length(lv_obj_t * label) { uint32 argv[1] = {0}; argv[0] = (uint32)label; @@ -123,7 +123,7 @@ unsigned int wgl_label_get_text_length(wgl_obj_t label) return argv[0]; } -char * wgl_label_get_text(wgl_obj_t label, char *buffer, int buffer_len) +char * wgl_label_get_text(lv_obj_t * label, char *buffer, int buffer_len) { uint32 argv[3] = {0}; argv[0] = (uint32)label; @@ -137,28 +137,30 @@ char * wgl_label_get_text(wgl_obj_t label, char *buffer, int buffer_len) char * lv_label_get_text(const lv_obj_t * label) { + return NULL; + } -wgl_label_long_mode_t wgl_label_get_long_mode(const wgl_obj_t label) +lv_label_long_mode_t lv_label_get_long_mode(const lv_obj_t * label) { uint32 argv[1] = {0}; argv[0] = (uint32)label; CALL_LABEL_NATIVE_FUNC(LABEL_FUNC_ID_GET_LONG_MODE); - return (wgl_label_long_mode_t)argv[0]; + return (lv_label_long_mode_t)argv[0]; } -lv_label_long_mode_t lv_label_get_long_mode(const lv_obj_t * label); +lv_label_align_t lv_label_get_align(const lv_obj_t * label) { uint32 argv[1] = {0}; argv[0] = (uint32)label; CALL_LABEL_NATIVE_FUNC(LABEL_FUNC_ID_GET_ALIGN); - return (wgl_label_align_t)argv[0]; + return (lv_label_align_t)argv[0]; } -bool lv_label_get_recolor(const lv_obj_t * label); +bool lv_label_get_recolor(const lv_obj_t * label) { uint32 argv[1] = {0}; argv[0] = (uint32)label; @@ -167,7 +169,7 @@ bool lv_label_get_recolor(const lv_obj_t * label); } -bool lv_label_get_body_draw(const lv_obj_t * label); +bool lv_label_get_body_draw(const lv_obj_t * label) { uint32 argv[1] = {0}; argv[0] = (uint32)label; @@ -176,7 +178,7 @@ bool lv_label_get_body_draw(const lv_obj_t * label); } -uint16_t lv_label_get_anim_speed(const lv_obj_t * label); +uint16_t lv_label_get_anim_speed(const lv_obj_t * label) { uint32 argv[1] = {0}; argv[0] = (uint32)label; @@ -185,7 +187,7 @@ uint16_t lv_label_get_anim_speed(const lv_obj_t * label); } -void lv_label_get_letter_pos(const lv_obj_t * label, uint16_t index, lv_point_t * pos); +void lv_label_get_letter_pos(const lv_obj_t * label, uint16_t index, lv_point_t * pos) { uint32 argv[4] = {0}; argv[0] = (uint32)label; @@ -196,7 +198,7 @@ void lv_label_get_letter_pos(const lv_obj_t * label, uint16_t index, lv_point_t } -uint16_t lv_label_get_letter_on(const lv_obj_t * label, lv_point_t * pos); +uint16_t lv_label_get_letter_on(const lv_obj_t * label, lv_point_t * pos) { uint32 argv[3] = {0}; argv[0] = (uint32)label; @@ -207,7 +209,7 @@ uint16_t lv_label_get_letter_on(const lv_obj_t * label, lv_point_t * pos); } -bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos); +bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos) { uint32 argv[3] = {0}; argv[0] = (uint32)label; @@ -218,7 +220,7 @@ bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos); } -uint16_t lv_label_get_text_sel_start(const lv_obj_t * label); +uint16_t lv_label_get_text_sel_start(const lv_obj_t * label) { uint32 argv[1] = {0}; argv[0] = (uint32)label; @@ -227,7 +229,7 @@ uint16_t lv_label_get_text_sel_start(const lv_obj_t * label); } -uint16_t lv_label_get_text_sel_end(const lv_obj_t * label); +uint16_t lv_label_get_text_sel_end(const lv_obj_t * label) { uint32 argv[1] = {0}; argv[0] = (uint32)label; @@ -236,7 +238,7 @@ uint16_t lv_label_get_text_sel_end(const lv_obj_t * label); } -void lv_label_ins_text(lv_obj_t * label, uint32_t pos, const char * txt); +void lv_label_ins_text(lv_obj_t * label, uint32_t pos, const char * txt) { uint32 argv[4] = {0}; argv[0] = (uint32)label; @@ -247,7 +249,7 @@ void lv_label_ins_text(lv_obj_t * label, uint32_t pos, const char * txt); } -void lv_label_cut_text(lv_obj_t * label, uint32_t pos, uint32_t cnt); +void lv_label_cut_text(lv_obj_t * label, uint32_t pos, uint32_t cnt) { uint32 argv[3] = {0}; argv[0] = (uint32)label; diff --git a/core/app-framework/wgl/app/src/wgl_list.c b/core/app-framework/wgl/app/src/wgl_list.c index 0787e21b0..1ac9b32ed 100644 --- a/core/app-framework/wgl/app/src/wgl_list.c +++ b/core/app-framework/wgl/app/src/wgl_list.c @@ -13,7 +13,7 @@ #define CALL_LIST_NATIVE_FUNC(id) wasm_list_native_call(id, argv, ARGC) -lv_obj_t * lv_list_create(lv_obj_t * par, const lv_obj_t * copy); +lv_obj_t * lv_list_create(lv_obj_t * par, const lv_obj_t * copy) { uint32 argv[2] = {0}; @@ -21,7 +21,7 @@ lv_obj_t * lv_list_create(lv_obj_t * par, const lv_obj_t * copy); argv[1] = (uint32)copy; CALL_LIST_NATIVE_FUNC(LIST_FUNC_ID_CREATE); - return (wgl_obj_t)argv[0]; + return (lv_obj_t *)argv[0]; } // // @@ -31,7 +31,7 @@ lv_obj_t * lv_list_create(lv_obj_t * par, const lv_obj_t * copy); //} // -lv_obj_t * lv_list_add_btn(lv_obj_t * list, const void * img_src, const char * txt); +lv_obj_t * lv_list_add_btn(lv_obj_t * list, const void * img_src, const char * txt) { uint32 argv[3] = {0}; @@ -41,7 +41,7 @@ lv_obj_t * lv_list_add_btn(lv_obj_t * list, const void * img_src, const char * t argv[1] = (uint32)txt; argv[2] = strlen(txt) + 1; CALL_LIST_NATIVE_FUNC(LIST_FUNC_ID_ADD_BTN); - return (wgl_obj_t)argv[0]; + return (lv_obj_t *)argv[0]; } // // diff --git a/core/app-framework/wgl/app/src/wgl_obj.c b/core/app-framework/wgl/app/src/wgl_obj.c index 7459b899d..ee72beb62 100644 --- a/core/app-framework/wgl/app/src/wgl_obj.c +++ b/core/app-framework/wgl/app/src/wgl_obj.c @@ -15,9 +15,8 @@ typedef struct _obj_evt_cb { struct _obj_evt_cb *next; - wgl_obj_t obj; - - wgl_event_cb_t event_cb; + lv_obj_t * obj; + lv_event_cb_t event_cb; } obj_evt_cb_t; static obj_evt_cb_t *g_obj_evt_cb_list = NULL; @@ -25,29 +24,29 @@ static obj_evt_cb_t *g_obj_evt_cb_list = NULL; /* For lvgl compatible */ char g_widget_text[100]; -lv_res_t lv_obj_del(lv_obj_t * obj); +lv_res_t lv_obj_del(lv_obj_t * obj) { uint32 argv[1] = {0}; argv[0] = (uint32)obj; CALL_OBJ_NATIVE_FUNC(OBJ_FUNC_ID_DEL); - return (wgl_res_t)argv[0]; + return (lv_res_t)argv[0]; } -void lv_obj_del_async(struct _lv_obj_t *obj); +void lv_obj_del_async(struct _lv_obj_t *obj) { uint32 argv[1] = {0}; argv[0] = (uint32)obj; CALL_OBJ_NATIVE_FUNC(OBJ_FUNC_ID_DEL_ASYNC); } -void lv_obj_clean(lv_obj_t * obj); +void lv_obj_clean(lv_obj_t * obj) { uint32 argv[1] = {0}; argv[0] = (uint32)obj; CALL_OBJ_NATIVE_FUNC(OBJ_FUNC_ID_CLEAN); } -void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_coord_t x_mod, lv_coord_t y_mod); +void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_coord_t x_mod, lv_coord_t y_mod) { uint32 argv[5] = {0}; argv[0] = (uint32)obj; @@ -58,7 +57,7 @@ void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_co CALL_OBJ_NATIVE_FUNC(OBJ_FUNC_ID_ALIGN); } -lv_event_cb_t lv_obj_get_event_cb(const lv_obj_t * obj); +lv_event_cb_t lv_obj_get_event_cb(const lv_obj_t * obj) { obj_evt_cb_t *obj_evt_cb = g_obj_evt_cb_list; while (obj_evt_cb != NULL) { @@ -71,7 +70,7 @@ lv_event_cb_t lv_obj_get_event_cb(const lv_obj_t * obj); return NULL; } -void lv_obj_set_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb); +void lv_obj_set_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb) { obj_evt_cb_t *obj_evt_cb; uint32 argv[1] = {0}; @@ -103,7 +102,7 @@ void lv_obj_set_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb); CALL_OBJ_NATIVE_FUNC(OBJ_FUNC_ID_SET_EVT_CB); } -void on_widget_event(wgl_obj_t obj, wgl_event_t event) +void on_widget_event(lv_obj_t * obj, lv_event_t event) { obj_evt_cb_t *obj_evt_cb = g_obj_evt_cb_list; diff --git a/samples/gui/lvgl-native-ui-app/LICENCE.txt b/core/app-framework/wgl/app/wa-inc/lvgl/LICENCE.txt similarity index 100% rename from samples/gui/lvgl-native-ui-app/LICENCE.txt rename to core/app-framework/wgl/app/wa-inc/lvgl/LICENCE.txt diff --git a/core/app-framework/wgl/wgl.md b/core/app-framework/wgl/wgl.md index d581877b5..65feebccd 100644 --- a/core/app-framework/wgl/wgl.md +++ b/core/app-framework/wgl/wgl.md @@ -30,9 +30,24 @@ Firstly we have to redefine some data types such as lv_obj_t in the APIs exposed typedef void lv_obj_t; ''' -Secondly, as the littlevgl source code is no longer compiled and linked with the WASM app source codes, the compilation won't be successfully while including the original littvgl header files. - - + + +# Prepare the lvgl header files for WASM applicaitons + +Run the below script to setup the lvgl header files for the wasm appliation. + +``` +core/app-framework/wgl/app/prepare_headers.sh +``` + +The script is also automatically executed after downloading the lvgl repo in the wamr-sdk building process. + + + +# How to extend a little vgl wideget +Currently the wgl has exported the API for a few common used widgets such as button, label etc. + +Refer to the implementation of these widgets for extending other widgets. diff --git a/core/deps/download.sh b/core/deps/download.sh new file mode 100755 index 000000000..923a9e03d --- /dev/null +++ b/core/deps/download.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +DEPS_ROOT=$(cd "$(dirname "$0")/" && pwd) +cd ${DEPS_ROOT} + + +if [ ! -d "lvgl" ]; then + echo "git pull lvgl..." + git clone https://github.com/littlevgl/lvgl.git --branch v6.0.1 + [ $? -eq 0 ] || exit $? + + ../app-framework/wgl/app/prepare_headers.sh +fi +if [ ! -d "lv_drivers" ]; then + echo "git pull lv_drivers..." + git clone https://github.com/littlevgl/lv_drivers.git + [ $? -eq 0 ] || exit $? +fi + +if [ ! -d "tlsf" ]; then + echo "git pull tlsf..." + git clone https://github.com/mattconte/tlsf + [ $? -eq 0 ] || exit $? + #cd ${WAMR_DIR}/core/shared/mem-alloc +fi + + +exit 0 diff --git a/samples/gui/README.md b/samples/gui/README.md index b9e589ba1..b285754c5 100644 --- a/samples/gui/README.md +++ b/samples/gui/README.md @@ -40,16 +40,14 @@ Build and Run - Build
`./build.sh`
- All binaries are in "out", which contains "host_tool", "lvgl_native_ui_app", "ui_app.wasm", "ui_app_lvgl_compatible.wasm" and "wasm_runtime_wgl". -- Run native Linux application
-`./lvgl_native_ui_app`
+ All binaries are in "out", which contains "host_tool", "ui_decrease.wasm", "ui_increase.wasm" and "wasm_runtime_wgl". - Run WASM VM Linux applicaton & install WASM APP
First start wasm_runtime_wgl in server mode.
`./wasm_runtime_wgl -s`
Then install wasm APP use host tool.
-`./host_tool -i ui_app -f ui_app.wasm`
-`./host_tool -i ui_app -f ui_app_lvgl_compatible.wasm`
+`./host_tool -i inc -f ui_increase.wasm`
+`./host_tool -i dec -f ui_decrease.wasm`
@@ -107,11 +105,11 @@ https://docs.zephyrproject.org/latest/getting_started/index.html
- Install WASM application to Zephyr using host_tool
First, connect PC and STM32 with UART. Then install to use host_tool.
-`./host_tool -D /dev/ttyUSBXXX -i ui_app -f ui_app.wasm` +`./host_tool -D /dev/ttyUSBXXX -i inc -f ui_increase.wasm` - Install AOT version WASM application -`wamrc --target=thumbv7 --target-abi=eabi --cpu=cortex-m7 -o ui_app.aot ui_app.wasm` -`./host_tool -D /dev/ttyUSBXXX -i ui_app -f ui_app.aot` +`wamrc --target=thumbv7 --target-abi=eabi --cpu=cortex-m7 -o ui_app.aot ui_increase.wasm` +`./host_tool -D /dev/ttyUSBXXX -i inc -f ui_app.aot` diff --git a/samples/gui/build.sh b/samples/gui/build.sh index 15cd578c9..a57aa48e8 100755 --- a/samples/gui/build.sh +++ b/samples/gui/build.sh @@ -25,21 +25,8 @@ rm -rf ${OUT_DIR} mkdir ${OUT_DIR} -cd ${WAMR_DIR}/core/shared/mem-alloc -if [ ! -d "tlsf" ]; then - git clone https://github.com/mattconte/tlsf -fi - -cd ${WAMR_DIR}/core/deps -if [ ! -d "lvgl" ]; then - git clone https://github.com/littlevgl/lvgl.git --branch v6.0.1 -fi -if [ ! -d "lv_drivers" ]; then - git clone https://github.com/littlevgl/lv_drivers.git -fi - echo -e "\n\n" -echo "##################### 0. build wamr-sdk gui start#####################" +echo "##################### 1. build wamr-sdk gui start#####################" cd ${WAMR_DIR}/wamr-sdk ./build_sdk.sh -n gui -x ${WAMR_RUNTIME_CFG} -e ${LV_CFG_PATH} [ $? -eq 0 ] || exit $? @@ -47,23 +34,6 @@ cd ${WAMR_DIR}/wamr-sdk echo "#####################build wamr-sdk success" -echo -e "\n\n" -echo "##################### 1. build native-ui-app start#####################" -cd $BUILD_DIR -mkdir -p lvgl-native-ui-app -cd lvgl-native-ui-app -$cmakewrap ${PROJECT_DIR}/lvgl-native-ui-app -[ $? -eq 0 ] || exit $? -$makewrap -if [ $? != 0 ];then - echo "BUILD_FAIL native-ui-app $?\n" - exit 2 -fi -echo $PWD -cp lvgl_native_ui_app ${OUT_DIR} -echo "#####################build native-ui-app success" -echo -e "\n\n" - echo "##################### 2. build wasm runtime start#####################" cd $BUILD_DIR @@ -94,20 +64,7 @@ echo "#####################build host-tool success" echo -e "\n\n" echo "##################### 3. build wasm ui app start#####################" -cd ${PROJECT_DIR}/wasm-apps/wgl +cd ${PROJECT_DIR}/wasm-apps +export OUT_DIR=${OUT_DIR} +./build_apps.sh -rm -rf build -mkdir build && cd build -$cmakewrap .. -DCMAKE_TOOLCHAIN_FILE=${WAMR_DIR}/wamr-sdk/out/gui/app-sdk/wamr_toolchain.cmake -$makewrap -[ $? -eq 0 ] || exit $? -mv ui_app.wasm ${OUT_DIR}/ - -# $makewrap -# mv ui_app.wasm ${OUT_DIR}/ - -cd ${PROJECT_DIR}/wasm-apps/lvgl-compatible -$makewrap -[ $? -eq 0 ] || exit $? -mv ui_app_lvgl_compatible.wasm ${OUT_DIR}/ -echo "##################### build wasm ui app end#####################" diff --git a/samples/gui/lvgl-native-ui-app/CMakeLists.txt b/samples/gui/lvgl-native-ui-app/CMakeLists.txt deleted file mode 100644 index 3602e5c78..000000000 --- a/samples/gui/lvgl-native-ui-app/CMakeLists.txt +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (C) 2019 Intel Corporation. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - -cmake_minimum_required (VERSION 2.8.2) -message ("lvgl_native_ui_app...") -project (lvgl_native_ui_app) - -################################################################# - -# Currently build as 64-bit by default. Set to "NO" to build 32-bit binaries. -set (BUILD_AS_64BIT_SUPPORT "YES") - -if (CMAKE_SIZEOF_VOID_P EQUAL 8) - if (${BUILD_AS_64BIT_SUPPORT} STREQUAL "YES") - # Add -fPIC flag if build as 64-bit - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS} -fPIC") - else () - add_definitions (-m32) - set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32") - set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32") - endif () -endif () - -set(WAMR_DEPS_DIR ../../../core/deps) -set(LVGL_SOURCE_DIR ${WAMR_DEPS_DIR}/lvgl) -set(LVGL_DRIVER_DIR ${WAMR_DEPS_DIR}/lv_drivers) - -################################# - -add_definitions(-DLV_CONF_INCLUDE_SIMPLE) - -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}) -INCLUDE_DIRECTORIES(${WAMR_DEPS_DIR}) -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/../lv_config) - - -file(GLOB_RECURSE INCLUDES "${LVGL_DRIVER_DIR}/*.h" "${LVGL_SOURCE_DIR}/*.h" "./*.h" ) -file(GLOB_RECURSE SOURCES "${LVGL_DRIVER_DIR}/*.c" "${LVGL_SOURCE_DIR}/*.c" ) - -add_executable(lvgl_native_ui_app main.c get_time.c ${SOURCES} ${INCLUDES}) -target_link_libraries(lvgl_native_ui_app PRIVATE SDL2 ) - diff --git a/samples/gui/lvgl-native-ui-app/get_time.c b/samples/gui/lvgl-native-ui-app/get_time.c deleted file mode 100644 index 756191a69..000000000 --- a/samples/gui/lvgl-native-ui-app/get_time.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include "system_header.h" - -int time_get_ms() -{ - static struct timeval tv; - gettimeofday(&tv, NULL); - long long time_in_mill = (tv.tv_sec) * 1000 + (tv.tv_usec) / 1000; - - return (int) time_in_mill; -} diff --git a/samples/gui/lvgl-native-ui-app/main.c b/samples/gui/lvgl-native-ui-app/main.c deleted file mode 100644 index 54600f332..000000000 --- a/samples/gui/lvgl-native-ui-app/main.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (C) 2019 Intel Corporation. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - */ - -/** - * @file main - * - */ - -/********************* - * INCLUDES - *********************/ -#define _DEFAULT_SOURCE /* needed for usleep() */ -#include -#include -#define SDL_MAIN_HANDLED /*To fix SDL's "undefined reference to WinMain" issue*/ -#include -#include "lvgl/lvgl.h" -#include "lv_drivers/display/monitor.h" -#include "lv_drivers/indev/mouse.h" -#include "lv_drivers/indev/mousewheel.h" -#include "lv_drivers/indev/keyboard.h" - - -/********************* - * DEFINES - *********************/ - -/*On OSX SDL needs different handling*/ -#if defined(__APPLE__) && defined(TARGET_OS_MAC) -# if __APPLE__ && TARGET_OS_MAC -#define SDL_APPLE -# endif -#endif - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * STATIC PROTOTYPES - **********************/ -static void hal_init(void); -static void btn_event_cb(lv_obj_t * btn, lv_event_t event); - -/********************** - * STATIC VARIABLES - **********************/ -uint32_t count = 0; -char count_str[11] = { 0 }; -lv_obj_t *hello_world_label; -lv_obj_t *count_label; -lv_obj_t * btn1; -lv_obj_t * label_count1; -int label_count1_value = 0; -char label_count1_str[11] = { 0 }; - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -int main(int argc, char ** argv) -{ - (void) argc; /*Unused*/ - (void) argv; /*Unused*/ - - /*Initialize LittlevGL*/ - lv_init(); - - /*Initialize the HAL (display, input devices, tick) for LittlevGL*/ - hal_init(); - - hello_world_label = lv_label_create(lv_disp_get_scr_act(NULL), NULL); - lv_label_set_text(hello_world_label, "Hello world!"); - lv_obj_align(hello_world_label, NULL, LV_ALIGN_IN_TOP_LEFT, 0, 0); - - count_label = lv_label_create(lv_disp_get_scr_act(NULL), NULL); - lv_obj_align(count_label, NULL, LV_ALIGN_IN_TOP_MID, 0, 0); - btn1 = lv_btn_create(lv_disp_get_scr_act(NULL), NULL); /*Create a button on the currently loaded screen*/ - lv_obj_set_event_cb(btn1, btn_event_cb); /*Set function to be called when the button is released*/ - lv_obj_align(btn1, NULL, LV_ALIGN_CENTER, 0, 20); /*Align below the label*/ - - /*Create a label on the button*/ - lv_obj_t * btn_label = lv_label_create(btn1, NULL); - lv_label_set_text(btn_label, "Click ++"); - - label_count1 = lv_label_create(lv_disp_get_scr_act(NULL), NULL); - lv_label_set_text(label_count1, "0"); - lv_obj_align(label_count1, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0); - while(1) { - /* Periodically call the lv_task handler. - * It could be done in a timer interrupt or an OS task too.*/ - if ((count % 100) == 0) { - snprintf(count_str, sizeof(count_str), "%d", count/ 100); - lv_label_set_text(count_label, count_str); - } - lv_task_handler(); - ++count; - usleep(10 * 1000); /*Just to let the system breath*/ - } - return 0; -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -/** - * Initialize the Hardware Abstraction Layer (HAL) for the Littlev graphics library - */ -static void hal_init(void) -{ - /* Use the 'monitor' driver which creates window on PC's monitor to simulate a display*/ - monitor_init(); - - /*Create a display buffer*/ - static lv_disp_buf_t disp_buf1; - static lv_color_t buf1_1[320*10]; - lv_disp_buf_init(&disp_buf1, buf1_1, NULL, 320*10); - - /*Create a display*/ - lv_disp_drv_t disp_drv; - lv_disp_drv_init(&disp_drv); /*Basic initialization*/ - disp_drv.buffer = &disp_buf1; - disp_drv.flush_cb = monitor_flush; /*Used when `LV_VDB_SIZE != 0` in lv_conf.h (buffered drawing)*/ - // disp_drv.hor_res = 200; - // disp_drv.ver_res = 100; - lv_disp_drv_register(&disp_drv); - - /* Add the mouse as input device - * Use the 'mouse' driver which reads the PC's mouse*/ - mouse_init(); - lv_indev_drv_t indev_drv; - lv_indev_drv_init(&indev_drv); /*Basic initialization*/ - indev_drv.type = LV_INDEV_TYPE_POINTER; - indev_drv.read_cb = mouse_read; /*This function will be called periodically (by the library) to get the mouse position and state*/ - lv_indev_drv_register(&indev_drv); -} - -static void btn_event_cb(lv_obj_t * btn, lv_event_t event) -{ - if(event == LV_EVENT_RELEASED) { - label_count1_value++; - snprintf(label_count1_str, sizeof(label_count1_str), - "%d", label_count1_value); - lv_label_set_text(label_count1, label_count1_str); - } -} diff --git a/samples/gui/wasm-apps/build_apps.sh b/samples/gui/wasm-apps/build_apps.sh new file mode 100755 index 000000000..32b7ed43c --- /dev/null +++ b/samples/gui/wasm-apps/build_apps.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +APPS_ROOT=$(cd "$(dirname "$0")/" && pwd) +cd ${APPS_ROOT} + +echo "OUT_DIR: ${OUT_DIR}" + +if [ -z ${OUT_DIR} ]; then + OUT_DIR=${APPS_ROOT}/out + echo "set the wasm app folder: ${OUT_DIR}" + + if [ -d ${OUT_DIR} ]; then + rm -rf ${OUT_DIR} + echo "removed the present output folder: ${OUT_DIR}" + fi + mkdir ${OUT_DIR} + +fi + +if [ -z ${WAMR_DIR} ]; then + WAMR_DIR=${APPS_ROOT}/../../.. +fi + + +cd ${APPS_ROOT}/increase + +rm -rf build +mkdir build && cd build +cmake .. -DCMAKE_TOOLCHAIN_FILE=${WAMR_DIR}/wamr-sdk/out/gui/app-sdk/wamr_toolchain.cmake +make +[ $? -eq 0 ] || exit $? +mv ui_increase.wasm ${OUT_DIR}/ + +# $makewrap +# mv ui_app.wasm ${OUT_DIR}/ + +cd ${APPS_ROOT}/decrease +make +[ $? -eq 0 ] || exit $? +mv ui_decrease.wasm ${OUT_DIR}/ + +echo "WASM files generated in folder ${OUT_DIR}" + +echo "##################### build WASM APPs finished #####################" diff --git a/samples/gui/wasm-apps/wgl/CMakeLists.txt b/samples/gui/wasm-apps/increase/CMakeLists.txt similarity index 88% rename from samples/gui/wasm-apps/wgl/CMakeLists.txt rename to samples/gui/wasm-apps/increase/CMakeLists.txt index 15ef74f71..ce55fb1e6 100644 --- a/samples/gui/wasm-apps/wgl/CMakeLists.txt +++ b/samples/gui/wasm-apps/increase/CMakeLists.txt @@ -13,8 +13,8 @@ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS},-L${WAMR_ROOT_DIR}/wamr-s set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS},--export=on_init,--export=on_timer_callback,--export=on_widget_event,--export=__heap_base,--export=__data_end") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Wno-unused-command-line-argument") -add_executable(ui_app.wasm +add_executable(ui_increase.wasm ${CMAKE_CURRENT_LIST_DIR}/src/main.c ) -target_link_libraries(ui_app.wasm app_framework) +target_link_libraries(ui_increase.wasm app_framework) diff --git a/samples/gui/wasm-apps/wgl/Makefile b/samples/gui/wasm-apps/increase/Makefile similarity index 100% rename from samples/gui/wasm-apps/wgl/Makefile rename to samples/gui/wasm-apps/increase/Makefile diff --git a/samples/gui/wasm-apps/lvgl-compatible/src/main.c b/samples/gui/wasm-apps/increase/src/main.c similarity index 89% rename from samples/gui/wasm-apps/lvgl-compatible/src/main.c rename to samples/gui/wasm-apps/increase/src/main.c index 45c16f223..1b1c05d34 100644 --- a/samples/gui/wasm-apps/lvgl-compatible/src/main.c +++ b/samples/gui/wasm-apps/increase/src/main.c @@ -5,7 +5,7 @@ #include #include "wasm_app.h" -#include "wa-inc/lvgl.h" +#include "wa-inc/lvgl/lvgl.h" #include "wa-inc/timer_wasm_app.h" extern char g_widget_text[]; @@ -18,7 +18,7 @@ lv_obj_t *hello_world_label; lv_obj_t *count_label; lv_obj_t *btn1; lv_obj_t *label_count1; -int label_count1_value = 100; +int label_count1_value = 1; char label_count1_str[11] = { 0 }; void timer1_update(user_timer_t timer1) @@ -49,10 +49,10 @@ void on_init() /*Create a label on the button*/ lv_obj_t *btn_label = lv_label_create(btn1, NULL); - lv_label_set_text(btn_label, "Click --"); + lv_label_set_text(btn_label, "Click ++"); label_count1 = lv_label_create(NULL, NULL); - lv_label_set_text(label_count1, "100"); + lv_label_set_text(label_count1, "1"); lv_obj_align(label_count1, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0); /* set up a timer */ @@ -67,11 +67,12 @@ void on_init() static void btn_event_cb(lv_obj_t *btn, lv_event_t event) { if(event == LV_EVENT_RELEASED) { - label_count1_value--; + label_count1_value++; snprintf(label_count1_str, sizeof(label_count1_str), "%d", label_count1_value); lv_label_set_text(label_count1, label_count1_str); - if (label_count1_value == 0) - label_count1_value = 100; + if (label_count1_value == 100) + label_count1_value = 0; } + } diff --git a/samples/gui/wasm-apps/lvgl-compatible/Makefile b/samples/gui/wasm-apps/lvgl-compatible/Makefile deleted file mode 100644 index 285e1d1f1..000000000 --- a/samples/gui/wasm-apps/lvgl-compatible/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (C) 2019 Intel Corporation. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - -CC = /opt/wasi-sdk/bin/clang -APP_DIR = ${shell pwd} -IWASM_DIR = $(APP_DIR)/../../../../core/iwasm -SDK_DIR = $(APP_DIR)/../../../../wamr-sdk/out/gui/app-sdk -APP_FRAMEWORK_DIR = $(APP_DIR)/../../../../wamr-sdk/out/gui/app-sdk/wamr-app-framework -DEPS_DIR = $(APP_DIR)/../../../../core/deps - -CFLAGS += -O3 \ - -Wno-int-conversion \ - -I$(APP_DIR)/src \ - -I$(APP_FRAMEWORK_DIR)/include \ - -I${DEPS_DIR} - -SRCS += $(APP_DIR)/src/main.c - -all: - @$(CC) $(CFLAGS) $(SRCS) \ - --target=wasm32 -O3 -z stack-size=2048 -Wl,--initial-memory=65536 \ - --sysroot=$(SDK_DIR)/libc-builtin-sysroot \ - -L$(APP_FRAMEWORK_DIR)/lib -lapp_framework \ - -Wl,--allow-undefined-file=$(SDK_DIR)/libc-builtin-sysroot/share/defined-symbols.txt \ - -Wl,--no-threads,--strip-all,--no-entry -nostdlib \ - -Wl,--export=on_init -Wl,--export=on_timer_callback \ - -Wl,--export=on_widget_event \ - -Wl,--export=__heap_base,--export=__data_end \ - -o ui_app_lvgl_compatible.wasm diff --git a/samples/gui/wasm-apps/wgl/src/main.c b/samples/gui/wasm-apps/wgl/src/main.c deleted file mode 100644 index 33520b203..000000000 --- a/samples/gui/wasm-apps/wgl/src/main.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2019 Intel Corporation. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - */ - -#include -#include "wasm_app.h" -#include "wa-inc/wgl.h" -#include "wa-inc/timer_wasm_app.h" - -static void btn_event_cb(wgl_obj_t btn, wgl_event_t event); - -uint32_t count = 0; -char count_str[11] = { 0 }; -wgl_obj_t hello_world_label; -wgl_obj_t count_label; -wgl_obj_t btn1; -wgl_obj_t label_count1; -int label_count1_value = 0; -char label_count1_str[11] = { 0 }; - -void timer1_update(user_timer_t timer1) -{ - if ((count % 100) == 0) { - snprintf(count_str, sizeof(count_str), "%d", count / 100); - wgl_label_set_text(count_label, count_str); - } - ++count; -} - -void on_init() -{ - hello_world_label = wgl_label_create((wgl_obj_t)NULL, (wgl_obj_t)NULL); - wgl_label_set_text(hello_world_label, "Hello world!"); - wgl_obj_align(hello_world_label, (wgl_obj_t)NULL, WGL_ALIGN_IN_TOP_LEFT, 0, 0); - - count_label = wgl_label_create((wgl_obj_t)NULL, (wgl_obj_t)NULL); - wgl_obj_align(count_label, (wgl_obj_t)NULL, WGL_ALIGN_IN_TOP_MID, 0, 0); - - btn1 = wgl_btn_create((wgl_obj_t)NULL, (wgl_obj_t)NULL); /*Create a button on the currently loaded screen*/ - wgl_obj_set_event_cb(btn1, btn_event_cb); /*Set function to be called when the button is released*/ - wgl_obj_align(btn1, (wgl_obj_t)NULL, WGL_ALIGN_CENTER, 0, 0); /*Align below the label*/ - - /*Create a label on the button*/ - wgl_obj_t btn_label = wgl_label_create(btn1, (wgl_obj_t)NULL); - wgl_label_set_text(btn_label, "Click ++"); - - label_count1 = wgl_label_create((wgl_obj_t)NULL, (wgl_obj_t)NULL); - wgl_label_set_text(label_count1, "0"); - wgl_obj_align(label_count1, (wgl_obj_t)NULL, WGL_ALIGN_IN_BOTTOM_MID, 0, 0); - - /* set up a timer */ - user_timer_t timer; - timer = api_timer_create(10, true, false, timer1_update); - if (timer) - api_timer_restart(timer, 10); - else - printf("Fail to create timer.\n"); -} - -static void btn_event_cb(wgl_obj_t btn, wgl_event_t event) -{ - if(event == WGL_EVENT_RELEASED) { - label_count1_value++; - snprintf(label_count1_str, sizeof(label_count1_str), - "%d", label_count1_value); - wgl_label_set_text(label_count1, label_count1_str); - - //wgl_cont_set_fit4(btn, WGL_FIT_FLOOD, WGL_FIT_FLOOD, WGL_FIT_FLOOD, WGL_FIT_FLOOD); - //wgl_obj_clean(btn); - } -} diff --git a/wamr-sdk/build_sdk.sh b/wamr-sdk/build_sdk.sh index eda15c3ac..02f43e183 100755 --- a/wamr-sdk/build_sdk.sh +++ b/wamr-sdk/build_sdk.sh @@ -75,6 +75,13 @@ if [ ! -f "/opt/wasi-sdk/bin/clang" ]; then exit 1 fi + +echo "download dependent external repositories.." +${wamr_root_dir}/core/deps/download.sh +[ $? -eq 0 ] || exit $? + + + if [ -z "$PROFILE" ]; then PROFILE="default" echo "PROFILE argument not set, using DEFAULT" @@ -166,8 +173,7 @@ if [[ -n "${app_wgl_selected}" ]] || [[ -n "${app_all_selected}" ]]; then read -a extra_file_path if [[ -z "${extra_file_path}" ]] || [[ ! -d "${extra_file_path}" ]]; then - echo -e "\033[31mThe extra SDK path is invalid, exiting\033[0m" - exit 1 + echo -e "\033[31mThe extra SDK path is empty\033[0m" else CM_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${extra_file_path}" fi