diff --git a/lv_app/lv_app.c b/lv_app/lv_app.c new file mode 100644 index 000000000..77801bec8 --- /dev/null +++ b/lv_app/lv_app.c @@ -0,0 +1,1048 @@ +/** + * @file lv_app.c + * + */ + +/********************* + * INCLUDES + *********************/ +#include "lv_app.h" + +#if LV_APP_ENABLE != 0 +#include "lv_app_sup.h" +#include "lvgl/lv_misc/anim.h" + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ +typedef struct { + lv_app_inst_t * sender; + lv_app_inst_t * receiver; +}lv_app_con_t; + +/********************** + * STATIC PROTOTYPES + **********************/ + +static void lv_app_init_desktop(void); + +/*Actions*/ +static lv_action_res_t lv_app_menu_rel_action(lv_obj_t * app_btn, lv_dispi_t * dispi); +static lv_action_res_t lv_app_menu_elem_rel_action(lv_obj_t * app_elem_btn, lv_dispi_t * dispi); +static lv_action_res_t lv_app_sc_page_rel_action(lv_obj_t * sc, lv_dispi_t * dispi); +static lv_action_res_t lv_app_sc_rel_action(lv_obj_t * sc, lv_dispi_t * dispi); +static lv_action_res_t lv_app_sc_lpr_action(lv_obj_t * sc, lv_dispi_t * dispi); +static lv_action_res_t lv_app_win_close_action(lv_obj_t * close_btn, lv_dispi_t * dispi); +static lv_action_res_t lv_app_win_minim_action(lv_obj_t * close_minim, lv_dispi_t * dispi); + +static lv_action_res_t lv_app_win_open_anim_create(lv_app_inst_t * app); +static lv_action_res_t lv_app_win_minim_anim_create(lv_app_inst_t * app); +#if LV_APP_EFFECT_ANIM != 0 && LV_APP_ANIM_WIN != 0 +static void lv_app_win_close_anim_cb(lv_obj_t * app_win); +#endif + +static void lv_app_init_icons(void); +static void lv_app_init_style(void); + +/********************** + * STATIC VARIABLES + **********************/ +static ll_dsc_t app_dsc_ll; /*Store a pointer to the app. descriptors*/ +static ll_dsc_t app_inst_ll; /*Store the running apps*/ +static ll_dsc_t app_con_ll; /*Store the communication connection between the apps*/ +static lv_obj_t * app_scr; /*Screen of the applications*/ +static lv_obj_t * menuh; /*Holder of timg_bubbleshe menu on the top*/ +static lv_obj_t * app_btn; /*The "Apps" button on the menu*/ +static lv_obj_t * sys_apph; /*Holder of the system app. buttons*/ +static lv_obj_t * clock; /*Clock on the menu bar (right top)*/ +static lv_obj_t * app_list; /*A list which is opened on 'app_btn' release*/ +static lv_obj_t * sc_page; /*A page for the shortcuts */ +static lv_app_inst_t * con_send; /*The sender application in connection mode. Not NLL means connection mode is active*/ +static lv_app_style_t app_style; /*Styles for application related things*/ + + +/*Declare icons*/ +LV_IMG_DECLARE(img_add); +LV_IMG_DECLARE(img_battery_empty); +LV_IMG_DECLARE(img_battery_full); +LV_IMG_DECLARE(img_battery_half); +LV_IMG_DECLARE(img_bubble); +LV_IMG_DECLARE(img_calendar); +LV_IMG_DECLARE(img_clock); +LV_IMG_DECLARE(img_close); +LV_IMG_DECLARE(img_down); +LV_IMG_DECLARE(img_driver); +LV_IMG_DECLARE(img_eject); +LV_IMG_DECLARE(img_folder); +LV_IMG_DECLARE(img_image); +LV_IMG_DECLARE(img_left); +LV_IMG_DECLARE(img_music); +LV_IMG_DECLARE(img_ok); +LV_IMG_DECLARE(img_play); +LV_IMG_DECLARE(img_right); +LV_IMG_DECLARE(img_settings); +LV_IMG_DECLARE(img_shut_down); +LV_IMG_DECLARE(img_star); +LV_IMG_DECLARE(img_up); +LV_IMG_DECLARE(img_user); +LV_IMG_DECLARE(img_video); +LV_IMG_DECLARE(img_volume); + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +/** + * Initialize the application system + */ +void lv_app_init(void) +{ + /*Init linked lists*/ + ll_init(&app_dsc_ll, sizeof(lv_app_dsc_t *)); + ll_init(&app_inst_ll, sizeof(lv_app_inst_t)); + ll_init(&app_con_ll, sizeof(lv_app_con_t)); + + app_scr = lv_scr_act(); + lv_app_init_icons(); + lv_app_init_style(); + + /*Create the desktop elements*/ + lv_app_init_desktop(); + + /*Initialize all application descriptors*/ + /*ADD NEW APPLICATION INITS HERE!!!*/ + const lv_app_dsc_t ** dsc; +#if USE_LV_APP_EXAMPLE != 0 + dsc = ll_ins_head(&app_dsc_ll); + *dsc = lv_app_example_init(); +#endif +} + +/** + * Run an application according to 'app_dsc' + * @param app_dsc pointer to an application descriptor + * @param cstr a Create STRing which can give initial parameters to the application (NULL or "" if unused) + * @return pointer to the opened application or NULL if any error occurred + */ +lv_app_inst_t * lv_app_run(const lv_app_dsc_t * app_dsc, const char * cstr) +{ + /*Add a new application and initialize it*/ + lv_app_inst_t * app; + app = ll_ins_head(&app_inst_ll); + app->dsc = app_dsc; + app->app_data = dm_alloc(app_dsc->app_data_size); + app->name = NULL; + lv_app_rename(app, app_dsc->name); /*Set a default name*/ + + /*Call the application specific run function*/ + app_dsc->app_run(app, cstr); + + return app; +} + +/** + * Close a running application. Close the Window and the Shortcut too if opened. + * @param app pointer to an application + */ +void lv_app_close(lv_app_inst_t * app) +{ + lv_app_win_close(app); + lv_app_sc_close(app); + + app->dsc->app_close(app); + + dm_free(app->app_data); + dm_free(app->name); +} + +/** + * Open a shortcut for an application + * @param app pointer to an application + * @return pointer to the shortcut + */ +lv_obj_t * lv_app_sc_open(lv_app_inst_t * app) +{ + /*Save the current position of the scrollable part of the page*/ + cord_t scrl_y = lv_obj_get_y(lv_page_get_scrable(sc_page)); + + /*Create a basic shortcut*/ + app->sc = lv_btn_create(sc_page, NULL); + lv_obj_set_free_p(app->sc, app); + lv_obj_set_style(app->sc, &app_style.sc_style); + lv_obj_set_opa(app->sc, app_style.sc_opa); + lv_obj_set_size(app->sc, LV_APP_SC_WIDTH, LV_APP_SC_HEIGHT); + lv_rect_set_layout(app->sc, LV_RECT_LAYOUT_OFF); + lv_btn_set_rel_action(app->sc, lv_app_sc_rel_action); + lv_btn_set_lpr_action(app->sc, lv_app_sc_lpr_action); + lv_page_glue_obj(app->sc, true); + if((app->dsc->mode & LV_APP_MODE_NO_SC_TITLE) == 0) { + /*Create a title on top of the shortcut*/ + app->sc_title = lv_label_create(app->sc, NULL); + lv_obj_set_style(app->sc_title, &app_style.sc_title_style); + #if LV_APP_EFFECT_ANIM != 0 + lv_label_set_long_mode(app->sc_title, LV_LABEL_LONG_SCROLL); + #else + lv_obj_set_size(app->sc_title, LV_APP_SC_WIDTH, font_get_height(font_get(app_style.sc_title_style.font))); + lv_label_set_long_mode(app->sc_title, LV_LABEL_LONG_DOTS); + #endif + lv_label_set_text(app->sc_title, app->name); + lv_obj_align_us(app->sc_title, NULL, LV_ALIGN_IN_TOP_MID, 0, app_style.sc_title_margin); + } else { + app->sc_title = NULL; + } + /*Allocate data and call the app specific sc_open function*/ + app->sc_data = dm_alloc(app->dsc->sc_data_size); + app->dsc->sc_open(app, app->sc); + + /* Restore position of the scrollable part of the page because + * it moved when the shortcut is created*/ + lv_obj_set_y(lv_page_get_scrable(sc_page), scrl_y); +#if LV_APP_EFFECT_ANIM == 0 + lv_page_focus(sc_page, app->sc, false); +#else + lv_page_focus(sc_page, app->sc, true); +#endif + + return app->sc; +} + +/** + * Close the shortcut of an application + * @param app pointer to an application + */ +void lv_app_sc_close(lv_app_inst_t * app) +{ + if(app->sc == NULL) return; + lv_obj_del(app->sc); + app->sc = NULL; + app->sc_title = NULL; + dm_free(app->sc_data); + app->sc_data = NULL; +} + +/** + * Open the application in a window + * @param app pointer to an application + * @return pointer to the shortcut + */ +lv_obj_t * lv_app_win_open(lv_app_inst_t * app) +{ + + /*Close the app list if opened*/ + if(app_list != NULL) { + lv_obj_del(app_list); + app_list = NULL; + } + + app->win = lv_win_create(lv_scr_act(), NULL); + lv_obj_set_free_p(app->win, app); + lv_obj_set_style(app->win, &app_style.win_style); + lv_obj_t * win_content = lv_page_get_scrable(lv_win_get_content(app->win)); + lv_rect_set_fit(win_content, false, true); + lv_obj_set_width(win_content, LV_HOR_RES - 2 * app_style.win_style.content.bg_rects.hpad); + + lv_win_add_ctrl_btn(app->win, "U:/icon_down", lv_app_win_minim_action); + lv_win_add_ctrl_btn(app->win, "U:/icon_close", lv_app_win_close_action); + + app->win_data = dm_alloc(app->dsc->win_data_size); + app->dsc->win_open(app, app->win); + + return app->win; +} + +/** + * Close the window of an application + * @param app pointer to an application + */ +void lv_app_win_close(lv_app_inst_t * app) +{ + if(app->win == NULL) return; + + lv_app_kb_close(false); + + lv_obj_del(app->win); + app->win = NULL; + dm_free(app->win_data); + app->win_data = NULL; +} +/** + * Send data to other applications + * @param app_send pointer to the application which is sending the message + * @param type type of data from 'lv_app_com_type_t' enum + * @param data pointer to the sent data + * @param len length of 'data' in bytes + * @return number application which were received the message + */ +uint16_t lv_app_com_send(lv_app_inst_t * app_send, lv_app_com_type_t type , const void * data, uint32_t len) +{ + lv_app_con_t * con; + uint16_t rec_cnt = 0; + + LL_READ(app_con_ll, con) { + if(con->sender == app_send) { + if(con->receiver->dsc->com_rec != NULL) + con->receiver->dsc->com_rec(app_send, con->receiver, type, data, len); + rec_cnt ++; + } + } + + return rec_cnt; +} + +/** + * Test an application communication connection + * @param sender pointer to an application which sends data + * @param receiver pointer to an application which receives data + * @return false: no connection, true: there is connection + */ +bool lv_app_con_check(lv_app_inst_t * sender, lv_app_inst_t * receiver) +{ + lv_app_con_t * con; + + LL_READ(app_con_ll, con) { + if(con->sender == sender && con->receiver == receiver) { + return true; + } + } + + return false; +} + +/** + * Create a new connection between two applications + * @param sender pointer to a data sender application + * @param receiver pointer to a data receiver application + */ +void lv_app_con_set(lv_app_inst_t * sender, lv_app_inst_t * receiver) +{ + if(lv_app_con_check(sender, receiver) == false) { + lv_app_con_t * con; + con = ll_ins_head(&app_con_ll); + con->sender = sender; + con->receiver = receiver; + } +} + +/** + * Delete a communication connection + * @param sender pointer to a data sender application + * @param receiver pointer to a data receiver application + */ +void lv_app_con_del(lv_app_inst_t * sender, lv_app_inst_t * receiver) +{ + lv_app_con_t * con; + + LL_READ(app_con_ll, con) { + if(con->sender == sender && con->receiver == receiver) { + ll_rem(&app_con_ll, con); + dm_free(con); + } + } +} + +/** + * Get the application descriptor from its name + * @param name name of the app. dsc. + * @return pointer to the app. dsc. + */ +const lv_app_dsc_t * lv_app_dsc_get(const char * name) +{ + const lv_app_dsc_t ** dsc; + LL_READ(app_dsc_ll, dsc) { + if(strcmp((*dsc)->name, name) == 0) { + return *dsc; + } + } + + return NULL; +} + +/** + * Rename an application + * @param app pointer to an application + * @param name a string with the new name + */ +void lv_app_rename(lv_app_inst_t * app, const char * name) +{ + dm_free(app->name); + app->name = dm_alloc(strlen(name) + 1); + strcpy(app->name, name); + + if(app->sc_title != NULL) { + lv_label_set_text(app->sc_title, app->name); + } +} + +/** + * Get the window object from an object located on the window + * @param obj pointer to an object on the window + * @return pointer to the window of 'obj' + */ +lv_obj_t * lv_app_win_get_from_obj(lv_obj_t * obj) +{ + lv_obj_t * par = obj; + lv_obj_t * win; + + do { + win = par; + par = lv_obj_get_parent(win); + } + while(par != app_scr); + + return win; +} + +/** + * Read the list of the running applications. (Get he next element) + * @param prev the previous application (at the first call give NULL to get the first application) + * @param dsc pointer to an application descriptor to filer the applications (NULL to do not filter) + * @return pointer to the next running application or NULL if no more + */ +lv_app_inst_t * lv_app_get_next(lv_app_inst_t * prev, lv_app_dsc_t * dsc) +{ + lv_app_inst_t * next; + + while(1) { + if(prev == NULL) next = ll_get_head(&app_inst_ll); + else next = ll_get_next(&app_inst_ll, prev); + if(next == NULL) break; + + if(next->dsc == dsc || dsc == NULL) return next; + + }; + + return NULL; +} + +/** + * Refresh the style of the applications + * */ +void lv_app_refr_style(void) +{ + lv_style_refr_all(NULL); + + lv_obj_set_opa(menuh, app_style.menu_opa); + lv_obj_set_opa(app_btn, app_style.menu_btn_opa); + + lv_obj_set_width(lv_page_get_scrable(sc_page), + LV_HOR_RES - 2 * (app_style.sc_page_style.bg_rects.hpad)); +} + + +/** + * Get a pointer to the application style structure. If modified then 'lv_app_refr_style' should be called + * @return pointer to the application style structure + */ +lv_app_style_t * lv_app_get_style(void) +{ + return &app_style; +} + +/********************** + * STATIC FUNCTIONS + **********************/ + +/** + * Create the object on the desktop + */ +static void lv_app_init_desktop(void) +{ + /*Shortcut area*/ + sc_page = lv_page_create(lv_scr_act(), NULL); + lv_obj_set_style(sc_page, &app_style.sc_page_style); + lv_obj_set_size(sc_page, LV_HOR_RES, LV_VER_RES); + lv_obj_set_pos(sc_page, 0, 0); + lv_rect_set_fit(lv_page_get_scrable(sc_page), false, true); + lv_rect_set_layout(lv_page_get_scrable(sc_page), LV_RECT_LAYOUT_GRID); + lv_page_set_rel_action(sc_page, lv_app_sc_page_rel_action); + + /*Menu on the top*/ + menuh = lv_rect_create(lv_scr_act(), NULL); + lv_obj_set_size(menuh, LV_HOR_RES, app_style.menu_h); + lv_obj_set_pos(menuh, 0, 0); + lv_obj_set_style(menuh, &app_style.menu_style); + + app_btn = lv_btn_create(menuh, NULL); + lv_obj_set_style(app_btn, &app_style.menu_btn_style); + lv_obj_set_height(app_btn, app_style.menu_h); + lv_rect_set_fit(app_btn, true, false); + lv_btn_set_rel_action(app_btn, lv_app_menu_rel_action); + lv_obj_t * app_label = lv_label_create(app_btn, NULL); + lv_obj_set_style(app_label, &app_style.menu_btn_label_style); + lv_label_set_text(app_label, "Apps"); + lv_obj_set_pos(app_btn, 0, 0); + + sys_apph = lv_rect_create(menuh, NULL); + lv_rect_set_layout(sys_apph, LV_RECT_LAYOUT_ROW_M); + lv_rect_set_fit(sys_apph, true, false); + lv_obj_set_height(sys_apph, app_style.menu_h); + lv_obj_set_style(sys_apph, lv_rects_get(LV_RECTS_TRANSP, NULL)); + clock = lv_label_create(sys_apph, NULL); + lv_obj_set_style(clock, &app_style.menu_btn_label_style); + lv_label_set_text(clock, "20:17"); + lv_obj_align(sys_apph, NULL, LV_ALIGN_IN_RIGHT_MID, 0, 0); + + lv_app_refr_style(); +} + +/*----------------------- + APP. MENU ACTIONS + ------------------------*/ + +/** + * CAlled when the "Apps" button is released to open or close the app. list + * @param app_btn pointer to the "Apps" button + * @param dispi pointer to the caller display input + * @return LV_ACTION_RES_OK because the "Apps" button is never deleted + */ +static lv_action_res_t lv_app_menu_rel_action(lv_obj_t * app_btn, lv_dispi_t * dispi) +{ + /*Close the list if opened*/ + if(app_list != NULL) { + lv_obj_del(app_list); + app_list = NULL; + } + /*Create the app. list*/ + else { + app_list = lv_list_create(lv_scr_act(), NULL); + lv_obj_set_style(app_list, &app_style.app_list_style); + lv_obj_set_opa(app_list, app_style.menu_opa); + lv_obj_set_size(app_list, app_style.app_list_w, app_style.app_list_h); + lv_obj_set_y(app_list, app_style.menu_h); + + lv_app_dsc_t ** dsc; + lv_obj_t * elem; + LL_READ(app_dsc_ll, dsc) { + if(((*dsc)->mode & LV_APP_MODE_NOT_LIST) == 0) { + elem = lv_list_add(app_list, NULL, (*dsc)->name, lv_app_menu_elem_rel_action); + lv_obj_set_free_p(elem, *dsc); + lv_obj_set_opa(elem, app_style.menu_btn_opa); + } + } + } + return LV_ACTION_RES_OK; +} + +/** + * Called when an element of the app list is released + * @param app_elem_btn pointer to an element of app list + * @param dispi pointer to the caller display input + * @return LV_ACTION_RES_INV because the list is dleted on release + */ +static lv_action_res_t lv_app_menu_elem_rel_action(lv_obj_t * app_elem_btn, lv_dispi_t * dispi) +{ + lv_app_dsc_t * dsc = lv_obj_get_free_p(app_elem_btn); + + /*Close the app list*/ + lv_obj_del(app_list); + app_list = NULL; + + lv_app_inst_t * app = lv_app_run(dsc, ""); + lv_app_sc_open(app); + +#if LV_APP_EFFECT_ANIM != 0 && LV_APP_EFFECT_OPA_ANIM != 0 && LV_APP_ANIM_SC != 0 + anim_t a; + a.act_time = 0; + a.time = LV_APP_ANIM_SC; + a.end_cb = NULL; + a.playback = 0; + a.repeat = 0; + a.var = app->sc; + a.path = anim_get_path(ANIM_PATH_LIN); + a.end = app_style.sc_opa; + a.start = OPA_TRANSP; + a.fp = (anim_fp_t) lv_obj_set_opa; + anim_create(&a); +#endif + + return LV_ACTION_RES_INV; +} + +/*----------------------- + SHORTCUT ACTIONS + ------------------------*/ + +/** + * Called when the shortcut page is released to hide the app list and/or + * go back from connection mode + * @param page pointer to the sc page + * @param dispi pointer to the caller display input + * @return LV_ACTION_RES_OK because the sc page is not deleted + */ +static lv_action_res_t lv_app_sc_page_rel_action(lv_obj_t * page, lv_dispi_t * dispi) +{ + /*Close the list if opened*/ + if(app_list != NULL) { + lv_obj_del(app_list); + app_list = NULL; + } + + if(con_send != NULL) { + lv_app_inst_t * i; + LL_READ(app_inst_ll, i) { + if(i->sc != NULL) lv_obj_set_style(i->sc, &app_style.sc_style); + } + con_send = NULL; + } + + return LV_ACTION_RES_OK; +} + +/** + * Called when a shortcut is released to open its window (or close app list if opened) (in normal mode) or + * add/remove it to/form a connection (in connection mode) + * @param sc pointer to the releases shortcut object + * @param dispi pointer to the caller display input + * @return LV_ACTION_RES_OK because the sc page is not deleted + */ +static lv_action_res_t lv_app_sc_rel_action(lv_obj_t * sc, lv_dispi_t * dispi) +{ + /*Normal mode*/ + if(con_send == NULL) { + +#if LV_APP_EFFECT_ANIM == 0 + lv_page_focus(sc_page, sc, false); +#else + lv_page_focus(sc_page, sc, true); +#endif + /*Close the list if opened*/ + if(app_list != NULL) { + lv_obj_del(app_list); + app_list = NULL; + } + /*Else open the window of the shortcut*/ + else { + lv_app_inst_t * app = lv_obj_get_free_p(sc); + lv_app_win_open(app); + + lv_app_win_open_anim_create(app); + } + } + /*Connection mode: toggle the connection of 'con_sender' and this app */ + else { + lv_app_inst_t * app = lv_obj_get_free_p(sc); + if(app != con_send) { /*Do nothing with the sender*/ + lv_btns_t * style = lv_obj_get_style(sc); + /*Add connection to this application*/ + if(style == &app_style.sc_style) { + lv_obj_set_style(sc, &app_style.sc_rec_style); + lv_app_con_set(con_send, app); + } else { /*Remove the applications connection*/ + lv_obj_set_style(sc, &app_style.sc_style); + lv_app_con_del(con_send, app); + } + } + } + + return LV_ACTION_RES_OK; +} + +/** + * Called when a shortcut id long pressed to toggle normal and connection mode + * @param sc pointer to the long presse shortcut + * @param dispi pointer to the caller display input + * @return LV_ACTION_RES_OK because the shortcut is not deleted + */ +static lv_action_res_t lv_app_sc_lpr_action(lv_obj_t * sc, lv_dispi_t * dispi) +{ + lv_app_inst_t * app_send = lv_obj_get_free_p(sc); + + if(con_send == app_send) { + lv_app_inst_t * i; + LL_READ(app_inst_ll, i) { + if(i->sc != NULL) lv_obj_set_style(i->sc, &app_style.sc_style); + } + con_send = NULL; + } else { + if(con_send != NULL) { + lv_app_inst_t * i; + LL_READ(app_inst_ll, i) { + if(i->sc != NULL) lv_obj_set_style(i->sc, &app_style.sc_style); + } + } + + con_send = app_send; + lv_obj_set_style(sc, &app_style.sc_send_style); + lv_app_inst_t * i; + LL_READ(app_inst_ll, i) { + if(i->sc != NULL && lv_app_con_check(con_send, i) != false) { + lv_obj_set_style(i->sc, &app_style.sc_rec_style); + } + } + } + + return LV_ACTION_RES_OK; +} + +/*----------------------- + WINDOW ACTIONS + ------------------------*/ + +/** + * Called when the close button of window is released + * @param close_btn pointer to the close button + * @param dispi pointer to the caller display input + * @return LV_ACTION_RES_OK or LV_ACTION_RES_INC depending on LV_APP_EFFECT_... settings type + */ +static lv_action_res_t lv_app_win_close_action(lv_obj_t * close_btn, lv_dispi_t * dispi) +{ + lv_obj_t * win = lv_win_get_from_ctrl_btn(close_btn); + lv_app_inst_t * app = lv_obj_get_free_p(win); + + lv_app_kb_close(false); + +#if LV_APP_EFFECT_ANIM != 0 && LV_APP_EFFECT_OPA != 0 && LV_APP_ANIM_WIN != 0 + lv_obj_anim(app->win, LV_ANIM_FADE | ANIM_OUT, LV_APP_ANIM_WIN, 0, lv_app_win_close_anim_cb); + lv_app_sc_close(app); + /*The animation will close the window*/ + return LV_ACTION_RES_OK; +#else + lv_app_close(app); + return LV_ACTION_RES_INV; +#endif +} + +/** + * Called when the minimization button of window is released + * @param close_minimointer to the minim. button + * @param dispi pointer to the caller display input + * @return LV_ACTION_RES_OK or LV_ACTION_RES_INC depending on LV_APP_EFFECT_... settings type + */ +static lv_action_res_t lv_app_win_minim_action(lv_obj_t * close_minim, lv_dispi_t * dispi) +{ + lv_obj_t * win = lv_win_get_from_ctrl_btn(close_minim); + lv_app_inst_t * app = lv_obj_get_free_p(win); + + lv_app_kb_close(false); + + /*Make an animation on window minimization*/ + lv_action_res_t res; + res = lv_app_win_minim_anim_create(app); + + return res; +} + +/*----------------------- + ANIMATIONS + ------------------------*/ + +/** + * Create a window open animation + * @param app pointer to an application + * @return LV_ACTION_RES_OK: because the window is not deleted here + */ +static lv_action_res_t lv_app_win_open_anim_create(lv_app_inst_t * app) +{ + /*Make an animation on window open*/ +#if LV_APP_EFFECT_ANIM != 0 && LV_APP_ANIM_WIN != 0 + + area_t cords; /*If no shortcut simulate one or load the its coordinates*/ + if(app->sc == NULL) { + cords.x1 = LV_HOR_RES / 2 - LV_APP_SC_WIDTH / 2; + cords.y1 = LV_VER_RES / 2 - LV_APP_SC_HEIGHT / 2; + cords.x2 = cords.x1 + LV_APP_SC_WIDTH; + cords.y2 = cords.y1 + LV_APP_SC_HEIGHT; + } else { + lv_obj_get_cords(app->sc, &cords); + } + + anim_t a; + a.act_time = 0; + a.time = LV_APP_ANIM_WIN; + a.end_cb = NULL; + a.playback = 0; + a.repeat = 0; + a.var = app->win; + a.path = anim_get_path(ANIM_PATH_LIN); + + a.start = lv_obj_get_width(app->sc); + a.end = LV_HOR_RES; + a.fp = (anim_fp_t) lv_obj_set_width; + anim_create(&a); + + a.start = lv_obj_get_height(app->sc); + a.end = LV_VER_RES; + a.fp = (anim_fp_t) lv_obj_set_height; + anim_create(&a); + + a.start = cords.x1; + a.end = 0; + a.fp = (anim_fp_t) lv_obj_set_x; + anim_create(&a); + + a.start = cords.y1; + a.end = 0; + a.fp = (anim_fp_t) lv_obj_set_y; + anim_create(&a); + +#if LV_APP_EFFECT_OPA_ANIM != 0 + a.start = OPA_TRANSP; + a.end = OPA_COVER; + a.fp = (anim_fp_t) lv_obj_set_opar; + anim_create(&a); +#endif /*LV_APP_EFFECT_OPA != 0*/ +#endif /*LV_APP_EFFECT_ANIM != 0 && LV_APP_ANIM_WIN != 0*/ + + return LV_ACTION_RES_OK; +} + +/** + * Create a window minimization animation + * @param app pointer to an application + * @return LV_ACTION_RES_OK or LV_ACTION_RES_INV depending on LV_APP_EFFECT_... settings + */ +static lv_action_res_t lv_app_win_minim_anim_create(lv_app_inst_t * app) +{ +#if LV_APP_EFFECT_ANIM != 0 && LV_APP_ANIM_WIN != 0 + area_t cords; + if(app->sc == NULL) { + cords.x1 = LV_HOR_RES / 2 - LV_APP_SC_WIDTH / 2; + cords.y1 = LV_VER_RES / 2 - LV_APP_SC_HEIGHT / 2; + cords.x2 = cords.x1 + LV_APP_SC_WIDTH; + cords.y2 = cords.y1 + LV_APP_SC_HEIGHT; + } else { + lv_obj_get_cords(app->sc, &cords); + } + + anim_t a; + a.act_time = 0; + a.time = LV_APP_ANIM_WIN; + a.end_cb = NULL; + a.playback = 0; + a.repeat = 0; + a.var = app->win; + a.path = anim_get_path(ANIM_PATH_LIN); + + + a.end = lv_obj_get_width(app->sc); + a.start = LV_HOR_RES; + a.fp = (anim_fp_t) lv_obj_set_width; + anim_create(&a); + + a.end = lv_obj_get_height(app->sc); + a.start = LV_VER_RES; + a.fp = (anim_fp_t) lv_obj_set_height; + anim_create(&a); + + a.end = cords.x1; + a.start = 0; + a.fp = (anim_fp_t) lv_obj_set_x; + anim_create(&a); + + a.end = cords.y1; + a.start = 0; + a.fp = (anim_fp_t) lv_obj_set_y; +#if LV_APP_EFFECT_OPA == 0 + a.end_cb = (void (*)(void *))lv_app_win_close_anim_cb; +#endif + anim_create(&a); + +#if LV_APP_EFFECT_OPA_ANIM != 0 + a.end = OPA_TRANSP; + a.start = OPA_COVER; + a.fp = (anim_fp_t) lv_obj_set_opar; + a.end_cb = (void (*)(void *))lv_app_win_close_anim_cb; + anim_create(&a); +#endif + return LV_ACTION_RES_OK; +#else /*LV_APP_ANIM_WIN == 0 || LV_APP_ANIM_LEVEL == 0*/ + lv_app_win_close(app); + return LV_ACTION_RES_INV; +#endif +} + +#if LV_APP_EFFECT_ANIM != 0 +/** + * Called when the window close or minimization animation is ready to close the window + * @param app_win pointer to a window + */ +static void lv_app_win_close_anim_cb(lv_obj_t * app_win) +{ + lv_app_inst_t * app = lv_obj_get_free_p(app_win); + lv_app_win_close(app); +} +#endif + +/** + * Init the application styles + */ +static void lv_app_init_style(void) +{ + /*Coordinates*/ + app_style.menu_h = 40 * LV_DOWNSCALE; + app_style.app_list_w = LV_HOR_RES / 3; + app_style.app_list_h = (2 * LV_VER_RES) / 3; + app_style.sc_title_margin = 2 * LV_DOWNSCALE; + + /*Opacity*/ +#if LV_APP_EFFECT_OPA == 0 + app_style.menu_opa = OPA_COVER; + app_style.menu_btn_opa = OPA_COVER; + app_style.sc_opa = OPA_COVER; +#else + app_style.menu_opa = OPA_80; + app_style.menu_btn_opa = OPA_50; + app_style.sc_opa = OPA_80; +#endif + + /*Menu style*/ + lv_rects_get(LV_RECTS_DEF,&app_style.menu_style); + app_style.menu_style.objs.color = COLOR_BLACK; + app_style.menu_style.gcolor = COLOR_BLACK; + app_style.menu_style.round = 0; + app_style.menu_style.bwidth = 0; + app_style.menu_style.light = 0; + + lv_btns_get(LV_BTNS_DEF,&app_style.menu_btn_style); + memcpy(&app_style.menu_btn_style.rects, &app_style.menu_style, sizeof(lv_rects_t)); + app_style.menu_btn_style.flags[LV_BTN_STATE_REL].light_en = 0; + app_style.menu_btn_style.flags[LV_BTN_STATE_PR].light_en = 0; + + app_style.menu_btn_style.flags[LV_BTN_STATE_REL].empty = 1; + app_style.menu_btn_style.flags[LV_BTN_STATE_PR].empty = 0; + + app_style.menu_btn_style.mcolor[LV_BTN_STATE_REL] = COLOR_BLACK; + app_style.menu_btn_style.gcolor[LV_BTN_STATE_REL] = COLOR_BLACK; + app_style.menu_btn_style.mcolor[LV_BTN_STATE_PR] = COLOR_GRAY; + app_style.menu_btn_style.gcolor[LV_BTN_STATE_PR] = COLOR_GRAY; + + lv_labels_get(LV_LABELS_BTN,&app_style.menu_btn_label_style); + app_style.menu_btn_label_style.font = LV_APP_FONT_LARGE; + app_style.menu_btn_label_style.objs.color = COLOR_MAKE(0xd0, 0xe0, 0xf0); + + lv_imgs_get(LV_IMGS_DEF,&app_style.menu_btn_img_style); + app_style.menu_btn_img_style.objs.color = COLOR_WHITE; + app_style.menu_btn_img_style.recolor_opa = OPA_90; + + /*App list styles*/ + lv_lists_get(LV_LISTS_DEF,&app_style.app_list_style); + memcpy(&app_style.app_list_style.liste_btns, &app_style.menu_btn_style, sizeof(lv_btns_t)); + memcpy(&app_style.app_list_style.bg_pages.bg_rects, &app_style.menu_style, sizeof(lv_rects_t)); + memcpy(&app_style.app_list_style.liste_labels, &app_style.menu_btn_label_style, sizeof(lv_labels_t)); + app_style.app_list_style.bg_pages.bg_rects.vpad = 0; + app_style.app_list_style.bg_pages.bg_rects.hpad = 0; + app_style.app_list_style.bg_pages.bg_rects.opad = 0; + app_style.app_list_style.bg_pages.scrable_rects.objs.transp = 1; + app_style.app_list_style.bg_pages.scrable_rects.vpad = 0; + app_style.app_list_style.bg_pages.scrable_rects.hpad = 0; + app_style.app_list_style.bg_pages.scrable_rects.opad = 0; + app_style.app_list_style.bg_pages.sb_rects.objs.color = COLOR_GRAY; + app_style.app_list_style.bg_pages.sb_rects.gcolor = COLOR_GRAY; + app_style.app_list_style.bg_pages.sb_width = 8 * LV_DOWNSCALE; + + /*Shortcut page styles*/ + lv_pages_get(LV_PAGES_DEF,&app_style.sc_page_style); + app_style.sc_page_style.bg_rects.empty = 1; + app_style.sc_page_style.bg_rects.round = 0; + app_style.sc_page_style.bg_rects.bwidth = 0; + app_style.sc_page_style.bg_rects.vpad = app_style.menu_h; + app_style.sc_page_style.bg_rects.hpad = 0; + app_style.sc_page_style.bg_rects.opad = 0; + app_style.sc_page_style.scrable_rects.objs.transp = 1; + app_style.sc_page_style.scrable_rects.hpad = 20 * LV_DOWNSCALE; + app_style.sc_page_style.scrable_rects.vpad = 20 * LV_DOWNSCALE; + app_style.sc_page_style.scrable_rects.opad = 20 * LV_DOWNSCALE; + + /*Shortcut styles*/ + lv_btns_get(LV_BTNS_DEF,&app_style.sc_style); + app_style.sc_style.mcolor[LV_BTN_STATE_REL] = COLOR_WHITE; + app_style.sc_style.gcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x20, 0x30, 0x40); + app_style.sc_style.bcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x40, 0x60, 0x80); + app_style.sc_style.mcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0xB0, 0xD0, 0xF0); + app_style.sc_style.gcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x00, 0x00, 0x00); + app_style.sc_style.bcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0xB0, 0xD0, 0xF0); + app_style.sc_style.rects.bopa = 70; + app_style.sc_style.rects.bwidth = 1 * LV_DOWNSCALE; + + memcpy(&app_style.sc_send_style, &app_style.sc_style, sizeof(lv_btns_t)); + app_style.sc_send_style.mcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0xFF, 0xE0, 0xE0); + app_style.sc_send_style.gcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x50, 0x20, 0x00); + app_style.sc_send_style.bcolor[LV_BTN_STATE_REL] = COLOR_BLACK; + app_style.sc_send_style.flags[LV_BTN_STATE_REL].light_en = 1; + app_style.sc_send_style.mcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0xFF, 0xB0, 0xB0); + app_style.sc_send_style.gcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x20, 0x10, 0x00); + app_style.sc_send_style.bcolor[LV_BTN_STATE_PR] = COLOR_BLACK; + app_style.sc_send_style.flags[LV_BTN_STATE_PR].light_en = 1; + app_style.sc_send_style.rects.light = 10 * LV_DOWNSCALE; + app_style.sc_send_style.rects.bopa = 30; + app_style.sc_send_style.rects.bwidth = 3 * LV_DOWNSCALE; + + memcpy(&app_style.sc_rec_style, &app_style.sc_style, sizeof(lv_btns_t)); + app_style.sc_rec_style.mcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0xE0, 0xFF, 0xE0); + app_style.sc_rec_style.gcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x20, 0x50, 0x20); + app_style.sc_rec_style.bcolor[LV_BTN_STATE_REL] = COLOR_BLACK; + app_style.sc_rec_style.flags[LV_BTN_STATE_REL].light_en = 1; + app_style.sc_rec_style.mcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0xB0, 0xFF, 0xB0); + app_style.sc_rec_style.gcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x20, 0x20, 0x10); + app_style.sc_rec_style.bcolor[LV_BTN_STATE_PR] = COLOR_BLACK; + app_style.sc_rec_style.flags[LV_BTN_STATE_PR].light_en = 1; + app_style.sc_rec_style.rects.light = 10 * LV_DOWNSCALE; + app_style.sc_rec_style.rects.bopa = 30; + app_style.sc_rec_style.rects.bwidth = 3 * LV_DOWNSCALE; + + + lv_labels_get(LV_LABELS_DEF,&app_style.sc_title_style); + app_style.sc_title_style.font = LV_APP_FONT_SMALL; + app_style.sc_title_style.objs.color = COLOR_MAKE(0x20, 0x30, 0x40); + app_style.sc_title_style.mid = 1; + + /*Window styles*/ + lv_wins_get(LV_WINS_DEF,&app_style.win_style); + memcpy(&app_style.win_style.header, &app_style.menu_style, sizeof(lv_rects_t)); + memcpy(&app_style.win_style.title, &app_style.menu_btn_label_style, sizeof(lv_labels_t)); + memcpy(&app_style.win_style.ctrl_btn, &app_style.menu_btn_style, sizeof(lv_btns_t)); + memcpy(&app_style.win_style.ctrl_img, &app_style.menu_btn_img_style, sizeof(lv_imgs_t)); + app_style.win_style.header_on_content = 1; + app_style.win_style.header_opa = app_style.menu_opa; + app_style.win_style.ctrl_btn_opa = app_style.menu_btn_opa; + app_style.win_style.header.vpad = 5 * LV_DOWNSCALE; + app_style.win_style.header.hpad = 5 * LV_DOWNSCALE; + app_style.win_style.header.opad = 5 * LV_DOWNSCALE; + app_style.win_style.content.bg_rects.vpad = app_style.win_style.ctrl_btn_h + + 2 * app_style.win_style.header.vpad; + app_style.win_style.content.bg_rects.hpad = 5 * LV_DOWNSCALE; + app_style.win_style.content.scrable_rects.objs.transp = 1; +} + +/** + * Create files for the icons + */ +static void lv_app_init_icons(void) +{ + lv_img_create_file("icon_add", img_add); + lv_img_create_file("icon_battery_empty", img_battery_empty); + lv_img_create_file("icon_battery_full", img_battery_full); + lv_img_create_file("icon_battery_half", img_battery_half); + lv_img_create_file("icon_bubble", img_bubble); + lv_img_create_file("icon_calendar", img_calendar); + lv_img_create_file("icon_clock", img_clock); + lv_img_create_file("icon_close", img_close); + lv_img_create_file("icon_down", img_down); + lv_img_create_file("icon_driver", img_driver); + lv_img_create_file("icon_eject", img_eject); + lv_img_create_file("icon_folder", img_folder); + lv_img_create_file("icon_image", img_image); + lv_img_create_file("icon_left", img_left); + lv_img_create_file("icon_music", img_music); + lv_img_create_file("icon_ok", img_ok); + lv_img_create_file("icon_play", img_play); + lv_img_create_file("icon_right", img_right); + lv_img_create_file("icon_settings", img_settings); + lv_img_create_file("icon_shut_down", img_shut_down); + lv_img_create_file("icon_star", img_star); + lv_img_create_file("icon_up", img_up); + lv_img_create_file("icon_user", img_user); + lv_img_create_file("icon_video", img_video); + lv_img_create_file("icon_volume", img_volume); +} +#endif /*LV_APP_ENABLE != 0*/ + + diff --git a/lv_app/lv_app.h b/lv_app/lv_app.h new file mode 100644 index 000000000..236dc79cb --- /dev/null +++ b/lv_app/lv_app.h @@ -0,0 +1,123 @@ +/** + * @file lv_app.h + * + */ + +#ifndef LV_APP_H +#define LV_APP_H + +/********************* + * INCLUDES + *********************/ +#include "lvgl/lvgl.h" + +#if LV_APP_ENABLE != 0 + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ +typedef enum +{ + LV_APP_MODE_NONE = 0x0000, + LV_APP_MODE_NOT_LIST = 0x0001, /*Do not list the application*/ + LV_APP_MODE_NO_SC_TITLE = 0x0002, /*No short cut title*/ +}lv_app_mode_t; + +typedef enum +{ + LV_APP_COM_TYPE_STR, /*String data to process*/ + LV_APP_COM_TYPE_BIN, /*Binary data as 'int32_t' array*/ + LV_APP_COM_TYPE_SYS, /*System level event*/ + LV_APP_COM_TYPE_LOG, /*String about an event to log*/ + LV_APP_COM_TYPE_NOTE, /*String to display to the user as a notification*/ + LV_APP_COM_TYPE_TRIG, /*A trigger to do some specific action (data is ignored)*/ +}lv_app_com_type_t; + +struct __LV_APP_DSC_T; + +typedef struct +{ + const struct __LV_APP_DSC_T * dsc; + char * name; + lv_obj_t * sc; + lv_obj_t * sc_title; + lv_obj_t * win; + void * app_data; + void * sc_data; + void * win_data; +}lv_app_inst_t; + +typedef struct __LV_APP_DSC_T +{ + const char * name; + lv_app_mode_t mode; + void (*app_run)(lv_app_inst_t *, const char *); + void (*app_close) (lv_app_inst_t *); + void (*com_rec) (lv_app_inst_t *, lv_app_inst_t *, lv_app_com_type_t, const void *, uint32_t); + void (*sc_open) (lv_app_inst_t *, lv_obj_t *); + void (*sc_close) (lv_app_inst_t *); + void (*win_open) (lv_app_inst_t *, lv_obj_t *); + void (*win_close) (lv_app_inst_t *); + uint16_t app_data_size; + uint16_t sc_data_size; + uint16_t win_data_size; +}lv_app_dsc_t; + +typedef struct { + lv_rects_t menu_style; + lv_btns_t menu_btn_style; + lv_labels_t menu_btn_label_style; + lv_imgs_t menu_btn_img_style; + lv_lists_t app_list_style; + lv_pages_t sc_page_style; + lv_wins_t win_style; + lv_btns_t sc_style; + lv_btns_t sc_send_style; + lv_btns_t sc_rec_style; + lv_labels_t sc_title_style; + + opa_t menu_opa; + opa_t menu_btn_opa; + opa_t sc_opa; + + cord_t menu_h; + cord_t app_list_w; + cord_t app_list_h; + cord_t sc_title_margin; +}lv_app_style_t; + + +/********************** + * GLOBAL PROTOTYPES + **********************/ +void lv_app_init(void); +lv_app_inst_t * lv_app_run(const lv_app_dsc_t * app_dsc, const char * cstr); +void lv_app_close(lv_app_inst_t * app); +uint16_t lv_app_com_send(lv_app_inst_t * app_send, lv_app_com_type_t type , const void * data, uint32_t len); +lv_obj_t * lv_app_sc_open(lv_app_inst_t * app); +void lv_app_sc_close(lv_app_inst_t * app); +lv_obj_t * lv_app_win_open(lv_app_inst_t * app); +void lv_app_win_close(lv_app_inst_t * app); +lv_obj_t * lv_app_win_get_from_obj(lv_obj_t * obj); +const lv_app_dsc_t * lv_app_dsc_get(const char * name); + +void lv_app_con_set(lv_app_inst_t * sender, lv_app_inst_t * receiver); +lv_app_style_t * lv_app_get_style(void); +void lv_app_rename(lv_app_inst_t * app, const char * name); +void lv_app_refr_style(void); + +lv_app_inst_t * lv_app_get_next(lv_app_inst_t * prev, lv_app_dsc_t * dsc); + +const lv_app_dsc_t * lv_app_example_init(void); + +/********************** + * MACROS + **********************/ + +#endif /*LV_APP_ENABLE != 0*/ + +#endif /*LV_APP_H*/ diff --git a/lv_app/lv_app_sup.c b/lv_app/lv_app_sup.c new file mode 100644 index 000000000..ca6c247eb --- /dev/null +++ b/lv_app/lv_app_sup.c @@ -0,0 +1,268 @@ +/** + * @file lv_app_sup.c + * + */ + +/********************* + * INCLUDES + *********************/ +#include "lv_app_sup.h" +#if LV_APP_ENABLE != 0 + +#include "../lv_objx/lv_btnm.h" +#include "../lv_objx/lv_ta.h" + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * STATIC PROTOTYPES + **********************/ +static lv_action_res_t lv_app_kb_action(lv_obj_t * btnm, uint16_t i); + +/********************** + * STATIC VARIABLES + **********************/ +static lv_obj_t * kb_btnm; +static lv_obj_t * kb_win; +static lv_obj_t * kb_ta; +static const char * kb_map_lc[] = { +"\0051#", "\004q", "\004w", "\004e", "\004r", "\004t", "\004y", "\004u", "\004i", "\004o", "\004p", "\007Del", "\n", +"\007ABC", "\004a", "\004s", "\004d", "\004f", "\004g", "\004h", "\004j", "\004k", "\004l", "\010Enter", "\n", +"*", "-", "z", "x", "c", "v", "b", "n", "m", ".", ",", ";", "\n", +"\002Hide", "\002Left", "\006 ", "\002Right", "\002Ok", "" +}; + +static const char * kb_map_uc[] = { +"\0051#", "\004Q", "\004W", "\004E", "\004R", "\004T", "\004Y", "\004U", "\004I", "\004O", "\004P", "\007Del", "\n", +"\007abc", "\004A", "\004S", "\004D", "\004F", "\004G", "\004H", "\004J", "\004K", "\004L", "\010Enter", "\n", +"*", "/", "Z", "X", "C", "V", "B", "N", "M", ".", ",", ";", "\n", +"\002Hide", "\002Left", "\006 ", "\002Right", "\002Ok", "" +}; + +static const char * kb_map_spec[] = { +"0", "1", "2", "3", "4", "5", "6", "4", "8", "9", "\002Del", "\n", +"\002abc", "+", "-", "=", "%", "!", "?", "#", "<", ">", "\002Enter", "\n", +"\\", "@", "$", "_", "(", ")", "{", "}", "[", "]", ":", "\"", "'", "\n", +"\002Hide", "\002Left", "\006 ", "\002Right", "\002Ok", "" +}; + +static const char * kb_map_num[] = { +"1", "2", "3", "\002Hide","\n", +"4", "5", "6", "\002Ok", "\n", +"7", "8", "9", "\002Del", "\n", +"+/-", "0", ".", "Left", "Right", "" +}; + +static cord_t kb_ta_ori_size; +static uint8_t kb_mode; +static bool kb_first; +static void (*kb_close_action)(lv_obj_t *); +static void (*kb_ok_action)(lv_obj_t *); +static lv_btnms_t kb_btnms; +static bool kb_inited; + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +/** + * Open a keyboard for a text area object + * @param ta pointer to a text area object + * @param mode 'OR'd values of 'lv_app_kb_mode_t' enum + * @param close a function to call when the keyboard is closed + * @param ok a function to called when the "Ok" button is pressed + */ +void lv_app_kb_open(lv_obj_t * ta, lv_app_kb_mode_t mode, void (*close)(lv_obj_t *), void (*ok)(lv_obj_t *)) +{ + /*Init the style*/ + if(kb_inited == false) { + lv_btnms_get(LV_BTNMS_DEF, &kb_btnms); + kb_btnms.rects.opad = 4 + LV_DOWNSCALE; + kb_btnms.rects.vpad = 3 + LV_DOWNSCALE; + kb_btnms.rects.hpad = 3 + LV_DOWNSCALE; + kb_btnms.rects.round = 0; + + kb_inited = true; + } + + /*Close the previous keyboard*/ + if(kb_btnm != NULL) { + lv_app_kb_close(false); + } + + /*Save some parameters*/ + kb_ta = ta; + kb_mode = mode; + kb_close_action = close; + kb_ok_action = ok; + kb_first = false; + + /*Create a button matrix for the keyboard */ + kb_btnm = lv_btnm_create(lv_scr_act(), NULL); + lv_obj_set_size(kb_btnm, LV_HOR_RES, LV_VER_RES / 2); + lv_obj_align(kb_btnm, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0); + lv_btnm_set_cb(kb_btnm, lv_app_kb_action); + if(mode & LV_APP_KB_MODE_TXT) { + kb_btnms.labels.font = LV_APP_FONT_MEDIUM; + lv_btnm_set_map(kb_btnm, kb_map_lc); + } + else if(mode & LV_APP_KB_MODE_NUM) { + kb_btnms.labels.font = LV_APP_FONT_LARGE; + lv_btnm_set_map(kb_btnm, kb_map_num); + } + lv_obj_set_style(kb_btnm, &kb_btnms); + + /*Reduce teh size of the window and align it to the top*/ + kb_win = lv_app_win_get_from_obj(kb_ta); + lv_obj_set_height(kb_win, LV_VER_RES / 2); + lv_obj_set_y(kb_win, 0); + + /*If the text area is higher then the new size of the window redus its size too*/ + lv_app_style_t * app_style = lv_app_get_style(); + cord_t win_cont_h = lv_obj_get_height(lv_win_get_content(kb_win)) - 2 * app_style->win_style.content.scrable_rects.vpad; + kb_ta_ori_size = lv_obj_get_height(kb_ta); + if(lv_obj_get_height(kb_ta) > win_cont_h) { + lv_obj_set_height(kb_ta, win_cont_h); + } + + lv_ta_set_cursor_pos(kb_ta, LV_TA_CUR_LAST); + +#if LV_APP_ANIM_LEVEL != 0 + lv_page_focus(lv_win_get_content(kb_win), kb_ta, true); +#else + lv_page_focus(lv_win_get_content(kb_win), kb_ta, false); +#endif +} + +/** + * Close the keyboard + * @param ok true: call the ok function, false: call the close function + */ +void lv_app_kb_close(bool ok) +{ + if(kb_btnm == NULL) return; + + if(ok == false) { + if(kb_close_action != NULL) kb_close_action(kb_ta); + } else { + if(kb_ok_action != NULL) kb_ok_action(kb_ta); + } + + /*Reset the modified sizes*/ + + lv_obj_set_height(kb_ta, kb_ta_ori_size); + + lv_obj_set_size(kb_win, LV_HOR_RES, LV_VER_RES); + kb_win = NULL; + + lv_obj_del(kb_btnm); + kb_btnm = NULL; + + kb_ta = NULL; +} + + +/********************** + * STATIC FUNCTIONS + **********************/ + +/** + * Called when a button of 'kb_btnm' is released + * @param btnm pointer to 'kb_btnm' + * @param i the index of the released button from the current btnm map + * @return LV_ACTION_RES_INV if the btnm is deleted else LV_ACTION_RES_OK + */ +static lv_action_res_t lv_app_kb_action(lv_obj_t * btnm, uint16_t i) +{ + const char ** map = lv_btnm_get_map(btnm); + const char * txt = map[i]; + + /*Ignore the unit size number of the text*/ + if(txt[0] <= '\011') txt++; + + /*Do the corresponding action according to the text of the button*/ + if(strcmp(txt, "abc") == 0) { + lv_btnm_set_map(btnm, kb_map_lc); + } else if(strcmp(txt, "ABC") == 0) { + lv_btnm_set_map(btnm, kb_map_uc); + } else if(strcmp(txt, "1#") == 0) { + lv_btnm_set_map(btnm, kb_map_spec); + } else if(strcmp(txt, "Enter") == 0) { + if((kb_mode & LV_APP_KB_MODE_CLR) != 0 && kb_first == false) { + lv_ta_set_text(kb_ta, ""); + kb_first = true; + } + lv_ta_add_char(kb_ta, '\n'); + } else if(strcmp(txt, "Left") == 0) { + if((kb_mode & LV_APP_KB_MODE_CLR) != 0 && kb_first == false) { + lv_ta_set_text(kb_ta, ""); + kb_first = true; + } + lv_ta_cursor_left(kb_ta); + } else if(strcmp(txt, "Right") == 0) { + if((kb_mode & LV_APP_KB_MODE_CLR) != 0 && kb_first == false) { + lv_ta_set_text(kb_ta, ""); + kb_first = true; + } + lv_ta_cursor_right(kb_ta); + } else if(strcmp(txt, "Del") == 0) { + if((kb_mode & LV_APP_KB_MODE_CLR) != 0 && kb_first == false) { + lv_ta_set_text(kb_ta, ""); + kb_first = true; + } + lv_ta_del(kb_ta); + } else if(strcmp(txt, "+/-") == 0) { + if((kb_mode & LV_APP_KB_MODE_CLR) != 0 && kb_first == false) { + lv_ta_set_text(kb_ta, ""); + kb_first = true; + } + uint16_t cur = lv_ta_get_cursor_pos(kb_ta); + const char * ta_txt = lv_ta_get_txt(kb_ta); + if(ta_txt[0] == '-') { + lv_ta_set_cursor_pos(kb_ta, 1); + lv_ta_del(kb_ta); + lv_ta_add_char(kb_ta, '+'); + lv_ta_set_cursor_pos(kb_ta, cur); + } else if(ta_txt[0] == '+') { + lv_ta_set_cursor_pos(kb_ta, 1); + lv_ta_del(kb_ta); + lv_ta_add_char(kb_ta, '-'); + lv_ta_set_cursor_pos(kb_ta, cur); + } else { + lv_ta_set_cursor_pos(kb_ta, 0); + lv_ta_add_char(kb_ta, '-'); + lv_ta_set_cursor_pos(kb_ta, cur + 1); + } + } else if(strcmp(txt, "Hide") == 0) { + lv_app_kb_close(false); + return LV_ACTION_RES_INV; + } else if(strcmp(txt, "Ok") == 0) { + lv_app_kb_close(true); + return LV_ACTION_RES_INV; + } else { + if((kb_mode & LV_APP_KB_MODE_CLR) != 0 && kb_first == false) { + lv_ta_set_text(kb_ta, ""); + kb_first = true; + } + lv_ta_add_text(kb_ta, txt); + } + +#if LV_APP_ANIM_LEVEL != 0 + lv_page_focus(lv_win_get_content(kb_win), kb_ta, true); +#else + lv_page_focus(lv_win_get_content(kb_win), kb_ta, false); +#endif + return LV_ACTION_RES_OK; +} + +#endif /*LV_APP_ENABLE != 0*/ diff --git a/lv_app/lv_app_sup.h b/lv_app/lv_app_sup.h new file mode 100644 index 000000000..7c3221fce --- /dev/null +++ b/lv_app/lv_app_sup.h @@ -0,0 +1,40 @@ +/** + * @file lv_app_sup.h + * + */ + +#ifndef LV_APP_SUP_H +#define LV_APP_SUP_H + +/********************* + * INCLUDES + *********************/ +#include "lv_app.h" +#if LV_APP_ENABLE != 0 + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ +typedef enum +{ + LV_APP_KB_MODE_TXT = 0x01, + LV_APP_KB_MODE_NUM = 0x02, + LV_APP_KB_MODE_CLR = 0x04, /*Clear when the first character is pressed*/ +}lv_app_kb_mode_t; + +/********************** + * GLOBAL PROTOTYPES + **********************/ +void lv_app_kb_open(lv_obj_t * ta, lv_app_kb_mode_t mode, void (*close)(lv_obj_t *), void (*ok)(lv_obj_t *)); +void lv_app_kb_close(bool ok); + +/********************** + * MACROS + **********************/ +#endif /*LV_APP_ENABLE != 0*/ + +#endif /*LV_APP_SUP_H*/ diff --git a/lv_app/lv_icon/x2/img_add.c b/lv_app/lv_icon/x2/img_add.c new file mode 100644 index 000000000..d00d57751 --- /dev/null +++ b/lv_app/lv_icon/x2/img_add.c @@ -0,0 +1,53 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_ADD != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_add [] = { /*Width = 37, Height = 37*/ +37, /*Width*/ +37, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 33808, 33808, 33808, 33808, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 14791, 14791, 14823, 14823, 14791, 12678, 25356, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 2113, 2145, 2145, 2145, 2113, 0, 14823, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 2016, 2016, 27469, 8452, 0, 0, 0, 0, 0, 0, 6339, 25356, 2016, 2016, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31695, 2016, 2016, 2016, 2016, +2016, 2016, 27501, 14791, 14791, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 16904, 12678, 2145, 0, 0, 0, 0, 0, 0, 2145, 10597, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14791, 12678, 25356, 2016, 2016, 2016, +2016, 2016, 19017, 2113, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 4226, 2145, 32, 0, 0, 0, 0, 0, 0, 0, 2113, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2113, 0, 14823, 2016, 2016, 2016, +2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, +2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, +2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, +2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 2016, 2016, 2016, +2016, 2016, 21162, 6339, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 8452, 8452, 6339, 2113, 0, 0, 0, 0, 0, 0, 32, 4258, 8452, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6339, 4226, 19017, 2016, 2016, 2016, +2016, 2016, 2016, 31695, 31695, 31695, 31695, 31695, 31695, 31695, 31695, 31727, 2016, 25388, 6371, 0, 0, 0, 0, 0, 0, 6339, 23275, 31727, 31727, 31727, 31727, 31695, 31695, 31695, 31695, 31695, 29582, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 6339, 6371, 6371, 6371, 6339, 4226, 19017, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 31695, 31695, 31695, 31695, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_battery_empty.c b/lv_app/lv_icon/x2/img_battery_empty.c new file mode 100644 index 000000000..849d07539 --- /dev/null +++ b/lv_app/lv_icon/x2/img_battery_empty.c @@ -0,0 +1,34 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_BATTERY_EMPTY != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_battery_empty [] = { /*Width = 32, Height = 18*/ +32, /*Width*/ +18, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 31727, 31695, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 31695, 2016, 2016, 2016, +27469, 14823, 21130, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 21130, 12710, 25356, 2016, 2016, +16904, 8452, 27469, 35953, 38066, 38066, 35953, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35921, 35953, 38034, 27501, 6371, 14823, 2016, 2016, +10597, 6339, 35921, 48599, 42260, 42260, 46486, 48631, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48599, 48631, 52825, 38034, 6339, 8452, 2016, 2016, +10597, 10565, 46518, 57051, 35921, 35921, 52857, 63390, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 61309, 63390, 65535, 48631, 12678, 2145, 21162, 2016, +10597, 10597, 52857, 59164, 27469, 25388, 54970, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 14823, 0, 6371, 25356, +10597, 12678, 52857, 54938, 14823, 14791, 50712, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 14823, 0, 0, 14823, +10597, 12678, 52857, 52857, 10565, 8484, 48599, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 14823, 0, 0, 10565, +10597, 12678, 52857, 52857, 10597, 10565, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 14823, 0, 0, 10597, +10597, 12678, 52857, 52857, 12678, 10565, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 14823, 0, 0, 12678, +10597, 12678, 52857, 52857, 12678, 10565, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 14823, 0, 0, 12678, +10597, 12678, 52857, 52857, 10597, 10565, 48599, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 14823, 0, 0, 10597, +10597, 12678, 52857, 52825, 8484, 8452, 48599, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 8484, +10597, 12678, 52857, 57051, 19049, 19017, 52825, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 14823, 0, 32, 19017, +10597, 10597, 52857, 63422, 42260, 40179, 61277, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54970, 14791, 2145, 21130, 2016, +10597, 8452, 42292, 54938, 44405, 44373, 52857, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 59164, 61277, 44405, 8484, 6339, 2016, 2016, +10597, 32, 21162, 29614, 27501, 27501, 29614, 31695, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 31695, 33808, 23243, 32, 8452, 2016, 2016, +21130, 8484, 19017, 23275, 25356, 25356, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 25356, 19017, 6371, 19017, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_battery_full.c b/lv_app/lv_icon/x2/img_battery_full.c new file mode 100644 index 000000000..d404b3e1c --- /dev/null +++ b/lv_app/lv_icon/x2/img_battery_full.c @@ -0,0 +1,34 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_BATTERY_FULL != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_battery_full [] = { /*Width = 32, Height = 18*/ +32, /*Width*/ +18, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 31727, 31695, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 29614, 31695, 2016, 2016, 2016, +27469, 14823, 21130, 23275, 23275, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 23275, 21130, 12710, 25356, 2016, 2016, +16904, 8452, 27469, 35953, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 38066, 27501, 6371, 14791, 2016, 2016, +10597, 6339, 35921, 48599, 42292, 40179, 40147, 40147, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40147, 40147, 42292, 50712, 38034, 6339, 8452, 2016, 2016, +10597, 10565, 46518, 57051, 38034, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 27501, 27469, 35953, 59164, 50712, 12678, 2145, 21162, 2016, +10597, 10597, 52857, 59196, 29614, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 16904, 14823, 12710, 27501, 59196, 54970, 14823, 0, 6371, 25356, +10597, 12678, 52857, 57051, 19049, 2145, 2145, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 2113, 0, 16936, 54970, 54970, 16904, 0, 0, 14823, +10597, 12678, 52857, 54938, 14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 52857, 54970, 16904, 0, 0, 10565, +10597, 12678, 52857, 54938, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 54938, 54970, 16904, 0, 0, 10597, +10597, 12678, 52857, 54938, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 54938, 54970, 16904, 0, 0, 12678, +10597, 12678, 52857, 54938, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 54938, 54970, 16904, 0, 0, 12678, +10597, 12678, 52857, 54938, 14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 52857, 54970, 16904, 0, 0, 10597, +10597, 12678, 52857, 54938, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 52857, 54970, 16904, 0, 0, 8484, +10597, 12678, 52857, 57083, 23275, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 4258, 21130, 57083, 54970, 16904, 0, 32, 19017, +10597, 10597, 52857, 63422, 44373, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 33840, 31727, 42292, 65503, 57051, 14791, 2145, 21130, 2016, +10597, 8452, 42292, 54970, 46486, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40179, 40147, 44405, 57051, 44405, 8484, 6339, 2016, 2016, +10597, 32, 21162, 29614, 27501, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 27469, 25388, 27501, 31727, 23243, 32, 8452, 2016, 2016, +21130, 8484, 19017, 23275, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 25356, 19017, 6371, 19017, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_battery_half.c b/lv_app/lv_icon/x2/img_battery_half.c new file mode 100644 index 000000000..585ba7596 --- /dev/null +++ b/lv_app/lv_icon/x2/img_battery_half.c @@ -0,0 +1,34 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_BATTERY_HALF != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_battery_half [] = { /*Width = 32, Height = 18*/ +32, /*Width*/ +18, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 31695, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 2016, 2016, 2016, +25388, 14791, 19049, 23243, 23243, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 19049, 12678, 23275, 2016, 2016, +16904, 8452, 27469, 38034, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 40147, 38066, 38034, 35953, 35953, 35953, 35953, 38034, 38066, 29582, 6371, 14791, 2016, 2016, +10597, 6339, 35953, 48631, 44373, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 44373, 48599, 50712, 50712, 50712, 50712, 50744, 52857, 38066, 6371, 8452, 2016, 2016, +10597, 10565, 48599, 57083, 38034, 27501, 27501, 27501, 27501, 27501, 27501, 27501, 27501, 27501, 27501, 27501, 27501, 27501, 27501, 38034, 54970, 63422, 63390, 63390, 63390, 63422, 65535, 48631, 12678, 2145, 21130, 2016, +10597, 12678, 52857, 59196, 29582, 14791, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14791, 16904, 23275, 38034, 59196, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 14823, 0, 6339, 23275, +10597, 12678, 52857, 57051, 19049, 2113, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 4226, 2113, 0, 8452, 27501, 46486, 61309, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 16904, 0, 0, 14791, +10597, 12678, 52857, 54938, 14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 38034, 54970, 63422, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 10565, +10597, 12678, 52857, 54938, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 21130, 50744, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 10597, +10597, 12678, 52857, 54938, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 16904, 35921, 59196, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 12678, +10597, 12678, 52857, 54938, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 35921, 54938, 63422, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 12678, +10597, 12678, 52857, 54938, 14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16936, 48631, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 10597, +10597, 12678, 52857, 54938, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 31727, 57051, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 8484, +10597, 12678, 52857, 57083, 23275, 8452, 8452, 8484, 8484, 8484, 8484, 8452, 6371, 14791, 31695, 46518, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 14823, 0, 32, 19017, +10597, 12678, 52857, 65503, 46486, 35953, 35953, 35953, 35953, 35953, 35953, 35921, 33840, 40179, 52857, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54970, 14791, 4226, 21162, 2016, +10597, 8452, 42260, 54970, 46486, 42260, 42260, 42260, 42260, 42260, 42260, 42260, 40179, 44405, 52857, 57083, 57051, 57051, 57051, 57051, 57051, 57051, 57051, 57051, 57051, 57083, 61277, 44405, 8484, 6371, 2016, 2016, +10597, 32, 21130, 29582, 27469, 25388, 25388, 25388, 25388, 25388, 25388, 25388, 25356, 25388, 27501, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29614, 31695, 21162, 0, 8452, 2016, 2016, +21162, 8484, 16936, 23243, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23275, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23275, 19017, 8452, 19017, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_bubble.c b/lv_app/lv_icon/x2/img_bubble.c new file mode 100644 index 000000000..fdb713020 --- /dev/null +++ b/lv_app/lv_icon/x2/img_bubble.c @@ -0,0 +1,46 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_BUBBLE != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_bubble [] = { /*Width = 32, Height = 30*/ +32, /*Width*/ +30, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 2016, 2016, 2016, 2016, +2016, 2016, 29582, 19017, 14823, 12710, 12710, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 12710, 12710, 14791, 16936, 27469, 2016, 2016, +2016, 21162, 8484, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 6371, 14823, 31727, +25356, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19017, +19017, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, +23243, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16936, +2016, 14823, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 29582, +2016, 33808, 14823, 6371, 8452, 6339, 2113, 0, 0, 0, 0, 0, 0, 2113, 6339, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 6371, 14791, 27501, 2016, +2016, 2016, 2016, 2016, 2016, 25388, 8452, 0, 0, 0, 0, 0, 32, 10565, 27469, 2016, 2016, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 0, 0, 4226, 14791, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 32, 14791, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 4226, 14791, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 14791, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 14823, 2145, 14791, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 19017, 14791, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 31727, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_calendar.c b/lv_app/lv_icon/x2/img_calendar.c new file mode 100644 index 000000000..4822d5fd2 --- /dev/null +++ b/lv_app/lv_icon/x2/img_calendar.c @@ -0,0 +1,47 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_CALENDAR != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_calendar [] = { /*Width = 32, Height = 31*/ +32, /*Width*/ +31, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 23275, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 23243, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 14791, 14791, 2016, 2016, 2016, 31695, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31695, 29614, 2016, 2016, 2016, 14791, 14791, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 25388, 29614, 2016, 2016, 10565, 10565, 2016, 2016, 27501, 12710, 12710, 12710, 14791, 14791, 14791, 14791, 14791, 12678, 10565, 25388, 2016, 2016, 10565, 8484, 2016, 2016, 31695, 25388, 2016, 2016, +2016, 21130, 4258, 16904, 2016, 2016, 8484, 8484, 2016, 2016, 19049, 2113, 2113, 2145, 2145, 2145, 2145, 2145, 2145, 2113, 0, 16904, 2016, 2016, 8484, 8484, 2016, 2016, 19049, 6339, 14823, 33808, +25356, 4258, 0, 10565, 2016, 2016, 19049, 21130, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 19049, 21130, 2016, 2016, 12710, 0, 0, 19049, +19017, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 12710, +14823, 0, 0, 6339, 29582, 2016, 2016, 2016, 2016, 33808, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6339, 29582, 2016, 2016, 2016, 2016, 33808, 6371, 0, 0, 10597, +16904, 0, 0, 0, 4258, 12710, 21162, 23243, 14823, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 12710, 21162, 23243, 14823, 6371, 0, 0, 0, 12678, +14823, 0, 4258, 6371, 6339, 10565, 21130, 21130, 10597, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 6339, 10565, 21130, 21130, 10597, 6371, 8452, 4258, 0, 12678, +12710, 4226, 23275, 33808, 33808, 33840, 35953, 35953, 33840, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31727, 33808, 35953, 35953, 33840, 33808, 35921, 25356, 2145, 10597, +12678, 8452, 38034, 52825, 52825, 50744, 50712, 50744, 52825, 52825, 52825, 52857, 52825, 52825, 52825, 50744, 52825, 52825, 52825, 52825, 52825, 52825, 52825, 50744, 50712, 50712, 50744, 52825, 54970, 40179, 8452, 10597, +12678, 10565, 46486, 63422, 63422, 63390, 63390, 63422, 65503, 65535, 65535, 65535, 65535, 65503, 63422, 63390, 63390, 63422, 65503, 65535, 65535, 65535, 65503, 63422, 63390, 61309, 63390, 63422, 65535, 48631, 10597, 10565, +10597, 10597, 50712, 65535, 65535, 65535, 65535, 63422, 59196, 57083, 57051, 57083, 59164, 61309, 65535, 65535, 65535, 65503, 61277, 57083, 57083, 59164, 61277, 63422, 65535, 65535, 65535, 65535, 65535, 52857, 12678, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 63390, 52825, 35921, 25388, 23275, 25388, 31695, 42292, 61309, 65535, 65503, 52857, 35953, 27501, 27501, 31727, 40147, 50712, 63390, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 61309, 50744, 33840, 25356, 25356, 23243, 19017, 29614, 57051, 63422, 54938, 42292, 31695, 27469, 29582, 29582, 25356, 35921, 59164, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 63422, 61277, 57051, 54970, 57083, 46518, 21162, 23243, 48631, 52857, 35921, 31727, 42292, 52825, 61277, 48631, 16936, 19049, 54938, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 65503, 65535, 65535, 65535, 65535, 57083, 21162, 16936, 46486, 50744, 33840, 31695, 42292, 52857, 63422, 50744, 16904, 16936, 52857, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 57051, 19017, 14823, 46518, 59164, 50712, 40179, 29614, 29614, 40147, 38034, 23243, 29582, 57051, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63390, 46518, 16936, 19017, 50712, 63390, 57051, 44373, 25356, 19049, 27469, 27501, 21162, 31695, 57083, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 63390, 44373, 29582, 19017, 27501, 57051, 65503, 52857, 40179, 25388, 21162, 27469, 25356, 14823, 25356, 54938, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 65535, 65535, 63422, 50744, 29582, 21162, 29614, 44373, 63390, 63390, 42292, 33808, 33840, 35953, 40147, 31727, 14823, 21162, 50744, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 65535, 63422, 46486, 31695, 19017, 25356, 50712, 65535, 65535, 54970, 23275, 21162, 48631, 63422, 65503, 50744, 23275, 23243, 46486, 61277, 65503, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65535, 61309, 48599, 27469, 14791, 12678, 23275, 48631, 63422, 65535, 54938, 21130, 19017, 48599, 63422, 65535, 52857, 25356, 23243, 46518, 61277, 65503, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 59196, 38066, 21130, 4258, 2113, 10565, 16936, 25356, 38066, 61277, 59164, 33808, 23275, 29614, 35953, 42260, 35953, 19017, 23275, 52825, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 59164, 33808, 16904, 6371, 8452, 16936, 21162, 19049, 31695, 57083, 63390, 48599, 38034, 31727, 31727, 35953, 35921, 27501, 35921, 59164, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 61277, 44373, 33840, 31727, 33808, 35921, 35953, 35921, 42292, 59196, 65535, 63390, 57083, 52825, 48631, 48631, 50744, 54938, 59164, 65503, 65535, 65535, 65535, 65535, 52825, 10597, 10565, +10597, 10565, 48631, 65535, 65535, 65503, 54970, 50744, 52825, 52825, 52825, 50744, 50712, 54938, 63390, 65535, 65535, 65535, 65503, 61309, 59196, 61309, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 10597, 10565, +10597, 10597, 50744, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 10597, 10565, +19017, 14823, 42292, 57051, 57051, 57083, 57083, 59164, 59164, 59164, 59164, 59164, 59164, 57083, 57083, 57051, 57051, 57051, 57083, 57083, 57083, 57083, 57051, 57051, 57051, 57051, 57051, 57083, 59196, 44405, 12710, 14823, +33808, 21162, 25356, 27469, 29582, 29582, 29582, 29614, 29614, 29614, 29614, 29614, 29614, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 25388, 16936, 27501, +2016, 2016, 27469, 21162, 21162, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 23243, 25388, 31695, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_clock.c b/lv_app/lv_icon/x2/img_clock.c new file mode 100644 index 000000000..1b2370d3c --- /dev/null +++ b/lv_app/lv_icon/x2/img_clock.c @@ -0,0 +1,47 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_CLOCK != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_clock [] = { /*Width = 32, Height = 31*/ +32, /*Width*/ +31, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27469, 21162, 19017, 16936, 16904, 19017, 21130, 25388, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 19049, 12678, 6371, 4258, 2145, 2113, 32, 32, 2113, 2145, 4226, 6371, 10597, 16936, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 12678, 32, 0, 0, 0, 2145, 4226, 4258, 4258, 4226, 2145, 32, 0, 0, 0, 10565, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 19017, 4258, 0, 0, 0, 2113, 12678, 21130, 25356, 27501, 27501, 25388, 21162, 14791, 4226, 0, 0, 0, 4226, 16904, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 21162, 2113, 0, 32, 6371, 12710, 21162, 31727, 40147, 44405, 48599, 46518, 44405, 40179, 33808, 23275, 14823, 8452, 2113, 0, 0, 16904, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16936, 2113, 0, 0, 12710, 29582, 46486, 54970, 57083, 61277, 63422, 63422, 63390, 61277, 59196, 59164, 57051, 48599, 31727, 16904, 32, 0, 0, 14823, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 27501, 4226, 0, 0, 12678, 31695, 48599, 63390, 65535, 65535, 65535, 61309, 61277, 65535, 65535, 65535, 65535, 65535, 65503, 50744, 33840, 14823, 2113, 0, 2113, 23243, 2016, 2016, 2016, +2016, 2016, 27469, 8452, 0, 32, 14823, 31727, 52825, 63422, 65535, 65535, 65535, 59196, 40147, 38066, 59164, 65535, 65535, 65535, 65535, 65535, 63422, 54938, 38066, 21130, 2113, 0, 4226, 23243, 2016, 2016, +2016, 2016, 14791, 0, 0, 8484, 31695, 50712, 65503, 65535, 65535, 65535, 65535, 54970, 23275, 23243, 52825, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54970, 38034, 10597, 0, 0, 10597, 2016, 2016, +2016, 2016, 8452, 0, 32, 19017, 48631, 65503, 65535, 65535, 65535, 65535, 65535, 52857, 14791, 12710, 50712, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52825, 23243, 4258, 0, 6339, 29614, 2016, +2016, 23275, 4226, 0, 10565, 29614, 59164, 65535, 65535, 65535, 65535, 65535, 65535, 50744, 10565, 8484, 48599, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 61277, 35921, 16904, 2113, 2113, 19017, 2016, +2016, 14791, 32, 4226, 23275, 44373, 61309, 65535, 65535, 65535, 65535, 65535, 65535, 52825, 10597, 10565, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63390, 48631, 29614, 6339, 0, 8484, 27501, +27469, 8452, 0, 6371, 33840, 52857, 63422, 65535, 65535, 65535, 65535, 65535, 65535, 52825, 10597, 10597, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 59196, 40179, 8484, 0, 2113, 21162, +23243, 2145, 0, 8484, 42260, 61277, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 52825, 10597, 10597, 50744, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 48599, 10597, 0, 0, 16904, +19049, 0, 0, 10565, 46486, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52825, 10597, 8452, 42260, 57083, 57083, 57051, 57051, 59164, 63422, 65535, 65535, 65535, 65535, 52825, 12710, 0, 0, 12710, +16936, 0, 0, 10597, 48599, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52825, 10597, 32, 19049, 29582, 29582, 27501, 27469, 35953, 57083, 65535, 65535, 65535, 65535, 52857, 14791, 0, 0, 12678, +16936, 0, 0, 10597, 46518, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 21162, 8484, 19017, 23243, 23243, 21162, 19049, 31695, 54970, 65535, 65535, 65535, 65535, 52825, 14791, 0, 0, 12678, +21130, 32, 0, 10565, 44373, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 59196, 42260, 33808, 35921, 35953, 35953, 35953, 33840, 42292, 59164, 65535, 65535, 65535, 65535, 50712, 12678, 0, 0, 14823, +25356, 4258, 0, 8452, 38066, 57083, 63422, 65535, 65535, 65535, 65535, 65535, 65535, 63422, 54970, 50744, 50712, 50712, 50712, 50712, 48631, 52857, 61309, 65535, 65535, 65535, 63390, 44405, 10565, 0, 0, 19049, +31695, 10597, 0, 6339, 29614, 48631, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63422, 63390, 63390, 63390, 63390, 61309, 61309, 63390, 65503, 65535, 65535, 63422, 54938, 35921, 6371, 0, 6339, 25356, +2016, 19049, 2113, 2113, 19017, 38034, 59196, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 61277, 42292, 23275, 4226, 32, 14791, 33808, +2016, 29614, 4258, 0, 4226, 23243, 54970, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 57083, 27501, 8452, 0, 4226, 25356, 2016, +2016, 2016, 10597, 0, 0, 12678, 42260, 59196, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63390, 46486, 14823, 0, 0, 8484, 2016, 2016, +2016, 2016, 21130, 2145, 0, 4226, 19049, 38066, 61277, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63390, 44373, 25356, 6339, 0, 0, 16904, 2016, 2016, +2016, 2016, 2016, 16904, 2113, 0, 4258, 21130, 44405, 59164, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63422, 59196, 46518, 25356, 8484, 0, 0, 10597, 29614, 2016, 2016, +2016, 2016, 2016, 2016, 8484, 0, 0, 4258, 16904, 31695, 50712, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 52857, 33840, 19017, 6371, 0, 0, 6339, 33808, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 25388, 8452, 32, 0, 32, 10597, 29614, 44373, 52825, 57051, 57083, 57083, 57083, 57083, 57051, 52857, 46518, 33840, 14791, 2145, 0, 0, 6339, 23243, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 6339, 10597, 16936, 23275, 29582, 31695, 31695, 29582, 25356, 19017, 12678, 6339, 32, 0, 0, 8452, 29614, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 29614, 14823, 8452, 2113, 0, 0, 0, 4226, 8484, 12678, 12678, 10565, 4258, 0, 0, 0, 32, 6371, 12678, 27469, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 19017, 4258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 14823, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 16904, 10597, 8452, 6371, 6371, 6371, 6371, 8452, 10597, 14823, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_close.c b/lv_app/lv_icon/x2/img_close.c new file mode 100644 index 000000000..9be127a50 --- /dev/null +++ b/lv_app/lv_icon/x2/img_close.c @@ -0,0 +1,49 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_CLOSE != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_close [] = { /*Width = 35, Height = 33*/ +35, /*Width*/ +33, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 25356, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 23243, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 33808, 6371, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 4258, 29614, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 25388, 10565, 32, 0, 2145, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 14791, 0, 0, 0, 0, 4226, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 6339, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 16904, 32, 0, 0, 0, 0, 4226, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 32, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 31695, 14791, 4226, 0, 0, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 10597, 27501, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 2145, 16904, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4258, 0, 0, 0, 0, 2145, 10597, 29582, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 2145, 16904, 2016, 2016, 2016, 2016, 19049, 4226, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 4226, 23275, 2016, 2016, 27501, 4258, 0, 0, 0, 0, 2113, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 32, 6339, 10565, 10597, 8452, 32, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 10565, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12678, 2145, 0, 0, 0, 0, 0, 0, 2113, 8452, 25388, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 6371, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 6339, 0, 0, 0, 0, 0, 0, 4258, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 32, 0, 0, 0, 0, 0, 0, 0, 4226, 16904, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 0, 0, 32, 2113, 4226, 2145, 0, 0, 0, 0, 2145, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 6339, 0, 0, 0, 0, 2145, 12710, 19049, 21162, 16904, 4258, 0, 0, 0, 0, 4226, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 32, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 4226, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 10597, 29582, 2016, 2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 2145, 16904, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2113, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 2113, 14823, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 12678, 0, 0, 0, 0, 2145, 10565, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 14791, 4226, 0, 0, 0, 0, 8484, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 23243, 6339, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 2113, 0, 0, 2113, 19049, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 21162, 6371, 4226, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 14823, 4258, 4258, 16936, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 21162, 19017, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 19049, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_down.c b/lv_app/lv_icon/x2/img_down.c new file mode 100644 index 000000000..05da91b3e --- /dev/null +++ b/lv_app/lv_icon/x2/img_down.c @@ -0,0 +1,36 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_DOWN != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_down [] = { /*Width = 29, Height = 20*/ +29, /*Width*/ +20, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 23243, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 31695, 2016, 2016, 2016, +2016, 2016, 2016, 16904, 4258, 6371, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 8452, 4226, 12678, 2016, 2016, 2016, +2016, 2016, 16904, 2113, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 2113, 19017, 2016, 2016, +33808, 16904, 4258, 0, 0, 0, 0, 6371, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 2113, 12710, 2016, +19049, 2145, 0, 0, 0, 0, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 2145, 23243, +16936, 32, 0, 0, 0, 0, 0, 0, 0, 6371, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 32, 0, 0, 0, 0, 0, 0, 2113, 19049, +29582, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 4258, 19049, 2016, 2016, 2016, 2016, 2016, 31695, 6371, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29582, +2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12678, 29582, 2016, +2016, 2016, 29614, 12710, 4226, 0, 0, 0, 0, 0, 0, 32, 8452, 19049, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29614, 2016, 2016, +2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 0, 0, 32, 4226, 8484, 8452, 2113, 0, 0, 0, 0, 0, 0, 2113, 14791, 31695, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 31695, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 31695, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12678, 29614, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 14791, 6371, 12678, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_driver.c b/lv_app/lv_icon/x2/img_driver.c new file mode 100644 index 000000000..7ee6eed79 --- /dev/null +++ b/lv_app/lv_icon/x2/img_driver.c @@ -0,0 +1,45 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_DRIVER != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_driver [] = { /*Width = 32, Height = 29*/ +32, /*Width*/ +29, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 31695, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31695, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 23243, 10597, 12678, 12678, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12678, 10597, 21162, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 29614, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 23275, 4226, 0, 4226, 6371, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6371, 4226, 0, 2145, 16936, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 31727, 12678, 32, 4258, 25356, 35921, 33808, 33808, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 35921, 25388, 8452, 2113, 6371, 25356, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 21162, 4258, 2145, 14823, 42260, 54938, 52825, 50744, 50744, 50744, 50744, 50744, 50744, 50744, 50744, 50744, 50744, 52825, 54938, 44373, 19017, 4258, 32, 16904, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 12678, 0, 10565, 27501, 54938, 65535, 63422, 63390, 63390, 63390, 63390, 63390, 63390, 63390, 63390, 63390, 63390, 63422, 65535, 54970, 31695, 12710, 0, 10565, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 6339, 0, 19017, 40147, 61277, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 61309, 42292, 21162, 2113, 4258, 31695, 2016, 2016, 2016, +2016, 2016, 2016, 25388, 2145, 4226, 29614, 50712, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63390, 50744, 31727, 4258, 32, 19049, 2016, 2016, 2016, +2016, 2016, 2016, 14791, 0, 8484, 40179, 59196, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 59196, 40179, 8484, 0, 8484, 27501, 2016, 2016, +2016, 2016, 21162, 4226, 0, 14791, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 48631, 12710, 0, 0, 16936, 2016, 2016, +2016, 2016, 12710, 0, 2145, 21162, 54970, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 19049, 32, 0, 10565, 2016, 2016, +2016, 2016, 8452, 0, 12710, 31727, 57083, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 57051, 29582, 8484, 0, 6371, 2016, 2016, +2016, 29582, 4226, 2145, 25356, 44373, 61309, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 61277, 38066, 19049, 2113, 2145, 23243, 2016, +2016, 16936, 32, 6371, 38034, 57083, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 50712, 29614, 6339, 0, 10597, 29614, +27469, 6371, 0, 8452, 35953, 52857, 57051, 59164, 57083, 59196, 63422, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 59196, 57083, 59164, 54970, 46518, 29614, 6371, 0, 2113, 21130, +19017, 0, 0, 4258, 23243, 31727, 31727, 31727, 29614, 38066, 54970, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 59164, 38066, 29614, 31727, 31695, 29582, 19049, 4226, 0, 0, 14791, +14823, 0, 0, 2145, 10597, 14823, 14791, 12710, 10597, 21130, 42260, 57051, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 61277, 46486, 23243, 10597, 12710, 14791, 14791, 10565, 2113, 0, 0, 10597, +14823, 0, 0, 0, 2113, 2145, 2145, 2113, 32, 8452, 23275, 42260, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 63422, 48599, 29582, 8484, 32, 2113, 2145, 2145, 2113, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10565, 25388, 50712, 61277, 59164, 57083, 57083, 59164, 61277, 50744, 31727, 14823, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 10565, 27469, 33840, 33808, 31727, 31727, 33808, 33840, 27501, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 14823, 14791, 14791, 14791, 14791, 14823, 10597, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 2145, 2145, 2145, 2145, 2145, 2145, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, +12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, +23243, 6371, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 4226, 19017, +2016, 31727, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31727, 31695, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_eject.c b/lv_app/lv_icon/x2/img_eject.c new file mode 100644 index 000000000..60459a01d --- /dev/null +++ b/lv_app/lv_icon/x2/img_eject.c @@ -0,0 +1,43 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_EJECT != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_eject [] = { /*Width = 28, Height = 27*/ +28, /*Width*/ +27, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 14791, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 8484, 32, 6339, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 14823, 2113, 0, 0, 8452, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 32, 0, 0, 0, 2113, 10565, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 4226, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 4258, 0, 0, 0, 0, 0, 0, 0, 4226, 16904, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 19017, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 29614, 12678, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8452, 25356, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 21130, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 31727, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 23243, 6339, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 14823, 33808, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 31727, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 14791, 2016, 2016, 2016, 2016, +2016, 2016, 31727, 14823, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 21162, 2016, 2016, 2016, +2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14823, 2016, 2016, +2016, 2016, 12710, 4226, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6339, 4226, 14791, 2016, 2016, +2016, 2016, 2016, 31727, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31695, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 33808, 31727, 29614, 2016, +27469, 12678, 12710, 12710, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 12678, 10565, 23275, +19017, 2113, 2113, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2113, 0, 14791, +14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, +12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, +23243, 6371, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 4226, 19017, +2016, 31727, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31727, 31695, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_folder.c b/lv_app/lv_icon/x2/img_folder.c new file mode 100644 index 000000000..49f498c8f --- /dev/null +++ b/lv_app/lv_icon/x2/img_folder.c @@ -0,0 +1,44 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_FOLDER != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_folder [] = { /*Width = 34, Height = 28*/ +34, /*Width*/ +28, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 31727, 31727, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 25356, 16904, 12710, 12710, 12710, 12710, 14823, 21162, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 27469, 12710, 6339, 4226, 2145, 2145, 2145, 2145, 2145, 4226, 10597, 27469, 2016, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31695, 29614, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 27469, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 14791, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 10597, 8484, 23243, 2016, 2016, 2016, +2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, +2016, 2016, 2016, 23243, 6339, 8452, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8452, 8452, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6339, 2145, 19017, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 31695, 29582, 27501, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 27501, 29582, 29582, 2016, 2016, +2016, 29582, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14791, 12678, 25388, 2016, +2016, 25356, 8452, 4226, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 19049, 2016, +2016, 25356, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19017, 2016, +2016, 29582, 10597, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, +2016, 33808, 14823, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 8484, 27469, 2016, +2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 12678, 31695, 2016, +2016, 2016, 23243, 4258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 16904, 2016, 2016, +2016, 2016, 25388, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 19049, 2016, 2016, +2016, 2016, 29614, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, 2016, +2016, 2016, 33808, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6339, 27469, 2016, 2016, +2016, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 31695, 2016, 2016, +2016, 2016, 2016, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 2016, 2016, 2016, +2016, 2016, 2016, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 2016, 2016, 2016, +2016, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 2016, 2016, 2016, +2016, 2016, 2016, 19049, 4226, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 4226, 16936, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 31695, 31727, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31727, 31695, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_image.c b/lv_app/lv_icon/x2/img_image.c new file mode 100644 index 000000000..d83125e52 --- /dev/null +++ b/lv_app/lv_icon/x2/img_image.c @@ -0,0 +1,43 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_IMAGE != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_image [] = { /*Width = 32, Height = 27*/ +32, /*Width*/ +27, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 19017, 14823, 12710, 12710, 14791, 14791, 14791, 14791, 14791, 14791, 12710, 12710, 14791, 16936, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 8484, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 6371, 16904, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 23243, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 16936, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 25388, 10565, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 25356, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 29582, 19017, 16904, 10565, 2145, 0, 0, 0, 0, 0, 32, 2145, 4258, 6339, 6339, 6339, 4226, 2113, 0, 0, 0, 0, 0, 32, 10565, 14823, 16936, 27469, 2016, 2016, +2016, 21162, 8484, 2145, 2145, 2113, 0, 0, 0, 0, 0, 0, 6339, 12710, 23243, 27501, 27501, 25356, 16936, 8484, 0, 0, 0, 0, 0, 0, 2113, 2145, 2145, 6371, 16904, 33808, +25356, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 10597, 23243, 31727, 42260, 46518, 46518, 44373, 35953, 25388, 14791, 6339, 32, 0, 0, 0, 0, 0, 0, 0, 32, 19049, +19017, 32, 0, 0, 0, 0, 0, 0, 0, 4226, 23243, 38066, 52825, 59196, 63390, 63422, 63422, 63390, 61277, 54938, 44405, 29582, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 14791, +14823, 0, 0, 0, 0, 0, 0, 0, 32, 14791, 40147, 57083, 65535, 65535, 65503, 63390, 61309, 63422, 65535, 65535, 63390, 46518, 19049, 4258, 32, 0, 0, 0, 0, 0, 0, 10597, +14823, 0, 0, 0, 0, 0, 0, 2145, 12710, 31695, 54938, 65535, 65535, 63422, 50712, 42292, 42260, 48599, 61309, 65535, 65535, 57083, 40147, 21162, 4258, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 6339, 25388, 44405, 63390, 65535, 61277, 48631, 31727, 23275, 23243, 29582, 44373, 57051, 65535, 65535, 54938, 35921, 8452, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 8484, 38034, 57051, 65535, 61309, 42292, 25388, 10597, 4226, 4226, 8452, 16936, 33840, 59164, 65535, 65535, 46518, 12678, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 10597, 44405, 65503, 65535, 57083, 29614, 10565, 0, 0, 0, 0, 32, 19049, 54938, 65535, 65535, 52857, 14791, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 10597, 48599, 65535, 65535, 54970, 23243, 4226, 0, 0, 0, 0, 0, 12710, 52825, 65535, 65535, 54938, 16936, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 10597, 46518, 65535, 65535, 57051, 25388, 6371, 0, 0, 0, 0, 0, 16904, 52857, 65535, 65535, 52857, 16936, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 10565, 44373, 63390, 65535, 59196, 38034, 16936, 32, 0, 0, 0, 8452, 27501, 57051, 65535, 65535, 50744, 14791, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 8452, 33840, 52857, 65535, 65503, 50744, 33840, 16904, 6371, 6371, 12710, 27469, 42292, 61309, 65535, 63390, 44373, 10597, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 4258, 21130, 40147, 61309, 65535, 65503, 57051, 44405, 38066, 38034, 42260, 52857, 61309, 65535, 65503, 48631, 29614, 6371, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 2113, 8484, 25388, 50712, 65503, 65535, 65535, 63390, 59164, 57083, 61277, 65535, 65535, 65535, 54938, 33808, 16904, 4226, 0, 0, 0, 0, 0, 0, 12678, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 29614, 48631, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54970, 38034, 14791, 2113, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 14791, 29582, 46518, 57051, 59164, 59196, 61277, 59196, 57083, 50712, 35953, 21130, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 8452, 14791, 23243, 31727, 35953, 38034, 33808, 25388, 16936, 10565, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, +23243, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 12678, 16936, 16936, 12710, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16936, +2016, 14823, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 29582, +2016, 33808, 14823, 6371, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 6371, 6339, 6339, 6339, 6339, 6371, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 6371, 14791, 27501, 2016, +2016, 2016, 2016, 2016, 2016, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31727, 31727, 31727, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_left.c b/lv_app/lv_icon/x2/img_left.c new file mode 100644 index 000000000..9614e3c98 --- /dev/null +++ b/lv_app/lv_icon/x2/img_left.c @@ -0,0 +1,46 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_LEFT != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_left [] = { /*Width = 19, Height = 30*/ +19, /*Width*/ +30, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 29582, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 14791, 10565, 21162, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 10565, 32, 0, 6371, 23243, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12678, 32, 0, 0, 0, 6371, 23243, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 10597, 32, 0, 0, 0, 0, 0, 8452, 25356, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 14791, 2113, 0, 0, 0, 0, 0, 0, 2145, 21130, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 10597, 2113, 0, 0, 0, 0, 0, 0, 0, 8452, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 29582, 12678, 32, 0, 0, 0, 0, 0, 0, 32, 8452, 23275, 2016, +2016, 2016, 2016, 2016, 2016, 29614, 10597, 32, 0, 0, 0, 0, 0, 0, 0, 8452, 31727, 2016, 2016, +2016, 2016, 2016, 2016, 29614, 12710, 32, 0, 0, 0, 0, 0, 0, 32, 8452, 25356, 2016, 2016, 2016, +2016, 2016, 2016, 29614, 10597, 32, 0, 0, 0, 0, 0, 0, 0, 8452, 31727, 2016, 2016, 2016, 2016, +2016, 2016, 29614, 12710, 32, 0, 0, 0, 0, 0, 0, 2113, 8452, 25356, 2016, 2016, 2016, 2016, 2016, +2016, 29614, 10597, 32, 0, 0, 0, 0, 0, 0, 0, 8452, 31727, 2016, 2016, 2016, 2016, 2016, 2016, +29614, 12678, 32, 0, 0, 0, 0, 0, 0, 32, 8452, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +12678, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +8484, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +23243, 6339, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 21162, 6371, 0, 0, 0, 0, 0, 0, 0, 32, 14791, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 21162, 6371, 0, 0, 0, 0, 0, 0, 0, 4226, 12710, 29614, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 23243, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 0, 0, 0, 2145, 12710, 29614, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 23243, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 0, 0, 0, 2145, 12710, 29614, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 0, 0, 0, 0, 0, 4226, 19017, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 6371, 0, 0, 0, 0, 0, 0, 4258, 19049, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 2113, 16904, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 8452, 0, 0, 4258, 16904, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 8452, 4258, 16904, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 21162, 31727, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_music.c b/lv_app/lv_icon/x2/img_music.c new file mode 100644 index 000000000..dfd7ec2c4 --- /dev/null +++ b/lv_app/lv_icon/x2/img_music.c @@ -0,0 +1,48 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_MUSIC != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_music [] = { /*Width = 33, Height = 32*/ +33, /*Width*/ +32, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 16904, 14791, 12710, 12710, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 12710, 12710, 12710, 12710, 27469, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2113, 0, 14823, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 32, 6339, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6339, 2113, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 6339, 25356, 2016, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 2016, 2016, 27469, 8452, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 10565, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 10565, 0, 0, 12678, 2016, +2016, 2016, 2016, 2016, 29614, 21162, 19017, 19017, 21162, 16936, 4258, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 21162, 19017, 19017, 21162, 16936, 4258, 0, 0, 12678, 2016, +2016, 2016, 23243, 8484, 6339, 4258, 4226, 4226, 4258, 4226, 32, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 8484, 6339, 4258, 4226, 4226, 4258, 4226, 32, 0, 0, 12678, 2016, +2016, 31695, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 31695, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, +31695, 12710, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 31695, 12710, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, +21162, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 21162, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, +19049, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, 19049, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, +27469, 8452, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, 2016, 2016, 2016, 27469, 8452, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, +2016, 23243, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 23243, 2016, 2016, +2016, 2016, 16904, 4258, 2145, 2113, 32, 32, 2113, 2145, 6339, 19017, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 4258, 2145, 2113, 32, 32, 2113, 2145, 6339, 19017, 2016, 2016, 2016, +2016, 2016, 2016, 31695, 19017, 10565, 6371, 6371, 10565, 19017, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 19017, 10565, 6371, 6371, 10565, 19017, 33808, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 27501, 25356, 25356, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 25356, 25356, 27501, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_ok.c b/lv_app/lv_icon/x2/img_ok.c new file mode 100644 index 000000000..4bfef4062 --- /dev/null +++ b/lv_app/lv_icon/x2/img_ok.c @@ -0,0 +1,47 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_OK != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_ok [] = { /*Width = 34, Height = 31*/ +34, /*Width*/ +31, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 6339, 6371, 21130, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 6339, 29582, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 0, 32, 8452, 25388, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 4258, 0, 0, 0, 0, 2145, 10565, 29582, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 6339, 0, 0, 0, 0, 2145, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 25356, 10565, 6339, 14823, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 8484, 0, 0, 2113, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 31727, 12710, 2113, 0, 0, 0, 2145, 16936, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 33808, 14823, 4226, 0, 0, 0, 0, 4226, 25356, 2016, 2016, 29614, 6371, 0, 0, 0, 0, 2145, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 14791, 0, 0, 0, 0, 32, 6339, 10565, 12678, 8484, 2113, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 16904, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 16904, 4258, 0, 0, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 2113, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 4258, 0, 0, 2145, 12678, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 2113, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 19017, 16904, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_play.c b/lv_app/lv_icon/x2/img_play.c new file mode 100644 index 000000000..7b7e2a64c --- /dev/null +++ b/lv_app/lv_icon/x2/img_play.c @@ -0,0 +1,47 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_PLAY != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_play [] = { /*Width = 23, Height = 31*/ +23, /*Width*/ +31, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 21162, 12710, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 12678, 0, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14791, 0, 32, 8452, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 4226, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 4226, 10597, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 8484, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 32, 6339, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 10597, 25388, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 23275, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6371, 16904, 31727, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 16904, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 8484, 21130, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 16936, 33808, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 16904, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6339, 27469, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 8484, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 32, 12710, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 32, 6371, 16904, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 10565, 25388, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 16904, 0, 0, 0, 2145, 12678, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14823, 0, 0, 2145, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14823, 0, 6339, 19017, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14823, 8452, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 27501, 25388, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_right.c b/lv_app/lv_icon/x2/img_right.c new file mode 100644 index 000000000..ef13c934d --- /dev/null +++ b/lv_app/lv_icon/x2/img_right.c @@ -0,0 +1,46 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_RIGHT != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_right [] = { /*Width = 19, Height = 30*/ +19, /*Width*/ +30, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 29582, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 21162, 10565, 14791, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 23243, 6371, 0, 32, 10565, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 23243, 6371, 0, 0, 0, 32, 12678, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +25356, 8452, 0, 0, 0, 0, 0, 32, 10597, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +21130, 2145, 0, 0, 0, 0, 0, 0, 2113, 14791, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 8452, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 23275, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12678, 29582, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 25356, 8452, 2113, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12678, 29614, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 8484, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 10597, 2113, 0, 0, 0, 0, 0, 0, 0, 6339, 23243, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 0, 0, 0, 6371, 21162, 2016, +2016, 2016, 2016, 2016, 2016, 29614, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 6371, 21162, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 23243, 2016, 2016, 2016, +2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 23243, 2016, 2016, 2016, 2016, 2016, +2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +19017, 4226, 0, 0, 0, 0, 0, 0, 0, 4258, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +19049, 4258, 0, 0, 0, 0, 0, 0, 6371, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 16904, 2113, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 16904, 4258, 0, 0, 8452, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 16904, 4258, 8452, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 31727, 21162, 25388, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_settings.c b/lv_app/lv_icon/x2/img_settings.c new file mode 100644 index 000000000..7cca26464 --- /dev/null +++ b/lv_app/lv_icon/x2/img_settings.c @@ -0,0 +1,49 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_SETTINGS != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_settings [] = { /*Width = 32, Height = 33*/ +32, /*Width*/ +33, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27469, 10597, 10565, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16936, 0, 0, 14791, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 8484, 0, 0, 6371, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 21130, 23243, 2016, 2016, 29614, 19049, 12710, 6371, 2113, 0, 0, 32, 8452, 14823, 23275, 2016, 2016, 2016, 31727, 29614, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 16936, 2145, 4258, 25356, 27469, 10597, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 6339, 19017, 2016, 33808, 14791, 10597, 23275, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14823, 0, 0, 32, 6339, 6339, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4226, 8452, 8452, 2145, 32, 2113, 16904, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 31727, 14791, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8452, 25388, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29614, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 29614, 10597, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6339, 25356, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 21162, 4226, 32, 0, 0, 0, 0, 0, 2113, 4258, 8484, 10597, 10597, 8484, 4226, 32, 0, 0, 0, 0, 0, 0, 2113, 19017, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 2113, 8484, 21162, 38066, 46518, 46486, 35953, 19017, 6371, 32, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 31727, 6371, 0, 0, 0, 0, 0, 0, 6339, 23275, 40179, 57083, 65503, 65503, 54970, 35953, 19049, 4258, 0, 0, 0, 0, 0, 0, 6371, 31727, 2016, 2016, 2016, +2016, 29582, 23275, 14823, 2145, 0, 0, 0, 0, 0, 0, 12710, 44373, 61309, 65503, 65535, 65535, 63422, 59164, 40179, 10565, 0, 0, 0, 0, 0, 0, 2145, 16904, 25356, 27501, 2016, +27469, 10565, 6371, 4226, 32, 0, 0, 0, 0, 0, 0, 16936, 54970, 65535, 65535, 65535, 65535, 65535, 65535, 52825, 14791, 0, 0, 0, 0, 0, 0, 32, 4258, 6371, 8452, 23275, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 19049, 57051, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +21162, 4226, 2145, 2113, 0, 0, 0, 0, 0, 0, 32, 16936, 50744, 65535, 65535, 65535, 65535, 65535, 65535, 48631, 14791, 0, 0, 0, 0, 0, 0, 0, 2145, 4226, 2113, 16936, +2016, 29582, 21162, 12678, 2145, 0, 0, 0, 0, 0, 0, 10597, 40147, 59164, 65535, 65535, 65535, 65535, 54938, 35921, 8484, 0, 0, 0, 0, 0, 0, 4226, 16936, 25388, 29582, 2016, +2016, 2016, 2016, 23275, 4258, 0, 0, 0, 0, 0, 0, 4258, 25356, 40179, 52825, 59164, 59164, 50744, 35921, 21130, 4226, 0, 0, 0, 0, 0, 0, 6371, 31695, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 8452, 0, 0, 0, 0, 0, 0, 32, 4258, 12678, 23243, 27469, 27469, 21130, 10565, 4226, 32, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 8452, 6371, 4226, 0, 0, 0, 0, 0, 0, 0, 32, 4226, 23243, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 27469, 8452, 2113, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 4258, 21162, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 27501, 10565, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6339, 25388, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 16904, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14791, 0, 0, 0, 2113, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8452, 27469, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14823, 0, 0, 0, 10597, 12678, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 0, 0, 2145, 21130, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 27501, 12710, 8484, 14791, 29582, 29614, 19017, 10597, 8452, 4226, 32, 0, 0, 0, 2113, 4226, 6339, 10597, 19017, 16936, 8452, 6371, 14791, 29614, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 21130, 4258, 0, 0, 2113, 8484, 19017, 29614, 2016, 2016, 2016, 29582, 27469, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 8484, 0, 0, 4226, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 6371, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 4258, 2145, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_shut_down.c b/lv_app/lv_icon/x2/img_shut_down.c new file mode 100644 index 000000000..a10bd8558 --- /dev/null +++ b/lv_app/lv_icon/x2/img_shut_down.c @@ -0,0 +1,47 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_SHUT_DOWN != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_shut_down [] = { /*Width = 28, Height = 31*/ +28, /*Width*/ +31, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27469, 10597, 10565, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 0, 0, 14791, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 21130, 23275, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 25356, 19049, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 31695, 12710, 2113, 12710, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 16936, 2145, 10565, 27501, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 12710, 0, 0, 10597, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 16904, 0, 0, 10565, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 19017, 4226, 0, 0, 16936, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 23243, 4226, 0, 2113, 12710, 31727, 2016, 2016, +2016, 2016, 21162, 4226, 0, 2113, 14823, 33808, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 16936, 2016, 2016, +2016, 2016, 12678, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 10565, 2016, 2016, +2016, 31695, 6339, 0, 4226, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 8452, 0, 4226, 25356, 2016, +2016, 19017, 2113, 2113, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 4226, 0, 12678, 31695, +29582, 10565, 0, 6339, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 4258, 2145, 19017, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 8452, 0, 2145, 21162, +25356, 4258, 0, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 16904, +21162, 2113, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 12710, +19017, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 12678, +16936, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 12710, +21130, 32, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 14823, +25388, 6339, 0, 8452, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 8484, 0, 0, 19049, +31727, 12710, 32, 4226, 25356, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 6339, 0, 8452, 27469, +2016, 23275, 4226, 0, 12710, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 2113, 2113, 16936, 2016, +2016, 2016, 6371, 0, 0, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 2145, 0, 4258, 29614, 2016, +2016, 2016, 14823, 0, 0, 6339, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 8452, 0, 0, 12710, 2016, 2016, +2016, 2016, 29614, 10597, 0, 0, 6339, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 8484, 0, 0, 6371, 25356, 2016, 2016, +2016, 2016, 2016, 27501, 10565, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 6339, 0, 0, 6371, 23243, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 25388, 8484, 0, 0, 2145, 8484, 14791, 21130, 27501, 31695, 31695, 27501, 23243, 16904, 10565, 4226, 0, 0, 4258, 21130, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 27469, 12678, 2145, 0, 0, 0, 32, 8452, 12678, 12678, 8484, 2113, 0, 0, 0, 2113, 10565, 23243, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27469, 16904, 10597, 8452, 6371, 6339, 6339, 6371, 8452, 10565, 14791, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_star.c b/lv_app/lv_icon/x2/img_star.c new file mode 100644 index 000000000..de8e45510 --- /dev/null +++ b/lv_app/lv_icon/x2/img_star.c @@ -0,0 +1,49 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_STAR != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_star [] = { /*Width = 34, Height = 33*/ +34, /*Width*/ +33, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 16936, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 6371, 4226, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 6371, 0, 0, 6339, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4226, 0, 0, 2145, 12710, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 8452, 32, 0, 0, 0, 2145, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 6371, 0, 0, 0, 0, 0, 0, 6339, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 25388, 21162, 14823, 8484, 2113, 0, 0, 0, 0, 0, 0, 32, 6371, 12710, 21130, 25388, 29582, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 27469, 23275, 21130, 16904, 12678, 8452, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 6371, 10597, 14823, 19049, 23243, 25388, 33808, 2016, 2016, 2016, +2016, 2016, 2016, 14791, 2145, 4226, 4226, 2145, 2113, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 2113, 2145, 4226, 4226, 2113, 12678, 33808, 2016, 2016, +2016, 2016, 2016, 19017, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 14791, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 27501, 4258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 23243, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 21162, 6339, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 19017, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 29614, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 25356, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 6339, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4226, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 6371, 0, 0, 0, 0, 0, 0, 2113, 2145, 2113, 0, 0, 0, 0, 0, 6339, 25356, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4258, 0, 0, 32, 4258, 10565, 16904, 21130, 21162, 19017, 10597, 4258, 2113, 0, 0, 4226, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 2113, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 8484, 0, 0, 0, 12710, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 16904, 8452, 6371, 12710, 25356, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 14823, 8452, 6371, 10565, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 27469, 16904, 23243, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 10597, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_up.c b/lv_app/lv_icon/x2/img_up.c new file mode 100644 index 000000000..0777aab1e --- /dev/null +++ b/lv_app/lv_icon/x2/img_up.c @@ -0,0 +1,36 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_UP != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_up [] = { /*Width = 29, Height = 20*/ +29, /*Width*/ +20, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 14791, 6371, 12678, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12678, 29614, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 31695, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 31695, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 0, 0, 32, 4226, 8484, 8452, 2113, 0, 0, 0, 0, 0, 0, 2113, 14791, 31695, 2016, 2016, 2016, +2016, 2016, 29614, 12710, 4226, 0, 0, 0, 0, 0, 0, 32, 8452, 19049, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29614, 2016, 2016, +2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12678, 29582, 2016, +29582, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 4258, 19049, 2016, 2016, 2016, 2016, 2016, 31695, 6371, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29582, +16936, 32, 0, 0, 0, 0, 0, 0, 0, 6371, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 32, 0, 0, 0, 0, 0, 0, 2113, 19049, +19049, 2145, 0, 0, 0, 0, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 2145, 23243, +33808, 16904, 4258, 0, 0, 0, 0, 6371, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 2113, 12710, 2016, +2016, 2016, 16904, 2113, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 2113, 19017, 2016, 2016, +2016, 2016, 2016, 16904, 4258, 6371, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 8452, 4226, 12678, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 23243, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 31695, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_user.c b/lv_app/lv_icon/x2/img_user.c new file mode 100644 index 000000000..8ba77743f --- /dev/null +++ b/lv_app/lv_icon/x2/img_user.c @@ -0,0 +1,46 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_USER != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_user [] = { /*Width = 32, Height = 30*/ +32, /*Width*/ +30, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 21130, 16904, 16904, 21130, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 4258, 4226, 4226, 4226, 4226, 4258, 14791, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 2113, 0, 0, 0, 0, 0, 0, 32, 14823, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 4258, 32, 0, 0, 0, 0, 0, 0, 0, 32, 19017, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 2145, 0, 0, 0, 0, 0, 0, 2113, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 6339, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10565, 0, 0, 0, 0, 0, 0, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 14791, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 6371, 32, 0, 0, 32, 4258, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 8452, 2113, 0, 0, 32, 6339, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 14791, 8452, 4258, 2113, 0, 0, 0, 0, 32, 4226, 8452, 12710, 21130, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 14823, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 27469, 14791, 6339, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 6339, 12710, 25356, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 23275, 8484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 19049, 2016, 2016, 2016, 2016, +2016, 2016, 23243, 8484, 4258, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4226, 8452, 21130, 2016, 2016, +2016, 27469, 4258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 21162, 2016, +25388, 6371, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 21130, +19017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, +23243, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16904, +2016, 19049, 10597, 6371, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 8484, 14791, 29614, +2016, 2016, 2016, 31727, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31727, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_video.c b/lv_app/lv_icon/x2/img_video.c new file mode 100644 index 000000000..96c34d31e --- /dev/null +++ b/lv_app/lv_icon/x2/img_video.c @@ -0,0 +1,37 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_VIDEO != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_video [] = { /*Width = 32, Height = 21*/ +32, /*Width*/ +21, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 29582, 19017, 14823, 12710, 12710, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 14791, 12710, 12710, 14791, 16936, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 21162, 8484, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 6371, 16904, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +25356, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +19017, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 21162, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 31727, 4258, 10565, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 23275, 6339, 0, 10597, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 31727, 6371, 0, 0, 10597, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 23275, 8452, 32, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 2016, 2016, 8452, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 16936, 16936, 2145, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 21130, 21130, 6371, 0, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 2016, 2016, 19049, 4258, 0, 0, 0, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 19049, 6339, 0, 0, 10597, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 19049, 2145, 0, 10565, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 16936, 2113, 12678, +16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 16904, +23243, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 29614, +2016, 14823, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10565, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 33808, 14823, 6371, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 6371, 14791, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_app/lv_icon/x2/img_volume.c b/lv_app/lv_icon/x2/img_volume.c new file mode 100644 index 000000000..640b07118 --- /dev/null +++ b/lv_app/lv_icon/x2/img_volume.c @@ -0,0 +1,42 @@ +#include "img_conf.h" +#include "lv_conf.h" + +#if USE_IMG_VOLUME != 0 || LV_APP_USE_INTERNAL_ICONS == 2 + +#include +#include "misc/others/color.h" + +const color_int_t img_volume [] = { /*Width = 25, Height = 26*/ +25, /*Width*/ +26, /*Heigth*/ +16, /*Color depth = 16*/ +1, /*Flags: Transp = 1*/ +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 4226, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27469, 8484, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 10597, 2145, 0, 0, 12678, 2016, 2016, 2016, 2016, 29614, 29614, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 23243, 19017, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12678, 2145, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 31727, 21130, 23275, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 29614, 14791, 21162, 2016, +2016, 31695, 31727, 31727, 33808, 29614, 23243, 14791, 4226, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 14791, 2016, +27469, 12678, 12710, 14791, 14791, 12678, 4258, 32, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 14823, 2016, +19017, 2113, 2113, 2145, 2145, 2113, 32, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 23275, 2016, +14791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 29614, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 29582, +14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 29582, +12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 31695, +23243, 6371, 8452, 8484, 8484, 8452, 4258, 2113, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 27469, 19049, 2016, +2016, 2016, 2016, 2016, 2016, 33808, 21162, 10597, 32, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 12678, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 27469, 8484, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 14823, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 8484, 32, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 21162, 19049, 31695, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 8452, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 25356, 16936, 31727, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 29614, 27501, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 8452, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 6371, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 2145, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 16904, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, +}; + +#endif diff --git a/lv_appx/lv_app_example.c b/lv_appx/lv_app_example.c new file mode 100644 index 000000000..00e087c35 --- /dev/null +++ b/lv_appx/lv_app_example.c @@ -0,0 +1,224 @@ +/** + * @file lv_app_example.c + * + */ + +/********************* + * INCLUDES + *********************/ +#include "lv_app_example.h" +#if LV_APP_ENABLE != 0 && USE_LV_APP_EXAMPLE != 0 + +#include "../lv_app/lv_app_sup.h" +#include "misc/os/ptask.h" +#include + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/*Application specific data for an instance of this application*/ +typedef struct +{ + +}my_app_data_t; + +/*Application specific data a window of this application*/ +typedef struct +{ + +}my_win_data_t; + +/*Application specific data for a shortcut of this application*/ +typedef struct +{ + lv_obj_t * label; +}my_sc_data_t; + +/********************** + * STATIC PROTOTYPES + **********************/ +static void my_app_run(lv_app_inst_t * app, const char * cstr); +static void my_app_close(lv_app_inst_t * app); +static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec, lv_app_com_type_t type , const void * data, uint32_t len); +static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc); +static void my_sc_close(lv_app_inst_t * app); +static void my_win_open(lv_app_inst_t * app, lv_obj_t * win); +static void my_win_close(lv_app_inst_t * app); + +static lv_action_res_t ta_rel_action(lv_obj_t * ta, lv_dispi_t * dispi); +static void kb_ok_action(lv_obj_t * ta); + +/********************** + * STATIC VARIABLES + **********************/ +static lv_app_dsc_t my_app_dsc = +{ + .name = "Example", + .mode = LV_APP_MODE_NONE, + .app_run = my_app_run, + .app_close = my_app_close, + .com_rec = my_com_rec, + .win_open = my_win_open, + .win_close = my_win_close, + .sc_open = my_sc_open, + .sc_close = my_sc_close, + .app_data_size = sizeof(my_app_data_t), + .sc_data_size = sizeof(my_sc_data_t), + .win_data_size = sizeof(my_win_data_t), +}; + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +const lv_app_dsc_t * lv_app_example_init(void) +{ + return &my_app_dsc; +} + +/********************** + * STATIC FUNCTIONS + **********************/ + +/** + * Run an application according to 'app_dsc' + * @param app_dsc pointer to an application descriptor + * @param cstr a Create STRing which can give initial parameters to the application (NULL or "" if unused) + * @return pointer to the opened application or NULL if any error occurred + */ +static void my_app_run(lv_app_inst_t * app, const char * cstr) +{ + /*Initialize the application*/ + if(cstr != NULL && cstr[0] != '\0') { + char buf[256]; + sprintf(buf,"%s - %s", my_app_dsc.name, cstr); + lv_app_rename(app, buf); + } +} + +/** + * Close a running application. + * Close the Window and the Shortcut too if opened. + * Free all the allocated memory by this application. + * @param app pointer to an application + */ +static void my_app_close(lv_app_inst_t * app) +{ + /*No dynamically allocated data in 'my_app_data'*/ +} + +/** + * Read the data have been sent to this application + * @param app_send pointer to an application which sent the message + * @param app_rec pointer to an application which is receiving the message + * @param type type of data from 'lv_app_com_type_t' enum + * @param data pointer to the sent data + * @param len length of 'data' in bytes + */ +static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec, + lv_app_com_type_t type , const void * data, uint32_t len) +{ + if(type == LV_APP_COM_TYPE_STR) { /*data: string*/ + my_sc_data_t * sc_data = app_rec->sc_data; + if (sc_data->label != NULL) { + lv_label_set_text(sc_data->label, data); + lv_obj_align(sc_data->label , NULL,LV_ALIGN_CENTER, 0, 0); + } + } + else if(type == LV_APP_COM_TYPE_BIN) { /*data: array of 'int32_t' */ + + } + else if(type == LV_APP_COM_TYPE_TRIG) { /*data: ignored' */ + + } +} + +/** + * Open a shortcut for an application + * @param app pointer to an application + * @param sc pointer to an object where the application + * can create content of the shortcut + */ +static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc) +{ + my_sc_data_t * sc_data = app->sc_data; + + sc_data->label = lv_label_create(sc, NULL); + lv_label_set_text(sc_data->label, "Empty"); + lv_obj_set_style(sc_data->label, lv_labels_get(LV_LABELS_DEF, NULL)); + lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0); +} + +/** + * Close the shortcut of an application + * @param app pointer to an application + */ +static void my_sc_close(lv_app_inst_t * app) +{ + /*No dynamically allocated data in 'my_sc_data'*/ +} + + +/** + * Open the application in a window + * @param app pointer to an application + * @param win pointer to a window object where + * the application can create content + */ +static void my_win_open(lv_app_inst_t * app, lv_obj_t * win) +{ + lv_obj_t * ta; + ta = lv_ta_create(win, NULL); + lv_obj_set_size_us(ta, 200, 100); + lv_obj_set_pos_us(ta, 0, 0); + lv_obj_set_free_p(ta, app); + lv_page_set_rel_action(ta, ta_rel_action); + lv_ta_set_text(ta, "Write a text to send to the other applications"); +} + +/** + * Close the window of an application + * @param app pointer to an application + */ +static void my_win_close(lv_app_inst_t * app) +{ + +} + +/*-------------------- + * OTHER FUNCTIONS + ---------------------*/ + +/** + * Called when the text area on the window is released to open the app. keyboard + * @param ta pointer to the text area on the window + * @param dispi pointer to the caller display input + * @return LV_ACTION_RES_OK because the text area is not deleted + */ +static lv_action_res_t ta_rel_action(lv_obj_t * ta, lv_dispi_t * dispi) +{ + lv_app_kb_open(ta, LV_APP_KB_MODE_TXT | LV_APP_KB_MODE_CLR, NULL, kb_ok_action); + return LV_ACTION_RES_OK; +} + +/** + * Called when the "Ok" button is pressed on the app. keyboard + * @param ta pointer to the text area assigned to the app. kexboard + */ +static void kb_ok_action(lv_obj_t * ta) +{ + lv_app_inst_t * app = lv_obj_get_free_p(ta); + const char * txt = lv_ta_get_txt(ta); + lv_app_com_send(app, LV_APP_COM_TYPE_STR, txt, strlen(txt) + 1); +} + +#endif /*LV_APP_ENABLE != 0 && USE_LV_APP_EXAMPLE != 0*/ diff --git a/lv_appx/lv_app_example.h b/lv_appx/lv_app_example.h new file mode 100644 index 000000000..65bb6c40e --- /dev/null +++ b/lv_appx/lv_app_example.h @@ -0,0 +1,38 @@ +/** + * @file lv_app_example.h + * + */ + +#ifndef LV_APP_EXAMPLE_H +#define LV_APP_EXAMPLE_H + +/********************* + * INCLUDES + *********************/ +#include "lvgl/lv_app/lv_app.h" + +#if LV_APP_ENABLE != 0 && USE_LV_APP_EXAMPLE != 0 + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ +typedef struct +{ + +}lv_app_example_conf_t; + +/********************** + * GLOBAL PROTOTYPES + **********************/ + +/********************** + * MACROS + **********************/ + +#endif /*LV_APP_ENABLE != 0 && USE_LV_APP_EXAMPLE != 0*/ + +#endif /* LV_APP_EXAMPLE */ diff --git a/lv_conf_temp.h b/lv_conf_temp.h index 61c32ed1f..26b37debd 100644 --- a/lv_conf_temp.h +++ b/lv_conf_temp.h @@ -65,10 +65,15 @@ /*================== * LV OBJ X USAGE * ================*/ - #define USE_LV_RECT 1 #define USE_LV_LABEL 1 +#if USE_LV_LABEL != 0 +#define LV_LABEL_SCROLL_SPEED (25 * LV_DOWNSCALE) /*Hor, or ver. scroll speed (px/sec) in 'LV_LABEL_LONG_SCROLL' mode*/ +#define LV_LABEL_SCROLL_SPEED_VER (10 * LV_DOWNSCALE) /*Ver. scroll speed if hor. scroll is applied too*/ +#define LV_LABEL_SCROLL_PLAYBACK_PAUSE 500 /*Wait before the scroll turns back in ms*/ +#define LV_LABEL_SCROLL_REPEAT_PAUSE 500 /*Wait before the scroll begins again in ms*/ +#endif #define USE_LV_BTN 1 @@ -77,29 +82,48 @@ #define USE_LV_IMG 1 #if USE_LV_IMG != 0 #define LV_IMG_COLOR_TRANSP COLOR_LIME +#define LV_IMG_DEF_WALLPAPER img_bubbles_vflip #endif /*USE_LV_IMG*/ #define USE_LV_PAGE 1 +#if USE_LV_PAGE != 0 +#define LV_PAGE_ANIM_FOCUS_TIME 300 /*List focus animation time [ms] (0: turn off the animation)*/ +#endif -#define USE_LV_LIST 1 +#define USE_LV_LED 1 -#define USE_LV_CB 1 +#define USE_LV_PB 1 -#define USE_LV_PB 1 +#define USE_LV_CB 1 -#define USE_LV_CHARTBG 1 +#define USE_LV_LIST 1 -#define USE_LV_CHART 1 +#define USE_LV_BTNM 1 -#define USE_LV_LED 1 +#define USE_LV_WIN 1 -#define USE_LV_BTNM 1 +#define USE_LV_TA 1 -#define USE_LV_TA 1 +#define USE_LV_MBOX 1 /*================== - * LV APP SETTINGS + * LV APP SETTINGS * =================*/ +#define LV_APP_SC_WIDTH (LV_HOR_RES / 4) +#define LV_APP_SC_HEIGHT (LV_VER_RES / 3) + +#define LV_APP_USE_INTERNAL_ICONS 1 + +#define LV_APP_ANIM_WIN_OPEN 300 /*Animation time in milliseconds (0: turn off animation)*/ +#define LV_APP_ANIM_WIN_OPEN_COMPLEX 1 /*1: Make more complex animation on window open*/ +#define LV_APP_ANIM_WIN_MINIM 300 /*Animation time in milliseconds (0: turn off animation)*/ +#define LV_APP_ANIM_WIN_CLOSE 300 /*Animation time in milliseconds (0: turn off animation)*/ + +/* If the internal icons are not used + * set others */ +#if LV_APP_USE_INTERNAL_ICONS == 0 + +#endif /*================== * LV APP X USAGE diff --git a/lv_draw/lv_draw.c b/lv_draw/lv_draw.c index bc68bbf1f..4623bf3c0 100644 --- a/lv_draw/lv_draw.c +++ b/lv_draw/lv_draw.c @@ -53,13 +53,13 @@ static void (*map_fp)(const area_t * cords_p, const area_t * mask_p, const color static lv_rects_t lv_img_no_pic_rects = { .objs.color = COLOR_BLACK, .gcolor = COLOR_BLACK, - .bcolor = COLOR_RED, .bwidth = 2 * LV_STYLE_MULT, .bopa = 100, + .bcolor = COLOR_RED, .bwidth = 2 * LV_DOWNSCALE, .bopa = 100, .round = 0, .empty = 0 }; static lv_labels_t lv_img_no_pic_labels = { .font = LV_FONT_DEFAULT, .objs.color = COLOR_WHITE, - .letter_space = 1 * LV_STYLE_MULT, .line_space = 1 * LV_STYLE_MULT, + .letter_space = 1 * LV_DOWNSCALE, .line_space = 1 * LV_DOWNSCALE, .mid = 1, }; diff --git a/lv_draw/lv_draw_vbasic.c b/lv_draw/lv_draw_vbasic.c index 0bab48175..4b613cae8 100644 --- a/lv_draw/lv_draw_vbasic.c +++ b/lv_draw/lv_draw_vbasic.c @@ -23,10 +23,6 @@ /********************** * STATIC PROTOTYPES **********************/ -static void lv_put_vpx(point_t * point_p, const area_t * mask_p, - color_t color, opa_t opa); - -static bool lv_vletter_get_px(const font_t * font_p, uint8_t letter, cord_t x, cord_t y); /********************** * STATIC VARIABLES @@ -113,27 +109,63 @@ void lv_vletter(const point_t * pos_p, const area_t * mask_p, color_t color, opa_t opa) { if(font_p == NULL) return; - - uint8_t w = font_get_width(font_p, letter); - uint8_t h = font_get_height(font_p); + + uint8_t letter_w = font_get_width(font_p, letter); + uint8_t letter_h = font_get_height(font_p); + + const uint8_t * map_p = font_get_bitmap(font_p, letter); + + if(map_p == NULL) return; /*If the letter is completely out of mask don't draw it */ - if(pos_p->x + w < mask_p->x1 || pos_p->x > mask_p->x2 || - pos_p->y + h < mask_p->y1 || pos_p->y > mask_p->y2) return; + if(pos_p->x + letter_w < mask_p->x1 || pos_p->x > mask_p->x2 || + pos_p->y + letter_h < mask_p->y1 || pos_p->y > mask_p->y2) return; + lv_vdb_t * vdb_p = lv_vdb_get(); + cord_t vdb_width = area_get_width(&vdb_p->vdb_area); + color_t * vdb_buf_tmp = vdb_p->buf; cord_t col, row; - point_t act_point; + uint8_t col_bit; + uint8_t col_byte_cnt; - for(row = 0; row < h; row ++) { - for(col = 0; col < w; col ++) { - act_point.x = pos_p->x + col; - act_point.y = pos_p->y + row; + cord_t col_start = pos_p->x >= mask_p->x1 ? 0 : mask_p->x1 - pos_p->x; + cord_t col_end = pos_p->x + letter_w <= mask_p->x2 ? letter_w : mask_p->x2 - pos_p->x + 1; + cord_t row_start = pos_p->y >= mask_p->y1 ? 0 : mask_p->y1 - pos_p->y; + cord_t row_end = pos_p->y + letter_h <= mask_p->y2 ? letter_h : mask_p->y2 - pos_p->y + 1; - if(lv_vletter_get_px(font_p, letter, col, row)) { - lv_put_vpx(&act_point, mask_p, color, opa); + /*Set a pointer on VDB to the first pixel of the letter*/ + vdb_buf_tmp += ((pos_p->y - vdb_p->vdb_area.y1) * vdb_width) + + pos_p->x - vdb_p->vdb_area.x1; + + /*If the letter is partially out of mask the move there on VDB*/ + vdb_buf_tmp += (row_start * vdb_width) + col_start; + + /*Move on the map too*/ + map_p += (row_start * font_p->width_byte) + (col_start>>3); + + for(row = row_start; row < row_end; row ++) { + col_byte_cnt = 0; + col_bit = 7 - ((col_start / 2) % 8); + for(col = col_start; col < col_end; col ++) { + + if((*map_p & (1 << col_bit)) != 0) { + if(opa == OPA_COVER) *vdb_buf_tmp = color; + else *vdb_buf_tmp = color_mix(color, *vdb_buf_tmp, opa); } + vdb_buf_tmp++; + /*Use a col. more times depending on LV_UPSCALE_FONT*/ + if(col_bit != 0) col_bit --; + else { + col_bit = 7; + col_byte_cnt ++; + map_p ++; + + } } + + map_p += font_p->width_byte - col_byte_cnt; + vdb_buf_tmp += vdb_width - (col_end - col_start); /*Next row in VDB*/ } } @@ -312,85 +344,6 @@ void lv_vmap(const area_t * cords_p, const area_t * mask_p, * STATIC FUNCTIONS **********************/ -/** - * Put a pixel into the Virtual Dispaly Buffer - * @param x x coordinate of the pixel - * @param y y coordinate of the pixel - * @param mask_p the pixel will be drawn on this area - * @param color color of the pixel - * @param opa opacity of the pixel - */ -static void lv_put_vpx(point_t * point_p, const area_t * mask_p, - color_t color, opa_t opa) -{ - if(opa == OPA_TRANSP) return; - - bool point_ok; - lv_vdb_t * vdb_p = lv_vdb_get(); - - /*The point is on vdb?*/ - point_ok = area_is_point_on(mask_p, point_p); - - /*If there are common part of the three area then draw to the vdb*/ - if(point_ok == false) return; - point_t vdb_rel_point; /*Stores relative coordinates on vdb*/ - vdb_rel_point.x = point_p->x - vdb_p->vdb_area.x1; - vdb_rel_point.y = point_p->y - vdb_p->vdb_area.y1; - - color_t * vdb_buf_tmp = vdb_p->buf; - uint32_t vdb_width = vdb_p->vdb_area.x2 - vdb_p->vdb_area.x1 + 1; - - /*Move the vdb_tmp to the point*/ - vdb_buf_tmp += vdb_width * vdb_rel_point.y + vdb_rel_point.x; - - if(opa == OPA_COVER) *vdb_buf_tmp = color; - else *vdb_buf_tmp = color_mix(color, *vdb_buf_tmp, opa); -} - -/** - * Get a pixel from a letter - * @param font_p pointer to a font - * @param letter a letter - * @param x x coordinate of the pixel to get - * @param y y coordinate of the pixel to get - * @return true: pixel is set, false: pixel is clear - */ -static bool lv_vletter_get_px(const font_t * font_p, uint8_t letter, cord_t x, cord_t y) -{ - uint8_t w = font_get_width(font_p, letter); - uint8_t h = font_get_height(font_p); - const uint8_t * map_p = font_get_bitmap(font_p, letter); - - if(map_p == NULL) return NULL; - - if(x < 0) x = 0; - if(y < 0) x = 0; - if(x >= w) x = w - 1; - if(y >= h) y = h - 1; - -#if LV_UPSCALE_FONT != 0 -#if LV_DOWNSCALE == 1 -/*Do nothing*/ -#elif LV_DOWNSCALE == 2 - x = x >> 1; - y = y >> 1; -#elif LV_DOWNSCALE == 4 - x = x >> 2; - y = y >> 2; -#else -#error "LV: not supported LV_DOWNSCALE value" -#endif -#endif /*LV_UPSCALE_FONT == 0*/ - - map_p += (uint32_t)y * font_p->width_byte; /*Go to the corresponding row of the map*/ - map_p += (x >> 3); /*Go to he corresponding col of the map*/ - - /*Get the corresponding col within a byte*/ - uint8_t map_byte = *map_p; - uint8_t col_sub = 7 - (x % 8); - if((map_byte & (1 << col_sub)) == 0) return false; - else return true; -} #endif diff --git a/lv_misc/anim.c b/lv_misc/anim.c index 6104bc362..cdd2bfa59 100644 --- a/lv_misc/anim.c +++ b/lv_misc/anim.c @@ -29,13 +29,14 @@ * STATIC PROTOTYPES **********************/ static void anim_task (void); -static void anim_ready_handler(anim_t * a); +static bool anim_ready_handler(anim_t * a); /********************** * STATIC VARIABLES **********************/ static ll_dsc_t anim_ll; static uint32_t last_task_run; +static bool anim_del_global_flag = false; static anim_path_t anim_path_lin[] = {64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, @@ -47,7 +48,7 @@ static anim_path_t anim_path_step[] = {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 192,}; + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 192,}; /********************** * MACROS @@ -106,6 +107,7 @@ bool anim_del(void * var, anim_fp_t fp) ll_rem(&anim_ll, a); dm_free(a); del = true; + anim_del_global_flag = true; } a = a_next; @@ -177,10 +179,10 @@ static void anim_task (void) /* Get the index of the path array based on the elapsed time*/ uint8_t path_i; - if(a->time != 0) { - path_i = a->act_time * (ANIM_PATH_LENGTH - 1) / a->time; + if(a->time == a->act_time) { + path_i = ANIM_PATH_LENGTH - 1; /*Use the last value id the time fully elapsed*/ } else { - path_i = ANIM_PATH_LENGTH - 1; + path_i = a->act_time * (ANIM_PATH_LENGTH - 1) / a->time; } /* Get the new value which will be proportional to the current element of 'path_p' * and the 'start' and 'end' values*/ @@ -193,7 +195,11 @@ static void anim_task (void) /*If the time is elapsed the animation is ready*/ if(a->act_time >= a->time) { - anim_ready_handler(a); + bool invalid; + invalid = anim_ready_handler(a); + if(invalid != false) { + a_next = ll_get_head(&anim_ll); /*a_next might be invalid if animation delete occurred*/ + } } } @@ -207,9 +213,12 @@ static void anim_task (void) * Called when an animation is ready to do the necessary thinks * e.g. repeat, play back, delete etc. * @param a pointer to an animation descriptor + * @return true: animation delete occurred * */ -static void anim_ready_handler(anim_t * a) +static bool anim_ready_handler(anim_t * a) { + bool invalid = false; + /*Delete the animation if * - no repeat and no play back (simple one shot animation) * - no repeat, play back is enabled and play back is ready */ @@ -221,7 +230,11 @@ static void anim_ready_handler(anim_t * a) dm_free(a); /*Call the callback function at the end*/ + /* Check if an animation is deleted in the cb function + * if yes then the caller function has to know this*/ + anim_del_global_flag = false; if(cb != NULL) cb(p); + invalid = anim_del_global_flag; } /*If the animation is not deleted then restart it*/ else { @@ -240,4 +253,6 @@ static void anim_ready_handler(anim_t * a) a->end = tmp; } } + + return invalid; } diff --git a/lv_misc/area.h b/lv_misc/area.h index 9928f2552..4a104fdf3 100644 --- a/lv_misc/area.h +++ b/lv_misc/area.h @@ -3,8 +3,8 @@ * */ -#ifndef _2D_H -#define _2D_H +#ifndef AREA_H +#define AREA_H /********************* * INCLUDES diff --git a/lv_misc/font.c b/lv_misc/font.c index dd1ea25b2..a119a103e 100644 --- a/lv_misc/font.c +++ b/lv_misc/font.c @@ -8,6 +8,8 @@ *********************/ #include #include "font.h" +#include "fonts/dejavu_8.h" +#include "fonts/dejavu_10.h" #include "fonts/dejavu_14.h" #include "fonts/dejavu_20.h" #include "fonts/dejavu_30.h" @@ -54,6 +56,16 @@ const font_t * font_get(font_types_t font_id) switch(font_id) { +#if USE_FONT_DEJAVU_8 != 0 + case FONT_DEJAVU_8: + font_p = dejavu_8_get_dsc(); + break; +#endif +#if USE_FONT_DEJAVU_10 != 0 + case FONT_DEJAVU_10: + font_p = dejavu_10_get_dsc(); + break; +#endif #if USE_FONT_DEJAVU_14 != 0 case FONT_DEJAVU_14: font_p = dejavu_14_get_dsc(); diff --git a/lv_misc/font.h b/lv_misc/font.h index 3d2f77759..3fb8e4376 100644 --- a/lv_misc/font.h +++ b/lv_misc/font.h @@ -22,22 +22,28 @@ typedef enum { -#if USE_FONT_DEJAVU_14 +#if USE_FONT_DEJAVU_8 != 0 + FONT_DEJAVU_8, +#endif +#if USE_FONT_DEJAVU_10 != 0 + FONT_DEJAVU_10, +#endif +#if USE_FONT_DEJAVU_14 != 0 FONT_DEJAVU_14, #endif -#if USE_FONT_DEJAVU_20 +#if USE_FONT_DEJAVU_20 != 0 FONT_DEJAVU_20, #endif -#if USE_FONT_DEJAVU_30 +#if USE_FONT_DEJAVU_30 != 0 FONT_DEJAVU_30, #endif -#if USE_FONT_DEJAVU_40 +#if USE_FONT_DEJAVU_40 != 0 FONT_DEJAVU_40, #endif -#if USE_FONT_DEJAVU_60 +#if USE_FONT_DEJAVU_60 != 0 FONT_DEJAVU_60, #endif -#if USE_FONT_DEJAVU_80 +#if USE_FONT_DEJAVU_80 != 0 FONT_DEJAVU_80, #endif FONT_TYPE_NUM, @@ -82,11 +88,7 @@ static inline const uint8_t * font_get_bitmap(const font_t * font_p, uint8_t let */ static inline uint8_t font_get_height(const font_t * font_p) { -#if LV_DOWNSCALE > 1 && LV_UPSCALE_FONT != 0 - return font_p->height_row * LV_DOWNSCALE; -#else return font_p->height_row; -#endif } /** @@ -106,11 +108,7 @@ static inline uint8_t font_get_width(const font_t * font_p, uint8_t letter) font_p->width_bit_a[letter]; } - #if LV_DOWNSCALE > 1 && LV_UPSCALE_FONT != 0 - return w * LV_DOWNSCALE; - #else return w; -#endif } #endif diff --git a/lv_misc/fonts/dejavu_10.c b/lv_misc/fonts/dejavu_10.c new file mode 100644 index 000000000..7dcfff35d --- /dev/null +++ b/lv_misc/fonts/dejavu_10.c @@ -0,0 +1,2780 @@ +#include "lv_conf.h" +#if USE_FONT_DEJAVU_10 != 0 + +#include +#include "../font.h" + +static const uint8_t dejavu_10_bitmaps[2240] = +{ + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 33, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 34, char width: 4 + 0x00, // ----.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 35, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x28, // --O-O--. + 0x7c, // -OOOOO-. + 0x28, // --O-O--. + 0x50, // -O-O---. + 0xf8, // OOOOO--. + 0x50, // -O-O---. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 36, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x70, // -OOO-... + 0xa0, // O-O--... + 0x60, // -OO--... + 0x30, // --OO-... + 0x28, // --O-O... + 0x70, // -OOO-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 37, char width: 8 + 0x00, // -------- + 0x42, // -O----O- + 0xa4, // O-O--O-- + 0x48, // -O--O--- + 0x10, // ---O---- + 0x24, // --O--O-- + 0x4a, // -O--O-O- + 0x84, // O----O-- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 38, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x40, // -O----.. + 0x40, // -O----.. + 0x64, // -OO--O.. + 0x94, // O--O-O.. + 0x88, // O---O-.. + 0x74, // -OOO-O.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 39, char width: 2 + 0x00, // --...... + 0x04, // -O...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 40, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + + // ASCII: 41, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + + // ASCII: 42, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 43, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x10, // ---O---. + 0x10, // ---O---. + 0x7c, // -OOOOO-. + 0x10, // ---O---. + 0x10, // ---O---. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 44, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x80, // O--..... + 0x00, // ---..... + + // ASCII: 45, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0xe0, // OOO..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 46, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 47, char width: 3 + 0x00, // ---..... + 0x20, // --O..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x00, // ---..... + + // ASCII: 48, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x50, // -O-O-... + 0x88, // O---O... + 0x88, // O---O... + 0x88, // O---O... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 49, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x60, // -OO--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 50, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x10, // ---O-... + 0x10, // ---O-... + 0x10, // ---O-... + 0x20, // --O--... + 0x40, // -O---... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 51, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x10, // ---O-... + 0x10, // ---O-... + 0x20, // --O--... + 0x10, // ---O-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 52, char width: 5 + 0x00, // -----... + 0x10, // ---O-... + 0x30, // --OO-... + 0x50, // -O-O-... + 0x50, // -O-O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 53, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x40, // -O---... + 0x40, // -O---... + 0x30, // --OO-... + 0x10, // ---O-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 54, char width: 5 + 0x00, // -----... + 0x30, // --OO-... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x48, // -O--O... + 0x48, // -O--O... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 55, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x10, // ---O-... + 0x10, // ---O-... + 0x20, // --O--... + 0x20, // --O--... + 0x40, // -O---... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 56, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x50, // -O-O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x50, // -O-O-... + 0x88, // O---O... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 57, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 58, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 59, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x80, // O--..... + 0x00, // ---..... + + // ASCII: 60, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x0c, // ----OO-. + 0x30, // --OO---. + 0x60, // -OO----. + 0x18, // ---OO--. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 61, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x7c, // -OOOOO-. + 0x00, // -------. + 0x7c, // -OOOOO-. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 62, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x60, // -OO----. + 0x18, // ---OO--. + 0x0c, // ----OO-. + 0x30, // --OO---. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 63, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x10, // ---O.... + 0x10, // ---O.... + 0x20, // --O-.... + 0x40, // -O--.... + 0x00, // ----.... + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 64, char width: 8 + 0x00, // -------- + 0x00, // -------- + 0x3c, // --OOOO-- + 0x42, // -O----O- + 0xbe, // O-OOOOO- + 0xa5, // O-O--O-O + 0xa6, // O-O--OO- + 0x5c, // -O-OOO-- + 0x20, // --O----- + 0x1c, // ---OOO-- + + // ASCII: 65, char width: 6 + 0x00, // ------.. + 0x20, // --O---.. + 0x20, // --O---.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0xf8, // OOOOO-.. + 0x88, // O---O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 66, char width: 6 + 0x00, // ------.. + 0x70, // -OOO--.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x70, // -OOO--.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x70, // -OOO--.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 67, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x80, // O-----.. + 0x80, // O-----.. + 0x80, // O-----.. + 0x40, // -O----.. + 0x38, // --OOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 68, char width: 6 + 0x00, // ------.. + 0x70, // -OOO--.. + 0x48, // -O--O-.. + 0x44, // -O---O.. + 0x44, // -O---O.. + 0x44, // -O---O.. + 0x48, // -O--O-.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 69, char width: 5 + 0x00, // -----... + 0x78, // -OOOO... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x40, // -O---... + 0x40, // -O---... + 0x78, // -OOOO... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 70, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x40, // -O---... + 0x40, // -O---... + 0x40, // -O---... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 71, char width: 6 + 0x00, // ------.. + 0x38, // --OOO-.. + 0x40, // -O----.. + 0x80, // O-----.. + 0x80, // O-----.. + 0x8c, // O---OO.. + 0x44, // -O---O.. + 0x38, // --OOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 72, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x78, // -OOOO-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 73, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 74, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x80, // O-...... + + // ASCII: 75, char width: 5 + 0x00, // -----... + 0x48, // -O--O... + 0x50, // -O-O-... + 0x60, // -OO--... + 0x40, // -O---... + 0x60, // -OO--... + 0x50, // -O-O-... + 0x48, // -O--O... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 76, char width: 5 + 0x00, // -----... + 0x40, // -O---... + 0x40, // -O---... + 0x40, // -O---... + 0x40, // -O---... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 77, char width: 7 + 0x00, // -------. + 0x44, // -O---O-. + 0x44, // -O---O-. + 0x6c, // -OO-OO-. + 0x6c, // -OO-OO-. + 0x54, // -O-O-O-. + 0x44, // -O---O-. + 0x44, // -O---O-. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 78, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x68, // -OO-O-.. + 0x68, // -OO-O-.. + 0x58, // -O-OO-.. + 0x58, // -O-OO-.. + 0x48, // -O--O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 79, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x44, // -O---O.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 80, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x50, // -O-O-... + 0x48, // -O--O... + 0x50, // -O-O-... + 0x60, // -OO--... + 0x40, // -O---... + 0x40, // -O---... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 81, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x44, // -O---O.. + 0x78, // -OOOO-.. + 0x08, // ----O-.. + 0x00, // ------.. + + // ASCII: 82, char width: 6 + 0x00, // ------.. + 0x70, // -OOO--.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x70, // -OOO--.. + 0x50, // -O-O--.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 83, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x80, // O----... + 0x80, // O----... + 0x70, // -OOO-... + 0x08, // ----O... + 0x08, // ----O... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 84, char width: 5 + 0x00, // -----... + 0xf8, // OOOOO... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 85, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x30, // --OO--.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 86, char width: 6 + 0x00, // ------.. + 0x88, // O---O-.. + 0x88, // O---O-.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x20, // --O---.. + 0x20, // --O---.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 87, char width: 8 + 0x00, // -------- + 0x81, // O------O + 0x99, // O--OO--O + 0x5a, // -O-OO-O- + 0x5a, // -O-OO-O- + 0x66, // -OO-_OO- + 0x66, // -OO--OO- + 0x24, // --O--O-- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 88, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x30, // --OO--.. + 0x30, // --OO--.. + 0x30, // --OO--.. + 0x50, // -O-O--.. + 0x88, // O---O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 89, char width: 5 + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 90, char width: 6 + 0x00, // ------.. + 0xf8, // OOOOO-.. + 0x08, // ----O-.. + 0x10, // ---O--.. + 0x20, // --O---.. + 0x20, // --O---.. + 0x40, // -O----.. + 0xf8, // OOOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 91, char width: 3 + 0x00, // ---..... + 0xC0, // OO-..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0xC0, // OO-..... + + // ASCII: 92, char width: 3 + 0x00, // ---..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x20, // --O..... + 0x00, // ---..... + + // ASCII: 93, char width: 3 + 0x00, // ---..... + 0xC0, // OO-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0xC0, // OO-..... + 0x00, // ---..... + + // ASCII: 94, char width: 7 + 0x00, // -------. + 0x10, // ---O---. + 0x28, // --O-O--. + 0x44, // -O---O-. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 95, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0xf0, // OOOO.... + + // ASCII: 96, char width: 4 + 0x80, // O---.... + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 97, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 98, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x80, // O----... + 0xb0, // O-OO-... + 0x48, // -O--O... + 0x88, // O---O... + 0x48, // -O--O... + 0xb0, // O-OO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 99, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x70, // -OOO.... + 0x80, // O---.... + 0x80, // O---.... + 0x80, // O---.... + 0x70, // -OOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 100, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 101, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0xf8, // OOOOO... + 0x80, // O----... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 102, char width: 3 + 0x00, // ---..... + 0x60, // -OO..... + 0x40, // -O-..... + 0xe0, // OOO..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 103, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x60, // -OO--... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + + // ASCII: 104, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x80, // O----... + 0xb0, // O-OO-... + 0x50, // -O-O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 105, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 106, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + + // ASCII: 107, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x80, // O----... + 0x90, // O--O-... + 0xa0, // O-O--... + 0x40, // -O---... + 0xa0, // O-O--... + 0x90, // O--O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 108, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 109, char width: 8 + 0x00, // -------- + 0x00, // -------- + 0x00, // -------- + 0x36, // --OO-OO- + 0x5a, // -O-OO-O- + 0x92, // O--O--O- + 0x92, // O--O--O- + 0x92, // O--O--O- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 110, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x30, // --OO-... + 0x50, // -O-O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 111, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x88, // O---O... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 112, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x30, // --OO-... + 0x48, // -O--O... + 0x88, // O---O... + 0x48, // -O--O... + 0xb0, // O-OO-... + 0x80, // O----... + 0x00, // -----... + + // ASCII: 113, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x60, // -OO--... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x00, // -----... + + // ASCII: 114, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x20, // --O..... + 0x40, // -O-..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 115, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x70, // -OOO.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x10, // ---O.... + 0xf0, // OOOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 116, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x80, // O--..... + 0xe0, // OOO..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x60, // -OO..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 117, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 118, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x80, // O----... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x60, // -OO--... + 0x20, // --O--... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 119, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x94, // O--O-O-. + 0x94, // O--O-O-. + 0x74, // -OOO-O-. + 0x68, // -OO-O--. + 0x48, // -O--O--. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 120, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x50, // -O-O-... + 0x60, // -OO--... + 0x20, // --O--... + 0x50, // -O-O-... + 0x90, // O--O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 121, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x80, // O----... + 0x50, // -O-O-... + 0x50, // -O-O-... + 0x60, // -OO--... + 0x20, // --O--... + 0x20, // --O--... + 0x40, // -O---... + + // ASCII: 122, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0xf0, // OOOO.... + 0x20, // --O-.... + 0x20, // --O-.... + 0x40, // -O--.... + 0xf0, // OOOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 123, char width: 5 + 0x00, // -----... + 0x10, // ---O-... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x60, // -OO--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x10, // ---O-... + + // ASCII: 124, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + + // ASCII: 125, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x10, // ---O-... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 126, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x7c, // -OOOOO-. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + + // No glyph for ASCII: 127, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 128, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 129, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 130, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 131, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 132, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 133, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 134, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 135, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 136, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 137, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 138, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 139, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 140, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 141, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 142, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 143, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 144, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 145, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 146, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 147, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 148, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 149, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 150, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 151, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 152, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 153, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 154, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 155, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 156, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 157, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 158, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // No glyph for ASCII: 159, using substitute: + // ASCII: 32, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 160, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 161, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 162, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x70, // -OOO-... + 0x60, // -OO--... + 0xa0, // O-O--... + 0x60, // -OO--... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 163, char width: 5 + 0x00, // -----... + 0x30, // --OO-... + 0x40, // -O---... + 0x40, // -O---... + 0x40, // -O---... + 0x60, // -OO--... + 0x40, // -O---... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 164, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x68, // -OO-O... + 0x50, // -O-O-... + 0x50, // -O-O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 165, char width: 5 + 0x00, // -----... + 0x88, // O---O... + 0x50, // -O-O-... + 0x50, // -O-O-... + 0x78, // -OOOO... + 0x78, // -OOOO... + 0x20, // --O--... + 0x20, // --O--... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 166, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + + // ASCII: 167, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x40, // -O--.... + 0xa0, // O-O-.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0x00, // ----.... + + // ASCII: 168, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 169, char width: 8 + 0x00, // -------- + 0x00, // -------- + 0x3c, // --OOOO-- + 0x7a, // -OOOO-O- + 0x62, // -OO---O- + 0x62, // -OO---O- + 0x5a, // -O-OO-O- + 0x3c, // --OOOO-- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 170, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 171, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x50, // -O-O-... + 0xa0, // O-O--... + 0x50, // -O-O-... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 172, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x7c, // -OOOOO-. + 0x04, // -----O-. + 0x04, // -----O-. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 173, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0xe0, // OOO..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 174, char width: 8 + 0x00, // -------- + 0x00, // -------- + 0x3c, // --OOOO-- + 0x7a, // -OOOO-O- + 0x7a, // -OOOO-O- + 0x6a, // -OO-O-O- + 0x46, // -O---OO- + 0x3c, // --OOOO-- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 175, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 176, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 177, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x10, // ---O---. + 0x10, // ---O---. + 0x7c, // -OOOOO-. + 0x10, // ---O---. + 0x10, // ---O---. + 0x7c, // -OOOOO-. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 178, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x20, // --O..... + 0x40, // -O-..... + 0x80, // O--..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 179, char width: 3 + 0x00, // ---..... + 0xc0, // OO-..... + 0x20, // --O..... + 0x20, // --O..... + 0xa0, // O-O..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 180, char width: 4 + 0x00, // ----.... + 0x20, // --O-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 181, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x78, // -OOOO... + 0x80, // O----... + 0x00, // -----... + + // ASCII: 182, char width: 5 + 0x00, // -----... + 0x30, // --OO-... + 0x70, // -OOO-... + 0x70, // -OOO-... + 0x70, // -OOO-... + 0x30, // --OO-... + 0x30, // --OO-... + 0x30, // --OO-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 183, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 184, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x20, // --O-.... + 0x60, // -OO-.... + + // ASCII: 185, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 186, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 187, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x20, // --O--... + 0x50, // -O-O-... + 0x30, // --OO-... + 0x60, // -OO--... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 188, char width: 8 + 0x00, // -------- + 0x44, // -O---O-- + 0x48, // -O--O--- + 0x48, // -O--O--- + 0x50, // -O-O---- + 0x12, // ---O--O- + 0x26, // --O--OO- + 0x42, // -O----O- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 189, char width: 8 + 0x00, // -------- + 0x44, // -O---O-- + 0x48, // -O--O--- + 0x48, // -O--O--- + 0x52, // -O-O--O- + 0x11, // ---O---O + 0x22, // --O---O- + 0x44, // -O---O-- + 0x02, // ------O- + 0x00, // -------- + + // ASCII: 190, char width: 8 + 0x00, // -------- + 0xc4, // OO---O-- + 0x28, // --O-O--- + 0x28, // --O-O--- + 0xb0, // O-OO---- + 0x52, // -O-O--O- + 0x26, // --O--OO- + 0x42, // -O----O- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 191, char width: 4 + 0x00, // ----.... + 0x20, // --O-.... + 0x20, // --O-.... + 0x20, // --O-.... + 0x20, // --O-.... + 0x40, // -O--.... + 0x80, // O---.... + 0x70, // -OOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 192, char width: 6 + 0x00, // ------.. + 0x20, // --O---.. + 0x30, // --OO--.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x48, // -O--O-.. + 0xb8, // O-OOO-.. + 0x88, // O---O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 193, char width: 6 + 0x00, // ------.. + 0x20, // --O---.. + 0x30, // --OO--.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x48, // -O--O-.. + 0xb8, // O-OOO-.. + 0x88, // O---O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 194, char width: 6 + 0x00, // ------.. + 0x20, // --O---.. + 0x30, // --OO--.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x48, // -O--O-.. + 0xb8, // O-OOO-.. + 0x88, // O---O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 195, char width: 6 + 0x10, // ---O--.. + 0x20, // --O---.. + 0x30, // --OO--.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x48, // -O--O-.. + 0xb8, // O-OOO-.. + 0x88, // O---O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 196, char width: 6 + 0x00, // ------.. + 0x20, // --O---.. + 0x30, // --OO--.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x48, // -O--O-.. + 0xb8, // O-OOO-.. + 0x88, // O---O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 197, char width: 6 + 0x70, // -OOO--.. + 0x30, // --OO--.. + 0x30, // --OO--.. + 0x50, // -O-O--.. + 0x50, // -O-O--.. + 0x48, // -O--O-.. + 0xb8, // O-OOO-.. + 0x88, // O---O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 198, char width: 8 + 0x00, // -------- + 0x3e, // --OOOOO- + 0x30, // --OO---- + 0x30, // --OO---- + 0x4e, // -O--OOO- + 0x50, // -O-O---- + 0xb0, // O-OO---- + 0x8e, // O---OOO- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 199, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x80, // O-----.. + 0x80, // O-----.. + 0x80, // O-----.. + 0x40, // -O----.. + 0x38, // --OOO-.. + 0x10, // ---O--.. + 0x30, // --OO--.. + + // ASCII: 200, char width: 5 + 0x00, // -----... + 0x78, // -OOOO... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x40, // -O---... + 0x40, // -O---... + 0x78, // -OOOO... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 201, char width: 5 + 0x00, // -----... + 0x78, // -OOOO... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x40, // -O---... + 0x40, // -O---... + 0x78, // -OOOO... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 202, char width: 5 + 0x00, // -----... + 0x78, // -OOOO... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x40, // -O---... + 0x40, // -O---... + 0x78, // -OOOO... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 203, char width: 5 + 0x00, // -----... + 0x78, // -OOOO... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x40, // -O---... + 0x40, // -O---... + 0x78, // -OOOO... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 204, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 205, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 206, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 207, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 208, char width: 6 + 0x00, // ------.. + 0x60, // -OO---.. + 0x58, // -O-OO-.. + 0x44, // -O---O.. + 0xe4, // OOO--O.. + 0x44, // -O---O.. + 0x48, // -O--O-.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 209, char width: 6 + 0x10, // ---O--.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x68, // -OO-O-.. + 0x68, // -OO-O-.. + 0x58, // -O-OO-.. + 0x58, // -O-OO-.. + 0x48, // -O--O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 210, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x44, // -O---O.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 211, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x44, // -O---O.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 212, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x44, // -O---O.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 213, char width: 6 + 0x10, // ---O--.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x44, // -O---O.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 214, char width: 6 + 0x00, // ------.. + 0x30, // --OO--.. + 0x48, // -O--O-.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x84, // O----O.. + 0x44, // -O---O.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 215, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x48, // -O--O--. + 0x30, // --OO---. + 0x10, // ---O---. + 0x28, // --O-O--. + 0x40, // -O-----. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 216, char width: 6 + 0x00, // ------.. + 0x34, // --OO-O.. + 0x48, // -O--O-.. + 0x94, // O--O-O.. + 0x94, // O--O-O.. + 0xa4, // O-O--O.. + 0x44, // -O---O.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 217, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 218, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 219, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 220, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 221, char width: 5 + 0x00, // -----... + 0x88, // O---O... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x20, // --O--... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 222, char width: 5 + 0x00, // -----... + 0x40, // -O---... + 0x40, // -O---... + 0x70, // -OOO-... + 0x48, // -O--O... + 0x50, // -O-O-... + 0x60, // -OO--... + 0x40, // -O---... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 223, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x50, // -O-O-... + 0xa0, // O-O--... + 0xa0, // O-O--... + 0x90, // O--O-... + 0x88, // O---O... + 0xb0, // O-OO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 224, char width: 5 + 0x00, // -----... + 0x40, // -O---... + 0x00, // -----... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 225, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x00, // -----... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 226, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x00, // -----... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 227, char width: 5 + 0x00, // -----... + 0x40, // -O---... + 0x20, // --O--... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 228, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x00, // -----... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 229, char width: 5 + 0x60, // -OO--... + 0xa0, // O-O--... + 0x40, // -O---... + 0x70, // -OOO-... + 0x10, // ---O-... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 230, char width: 8 + 0x00, // -------- + 0x00, // -------- + 0x00, // -------- + 0x7e, // -OOOOOO- + 0x12, // ---O--O- + 0x7f, // -OOOOOOO + 0x90, // O--O---- + 0x6e, // -OO-OOO- + 0x00, // -------- + 0x00, // -------- + + // ASCII: 231, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x70, // -OOO.... + 0x80, // O---.... + 0x80, // O---.... + 0x80, // O---.... + 0x70, // -OOO.... + 0x10, // ---O.... + 0x30, // --OO.... + + // ASCII: 232, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0xf8, // OOOOO... + 0x80, // O----... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 233, char width: 5 + 0x00, // -----... + 0x10, // ---O-... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0xf8, // OOOOO... + 0x80, // O----... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 234, char width: 5 + 0x00, // -----... + 0x30, // --OO-... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0xf8, // OOOOO... + 0x80, // O----... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 235, char width: 5 + 0x00, // -----... + 0x30, // --OO-... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0xf8, // OOOOO... + 0x80, // O----... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 236, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 237, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 238, char width: 2 + 0x00, // --...... + 0xc0, // OO...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 239, char width: 2 + 0x00, // --...... + 0xc0, // OO...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 240, char width: 5 + 0x00, // -----... + 0x10, // ---O-... + 0x60, // -OO--... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x88, // O---O... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 241, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x10, // ---O-... + 0x30, // --OO-... + 0x50, // -O-O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 242, char width: 5 + 0x00, // -----... + 0x40, // -O---... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x88, // O---O... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 243, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x88, // O---O... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 244, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x88, // O---O... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 245, char width: 5 + 0x00, // -----... + 0x40, // -O---... + 0x20, // --O--... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x88, // O---O... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 246, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0x88, // O---O... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 247, char width: 7 + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + 0x10, // ---O---. + 0x00, // -------. + 0x7c, // -OOOOO-. + 0x10, // ---O---. + 0x00, // -------. + 0x00, // -------. + 0x00, // -------. + + // ASCII: 248, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x70, // -OOO-... + 0x90, // O--O-... + 0xa8, // O-O-O... + 0x50, // -O-O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 249, char width: 5 + 0x00, // -----... + 0x40, // -O---... + 0x00, // -----... + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 250, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x00, // -----... + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 251, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x00, // -----... + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 252, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x00, // -----... + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 253, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x00, // -----... + 0x80, // O----... + 0x50, // -O-O-... + 0x50, // -O-O-... + 0x60, // -OO--... + 0x20, // --O--... + 0x20, // --O--... + 0x40, // -O---... + + // ASCII: 254, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x80, // O----... + 0xb0, // O-OO-... + 0x48, // -O--O... + 0x88, // O---O... + 0x48, // -O--O... + 0xb0, // O-OO-... + 0x80, // O----... + 0x00, // -----... + + // ASCII: 255, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x00, // -----... + 0x80, // O----... + 0x50, // -O-O-... + 0x50, // -O-O-... + 0x60, // -OO--... + 0x20, // --O--... + 0x20, // --O--... + 0x40, // -O---... +}; + +static const uint8_t dejavu_10_widths[224] = +{ + 3, 3, 4, 7, 5, 8, 6, 2, + 3, 3, 4, 7, 3, 3, 3, 3, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 3, 3, 7, 7, 7, 4, + 8, 6, 6, 6, 6, 5, 5, 6, + 6, 2, 2, 5, 5, 7, 6, 6, + 5, 6, 6, 5, 5, 6, 6, 8, + 6, 5, 6, 3, 3, 3, 7, 4, + 4, 5, 5, 4, 5, 5, 3, 5, + 5, 2, 2, 5, 2, 8, 5, 5, + 5, 5, 3, 4, 3, 5, 5, 7, + 5, 5, 4, 5, 3, 5, 7, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 5, 5, 5, 5, 3, 4, + 4, 8, 4, 5, 7, 3, 8, 4, + 4, 7, 3, 3, 4, 5, 5, 3, + 4, 3, 4, 5, 8, 8, 8, 4, + 6, 6, 6, 6, 6, 6, 8, 6, + 5, 5, 5, 5, 2, 2, 2, 2, + 6, 6, 6, 6, 6, 6, 6, 7, + 6, 6, 6, 6, 6, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 8, 4, + 5, 5, 5, 5, 2, 2, 2, 2, + 5, 5, 5, 5, 5, 5, 5, 7, + 5, 5, 5, 5, 5, 5, 5, 5, +}; + +static const font_t dejavu_10_dsc = +{ + 224, // Letter count + 32, // First ascii code + 1, // Letters width (bytes) + 10, // Letters height (row) + 0, // Fixed width or 0 if variable + dejavu_10_widths, + dejavu_10_bitmaps +}; + +const font_t * dejavu_10_get_dsc(void) +{ + return &dejavu_10_dsc; +} + + +#endif \ No newline at end of file diff --git a/lv_misc/fonts/dejavu_10.h b/lv_misc/fonts/dejavu_10.h new file mode 100644 index 000000000..4135ed0b2 --- /dev/null +++ b/lv_misc/fonts/dejavu_10.h @@ -0,0 +1,18 @@ +#ifndef DEJAVU_10_H +#define DEJAVU_10_H + +/*Use ISO8859-1 encoding in the IDE*/ + +#include "lv_conf.h" +#if USE_FONT_DEJAVU_10 != 0 + + +#include +#include "../font.h" + + +const font_t * dejavu_10_get_dsc(void); + +#endif + +#endif diff --git a/lv_misc/fonts/dejavu_20.c b/lv_misc/fonts/dejavu_20.c index 145687347..b680ebc0e 100644 --- a/lv_misc/fonts/dejavu_20.c +++ b/lv_misc/fonts/dejavu_20.c @@ -1138,8 +1138,8 @@ static const uint8_t dejavu_20_bitmaps[8960] = 0xc0, 0x00, // OO-------....... 0xc0, 0x00, // OO-------....... 0x60, 0x00, // -OO------....... - 0x3b, 0x00, // --OOOO---....... - 0x0f, 0x00, // ----OOOO-....... + 0x3c, 0x00, // --OOOO---....... + 0x0e, 0x00, // ----OOO--....... 0x03, 0x00, // ------OO-....... 0x01, 0x00, // -------O-....... 0x01, 0x00, // -------O-....... @@ -1914,7 +1914,7 @@ static const uint8_t dejavu_20_bitmaps[8960] = 0x14, 0x00, // ---O-O---....... 0x1c, 0x00, // ---OOO---....... 0x1c, 0x00, // ---OOO---....... - 0x00, 0x00, // ---------....... + 0x08, 0x00, // ----O----....... 0x00, 0x00, // ---------....... 0x00, 0x00, // ---------....... 0x00, 0x00, // ---------....... @@ -1936,7 +1936,7 @@ static const uint8_t dejavu_20_bitmaps[8960] = 0x39, 0xc0, // --OOO--OOO--.... 0x31, 0xc0, // --OO---OOO--.... 0x31, 0x80, // --OO---OO---.... - 0x00, 0x00, // ------------.... + 0x11, 0x00, // ---O---O----.... 0x00, 0x00, // ------------.... 0x00, 0x00, // ------------.... 0x00, 0x00, // ------------.... @@ -1958,7 +1958,7 @@ static const uint8_t dejavu_20_bitmaps[8960] = 0x36, 0x00, // --OO-OO--....... 0x22, 0x00, // --O---O--....... 0x63, 0x00, // -OO---OO-....... - 0x00, 0x00, // ---------....... + 0x80, 0x10, // O-------O....... 0x00, 0x00, // ---------....... 0x00, 0x00, // ---------....... 0x00, 0x00, // ---------....... @@ -2000,13 +2000,13 @@ static const uint8_t dejavu_20_bitmaps[8960] = 0x18, 0x00, // ---OO---........ 0x30, 0x00, // --OO----........ 0x60, 0x00, // -OO-----........ - 0x40, 0x00, // -O------........ + 0xc0, 0x00, // OO------........ + 0x80, 0x00, // O-------........ 0xfe, 0x00, // OOOOOOO-........ 0x00, 0x00, // --------........ 0x00, 0x00, // --------........ 0x00, 0x00, // --------........ 0x00, 0x00, // --------........ - 0x00, 0x00, // --------........ // ASCII: 123, char width: 9 0x00, 0x00, // ---------....... diff --git a/lv_misc/fonts/dejavu_8.c b/lv_misc/fonts/dejavu_8.c new file mode 100644 index 000000000..de88669f9 --- /dev/null +++ b/lv_misc/fonts/dejavu_8.c @@ -0,0 +1,2332 @@ +#include "lv_conf.h" +#if USE_FONT_DEJAVU_8 != 0 + +#include +#include "../font.h" + +static const uint8_t dejavu_8_bitmaps[1792] = +{ + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 33, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 34, char width: 3 + 0x00, // ---..... + 0xc0, // O-O..... + 0x00, // O-O..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 35, char width: 5 + 0x00, // -----... + 0x28, // --O-O... + 0x78, // -OOOO... + 0x90, // -O-O-... + 0xf0, // OOOO-... + 0xa0, // O-O--... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 36, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0xe0, // OOO-.... + 0xc0, // OO--.... + 0x60, // -OO.... + 0xe0, // OOO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 37, char width: 6 + 0x00, // ------.. + 0xc8, // OO--O-.. + 0xd0, // OO-O--.. + 0x40, // --O--.. + 0x58, // -O-OO.. + 0x98, // O--OO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 38, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x40, // -O---... + 0xa0, // O-O--... + 0xb0, // O-OO-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 39, char width: 2 + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 40, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x40, // -O...... + 0x00, // --...... + + // ASCII: 41, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x80, // O-...... + 0x00, // --...... + + // ASCII: 42, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0xe0, // OOO..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 43, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x20, // --O--... + 0x20, // --O--... + 0xf8, // OOOOO... + 0x40, // --O--... + 0x40, // --O--... + 0x00, // -----... + + // ASCII: 44, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x40, // -O...... + 0x80, // O-...... + 0x00, // --...... + + // ASCII: 45, char width: 2 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0xc0, // OOO..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 46, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 47, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + + // ASCII: 48, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 49, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0xc0, // OO--.... + 0x40, // -O--.... + 0x40, // -O--.... + 0xe0, // OOO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 50, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x20, // --O-.... + 0x20, // --O-.... + 0x40, // -O--.... + 0xe0, // OOO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 51, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0x40, // ----.... + 0x00, // ----.... + + // ASCII: 52, char width: 4 + 0x00, // ----.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xf0, // OOOO.... + 0x20, // --O-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 53, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 54, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x80, // O---.... + 0xe0, // OOO-.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 55, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0x20, // --O-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 56, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 57, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0x70, // -OOO.... + 0x10, // ---O.... + 0x60, // -OO-.... + 0x40, // ----.... + 0x00, // ----.... + + // ASCII: 58, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 59, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + 0x40, // -O...... + 0x80, // O-...... + 0x00, // --...... + + // ASCII: 60, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x18, // ---OO... + 0x60, // -OO--... + 0x20, // --O--... + 0x18, // ---OO... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 61, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x78, // -OOOO... + 0x00, // -----... + 0x78, // -OOOO... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 62, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x60, // -OO--... + 0x18, // ---OO... + 0x30, // --OO-... + 0xc0, // OO---... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 63, char width: 3 + 0x40, // -O-..... + 0xa0, // O-O..... + 0x20, // --O..... + 0x40, // -O-..... + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 64, char width: 6 + 0x00, // ------.. + 0x78, // -OOOO-.. + 0x84, // O----O.. + 0xb4, // O-OO-O.. + 0xd4, // OO-O-O.. + 0xb8, // O-OOO-.. + 0x40, // -O----.. + 0x30, // --OO--.. + + // ASCII: 65, char width: 4 + 0x00, // ----.... + 0x20, // --O-.... + 0x50, // -O-O.... + 0x50, // -O-O.... + 0x70, // -OOO.... + 0x50, // -O-O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 66, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x90, // O--O.... + 0xe0, // OOO-.... + 0x90, // O--O.... + 0xf0, // OOOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 67, char width: 4 + 0x00, // ----.... + 0x70, // -OOO.... + 0x80, // O---.... + 0x80, // O---.... + 0x80, // O---.... + 0x70, // -OOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 68, char width: 5 + 0x00, // -----... + 0xe0, // OOO-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0xe0, // OOO--... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 69, char width: 4 + 0x00, // ----.... + 0xf0, // OOOO.... + 0x80, // O---.... + 0xe0, // OOO-.... + 0x80, // O---.... + 0xf0, // OOOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 70, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x80, // O---.... + 0xe0, // OOO-.... + 0x80, // O---.... + 0x80, // O---.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 71, char width: 5 + 0x00, // -----... + 0x60, // -OO--... + 0x80, // O----... + 0x98, // O--OO... + 0x88, // O---O... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 72, char width: 5 + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0xf0, // OOOO-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 73, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 74, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x80, // O-...... + 0x80, // --...... + 0x00, // --...... + + // ASCII: 75, char width: 4 + 0x00, // ----.... + 0x90, // O--O.... + 0xa0, // O-O-.... + 0xc0, // OO--.... + 0xa0, // O-O-.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 76, char width: 4 + 0x00, // ----.... + 0x80, // O---.... + 0x80, // O---.... + 0x80, // O---.... + 0x80, // O---.... + 0xe0, // OOO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 77, char width: 5 + 0x00, // -----... + 0x88, // O---O... + 0xd8, // OO-OO... + 0xd8, // OO-OO... + 0xa8, // O-O-O... + 0x88, // O---O... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 78, char width: 5 + 0x00, // -----... + 0x90, // O--O-... + 0xd0, // OO-O-... + 0xb0, // O-OO-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 79, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x88, // O---O... + 0x88, // O---O... + 0x88, // O---O... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 80, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x90, // O--O.... + 0xe0, // OOO-.... + 0x80, // O---.... + 0x80, // O---.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 81, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x88, // O---O... + 0x88, // O---O... + 0x98, // O--OO... + 0x70, // -OOO-... + 0x18, // ---OO... + 0x00, // -----... + + // ASCII: 82, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x90, // O--O.... + 0xe0, // OOO-.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 83, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x10, // ---O.... + 0xe0, // OOO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 84, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 85, char width: 5 + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x50, // -OO--... + 0x20, // -----... + 0x00, // -----... + + // ASCII: 86, char width: 4 + 0x00, // ----.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 87, char width: 6 + 0x00, // ------.. + 0x94, // O--O-O.. + 0xb4, // O-OO-O.. + 0xb4, // O-OO-O.. + 0x48, // -O--O-.. + 0x48, // -O--O-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 88, char width: 4 + 0x00, // ----.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x90, // O--O-.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 89, char width: 4 + 0x00, // ----.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 90, char width: 4 + 0x00, // ----.... + 0x70, // -OOO.... + 0x20, // --O-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0xf0, // OOOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 91, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x40, // -O...... + 0x00, // --...... + + // ASCII: 92, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x40, // -O...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 93, char width: 2 + 0x00, // --...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x40, // -O...... + 0x00, // --...... + + // ASCII: 94, char width: 5 + 0x00, // -----... + 0x20, // --O--... + 0x50, // -O-O-... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 95, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0xe0, // OOO..... + + // ASCII: 96, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 97, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0xa0, // O-O-.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 98, char width: 4 + 0x00, // ----.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 99, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x60, // -OO..... + 0x80, // O--..... + 0x80, // O--..... + 0x40, // -O-..... + 0x20, // --O..... + 0x00, // ---..... + + // ASCII: 100, char width: 4 + 0x00, // ----.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 101, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0xe0, // OOO-.... + 0x40, // -O--.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 102, char width: 2 + 0x00, // --...... + 0xc0, // OO...... + 0xc0, // OO...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 103, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x60, // -OO-.... + + // ASCII: 104, char width: 4 + 0x00, // ----.... + 0x80, // O---.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 105, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 106, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + + // ASCII: 107, char width: 4 + 0x00, // ----.... + 0x80, // O---.... + 0xa0, // O-O-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0xa0, // O-O-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 108, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 109, char width: 6 + 0x00, // ------.. + 0x00, // ------.. + 0x68, // -OO-O-.. + 0xb4, // O-OO-O.. + 0xa4, // O-O--O.. + 0xa4, // O-O--O.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 110, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 111, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 112, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x00, // ----.... + + // ASCII: 113, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 114, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x60, // -OO..... + 0x80, // O--..... + 0x80, // O--..... + 0x80, // O--..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 115, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x60, // -OO..... + 0x80, // O--..... + 0x60, // -OO..... + 0xa0, // O-O..... + 0x40, // -O-..... + 0x00, // ---..... + + // ASCII: 116, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0xc0, // OO...... + 0x80, // O-...... + 0x80, // O-...... + 0x40, // -O...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 117, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 118, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x80, // O---.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 119, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0xa8, // O-O-O... + 0xe8, // OOO-O... + 0xf0, // OOOO-... + 0x50, // -O-O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 120, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 121, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x80, // O---.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 122, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0xe0, // OOO..... + 0x40, // -O-..... + 0x40, // -O-..... + 0xe0, // OOO..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 123, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x20, // --O-.... + + // ASCII: 124, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + + // ASCII: 125, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 126, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x68, // -OO-O... + 0x10, // ---O-... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + + // No glyph for ASCII: 127, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 128, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 129, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 130, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 131, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 132, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 133, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 134, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 135, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 136, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 137, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 138, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 139, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 140, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 141, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 142, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 143, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 144, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 145, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 146, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 147, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 148, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 149, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 150, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 151, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 152, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 153, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 154, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 155, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 156, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 157, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 158, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // No glyph for ASCII: 159, using substitute: + // ASCII: 32, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 160, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 161, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 162, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0xc0, // OO--.... + 0xc0, // OO--.... + 0x40, // -O--.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 163, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0xe0, // OOO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 164, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0xf0, // OOOO.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0xd0, // OO-O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 165, char width: 4 + 0x00, // ----.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 166, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + + // ASCII: 167, char width: 3 + 0x00, // ---..... + 0xe0, // OOO..... + 0x40, // -O-..... + 0xa0, // O-O..... + 0x60, // -OO..... + 0x20, // --O..... + 0x40, // -O-..... + 0x00, // ---..... + + // ASCII: 168, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 169, char width: 6 + 0x00, // ------.. + 0x78, // -OOOO-.. + 0xa8, // O-O-O-.. + 0xc8, // OO--O-.. + 0xa8, // O-O-O-.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 170, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0xe0, // OOO..... + 0x60, // -OO..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 171, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 172, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + 0x78, // -OOOO... + 0x08, // ----O... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 173, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 174, char width: 6 + 0x00, // ------.. + 0x78, // -OOOO-.. + 0xb8, // O-OOO-.. + 0xb8, // O-OOO-.. + 0xa8, // O-O-O-.. + 0x78, // -OOOO-.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 175, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 176, char width: 3 + 0x00, // ---..... + 0xc0, // OO-..... + 0xc0, // OO-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 177, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x20, // --O--... + 0x78, // -OOOO... + 0x20, // --O--... + 0x78, // -OOOO... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 178, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0xc0, // OO-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 179, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0xc0, // OO-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 180, char width: 3 + 0x20, // --O..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 181, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x70, // -OOO.... + 0x80, // O---.... + 0x00, // ----.... + + // ASCII: 182, char width: 4 + 0x00, // ----.... + 0x60, // -OO-.... + 0xe0, // OOO-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 183, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 184, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 185, char width: 3 + 0x00, // ---..... + 0x40, // -O-..... + 0x40, // -O-..... + 0xc0, // OO-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 186, char width: 3 + 0x00, // ---..... + 0xe0, // OOO..... + 0xa0, // O-O..... + 0x40, // -O-..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 187, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 188, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x50, // -O-O--.. + 0xd4, // OO-O-O.. + 0x2c, // --O-OO.. + 0x24, // --O--O.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 189, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x50, // -O-O--.. + 0xd4, // OO-O-O.. + 0x24, // --O--O.. + 0x2c, // --O-OO.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 190, char width: 6 + 0x00, // ------.. + 0x48, // -O--O-.. + 0x50, // -O-O--.. + 0xd4, // OO-O-O.. + 0x2c, // --O-OO.. + 0x24, // --O--O.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 191, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x00, // ---..... + 0x40, // -O-..... + 0x80, // O--..... + 0x60, // -OO..... + 0x00, // ---..... + 0x00, // ---..... + + // ASCII: 192, char width: 4 + 0x20, // --O-.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x70, // -OOO.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 193, char width: 4 + 0x20, // --O-.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x70, // -OOO.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 194, char width: 4 + 0x00, // ----.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x70, // -OOO.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 195, char width: 4 + 0x40, // -O--.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x70, // -OOO.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 196, char width: 4 + 0x00, // ----.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x70, // -OOO.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 197, char width: 4 + 0x60, // -OO-.... + 0x20, // --O-.... + 0x60, // -OO-.... + 0x60, // -OO-.... + 0x70, // -OOO.... + 0x90, // O--O.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 198, char width: 6 + 0x00, // ------.. + 0x78, // -OOOO-.. + 0x60, // -OO---.. + 0x5c, // -O-OOO.. + 0x60, // -OO---.. + 0x9c, // O--OOO.. + 0x00, // ------.. + 0x00, // ------.. + + // ASCII: 199, char width: 4 + 0x00, // ----.... + 0x70, // -OOO.... + 0x80, // O---.... + 0x80, // O---.... + 0x80, // O---.... + 0x50, // -O-O.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 200, char width: 4 + 0x20, // --O-.... + 0xc0, // OO--.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x70, // -OOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 201, char width: 4 + 0x20, // --O-.... + 0xc0, // OO--.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x70, // -OOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 202, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x70, // -OOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 203, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x70, // -OOO.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 204, char width: 2 + 0x40, // -O...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 205, char width: 2 + 0x40, // -O...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 206, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 207, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 208, char width: 5 + 0x00, // -----... + 0xf0, // OOOO-... + 0x90, // O--O-... + 0xc8, // OO--O... + 0x90, // O--O-... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 209, char width: 5 + 0x40, // -O---... + 0x50, // -O-O-... + 0xd0, // OO-O-... + 0xb0, // O-OO-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 210, char width: 5 + 0x20, // --O--... + 0x50, // -O-O-... + 0x88, // O---O... + 0x88, // O---O... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 211, char width: 5 + 0x20, // --O--... + 0x50, // -O-O-... + 0x88, // O---O... + 0x88, // O---O... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 212, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x88, // O---O... + 0x88, // O---O... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 213, char width: 5 + 0x40, // -O---... + 0x70, // -OOO-... + 0x88, // O---O... + 0x88, // O---O... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 214, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0x88, // O---O... + 0x88, // O---O... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 215, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x50, // -O-O-... + 0x20, // --O--... + 0x50, // -O-O-... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 216, char width: 5 + 0x00, // -----... + 0x70, // -OOO-... + 0xb0, // O-OO-... + 0xa8, // O-O-O... + 0xd0, // OO-O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 217, char width: 5 + 0x20, // --O--... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 218, char width: 5 + 0x20, // --O--... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 219, char width: 5 + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 220, char width: 5 + 0x00, // -----... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x90, // O--O-... + 0x50, // -O-O-... + 0x20, // --O--... + 0x00, // -----... + + // ASCII: 221, char width: 4 + 0x20, // --O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 222, char width: 4 + 0x00, // ----.... + 0x80, // O---.... + 0xe0, // OOO-.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 223, char width: 4 + 0x00, // ----.... + 0xe0, // OOO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x90, // O--O.... + 0x50, // -O-O.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 224, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0xa0, // O-O-.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 225, char width: 4 + 0x20, // --O-.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0xa0, // O-O-.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 226, char width: 4 + 0x40, // -O--.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0xa0, // O-O-.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 227, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0xa0, // O-O-.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 228, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0xa0, // O-O-.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 229, char width: 4 + 0xc0, // OO--.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x20, // --O-.... + 0xe0, // OOO-.... + 0xa0, // O-O-.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 230, char width: 6 + 0x00, // ------.. + 0x00, // ------.. + 0x78, // -OOOO-.. + 0x24, // --O--O.. + 0xf8, // OOOOO-.. + 0xb4, // O-OO-O.. + 0x48, // -O--O-.. + 0x00, // ------.. + + // ASCII: 231, char width: 3 + 0x00, // ---..... + 0x00, // ---..... + 0x60, // -OO..... + 0x80, // O--..... + 0x80, // O--..... + 0x40, // -O-..... + 0x20, // --O..... + 0x00, // ---..... + + // ASCII: 232, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0xe0, // OOO-.... + 0x40, // -O--.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 233, char width: 4 + 0x20, // --O-.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0xe0, // OOO-.... + 0x40, // -O--.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 234, char width: 4 + 0x40, // -O--.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0xe0, // OOO-.... + 0x40, // -O--.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 235, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0xe0, // OOO-.... + 0x40, // -O--.... + 0x20, // --O-.... + 0x00, // ----.... + + // ASCII: 236, char width: 2 + 0x00, // --...... + 0x80, // O-...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 237, char width: 2 + 0x40, // -O...... + 0x80, // O-...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 238, char width: 2 + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 239, char width: 2 + 0x00, // --...... + 0x00, // --...... + 0x00, // --...... + 0x80, // O-...... + 0x80, // O-...... + 0x80, // O-...... + 0x00, // --...... + 0x00, // --...... + + // ASCII: 240, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 241, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 242, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 243, char width: 4 + 0x20, // --O-.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 244, char width: 4 + 0x40, // -O--.... + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 245, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 246, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 247, char width: 5 + 0x00, // -----... + 0x00, // -----... + 0x20, // --O--... + 0x00, // -----... + 0x70, // -OOO-... + 0x00, // -----... + 0x00, // -----... + 0x00, // -----... + + // ASCII: 248, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x60, // -OO-.... + 0xa0, // O-O-.... + 0xe0, // OOO-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 249, char width: 4 + 0x00, // ----.... + 0x40, // -O--.... + 0x00, // ----.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 250, char width: 4 + 0x20, // --O-.... + 0x40, // -O--.... + 0x00, // ----.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 251, char width: 4 + 0x40, // -O--.... + 0x00, // ----.... + 0x00, // ----.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 252, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x00, // ----.... + 0xa0, // O-O-.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x00, // ----.... + 0x00, // ----.... + + // ASCII: 253, char width: 4 + 0x20, // --O-.... + 0x40, // -O--.... + 0x80, // O---.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x00, // ----.... + + // ASCII: 254, char width: 4 + 0x00, // ----.... + 0x80, // O---.... + 0x60, // -OO-.... + 0x90, // O--O.... + 0x90, // O--O.... + 0x60, // -OO-.... + 0x80, // O---.... + 0x00, // ----.... + + // ASCII: 255, char width: 4 + 0x00, // ----.... + 0x00, // ----.... + 0x80, // O---.... + 0xa0, // O-O-.... + 0x60, // -OO-.... + 0x40, // -O--.... + 0x40, // -O--.... + 0x00, // ----.... +}; + +static const uint8_t dejavu_8_widths[224] = +{ + 2, 3, 3, 5, 4, 6, 5, 2, + 2, 2, 3, 5, 2, 3, 2, 2, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 2, 2, 5, 5, 5, 3, + 6, 4, 4, 4, 5, 4, 4, 5, + 5, 2, 2, 4, 4, 5, 5, 5, + 4, 5, 4, 4, 4, 5, 4, 6, + 4, 4, 4, 2, 2, 2, 5, 3, + 3, 4, 4, 3, 4, 4, 2, 4, + 4, 2, 2, 4, 2, 6, 4, 4, + 4, 4, 3, 3, 2, 4, 4, 5, + 4, 4, 3, 4, 2, 4, 5, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 4, 4, 4, 4, 2, 3, + 3, 6, 3, 4, 5, 2, 6, 3, + 3, 5, 3, 3, 3, 4, 4, 2, + 3, 3, 3, 4, 6, 6, 6, 3, + 4, 4, 4, 4, 4, 4, 6, 4, + 4, 4, 4, 4, 2, 2, 2, 2, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 6, 3, + 4, 4, 4, 4, 2, 2, 2, 2, + 4, 4, 4, 4, 4, 4, 4, 5, + 4, 4, 4, 4, 4, 4, 4, 4, +}; + +static const font_t dejavu_8_dsc = +{ + 224, // Letter count + 32, // First ascii code + 1, // Letters width (bytes) + 8, // Letters height (row) + 0, // Fixed width or 0 if variable + dejavu_8_widths, + dejavu_8_bitmaps +}; + +const font_t * dejavu_8_get_dsc(void) +{ + return &dejavu_8_dsc; +} + + +#endif \ No newline at end of file diff --git a/lv_misc/fonts/dejavu_8.h b/lv_misc/fonts/dejavu_8.h new file mode 100644 index 000000000..96a9fbc88 --- /dev/null +++ b/lv_misc/fonts/dejavu_8.h @@ -0,0 +1,18 @@ +#ifndef DEJAVU_8_H +#define DEJAVU_8_H + +/*Use ISO8859-1 encoding in the IDE*/ + +#include "lv_conf.h" +#if USE_FONT_DEJAVU_8 != 0 + + +#include +#include "../font.h" + + +const font_t * dejavu_8_get_dsc(void); + +#endif + +#endif diff --git a/lv_misc/text.c b/lv_misc/text.c index 31128cafd..b0a4be7fd 100644 --- a/lv_misc/text.c +++ b/lv_misc/text.c @@ -7,6 +7,7 @@ * INCLUDES *********************/ #include "text.h" +#include "misc/math/math_base.h" /********************* * DEFINES @@ -34,6 +35,41 @@ static bool txt_is_break_char(char letter); * GLOBAL FUNCTIONS **********************/ +void txt_get_size(point_t * size_res, const char * text, const font_t * font, + uint16_t letter_space, uint16_t line_space, cord_t max_width) +{ + uint32_t line_start = 0; + uint32_t new_line_start = 0; + cord_t act_line_length; + uint8_t letter_height = font_get_height(font); + size_res->x = 0; + size_res->y = 0; + + /*Calc. the height and longest line*/ + while (text[line_start] != '\0') + { + new_line_start += txt_get_next_line(&text[line_start], font, letter_space, max_width); + size_res->y += letter_height; + size_res->y += line_space; + + /*Calculate the the longest line*/ + act_line_length = txt_get_width(&text[line_start], new_line_start - line_start, + font, letter_space); + + size_res->x = max(act_line_length, size_res->x); + line_start = new_line_start; + } + + if(line_start != 0 && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) { + size_res->y += letter_height + line_space; + } + + /*Correction with the last line space or set the height manually if the text is empty*/ + if(size_res->y == 0) size_res->y = letter_height; + else size_res->y -= line_space; + +} + /** * Get the next line of text. Check line length and break chars too. * @param txt a '\0' terminated string diff --git a/lv_misc/text.h b/lv_misc/text.h index 4ec8b031d..097e7ffe8 100644 --- a/lv_misc/text.h +++ b/lv_misc/text.h @@ -13,6 +13,7 @@ #include #include #include "font.h" +#include "area.h" /********************* * DEFINES @@ -25,6 +26,8 @@ /********************** * GLOBAL PROTOTYPES **********************/ +void txt_get_size(point_t * size_res, const char * text, const font_t * font, + uint16_t letter_space, uint16_t line_space, cord_t max_width); uint16_t txt_get_next_line(const char * txt, const font_t * font_p, uint16_t letter_space, cord_t max_l); cord_t txt_get_width(const char * txt, uint16_t char_num, const font_t * font_p, uint16_t letter_space); diff --git a/lv_obj/lv_dispi.c b/lv_obj/lv_dispi.c index c699c78ca..b111258fb 100644 --- a/lv_obj/lv_dispi.c +++ b/lv_obj/lv_dispi.c @@ -159,6 +159,7 @@ static void dispi_proc_point(lv_dispi_t * dispi_p, cord_t x, cord_t y) dispi_p->drag_in_prog = 0; dispi_p->long_press_sent = 0; dispi_p->press_time_stamp = 0; + dispi_p->lpr_rep_time_stamp = 0; dispi_p->vect_sum.x = 0; dispi_p->vect_sum.y = 0; } @@ -245,7 +246,7 @@ static void dispi_proc_press(lv_dispi_t * dispi_p) } } - /*The reset can be set in the signal function. + /* The reset can be set in the signal function. * In case of reset query ignore the remaining parts.*/ if(lv_dispi_reset_qry == false) { dispi_p->act_obj = pr_obj; /*Save the pressed object*/ @@ -257,6 +258,8 @@ static void dispi_proc_press(lv_dispi_t * dispi_p) /*If there is active object and it can be dragged run the drag*/ if(dispi_p->act_obj != NULL) { + dispi_p->act_obj->signal_f(dispi_p->act_obj, LV_SIGNAL_PRESSING, dispi_p); + dispi_drag(dispi_p); /*If there is no drag then check for long press time*/ @@ -266,9 +269,21 @@ static void dispi_proc_press(lv_dispi_t * dispi_p) pr_obj->signal_f(pr_obj, LV_SIGNAL_LONG_PRESS, dispi_p); /*Mark the signal sending to do not send it again*/ - dispi_p->long_press_sent = 1; + dispi_p->long_press_sent = 1; + + /*Save the long press time stamp for the long press repeat handler*/ + dispi_p->lpr_rep_time_stamp = systick_get(); } } + /*Send long press repeated signal*/ + if(dispi_p->drag_in_prog == 0 && dispi_p->long_press_sent == 1) { + /*Send a signal about the long press repeate if enough time elapsed*/ + if(systick_elaps(dispi_p->lpr_rep_time_stamp) > LV_DISPI_LONG_PRESS_REP_TIME) { + pr_obj->signal_f(pr_obj, LV_SIGNAL_LONG_PRESS_REP, dispi_p); + dispi_p->lpr_rep_time_stamp = systick_get(); + + } + } } } } @@ -286,6 +301,7 @@ static void disi_proc_release(lv_dispi_t * dispi_p) dispi_p->act_obj = NULL; dispi_p->press_time_stamp = 0; + dispi_p->lpr_rep_time_stamp = 0; } /*The reset can be set in the signal function. @@ -342,12 +358,15 @@ static lv_obj_t * dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t * obj) */ static void dispi_drag(lv_dispi_t * dispi_p) { - lv_obj_t * par = lv_obj_get_parent(dispi_p->act_obj); lv_obj_t * drag_obj = dispi_p->act_obj; - if(lv_obj_get_drag_parent(dispi_p->act_obj) != false) { - drag_obj = par; - } + /*If drag parent is active check recursively the drag_parent attribute*/ + while(lv_obj_get_drag_parent(drag_obj) != false && + drag_obj != NULL) { + drag_obj = lv_obj_get_parent(drag_obj); + } + + if(drag_obj == NULL) return; if(lv_obj_get_drag(drag_obj) == false) return; @@ -388,12 +407,16 @@ static void dispi_drag_throw(lv_dispi_t * dispi_p) if(dispi_p->drag_in_prog == 0) return; /*Set new position if the vector is not zero*/ - lv_obj_t * par = lv_obj_get_parent(dispi_p->last_obj); lv_obj_t * drag_obj = dispi_p->last_obj; - if(lv_obj_get_drag_parent(dispi_p->last_obj) != false) { - drag_obj = par; - } + /*If drag parent is active check recursively the drag_parent attribute*/ + + while(lv_obj_get_drag_parent(drag_obj) != false && + drag_obj != NULL) { + drag_obj = lv_obj_get_parent(drag_obj); + } + + if(drag_obj == NULL) return; /*Return if the drag throw is not enabled*/ if(lv_obj_get_drag_throw(drag_obj) == false ){ diff --git a/lv_obj/lv_dispi.h b/lv_obj/lv_dispi.h index 91b1aee97..bd7a19a08 100644 --- a/lv_obj/lv_dispi.h +++ b/lv_obj/lv_dispi.h @@ -28,12 +28,22 @@ typedef struct lv_obj_t * act_obj; lv_obj_t * last_obj; uint32_t press_time_stamp; + uint32_t lpr_rep_time_stamp; /*Flags*/ uint8_t drag_in_prog :1; uint8_t long_press_sent :1; }lv_dispi_t; + +typedef enum +{ + LV_ACTION_RES_INV = 0, + LV_ACTION_RES_OK, +}lv_action_res_t; + +typedef lv_action_res_t ( * lv_action_t) (struct __LV_OBJ_T * obj, lv_dispi_t * dispi); + /********************** * GLOBAL PROTOTYPES **********************/ @@ -47,4 +57,4 @@ void lv_dispi_get_vect(lv_dispi_t * dispi_p, point_t * point_p); * MACROS **********************/ -#endif \ No newline at end of file +#endif diff --git a/lv_obj/lv_obj.c b/lv_obj/lv_obj.c index 75cc974e5..1cbe9d16f 100644 --- a/lv_obj/lv_obj.c +++ b/lv_obj/lv_obj.c @@ -6,13 +6,21 @@ /********************* * INCLUDES *********************/ -#include "lv_obj.h" -#include "../lv_draw/lv_draw_rbasic.h" -#include "../lv_draw/lv_draw_vbasic.h" -#include "../lv_misc/anim.h" -#include "lv_dispi.h" -#include "lv_refr.h" -#include "misc/math/math_base.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef LV_IMG_DEF_WALLPAPER +#include "../lv_objx/lv_img.h" +#endif /********************* * DEFINES @@ -27,18 +35,23 @@ **********************/ static void lv_obj_pos_child_refr(lv_obj_t * obj, cord_t x_diff, cord_t y_diff); static void lv_style_refr_core(void * style_p, lv_obj_t * obj); +static void lv_obj_del_child(lv_obj_t * obj); static bool lv_obj_design(lv_obj_t * obj, const area_t * mask_p, lv_design_mode_t mode); /********************** * STATIC VARIABLES **********************/ -lv_obj_t * def_scr = NULL; -lv_obj_t * act_scr = NULL; -ll_dsc_t scr_ll; +static lv_obj_t * def_scr = NULL; +static lv_obj_t * act_scr = NULL; +static ll_dsc_t scr_ll; -lv_objs_t lv_objs_def = {.color = COLOR_MAKE(0xa0, 0xc0, 0xe0), .transp = 0}; -lv_objs_t lv_objs_scr = {.color = LV_OBJ_DEF_SCR_COLOR, .transp = 0}; -lv_objs_t lv_objs_transp = {.transp = 1}; +static lv_objs_t lv_objs_def = {.color = COLOR_MAKE(0xa0, 0xc0, 0xe0), .transp = 0}; +static lv_objs_t lv_objs_scr = {.color = LV_OBJ_DEF_SCR_COLOR, .transp = 0}; +static lv_objs_t lv_objs_transp = {.transp = 1}; + +#ifdef LV_IMG_DEF_WALLPAPER +LV_IMG_DECLARE(LV_IMG_DEF_WALLPAPER); +#endif /********************** * MACROS @@ -66,7 +79,14 @@ void lv_init(void) /*Create the default screen*/ ll_init(&scr_ll, sizeof(lv_obj_t)); +#ifdef LV_IMG_DEF_WALLPAPER + lv_img_create_file("def_wp", LV_IMG_DEF_WALLPAPER); + def_scr = lv_img_create(NULL, NULL); + lv_img_set_auto_size(def_scr, false); + lv_img_set_file(def_scr, "U:/def_wp"); +#else def_scr = lv_obj_create(NULL, NULL); +#endif act_scr = def_scr; /*Refresh the screen*/ @@ -76,6 +96,12 @@ void lv_init(void) /*Init the display input handling*/ lv_dispi_init(); #endif + + /*Initialize the application level*/ +#if LV_APP_ENABLE != 0 + lv_app_init(); +#endif + } /** @@ -87,7 +113,7 @@ void lv_obj_inv(lv_obj_t * obj) /*Invalidate the object only if it belongs to the 'act_scr'*/ lv_obj_t * act_scr_p = lv_scr_act(); if(lv_obj_get_scr(obj) == act_scr_p) { - /*Truncate the recursively on the parents*/ + /*Truncate recursively to the parents*/ area_t area_trunc; lv_obj_t * par = lv_obj_get_parent(obj); bool union_ok = true; @@ -271,7 +297,7 @@ void lv_obj_del(lv_obj_t * obj) i_next = ll_get_next(&(obj->child_ll), i); /*Call the recursive del to the child too*/ - lv_obj_del(i); + lv_obj_del_child(i); /*Set i to the next node*/ i = i_next; @@ -779,9 +805,11 @@ void lv_obj_set_ext_size(lv_obj_t * obj, cord_t ext_size) */ void lv_obj_set_style(lv_obj_t * obj, void * style) { + lv_obj_inv(obj); if(obj->style_iso != 0) { dm_free(obj->style_p); + obj->style_iso = 0; } obj->style_p = style; @@ -837,7 +865,7 @@ void lv_obj_set_opar(lv_obj_t * obj, uint8_t opa) lv_obj_set_opar(i, opa); } - obj->opa = opa; + if(obj->opa_protect == 0) obj->opa = opa; lv_obj_inv(obj); } @@ -914,6 +942,15 @@ void lv_obj_set_drag_parent(lv_obj_t * obj, bool en) obj->drag_parent = (en == true ? 1 : 0); } +/** + * Do not let 'lv_obj_set_opar' to set the opacity + * @param obj pointer to an object + * @param en true: enable the 'opa_protect' for the object + */ +void lv_obj_set_opa_protect(lv_obj_t * obj, bool en) +{ + obj->opa_protect = (en == true ? 1 : 0); +} /** * Set the signal function of an object. * Always call the previous signal function in the new. @@ -1136,6 +1173,21 @@ lv_obj_t * lv_obj_get_child(lv_obj_t * obj, lv_obj_t * child) return NULL; } +/** + * Count the children of an object (only children directly on 'obj') + * @param obj pointer to an object + * @return children number of 'obj' + */ +uint16_t lv_obj_get_child_num(lv_obj_t * obj) +{ + lv_obj_t * i; + uint16_t cnt = 0; + + LL_READ(obj->child_ll, i) cnt++; + + return cnt; +} + /*--------------------- * Coordinate get *--------------------*/ @@ -1297,6 +1349,16 @@ bool lv_obj_get_drag_parent(lv_obj_t * obj) return obj->drag_parent == 0 ? false : true; } +/** + * Get the opa_protect attribute of an object + * @param obj pointer to an object + * @return true: opa_protect is enabled + */ +bool lv_obj_get_opa_protect(lv_obj_t * obj) +{ + return obj->opa_protect == 0 ? false : true; +} + /** * Get the signal function of an object * @param obj pointer to an object @@ -1428,4 +1490,43 @@ static void lv_style_refr_core(void * style_p, lv_obj_t * obj) } } +/** + * Called by 'lv_obj_del' to delete the children objects + * @param obj pointer to an object (all of its children will be deleted) + */ +static void lv_obj_del_child(lv_obj_t * obj) +{ + lv_obj_t * i; + lv_obj_t * i_next; + i = ll_get_head(&(obj->child_ll)); + while(i != NULL) { + /*Get the next object before delete this*/ + i_next = ll_get_next(&(obj->child_ll), i); + + /*Call the recursive del to the child too*/ + lv_obj_del_child(i); + + /*Set i to the next node*/ + i = i_next; + } + + /*Remove the animations from this object*/ + anim_del(obj, NULL); + + /*Remove the object from parent's children list*/ + lv_obj_t * par = lv_obj_get_parent(obj); + + ll_rem(&(par->child_ll), obj); + + /* All children deleted. + * Now clean up the object specific data*/ + obj->signal_f(obj, LV_SIGNAL_CLEANUP, NULL); + + /*Delete the base objects*/ + if(obj->ext != NULL) dm_free(obj->ext); + if(obj->style_iso != 0) dm_free(obj->style_p); + dm_free(obj); /*Free the object itself*/ + +} + diff --git a/lv_obj/lv_obj.h b/lv_obj/lv_obj.h index d2755b977..472d27bac 100644 --- a/lv_obj/lv_obj.h +++ b/lv_obj/lv_obj.h @@ -1,5 +1,5 @@ /** - * @file lv_base_obj.h + * @file lv_obj.h * */ @@ -28,17 +28,11 @@ #error "LV: LV_DOWNSCALE can be only 1, 2 or 4" #endif -#if LV_VDB_SIZE == 0 && (LV_DOWNSCALE != 1 || LV_UPSCALE_MAP != 0 || LV_UPSCALE_FONT != 0 || LV_UPSCALE_STYLE != 0) -#error "LV: If LV_VDB_SIZE == 0 then LV_DOWNSCALE must be 1, LV_UPSCALE_MAP 0, LV_UPSCALE_FONT 0, LV_UPSCALE_STYLE 0" +#if LV_VDB_SIZE == 0 && (LV_DOWNSCALE != 1 || LV_UPSCALE_MAP != 0 || LV_UPSCALE_STYLE != 0) +#error "LV: If LV_VDB_SIZE == 0 then LV_DOWNSCALE must be 1, LV_UPSCALE_MAP 0, LV_UPSCALE_STYLE 0" #endif /*New defines*/ -#if LV_UPSCALE_SYTLE != 0 -#define LV_STYLE_MULT LV_DOWNSCALE -#else -#define LV_STYLE_MULT 1 -#endif - #define LV_OBJ_DEF_WIDTH (80 * LV_DOWNSCALE) #define LV_OBJ_DEF_HEIGHT (60 * LV_DOWNSCALE) @@ -65,9 +59,11 @@ typedef enum { LV_SIGNAL_CLEANUP, LV_SIGNAL_PRESSED, + LV_SIGNAL_PRESSING, LV_SIGNAL_PRESS_LOST, LV_SIGNAL_RELEASED, LV_SIGNAL_LONG_PRESS, + LV_SIGNAL_LONG_PRESS_REP, LV_SIGNAL_DRAG_BEGIN, LV_SIGNAL_DRAG_END, LV_SIGNAL_CHILD_CHG, @@ -96,15 +92,15 @@ typedef struct __LV_OBJ_T #endif /*Attributes and states*/ - uint8_t click_en :1; /*1: can be pressed by a display input device*/ - uint8_t drag_en :1; /*1: enable the dragging*/ - uint8_t drag_throw_en:1; /*1: Enable throwing with drag*/ - uint8_t drag_parent :1; /*1. Parent will be dragged instead*/ - uint8_t style_iso :1; /*1: The object has got an own style*/ - uint8_t hidden :1; /*1: Object is hidden*/ - uint8_t top_en :1; /*1: If the object or its children is clicked it goes to the foreground*/ - uint8_t child_chg_off:1; /*1: Disable the child change signal. Used by the library*/ - + uint16_t click_en :1; /*1: can be pressed by a display input device*/ + uint16_t drag_en :1; /*1: enable the dragging*/ + uint16_t drag_throw_en:1; /*1: Enable throwing with drag*/ + uint16_t drag_parent :1; /*1. Parent will be dragged instead*/ + uint16_t style_iso :1; /*1: The object has got an own style*/ + uint16_t hidden :1; /*1: Object is hidden*/ + uint16_t top_en :1; /*1: If the object or its children is clicked it goes to the foreground*/ + uint16_t child_chg_off:1; /*1: Disable the child change signal. Used by the library*/ + uint16_t opa_protect :1; /*1: Do not let 'lv_obj_set_opar' to set the opacity*/ cord_t ext_size; /*EXTtend the size of the object in every direction. Used to draw shadow, shine etc.*/ uint8_t free_num; /*Application specific identifier (set it freely)*/ @@ -208,9 +204,10 @@ void lv_obj_set_top(lv_obj_t * obj, bool en); void lv_obj_set_drag(lv_obj_t * obj, bool en); void lv_obj_set_drag_throw(lv_obj_t * obj, bool en); void lv_obj_set_drag_parent(lv_obj_t * obj, bool en); +void lv_obj_set_opa_protect(lv_obj_t * obj, bool en); +/*Other set*/ void lv_obj_set_signal_f(lv_obj_t * obj, lv_signal_f_t fp); void lv_obj_set_design_f(lv_obj_t * obj, lv_design_f_t fp); -/*Other set*/ void * lv_obj_alloc_ext(lv_obj_t * obj, uint16_t ext_size); void lv_obj_refr_ext_size(lv_obj_t * obj); void lv_obj_set_style(lv_obj_t * obj, void * style); @@ -227,6 +224,8 @@ void lv_scr_load(lv_obj_t * scr); lv_obj_t * lv_obj_get_scr(lv_obj_t * obj); lv_obj_t * lv_obj_get_parent(lv_obj_t * obj); lv_obj_t * lv_obj_get_child(lv_obj_t * obj, lv_obj_t * child); +uint16_t lv_obj_get_child_num(lv_obj_t * obj); + /*Coordinate get*/ void lv_obj_get_cords(lv_obj_t * obj, area_t * cords_p); cord_t lv_obj_get_x(lv_obj_t * obj); @@ -242,6 +241,7 @@ bool lv_obj_get_top(lv_obj_t * obj); bool lv_obj_get_drag(lv_obj_t * obj); bool lv_obj_get_drag_throw(lv_obj_t * obj); bool lv_obj_get_drag_parent(lv_obj_t * obj); +bool lv_obj_get_opa_potect(lv_obj_t * obj); /*Virtual functions get*/ lv_design_f_t lv_obj_get_design_f(lv_obj_t * obj); @@ -250,6 +250,7 @@ lv_signal_f_t lv_obj_get_signal_f(lv_obj_t * obj); void * lv_obj_get_ext(lv_obj_t * obj); void * lv_obj_get_style(lv_obj_t * obj); uint8_t lv_obj_get_free_num(lv_obj_t * obj); +void * lv_obj_get_free_p(lv_obj_t * obj); lv_objs_t * lv_objs_get(lv_objs_builtin_t style, lv_objs_t * copy_p); diff --git a/lv_obj/lv_refr.c b/lv_obj/lv_refr.c index 40aa8094c..b9489d886 100644 --- a/lv_obj/lv_refr.c +++ b/lv_obj/lv_refr.c @@ -30,8 +30,8 @@ typedef struct * STATIC PROTOTYPES **********************/ static void lv_refr_task(void); -static void lv_refr_join_area(lv_join_t * area_a, uint32_t inv_num); -static void lv_refr_areas(lv_join_t * area_a, uint32_t area_num); +static void lv_refr_join_area(void); +static void lv_refr_areas(void); #if LV_VDB_SIZE == 0 static void lv_refr_area_no_vdb(const area_t * area_p); #else @@ -45,8 +45,8 @@ static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p); /********************** * STATIC VARIABLES **********************/ -fifo_t fifo_inv; -area_t fifo_inv_buf[LV_INV_FIFO_SIZE]; +lv_join_t inv_buf[LV_INV_FIFO_SIZE]; +uint16_t inv_buf_p; /********************** * MACROS @@ -61,8 +61,9 @@ area_t fifo_inv_buf[LV_INV_FIFO_SIZE]; */ void lv_refr_init(void) { - fifo_init(&fifo_inv, fifo_inv_buf, sizeof(area_t), LV_INV_FIFO_SIZE); - + inv_buf_p = 0; + memset(inv_buf, 0, sizeof(inv_buf)); + ptask_t* task; task = ptask_create(lv_refr_task, LV_REFR_PERIOD, PTASK_PRIO_MID); dm_assert(task); @@ -101,16 +102,22 @@ void lv_inv_area(const area_t * area_p) com_area.x2 = com_area.x2 | 0x3; com_area.y2 = com_area.y2 | 0x3; #endif - /*Save the area*/ - suc = fifo_push(&fifo_inv, &com_area); - /* There is no place for the new area - * clear the fifo and add the whole screen*/ - if(suc == false) - { - fifo_clear(&fifo_inv); - fifo_push(&fifo_inv, &scr_area); + /*Save only if this area is not in one of the saved areas*/ + uint16_t i; + for(i = 0; i < inv_buf_p; i++) { + if(area_is_in(&com_area, &inv_buf[i].area) != false) return; + } + + + /*Save the area*/ + if(inv_buf_p < LV_INV_FIFO_SIZE) { + area_cpy(&inv_buf[inv_buf_p].area,&com_area); + } else {/*If no place for the area add the screen*/ + inv_buf_p = 0; + area_cpy(&inv_buf[inv_buf_p].area,&scr_area); } + inv_buf_p ++; } } @@ -123,66 +130,50 @@ void lv_inv_area(const area_t * area_p) */ static void lv_refr_task(void) { - lv_join_t area_tmp[LV_INV_FIFO_SIZE]; + lv_refr_join_area(); - memset(area_tmp, 0, sizeof(area_tmp)); - - /*Read all data from the fifo_inv*/ - uint32_t inv_num; - bool suc; - for(inv_num = 0; inv_num < LV_INV_FIFO_SIZE; inv_num++) - { - suc = fifo_pop(&fifo_inv, &area_tmp[inv_num].area); - - if(suc == false) /*Break id the fifo is empty*/ - { - break; - } - } - - lv_refr_join_area(area_tmp, inv_num); - - lv_refr_areas(area_tmp, inv_num); + lv_refr_areas(); + + memset(inv_buf, 0, sizeof(inv_buf)); + inv_buf_p = 0; } /** * Join the areas which has got common parts - * @param join_a an array of areas to join - * @param inv_num item number of the array */ -static void lv_refr_join_area(lv_join_t * area_a, uint32_t area_num) +static void lv_refr_join_area(void) { uint32_t join_from; uint32_t join_in; area_t joined_area; - for(join_in = 0; join_in < area_num; join_in++) { - if(area_a[join_in].joined != 0) continue; + for(join_in = 0; join_in < inv_buf_p; join_in++) { + if(inv_buf[join_in].joined != 0) continue; /*Check all areas to join them in 'join_in'*/ - for(join_from = 0; join_from < area_num; join_from++) { + for(join_from = 0; join_from < inv_buf_p; join_from++) { /*Handle only unjoined areas and ignore itself*/ - if(area_a[join_from].joined != 0 || join_in == join_from) { + if(inv_buf[join_from].joined != 0 || join_in == join_from) { continue; } /*Check if the areas are on each other*/ - if(area_is_on(&area_a[join_in].area, - &area_a[join_from].area) == false) + if(area_is_on(&inv_buf[join_in].area, + &inv_buf[join_from].area) == false) { continue; } - area_join(&joined_area, &area_a[join_in].area, - &area_a[join_from].area); + area_join(&joined_area, &inv_buf[join_in].area, + &inv_buf[join_from].area); /*Join two area only if the joined area size is smaller*/ if(area_get_size(&joined_area) < - (area_get_size(&area_a[join_in].area) + area_get_size(&area_a[join_from].area))) { - area_cpy(&area_a[join_in].area, &joined_area); + (area_get_size(&inv_buf[join_in].area) + area_get_size(&inv_buf[join_from].area))) { + area_cpy(&inv_buf[join_in].area, &joined_area); /*Mark 'join_form' is joined into 'join_in'*/ - area_a[join_from].joined = 1; + inv_buf[join_from].joined = 1; } } } @@ -190,22 +181,20 @@ static void lv_refr_join_area(lv_join_t * area_a, uint32_t area_num) /** * Refresh the joined areas - * @param area_a array of joined invalid areas - * @param area_num item number of the array */ -static void lv_refr_areas(lv_join_t * area_a, uint32_t area_num) +static void lv_refr_areas(void) { uint32_t i; - for(i = 0; i < area_num; i++) { + for(i = 0; i < inv_buf_p; i++) { /*Refresh the unjoined areas*/ - if(area_a[i].joined == 0) { + if(inv_buf[i].joined == 0) { /*If there is no VDB do simple drawing*/ #if LV_VDB_SIZE == 0 - lv_refr_area_no_vdb(&area_a[i].area); + lv_refr_area_no_vdb(&inv_buf[i].area); #else /*If VDB is used...*/ - lv_refr_area_with_vdb(&area_a[i].area); + lv_refr_area_with_vdb(&inv_buf[i].area); #endif } @@ -314,10 +303,7 @@ static lv_obj_t * lv_refr_get_top_obj(const area_t * area_p, lv_obj_t * obj) lv_obj_t * found_p = NULL; /*If this object is fully cover the draw area check the children too */ - if(obj->opa == OPA_COVER && - obj->hidden == 0 && - LV_SA(obj, lv_objs_t)->transp == 0 && - obj->design_f(obj, area_p, LV_DESIGN_COVER_CHK) != false) + if(area_is_in(area_p, &obj->cords) && obj->hidden == 0) { LL_READ(obj->child_ll, i) { found_p = lv_refr_get_top_obj(area_p, i); @@ -328,9 +314,13 @@ static lv_obj_t * lv_refr_get_top_obj(const area_t * area_p, lv_obj_t * obj) } } - /*If there is no better children use this object*/ + /*If no better children check this object*/ if(found_p == NULL) { - found_p = obj; + if(obj->opa == OPA_COVER && + LV_SA(obj, lv_objs_t)->transp == 0 && + obj->design_f(obj, area_p, LV_DESIGN_COVER_CHK) != false) { + found_p = obj; + } } } @@ -408,6 +398,7 @@ static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p) /* Redraw the object */ if(obj->opa != OPA_TRANSP && LV_SA(obj, lv_objs_t)->transp == 0) { obj->design_f(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN); + /* tick_wait_ms(100); */ /*DEBUG: Wait after every object draw to see the order of drawing*/ } /*Create a new 'obj_mask' without 'ext_size' because the children can't be visible there*/ diff --git a/lv_objx/lv_btn.c b/lv_objx/lv_btn.c index 53a6a004e..759c3681b 100644 --- a/lv_objx/lv_btn.c +++ b/lv_objx/lv_btn.c @@ -120,7 +120,7 @@ bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void* param) lv_btn_ext_t * ext = lv_obj_get_ext(btn); bool tgl = lv_btn_get_tgl(btn); - switch (sign){ + switch (sign) { case LV_SIGNAL_PRESSED: /*Refresh the state*/ if(ext->state == LV_BTN_STATE_REL) { @@ -128,7 +128,6 @@ bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void* param) } else if(ext->state == LV_BTN_STATE_TGL_REL) { lv_btn_set_state(btn, LV_BTN_STATE_TGL_PR); } - lv_obj_inv(btn); ext->lpr_exec = 0; /*Call the press action, here 'param' is the caller dispi*/ @@ -143,8 +142,7 @@ bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void* param) lv_btn_set_state(btn, LV_BTN_STATE_REL); } else if(ext->state == LV_BTN_STATE_TGL_PR) { lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL); - } - lv_obj_inv(btn); + }lv_obj_inv(btn); break; case LV_SIGNAL_RELEASED: @@ -161,7 +159,6 @@ bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void* param) lv_btn_set_state(btn, LV_BTN_STATE_REL); } - if(ext->rel_action != NULL && state != LV_BTN_STATE_INA) { valid = ext->rel_action(btn, param); } @@ -171,9 +168,9 @@ bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void* param) } else if(ext->state == LV_BTN_STATE_TGL_PR) { lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL); } + lv_obj_inv(btn); } - lv_obj_inv(btn); break; case LV_SIGNAL_LONG_PRESS: /*Call the long press action, here 'param' is the caller dispi*/ @@ -182,6 +179,12 @@ bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void* param) valid = ext->lpr_action(btn, param); } break; + case LV_SIGNAL_LONG_PRESS_REP: + /*Call the release action, here 'param' is the caller dispi*/ + if(ext->lpr_rep_action != NULL && state != LV_BTN_STATE_INA) { + valid = ext->lpr_rep_action(btn, param); + } + break; default: /*Do nothing*/ break; @@ -225,7 +228,7 @@ void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state) * @param btn pointer to a button object * @param pr_action pointer to function */ -void lv_btn_set_pr_action(lv_obj_t * btn, bool (*pr_action)(lv_obj_t *, lv_dispi_t *)) +void lv_btn_set_pr_action(lv_obj_t * btn, lv_action_t pr_action) { lv_btn_ext_t * ext = lv_obj_get_ext(btn); @@ -235,9 +238,9 @@ void lv_btn_set_pr_action(lv_obj_t * btn, bool (*pr_action)(lv_obj_t *, lv_dispi /** * Set a function to call when the button is released * @param btn pointer to a button object - * @param pr_action pointer to function + * @param rel_action pointer to functionREL */ -void lv_btn_set_rel_action(lv_obj_t * btn, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)) +void lv_btn_set_rel_action(lv_obj_t * btn, lv_action_t rel_action) { lv_btn_ext_t * btn_p = lv_obj_get_ext(btn); @@ -247,15 +250,26 @@ void lv_btn_set_rel_action(lv_obj_t * btn, bool (*rel_action)(lv_obj_t *, lv_dis /** * Set a function to call when the button is long pressed * @param btn pointer to a button object - * @param pr_action pointer to function + * @param lpr_action pointer to function */ -void lv_btn_set_lpr_action(lv_obj_t * btn, bool (*lpr_action)(lv_obj_t *, lv_dispi_t *)) +void lv_btn_set_lpr_action(lv_obj_t * btn, lv_action_t lpr_action) { lv_btn_ext_t * ext = lv_obj_get_ext(btn); ext->lpr_action = lpr_action; } +/** + * Set a function to called periodically after long press. + * @param btn pointer to a button object + * @param lpr_rep_action pointer to function + */ +void lv_btn_set_lpr_rep_action(lv_obj_t * btn, lv_action_t lpr_rep_action) +{ + lv_btn_ext_t * ext = lv_obj_get_ext(btn); + + ext->lpr_rep_action = lpr_rep_action; +} /*===================== * Getter functions *====================*/ @@ -340,13 +354,21 @@ lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy) */ static bool lv_btn_design(lv_obj_t * btn, const area_t * mask, lv_design_mode_t mode) { - lv_btns_t * btns_p = lv_obj_get_style(btn); /* Because of the radius it is not sure the area is covered*/ if(mode == LV_DESIGN_COVER_CHK) { - return ancestor_design_f(btn, mask, mode); + /*Temporally set a rectangle style for the button to look like as rectangle*/ + lv_rects_t rects_tmp; + lv_btns_t * btns_tmp = lv_obj_get_style(btn); + bool ret = false; + lv_btn_style_load(btn, &rects_tmp); + if(rects_tmp.objs.transp == 0) { + btn->style_p = &rects_tmp; + ret = ancestor_design_f(btn, mask, mode); /*Draw the rectangle*/ + btn->style_p = btns_tmp; /*Reload the original button style*/ + } + return ret; } else if(mode == LV_DESIGN_DRAW_MAIN) { - opa_t opa = lv_obj_get_opa(btn); area_t area; lv_obj_get_cords(btn, &area); @@ -354,9 +376,11 @@ static bool lv_btn_design(lv_obj_t * btn, const area_t * mask, lv_design_mode_t lv_rects_t rects_tmp; lv_btns_t * btns_tmp = lv_obj_get_style(btn); lv_btn_style_load(btn, &rects_tmp); - btn->style_p = &rects_tmp; - ancestor_design_f(btn, mask, mode); /*Draw the rectangle*/ - btn->style_p = btns_tmp; /*Reload the origial butto style*/ + if(rects_tmp.objs.transp == 0) { + btn->style_p = &rects_tmp; + ancestor_design_f(btn, mask, mode); /*Draw the rectangle*/ + btn->style_p = btns_tmp; /*Reload the original button style*/ + } } return true; } @@ -377,11 +401,12 @@ static void lv_btn_style_load(lv_obj_t * btn, lv_rects_t * new_rects) new_rects->gcolor = style->gcolor[state]; new_rects->bcolor = style->bcolor[state]; new_rects->lcolor = style->lcolor[state]; - if(style->light_en[state] != 0) { - new_rects->light = style->rects.light; - } else { - new_rects->light = 0; - } + new_rects->empty = style->flags[state].empty; + new_rects->objs.transp = style->flags[state].transp; + + if(style->flags[state].light_en != 0) new_rects->light = style->rects.light; + else new_rects->light = 0; + } /** @@ -394,46 +419,69 @@ static void lv_btns_init(void) lv_btns_def.gcolor[LV_BTN_STATE_REL] = COLOR_BLACK; lv_btns_def.bcolor[LV_BTN_STATE_REL] = COLOR_WHITE; lv_btns_def.lcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x30, 0x40, 0x50); - lv_btns_def.light_en[LV_BTN_STATE_REL] = 0; + lv_btns_def.flags[LV_BTN_STATE_REL].light_en = 0; + lv_btns_def.flags[LV_BTN_STATE_REL].transp = 0; + lv_btns_def.flags[LV_BTN_STATE_REL].empty = 0; lv_btns_def.mcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x60, 0x80, 0xa0); lv_btns_def.gcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x20, 0x30, 0x40); lv_btns_def.bcolor[LV_BTN_STATE_PR] = COLOR_WHITE; lv_btns_def.lcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x30, 0x40, 0x50); - lv_btns_def.light_en[LV_BTN_STATE_PR] = 1; + lv_btns_def.flags[LV_BTN_STATE_PR].light_en = 1; + lv_btns_def.flags[LV_BTN_STATE_PR].transp = 0; + lv_btns_def.flags[LV_BTN_STATE_PR].empty = 0; lv_btns_def.mcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x80, 0x00, 0x00); lv_btns_def.gcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x20, 0x20, 0x20); lv_btns_def.bcolor[LV_BTN_STATE_TGL_REL] = COLOR_WHITE; lv_btns_def.lcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x30, 0x40, 0x50); - lv_btns_def.light_en[LV_BTN_STATE_TGL_REL] = 0; + lv_btns_def.flags[LV_BTN_STATE_TGL_REL].light_en = 0; + lv_btns_def.flags[LV_BTN_STATE_TGL_REL].transp = 0; + lv_btns_def.flags[LV_BTN_STATE_TGL_REL].empty = 0; lv_btns_def.mcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0xf0, 0x26, 0x26); lv_btns_def.gcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x40, 0x40, 0x40); lv_btns_def.bcolor[LV_BTN_STATE_TGL_PR] = COLOR_WHITE; lv_btns_def.lcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x30, 0x40, 0x50); - lv_btns_def.light_en[LV_BTN_STATE_TGL_PR] = 1; + lv_btns_def.flags[LV_BTN_STATE_TGL_PR].light_en = 1; + lv_btns_def.flags[LV_BTN_STATE_TGL_PR].transp = 0; + lv_btns_def.flags[LV_BTN_STATE_TGL_PR].empty = 0; lv_btns_def.mcolor[LV_BTN_STATE_INA] = COLOR_SILVER; lv_btns_def.gcolor[LV_BTN_STATE_INA] = COLOR_GRAY; lv_btns_def.bcolor[LV_BTN_STATE_INA] = COLOR_WHITE; lv_btns_def.lcolor[LV_BTN_STATE_INA] = COLOR_MAKE(0x30, 0x40, 0x50); - lv_btns_def.light_en[LV_BTN_STATE_INA] = 0; + lv_btns_def.flags[LV_BTN_STATE_INA].light_en = 0; + lv_btns_def.flags[LV_BTN_STATE_INA].transp= 0; + lv_btns_def.flags[LV_BTN_STATE_INA].empty = 0; - lv_btns_def.rects.bwidth = 2 * LV_STYLE_MULT; - lv_btns_def.rects.bopa = 50; - lv_btns_def.rects.light = 8 * LV_STYLE_MULT; + lv_btns_def.rects.objs.color = lv_btns_def.mcolor[LV_BTN_STATE_REL]; + lv_btns_def.rects.gcolor = lv_btns_def.gcolor[LV_BTN_STATE_REL]; + lv_btns_def.rects.bcolor = lv_btns_def.bcolor[LV_BTN_STATE_REL]; + lv_btns_def.rects.objs.transp = 0; lv_btns_def.rects.empty = 0; - lv_btns_def.rects.round = 4 * LV_STYLE_MULT; - lv_btns_def.rects.hpad = 10 * LV_STYLE_MULT; - lv_btns_def.rects.vpad = 15 * LV_STYLE_MULT; - lv_btns_def.rects.opad = 5 * LV_STYLE_MULT; + lv_btns_def.rects.light = 0; + lv_btns_def.rects.bwidth = 2 * LV_DOWNSCALE; + lv_btns_def.rects.bopa = 50; + lv_btns_def.rects.empty = 0; + lv_btns_def.rects.round = 4 * LV_DOWNSCALE; + lv_btns_def.rects.hpad = 10 * LV_DOWNSCALE; + lv_btns_def.rects.vpad = 15 * LV_DOWNSCALE; + lv_btns_def.rects.opad = 5 * LV_DOWNSCALE; /*Transparent style*/ memcpy(&lv_btns_transp, &lv_btns_def, sizeof(lv_btns_t)); - lv_btns_transp.rects.objs.transp = 1; lv_btns_transp.rects.bwidth = 0; - lv_btns_transp.rects.empty = 1; + lv_btns_transp.flags[LV_BTN_STATE_REL].transp = 1; + lv_btns_transp.flags[LV_BTN_STATE_REL].empty = 1; + lv_btns_transp.flags[LV_BTN_STATE_PR].transp = 1; + lv_btns_transp.flags[LV_BTN_STATE_PR].empty = 1; + lv_btns_transp.flags[LV_BTN_STATE_TGL_REL].transp = 1; + lv_btns_transp.flags[LV_BTN_STATE_TGL_REL].empty = 1; + lv_btns_transp.flags[LV_BTN_STATE_TGL_PR].transp = 1; + lv_btns_transp.flags[LV_BTN_STATE_TGL_PR].empty = 1; + lv_btns_transp.flags[LV_BTN_STATE_INA].transp = 1; + lv_btns_transp.flags[LV_BTN_STATE_INA].empty = 1; /*Border style*/ @@ -443,13 +491,17 @@ static void lv_btns_init(void) lv_btns_border.bcolor[LV_BTN_STATE_TGL_REL] = COLOR_BLACK; lv_btns_border.bcolor[LV_BTN_STATE_TGL_PR] = COLOR_BLACK; lv_btns_border.bcolor[LV_BTN_STATE_INA] = COLOR_GRAY; - lv_btns_border.rects.bwidth = 2 * LV_STYLE_MULT; - lv_btns_border.rects.empty = 1; + lv_btns_border.flags[LV_BTN_STATE_REL].empty = 1; + lv_btns_border.flags[LV_BTN_STATE_PR].empty = 1; + lv_btns_border.flags[LV_BTN_STATE_TGL_REL].empty = 1; + lv_btns_border.flags[LV_BTN_STATE_TGL_PR].empty = 1; + lv_btns_border.flags[LV_BTN_STATE_INA].empty = 1; + lv_btns_border.rects.bwidth = 2 * LV_DOWNSCALE; lv_btns_border.rects.bopa = 50; - lv_btns_border.rects.round = 4 * LV_STYLE_MULT; - lv_btns_border.rects.hpad = 10 * LV_STYLE_MULT; - lv_btns_border.rects.vpad = 10 * LV_STYLE_MULT; - lv_btns_border.rects.vpad = 5 * LV_STYLE_MULT; + lv_btns_border.rects.round = 4 * LV_DOWNSCALE; + lv_btns_border.rects.hpad = 10 * LV_DOWNSCALE; + lv_btns_border.rects.vpad = 10 * LV_DOWNSCALE; + lv_btns_border.rects.vpad = 5 * LV_DOWNSCALE; } #endif diff --git a/lv_objx/lv_btn.h b/lv_objx/lv_btn.h index 95ed0e971..5e4687b10 100644 --- a/lv_objx/lv_btn.h +++ b/lv_objx/lv_btn.h @@ -33,6 +33,13 @@ typedef enum LV_BTN_STATE_NUM, }lv_btn_state_t; +typedef struct +{ + uint8_t light_en :1; + uint8_t transp :1; + uint8_t empty :1; +}lv_btns_bits_t; + /*Style of button*/ typedef struct { @@ -42,7 +49,7 @@ typedef struct color_t gcolor[LV_BTN_STATE_NUM]; color_t bcolor[LV_BTN_STATE_NUM]; color_t lcolor[LV_BTN_STATE_NUM]; - uint8_t light_en[LV_BTN_STATE_NUM]; + lv_btns_bits_t flags[LV_BTN_STATE_NUM]; }lv_btns_t; /*Built-in styles of button*/ @@ -58,9 +65,10 @@ typedef struct { lv_rect_ext_t rect_ext; /*Ext. of ancestor*/ /*New data for this type */ - bool (*pr_action)(lv_obj_t *, lv_dispi_t *); - bool (*rel_action)(lv_obj_t *, lv_dispi_t *); - bool (*lpr_action)(lv_obj_t *, lv_dispi_t *); + lv_action_t pr_action; + lv_action_t rel_action; + lv_action_t lpr_action; + lv_action_t lpr_rep_action; lv_btn_state_t state; uint8_t tgl :1; /*1: Toggle enabled*/ @@ -78,9 +86,10 @@ lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy); void lv_btn_set_tgl(lv_obj_t * btn, bool tgl); void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state); -void lv_btn_set_pr_action(lv_obj_t * btn, bool (*pr_action)(lv_obj_t *, lv_dispi_t *)); -void lv_btn_set_rel_action(lv_obj_t * btn, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)); -void lv_btn_set_lpr_action(lv_obj_t * btn, bool (*lpr_action)(lv_obj_t *, lv_dispi_t *)); +void lv_btn_set_pr_action(lv_obj_t * btn, lv_action_t pr_action); +void lv_btn_set_rel_action(lv_obj_t * btn, lv_action_t rel_action); +void lv_btn_set_lpr_action(lv_obj_t * btn, lv_action_t lpr_action); +void lv_btn_set_lpr_rep_action(lv_obj_t * btn, lv_action_t lpr_rep_action); bool lv_btn_get_tgl(lv_obj_t * btn); lv_btn_state_t lv_btn_get_state(lv_obj_t * btn); diff --git a/lv_objx/lv_btnm.c b/lv_objx/lv_btnm.c index 4b91c5790..3829f3ec3 100644 --- a/lv_objx/lv_btnm.c +++ b/lv_objx/lv_btnm.c @@ -10,10 +10,13 @@ #if USE_LV_BTNM != 0 #include "lv_btnm.h" +#include "../lv_draw/lv_draw.h" +#include "../lv_misc/text.h" /********************* * DEFINES *********************/ +#define LV_BTNM_BTN_PR_INVALID 0xFFFF /********************** * TYPEDEFS @@ -23,12 +26,9 @@ * STATIC PROTOTYPES **********************/ -#if 0 /*Not necessary*/ static bool lv_btnm_design(lv_obj_t * btnm, const area_t * mask, lv_design_mode_t mode); -#endif static uint8_t lv_btnm_get_width_unit(const char * btn_str); static void lv_btnm_create_btns(lv_obj_t * btnm, const char ** map); -static bool lv_btnm_btn_release_action(lv_obj_t * btnm, lv_dispi_t * dispi); static void lv_btnms_init(void); /********************** @@ -39,6 +39,8 @@ static lv_btnms_t lv_btnms_def; static const char * lv_btnm_def_map[] = {"Btn1","Btn2", "Btn3","\n", "\002Btn4","Btn5", ""}; +static lv_design_f_t ancestor_design_f; + /********************** * MACROS **********************/ @@ -67,10 +69,13 @@ lv_obj_t * lv_btnm_create(lv_obj_t * par, lv_obj_t * copy) lv_btnm_ext_t * ext = lv_obj_alloc_ext(new_btnm, sizeof(lv_btnm_ext_t)); dm_assert(ext); - lv_obj_set_signal_f(new_btnm, lv_btnm_signal); + if(ancestor_design_f == NULL) ancestor_design_f = lv_obj_get_design_f(new_btnm); - /* Keep the rectangle design function - * lv_obj_set_design_f(new_obj, lv_btnm_design); */ + lv_obj_set_signal_f(new_btnm, lv_btnm_signal); + lv_obj_set_design_f(new_btnm, lv_btnm_design); + + ext->btn_cnt = 0; + ext->btn_pr = LV_BTNM_BTN_PR_INVALID; /*Init the new button matrix object*/ if(copy == NULL) { @@ -103,14 +108,55 @@ bool lv_btnm_signal(lv_obj_t * btnm, lv_signal_t sign, void * param) /* The object can be deleted so check its validity and then * make the object specific signal handling */ if(valid != false) { + lv_btnm_ext_t * ext = lv_obj_get_ext(btnm); + uint16_t i; + point_t p; + area_t btn_area; + area_t btnm_cords; switch(sign) { case LV_SIGNAL_CLEANUP: - /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/ + dm_free(ext->btn_areas); break; case LV_SIGNAL_STYLE_CHG: case LV_SIGNAL_CORD_CHG: lv_btnm_set_map(btnm, LV_EA(btnm, lv_btnm_ext_t)->map_p); break; + case LV_SIGNAL_PRESSING: + /*Search the pressed area*/ + ext->btn_pr = LV_BTNM_BTN_PR_INVALID; + lv_dispi_get_point(param, &p); + lv_obj_get_cords(btnm, &btnm_cords); + for(i = 0; i < ext->btn_cnt; i++) { + area_cpy(&btn_area, &ext->btn_areas[i]); + btn_area.x1 += btnm_cords.x1; + btn_area.y1 += btnm_cords.y1; + btn_area.x2 += btnm_cords.x1; + btn_area.y2 += btnm_cords.y1; + if(area_is_point_on(&btn_area, &p) != false) { + ext->btn_pr = i; + lv_obj_inv(btnm); + break; + } + } + break; + case LV_SIGNAL_RELEASED: + case LV_SIGNAL_LONG_PRESS_REP: + if(ext->cb != NULL && + ext->btn_pr != LV_BTNM_BTN_PR_INVALID) { + uint16_t txt_i = 0; + uint16_t btn_i = 0; + /*Search the next valid text in the map*/ + while(btn_i != ext->btn_pr) { + btn_i ++; + txt_i ++; + if(strcmp(ext->map_p[txt_i], "\n") == 0) txt_i ++; + } + + ext->cb(btnm, txt_i); + } + if(sign == LV_SIGNAL_RELEASED) ext->btn_pr = LV_BTNM_BTN_PR_INVALID; + lv_obj_inv(btnm); + break; default: break; } @@ -131,6 +177,7 @@ bool lv_btnm_signal(lv_obj_t * btnm, lv_signal_t sign, void * param) * Use octal numbers (e.g. "\003") to set the relative * width of a button. (max. 9 -> \011) * (e.g. const char * str[] = {"a", "b", "\n", "\004c", "d", ""}). + * The button do not copy the array so it can not be a local variable. */ void lv_btnm_set_map(lv_obj_t * btnm, const char ** map) { @@ -162,9 +209,9 @@ void lv_btnm_set_map(lv_obj_t * btnm, const char ** map) uint16_t unit_cnt; uint16_t btn_cnt; /*Number of buttons in a row*/ uint16_t i_tot = 0; /*Act. index in the str map*/ + uint16_t btn_i = 0; /*Act. index of button areas*/ const char ** map_p_tmp = map; - lv_obj_t * btn; - btn = ll_get_head(&btnm->child_ll); + lv_btnm_ext_t * ext = lv_obj_get_ext(btnm); /*Count the units and the buttons in a line*/ while(1) { @@ -179,27 +226,27 @@ void lv_btnm_set_map(lv_obj_t * btnm, const char ** map) /*Only deal with the non empty lines*/ if(btn_cnt != 0) { - /*Calculate the unit width*/ - cord_t unit_w = max_w - ((btn_cnt-1) * btnms->rects.opad); - unit_w = unit_w / unit_cnt; + /*Calculate the width of all units*/ + cord_t all_unit_w = max_w - ((btn_cnt-1) * btnms->rects.opad); /*Set the button size and positions and set the texts*/ uint16_t i; - lv_obj_t * label; cord_t act_x = btnms->rects.hpad; + cord_t act_unit_w; for(i = 0; i < btn_cnt; i++) { - lv_obj_set_size(btn, unit_w * lv_btnm_get_width_unit(map_p_tmp[i]), btn_h); - lv_obj_align(btn, NULL, LV_ALIGN_IN_TOP_LEFT, act_x, act_y); - lv_obj_set_free_num(btn, i_tot); - lv_obj_set_style(btn, &btnms->btns); - act_x += lv_obj_get_width(btn) + btnms->rects.opad; + /* one_unit_w = all_unit_w / unit_cnt + * act_unit_w = one_unit_w * button_width + * do this two operation but the multiplications first to divide a greater number */ + act_unit_w = (all_unit_w * lv_btnm_get_width_unit(map_p_tmp[i])) / unit_cnt; + area_set(&ext->btn_areas[btn_i], act_x, + act_y, + act_x + act_unit_w, + act_y + btn_h); - label = lv_obj_get_child(btn, NULL); /*Get the label on the button (the only child)*/ - lv_obj_set_style(label, &btnms->labels); - lv_label_set_text(label, map_p_tmp[i]); + act_x += act_unit_w + btnms->rects.opad; - btn = ll_get_next(&btnm->child_ll, btn); /*Go to the next button*/ - i_tot++; + i_tot ++; + btn_i ++; } } act_y += btn_h + btnms->rects.opad; @@ -208,6 +255,8 @@ void lv_btnm_set_map(lv_obj_t * btnm, const char ** map) i_tot ++; /*Skip the '\n'*/ } + lv_obj_inv(btnm); + } /** @@ -283,10 +332,9 @@ lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy) * STATIC FUNCTIONS **********************/ -#if 0 /*Not necessary*/ /** * Handle the drawing related tasks of the button matrixs - * @param obj pointer to an object + * @param btnm pointer to a button matrix object * @param mask the object will be drawn only in this area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * (return 'true' if yes) @@ -294,18 +342,77 @@ lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy) * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return true/false, depends on 'mode' */ -static bool lv_btnm_design(lv_obj_t * obj, const area_t * mask, lv_design_mode_t mode) +static bool lv_btnm_design(lv_obj_t * btnm, const area_t * mask, lv_design_mode_t mode) { if(mode == LV_DESIGN_COVER_CHK) { + return ancestor_design_f(btnm, mask, mode); /*Return false if the object is not covers the mask_p area*/ - return false; + } + /*Draw the object*/ + else if (mode == LV_DESIGN_DRAW_MAIN) { + ancestor_design_f(btnm, mask, mode); + + lv_btnm_ext_t * ext = lv_obj_get_ext(btnm); + lv_btnms_t * style = lv_obj_get_style(btnm); + + area_t area_btnm; + area_t area_tmp; + cord_t btn_w; + cord_t btn_h; + + uint16_t btn_i = 0; + uint16_t txt_i = 0; + for(btn_i = 0; btn_i < ext->btn_cnt; btn_i ++) { + lv_obj_get_cords(btnm, &area_btnm); + + area_cpy(&area_tmp, &ext->btn_areas[btn_i]); + area_tmp.x1 += area_btnm.x1; + area_tmp.y1 += area_btnm.y1; + area_tmp.x2 += area_btnm.x1; + area_tmp.y2 += area_btnm.y1; + + btn_w = area_get_width(&area_tmp); + btn_h = area_get_height(&area_tmp); + + /*Load the style*/ + lv_rects_t new_rects; + lv_btn_state_t state; + state = ext->btn_pr == btn_i ? LV_BTN_STATE_PR : LV_BTN_STATE_REL; + memcpy(&new_rects, &style->rects, sizeof(lv_rects_t)); + new_rects.objs.color = style->btns.mcolor[state]; + new_rects.gcolor = style->btns.gcolor[state]; + new_rects.bcolor = style->btns.bcolor[state]; + new_rects.lcolor = style->btns.lcolor[state]; + new_rects.empty = style->btns.flags[state].empty; + new_rects.objs.transp = style->btns.flags[state].transp; + + if(style->btns.flags[state].light_en != 0) new_rects.light = style->rects.light; + else new_rects.light = 0; + + lv_draw_rect(&area_tmp, mask, &new_rects, OPA_COVER); + + /*Search the next valid text in the map*/ + while(strcmp(ext->map_p[txt_i], "\n") == 0) txt_i ++; + + /*Calculate the size of the text*/ + const font_t * font = font_get(style->labels.font); + point_t txt_size; + txt_get_size(&txt_size, ext->map_p[txt_i], font, + style->labels.letter_space, style->labels.line_space, area_get_width(&area_btnm)); + + area_tmp.x1 += (btn_w - txt_size.x) / 2; + area_tmp.y1 += (btn_h - txt_size.y) / 2; + area_tmp.x2 = area_tmp.x1 + txt_size.x; + area_tmp.y2 = area_tmp.y1 + txt_size.y; + + lv_draw_label(&area_tmp, mask, &style->labels, OPA_COVER, ext->map_p[txt_i]); + txt_i ++; + } } - /*Draw the object*/ return true; } -#endif /** @@ -330,33 +437,20 @@ static void lv_btnm_create_btns(lv_obj_t * btnm, const char ** map) uint16_t btn_cnt = 0; uint16_t i = 0; while(strlen(map[i]) != 0) { - if(strcmp(map[i], "\n") != 0) { /*Not count line breaks*/ + if(strcmp(map[i], "\n") != 0) { /*Do not count line breaks*/ btn_cnt ++; } i++; } - /*Get the current number of children of the button matrix*/ - uint16_t child_cnt = 0; - lv_obj_t * child = NULL; - while(1) { - child = lv_obj_get_child(btnm, child); - if(child != NULL) child_cnt ++; - else break; + lv_btnm_ext_t * ext = lv_obj_get_ext(btnm); + + if(ext->btn_areas != NULL) { + dm_free(ext->btn_areas); } - /*Create or delete buttons to finally get 'btn_cnt' children*/ - if(child_cnt < btn_cnt) { /*Create buttons*/ - for(i = 0; i < btn_cnt - child_cnt; i++) { - lv_obj_t * btn = lv_btn_create(btnm, NULL); - lv_btn_set_rel_action(btn, lv_btnm_btn_release_action); - lv_label_create(btn, NULL); - } - } else if(child_cnt > btn_cnt) { /*Delete buttons*/ - for(i = 0; i < child_cnt - btn_cnt; i++) { - lv_obj_del(lv_obj_get_child(btnm, NULL)); - } - } + ext->btn_areas = dm_alloc(sizeof(area_t) * btn_cnt); + ext->btn_cnt = btn_cnt; } /** @@ -373,23 +467,4 @@ static uint8_t lv_btnm_get_width_unit(const char * btn_str) } -/** - * Called when button is released - * @param btn pointer to the released button of the button matrix - * @param dispi pointer to the caller display input. - * @return true: if the button remains valid (the button matrix or the button is not deleted) - */ -static bool lv_btnm_btn_release_action(lv_obj_t * btn, lv_dispi_t * dispi) -{ - lv_obj_t * btnm = lv_obj_get_parent(btn); - lv_btnm_ext_t * ext = lv_obj_get_ext(btnm); - uint8_t id = lv_obj_get_free_num(btn); - bool ret; - if(ext->cb != NULL) { - ret = ext->cb(btnm, btn, id); /*Call the set callback function*/ - } - - return ret; -} - #endif diff --git a/lv_objx/lv_btnm.h b/lv_objx/lv_btnm.h index a957f790d..04b117ba0 100644 --- a/lv_objx/lv_btnm.h +++ b/lv_objx/lv_btnm.h @@ -42,9 +42,9 @@ typedef enum }lv_btnms_builtin_t; /* Type of callback function which is called when a button is released - * Parameters: button matrix, released object, button index in the map string + * Parameters: button matrix, released button index in the map string * return false: the released button or the button matrix is deleted else true*/ -typedef bool (*lv_btnm_callback_t) (lv_obj_t *, lv_obj_t *, uint8_t); +typedef lv_action_res_t (*lv_btnm_callback_t) (lv_obj_t *, uint16_t); /*Data of button matrix*/ typedef struct @@ -52,6 +52,9 @@ typedef struct lv_rect_ext_t rect; /*Ext. of ancestor*/ /*New data for this type */ const char ** map_p; /*Pointer to the current map*/ + area_t * btn_areas; + uint16_t btn_cnt; + uint16_t btn_pr; lv_btnm_callback_t cb; }lv_btnm_ext_t; @@ -71,6 +74,6 @@ lv_btnm_callback_t lv_btnm_get_cb(lv_obj_t * btnm); * MACROS **********************/ -#endif +#endif /*USE_LV_BTNM*/ -#endif +#endif /*LV_BTNM_H*/ diff --git a/lv_objx/lv_cb.c b/lv_objx/lv_cb.c index 631ca1e76..2d0ea676f 100644 --- a/lv_objx/lv_cb.c +++ b/lv_objx/lv_cb.c @@ -30,9 +30,7 @@ static void lv_cbs_init(void); /********************** * STATIC VARIABLES **********************/ -static lv_cbs_t lv_cbs_def = -{ -}; +static lv_cbs_t lv_cbs_def; /********************** * MACROS @@ -233,9 +231,9 @@ static void lv_cbs_init(void) /*Bg style*/ lv_btns_get(LV_RECTS_TRANSP, &lv_cbs_def.bg); - lv_cbs_def.bg.rects.hpad = 0 * LV_STYLE_MULT; - lv_cbs_def.bg.rects.vpad = 0 * LV_STYLE_MULT; - lv_cbs_def.bg.rects.opad = 5 * LV_STYLE_MULT; + lv_cbs_def.bg.rects.hpad = 0 * LV_DOWNSCALE; + lv_cbs_def.bg.rects.vpad = 0 * LV_DOWNSCALE; + lv_cbs_def.bg.rects.opad = 5 * LV_DOWNSCALE; /*Bullet style*/ lv_btns_get(LV_BTNS_DEF, &lv_cbs_def.bullet); @@ -243,35 +241,35 @@ static void lv_cbs_init(void) lv_cbs_def.bullet.mcolor[LV_BTN_STATE_REL] = COLOR_WHITE; lv_cbs_def.bullet.gcolor[LV_BTN_STATE_REL] = COLOR_SILVER; lv_cbs_def.bullet.bcolor[LV_BTN_STATE_REL] = COLOR_BLACK; - lv_cbs_def.bullet.light_en[LV_BTN_STATE_REL] = 0; + lv_cbs_def.bullet.flags[LV_BTN_STATE_REL].light_en = 0; lv_cbs_def.bullet.mcolor[LV_BTN_STATE_PR] = COLOR_SILVER; lv_cbs_def.bullet.gcolor[LV_BTN_STATE_PR] = COLOR_GRAY; lv_cbs_def.bullet.bcolor[LV_BTN_STATE_PR] = COLOR_BLACK; - lv_cbs_def.bullet.light_en[LV_BTN_STATE_PR] = 0; + lv_cbs_def.bullet.flags[LV_BTN_STATE_PR].light_en = 0; lv_cbs_def.bullet.mcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x20, 0x30, 0x40); lv_cbs_def.bullet.gcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x10, 0x20, 0x30); lv_cbs_def.bullet.bcolor[LV_BTN_STATE_TGL_REL] = COLOR_WHITE; - lv_cbs_def.bullet.light_en[LV_BTN_STATE_TGL_REL] = 0; + lv_cbs_def.bullet.flags[LV_BTN_STATE_TGL_REL].light_en = 0; lv_cbs_def.bullet.mcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x50, 0x70, 0x90); lv_cbs_def.bullet.gcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x20, 0x30, 0x40); lv_cbs_def.bullet.bcolor[LV_BTN_STATE_TGL_PR] = COLOR_WHITE; - lv_cbs_def.bullet.light_en[LV_BTN_STATE_TGL_PR] = 0; + lv_cbs_def.bullet.flags[LV_BTN_STATE_TGL_PR].light_en = 0; lv_cbs_def.bullet.mcolor[LV_BTN_STATE_INA] = COLOR_SILVER; lv_cbs_def.bullet.gcolor[LV_BTN_STATE_INA] = COLOR_GRAY; lv_cbs_def.bullet.bcolor[LV_BTN_STATE_INA] = COLOR_WHITE; - lv_cbs_def.bullet.light_en[LV_BTN_STATE_INA] = 0; + lv_cbs_def.bullet.flags[LV_BTN_STATE_INA].light_en = 0; - lv_cbs_def.bullet.rects.bwidth = 2 * LV_STYLE_MULT; + lv_cbs_def.bullet.rects.bwidth = 2 * LV_DOWNSCALE; lv_cbs_def.bullet.rects.bopa = 70; lv_cbs_def.bullet.rects.empty = 0; lv_cbs_def.bullet.rects.round = LV_OBJ_DEF_WIDTH / 3 / 4; - lv_cbs_def.bullet.rects.hpad = 0 * LV_STYLE_MULT; - lv_cbs_def.bullet.rects.vpad = 0 * LV_STYLE_MULT; - lv_cbs_def.bullet.rects.opad = 0 * LV_STYLE_MULT; + lv_cbs_def.bullet.rects.hpad = 0 * LV_DOWNSCALE; + lv_cbs_def.bullet.rects.vpad = 0 * LV_DOWNSCALE; + lv_cbs_def.bullet.rects.opad = 0 * LV_DOWNSCALE; /*Label*/ lv_labels_get(LV_LABELS_TXT, &lv_cbs_def.label); diff --git a/lv_objx/lv_chart.c b/lv_objx/lv_chart.c index c6b3e6aa4..2041e5f49 100644 --- a/lv_objx/lv_chart.c +++ b/lv_objx/lv_chart.c @@ -582,12 +582,12 @@ static void lv_charts_init(void) /* Div. line */ lv_lines_get(LV_LINES_DECOR, &lv_charts_def.div_lines); - lv_charts_def.div_lines.width = 1 * LV_STYLE_MULT; + lv_charts_def.div_lines.width = 1 * LV_DOWNSCALE; lv_charts_def.div_lines.objs.color = COLOR_BLACK; lv_charts_def.div_line_opa = OPA_COVER; /*Data lines*/ - lv_charts_def.width = 3 * LV_STYLE_MULT; + lv_charts_def.width = 3 * LV_DOWNSCALE; lv_charts_def.data_opa = 100; lv_charts_def.dark_eff = 150; lv_charts_def.color[0] = COLOR_RED; diff --git a/lv_objx/lv_img.c b/lv_objx/lv_img.c index 54fcb41fb..41a72181f 100644 --- a/lv_objx/lv_img.c +++ b/lv_objx/lv_img.c @@ -219,6 +219,8 @@ void lv_img_set_file(lv_obj_t * img, const char * fn) if(lv_img_get_auto_size(img) != false) { lv_obj_set_size(img, ext->w, ext->h); } + + lv_obj_inv(img); } /** @@ -308,7 +310,7 @@ static void lv_imgs_init(void) /*Dark style*/ memcpy(&lv_imgs_dark, &lv_imgs_def, sizeof(lv_imgs_t)); - lv_imgs_dark.objs.color = COLOR_WHITE; lv_imgs_dark.recolor_opa = OPA_50; + lv_imgs_dark.objs.color = COLOR_BLACK; lv_imgs_dark.recolor_opa = OPA_50; /*Light style*/ memcpy(&lv_imgs_light, &lv_imgs_dark, sizeof(lv_imgs_t)); diff --git a/lv_objx/lv_label.c b/lv_objx/lv_label.c index 7b12ae3f7..0b2f1f693 100644 --- a/lv_objx/lv_label.c +++ b/lv_objx/lv_label.c @@ -22,10 +22,6 @@ *********************/ #define LV_LABEL_DOT_NUM 3 #define LV_LABEL_DOT_END_INV 0xFFFF -#define LV_LABEL_SCROLL_SPEED (50 * LV_DOWNSCALE) /*Hor, or ver. scroll speed (px/sec) in 'LV_LABEL_LONG_SCROLL' mode*/ -#define LV_LABEL_SCROLL_SPEED_VER (10 * LV_DOWNSCALE) /*Ver. scroll speed if hor. scroll is applied too*/ -#define LV_LABEL_SCROLL_PLAYBACK_PAUSE 300 /*Wait before the scroll turns back in ms*/ -#define LV_LABEL_SCROLL_REPEAT_PAUSE 600 /*Wait before the scroll begins again in ms*/ /********************** * TYPEDEFS @@ -163,45 +159,24 @@ void lv_label_set_text(lv_obj_t * label, const char * text) /*If 'text" still NULL then nothing to do: return*/ if(text == NULL) return; - uint32_t line_start = 0; - uint32_t new_line_start = 0; - cord_t max_length = lv_obj_get_width(label); - lv_labels_t * labels = lv_obj_get_style(label); - const font_t * font = font_get(labels->font); - uint8_t letter_height = font_get_height(font); - cord_t new_height = 0; - cord_t longest_line = 0; - cord_t act_line_length; + cord_t max_w = lv_obj_get_width(label); + lv_labels_t * style = lv_obj_get_style(label); + const font_t * font = font_get(style->font); ext->dot_end = LV_LABEL_DOT_END_INV; /*Initialize the dot end index*/ /*If the width will be expanded set the max length to very big */ if(ext->long_mode == LV_LABEL_LONG_EXPAND || ext->long_mode == LV_LABEL_LONG_SCROLL) { - max_length = LV_CORD_MAX; + max_w = LV_CORD_MAX; } /*Calc. the height and longest line*/ - while (text[line_start] != '\0') - { - new_line_start += txt_get_next_line(&text[line_start], font, labels->letter_space, max_length); - new_height += letter_height; - new_height += labels->line_space; - - /*Calculate the the longest line if the width will be expanded*/ - if(ext->long_mode == LV_LABEL_LONG_EXPAND || ext->long_mode == LV_LABEL_LONG_SCROLL) { - act_line_length = txt_get_width(&text[line_start], new_line_start - line_start, - font, labels->letter_space); - longest_line = max(act_line_length, longest_line); - } - - line_start = new_line_start; - } + point_t size; + txt_get_size(&size, ext->txt, font, style->letter_space, style->line_space, max_w); - /*Correction with the last line space*/ - new_height -= labels->line_space; /*Refresh the full size in expand mode*/ if(ext->long_mode == LV_LABEL_LONG_EXPAND || ext->long_mode == LV_LABEL_LONG_SCROLL) { - lv_obj_set_size(label, longest_line, new_height); + lv_obj_set_size(label, size.x, size.y); /*Start scrolling if the label is greater then its parent*/ if(ext->long_mode == LV_LABEL_LONG_SCROLL) { @@ -248,7 +223,7 @@ void lv_label_set_text(lv_obj_t * label, const char * text) } /*In break mode only the height can change*/ else if (ext->long_mode == LV_LABEL_LONG_BREAK) { - lv_obj_set_height(label, new_height); + lv_obj_set_height(label, size.y); } /*Replace the last 'LV_LABEL_DOT_NUM' characters with dots * and save these characters*/ @@ -355,7 +330,7 @@ void lv_label_get_letter_pos(lv_obj_t * label, uint16_t index, point_t * pos) lv_label_ext_t * ext = lv_obj_get_ext(label); uint32_t line_start = 0; uint32_t new_line_start = 0; - cord_t max_length = lv_obj_get_width(label); + cord_t max_w = lv_obj_get_width(label); lv_labels_t * labels = lv_obj_get_style(label); const font_t * font = font_get(labels->font); uint8_t letter_height = font_get_height(font); @@ -363,18 +338,23 @@ void lv_label_get_letter_pos(lv_obj_t * label, uint16_t index, point_t * pos) /*If the width will be expanded the set the max length to very big */ if(ext->long_mode == LV_LABEL_LONG_EXPAND || ext->long_mode == LV_LABEL_LONG_SCROLL) { - max_length = LV_CORD_MAX; + max_w = LV_CORD_MAX; } /*Search the line of the index letter */; while (text[new_line_start] != '\0') { - new_line_start += txt_get_next_line(&text[line_start], font, labels->letter_space, max_length); + new_line_start += txt_get_next_line(&text[line_start], font, labels->letter_space, max_w); if(index < new_line_start || text[new_line_start] == '\0') break; /*The line of 'index' letter begins at 'line_start'*/ y += letter_height + labels->line_space; line_start = new_line_start; } + if((text[index - 1] == '\n' || text[index - 1] == '\r') && text[index] == '\0') { + y += letter_height + labels->line_space; + line_start = index; + } + /*Calculate the x coordinate*/ cord_t x = 0; uint32_t i; @@ -406,37 +386,37 @@ uint16_t lv_label_get_letter_on(lv_obj_t * label, point_t * pos) lv_label_ext_t * ext = lv_obj_get_ext(label); uint32_t line_start = 0; uint32_t new_line_start = 0; - cord_t max_length = lv_obj_get_width(label); - lv_labels_t * labels = lv_obj_get_style(label); - const font_t * font = font_get(labels->font); + cord_t max_w = lv_obj_get_width(label); + lv_labels_t * style = lv_obj_get_style(label); + const font_t * font = font_get(style->font); uint8_t letter_height = font_get_height(font); cord_t y = 0; /*If the width will be expanded set the max length to very big */ if(ext->long_mode == LV_LABEL_LONG_EXPAND || ext->long_mode == LV_LABEL_LONG_SCROLL) { - max_length = LV_CORD_MAX; + max_w = LV_CORD_MAX; } /*Search the line of the index letter */; while (text[line_start] != '\0') { - new_line_start += txt_get_next_line(&text[line_start], font, labels->letter_space, max_length); - if(pos->y <= y + letter_height + labels->line_space) break; /*The line is found ('line_start')*/ - y += letter_height + labels->line_space; + new_line_start += txt_get_next_line(&text[line_start], font, style->letter_space, max_w); + if(pos->y <= y + letter_height + style->line_space) break; /*The line is found ('line_start')*/ + y += letter_height + style->line_space; line_start = new_line_start; } /*Calculate the x coordinate*/ cord_t x = 0; - if(labels->mid != 0) { + if(style->mid != 0) { cord_t line_w; line_w = txt_get_width(&text[line_start], new_line_start - line_start, - font, labels->letter_space); + font, style->letter_space); x += lv_obj_get_width(label) / 2 - line_w / 2; } uint16_t i; for(i = line_start; i < new_line_start-1; i++) { - x += font_get_width(font, text[i]) + labels->letter_space; + x += font_get_width(font, text[i]) + style->letter_space; if(pos->x < x) break; } @@ -531,8 +511,8 @@ static void lv_labels_init(void) /*Default style*/ lv_labels_def.font = LV_FONT_DEFAULT; lv_labels_def.objs.color = COLOR_MAKE(0x10, 0x18, 0x20); - lv_labels_def.letter_space = 2 * LV_STYLE_MULT; - lv_labels_def.line_space = 2 * LV_STYLE_MULT; + lv_labels_def.letter_space = 2 * LV_DOWNSCALE; + lv_labels_def.line_space = 2 * LV_DOWNSCALE; lv_labels_def.mid = 0; memcpy(&lv_labels_btn, &lv_labels_def, sizeof(lv_labels_t)); @@ -541,15 +521,14 @@ static void lv_labels_init(void) memcpy(&lv_labels_title, &lv_labels_def, sizeof(lv_labels_t)); lv_labels_title.objs.color = COLOR_MAKE(0x10, 0x20, 0x30); - lv_labels_title.letter_space = 4 * LV_STYLE_MULT; - lv_labels_title.line_space = 4 * LV_STYLE_MULT; + lv_labels_title.letter_space = 4 * LV_DOWNSCALE; + lv_labels_title.line_space = 4 * LV_DOWNSCALE; lv_labels_title.mid = 0; - memcpy(&lv_labels_txt, &lv_labels_def, sizeof(lv_labels_t)); lv_labels_txt.objs.color = COLOR_MAKE(0x16, 0x23, 0x34); - lv_labels_txt.letter_space = 1 * LV_STYLE_MULT; - lv_labels_txt.line_space = 2 * LV_STYLE_MULT; + lv_labels_txt.letter_space = 0 * LV_DOWNSCALE; + lv_labels_txt.line_space = 1 * LV_DOWNSCALE; lv_labels_txt.mid = 0; } diff --git a/lv_objx/lv_led.c b/lv_objx/lv_led.c index 259aeddfd..a64a54d5e 100644 --- a/lv_objx/lv_led.c +++ b/lv_objx/lv_led.c @@ -263,7 +263,7 @@ static void lv_leds_init(void) lv_leds_def.bg_rect.objs.color = COLOR_RED; lv_leds_def.bg_rect.gcolor = COLOR_MARRON, lv_leds_def.bg_rect.bcolor = COLOR_WHITE; - lv_leds_def.bg_rect.bwidth = 4 * LV_STYLE_MULT; + lv_leds_def.bg_rect.bwidth = 4 * LV_DOWNSCALE; lv_leds_def.bg_rect.bopa = 50; lv_leds_def.bg_rect.round = LV_RECT_CIRCLE; lv_leds_def.bg_rect.hpad = 0; diff --git a/lv_objx/lv_line.c b/lv_objx/lv_line.c index a1f682efa..1b1f72e8d 100644 --- a/lv_objx/lv_line.c +++ b/lv_objx/lv_line.c @@ -343,18 +343,18 @@ static bool lv_line_design(lv_obj_t * line, const area_t * mask, lv_design_mode_ static void lv_lines_init(void) { /*Default style*/ - lv_lines_def.width = 2 * LV_STYLE_MULT; + lv_lines_def.width = 2 * LV_DOWNSCALE; lv_lines_def.objs.color = COLOR_RED; lv_lines_def.objs.transp = 0; /*Decoration line style*/ memcpy(&lv_lines_decor, &lv_lines_def, sizeof(lv_lines_t)); - lv_lines_decor.width = 1 * LV_STYLE_MULT; + lv_lines_decor.width = 1 * LV_DOWNSCALE; lv_lines_decor.objs.color = COLOR_GRAY; /*Chart line style*/ memcpy(&lv_lines_chart, &lv_lines_def, sizeof(lv_lines_t)); - lv_lines_chart.width = 3 * LV_STYLE_MULT; + lv_lines_chart.width = 3 * LV_DOWNSCALE; lv_lines_chart.objs.color = COLOR_RED; } #endif diff --git a/lv_objx/lv_list.c b/lv_objx/lv_list.c index 4284e8f25..f4ad85e46 100644 --- a/lv_objx/lv_list.c +++ b/lv_objx/lv_list.c @@ -110,7 +110,7 @@ bool lv_list_signal(lv_obj_t * list, lv_signal_t sign, void * param) * @param rel_action pointer to release action function (like with lv_btn) * @return pointer to the new list element which can be customized (a button) */ -lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)) +lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, lv_action_t rel_action) { lv_lists_t * lists = lv_obj_get_style(list); lv_list_ext_t * ext = lv_obj_get_ext(list); @@ -217,6 +217,7 @@ void lv_list_down(lv_obj_t * list) } } + /*===================== * Setter functions *====================*/ @@ -323,13 +324,13 @@ static void lv_lists_init(void) { /*Default style*/ lv_pages_get(LV_PAGES_TRANSP, &lv_lists_def.bg_pages); - lv_lists_def.bg_pages.bg_rects.vpad = 0 * LV_STYLE_MULT; - lv_lists_def.bg_pages.bg_rects.hpad = 0 * LV_STYLE_MULT; - lv_lists_def.bg_pages.bg_rects.opad = 0 * LV_STYLE_MULT; + lv_lists_def.bg_pages.bg_rects.vpad = 0 * LV_DOWNSCALE; + lv_lists_def.bg_pages.bg_rects.hpad = 0 * LV_DOWNSCALE; + lv_lists_def.bg_pages.bg_rects.opad = 0 * LV_DOWNSCALE; - lv_lists_def.bg_pages.scrable_rects.vpad = 10 * LV_STYLE_MULT; - lv_lists_def.bg_pages.scrable_rects.hpad = 10 * LV_STYLE_MULT; - lv_lists_def.bg_pages.scrable_rects.opad = 5 * LV_STYLE_MULT; + lv_lists_def.bg_pages.scrable_rects.vpad = 10 * LV_DOWNSCALE; + lv_lists_def.bg_pages.scrable_rects.hpad = 10 * LV_DOWNSCALE; + lv_lists_def.bg_pages.scrable_rects.opad = 5 * LV_DOWNSCALE; lv_btns_get(LV_BTNS_DEF, &lv_lists_def.liste_btns); /*List element button style*/ @@ -341,13 +342,13 @@ static void lv_lists_init(void) lv_lists_def.liste_layout = LV_RECT_LAYOUT_ROW_M; memcpy(&lv_lists_tight, &lv_lists_def, sizeof(lv_lists_t)); - lv_lists_tight.bg_pages.bg_rects.vpad = 0 * LV_STYLE_MULT; - lv_lists_tight.bg_pages.bg_rects.hpad = 0 * LV_STYLE_MULT; - lv_lists_tight.bg_pages.bg_rects.opad = 0 * LV_STYLE_MULT; + lv_lists_tight.bg_pages.bg_rects.vpad = 0 * LV_DOWNSCALE; + lv_lists_tight.bg_pages.bg_rects.hpad = 0 * LV_DOWNSCALE; + lv_lists_tight.bg_pages.bg_rects.opad = 0 * LV_DOWNSCALE; - lv_lists_tight.bg_pages.scrable_rects.vpad = 0 * LV_STYLE_MULT; - lv_lists_tight.bg_pages.scrable_rects.hpad = 0 * LV_STYLE_MULT; - lv_lists_tight.bg_pages.scrable_rects.opad = 0 * LV_STYLE_MULT; + lv_lists_tight.bg_pages.scrable_rects.vpad = 0 * LV_DOWNSCALE; + lv_lists_tight.bg_pages.scrable_rects.hpad = 0 * LV_DOWNSCALE; + lv_lists_tight.bg_pages.scrable_rects.opad = 0 * LV_DOWNSCALE; } #endif diff --git a/lv_objx/lv_list.h b/lv_objx/lv_list.h index d9ee26301..97755d972 100644 --- a/lv_objx/lv_list.h +++ b/lv_objx/lv_list.h @@ -65,7 +65,7 @@ typedef struct **********************/ lv_obj_t * lv_list_create(lv_obj_t * par, lv_obj_t * copy); bool lv_list_signal(lv_obj_t * list, lv_signal_t sign, void * param); -lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)); +lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, lv_action_t rel_action); lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * copy); void lv_list_down(lv_obj_t * list); diff --git a/lv_objx/lv_mbox.c b/lv_objx/lv_mbox.c new file mode 100644 index 000000000..25977756f --- /dev/null +++ b/lv_objx/lv_mbox.c @@ -0,0 +1,412 @@ +/** + * @file lv_mbox.c + * + */ + + +/********************* + * INCLUDES + *********************/ +#include "lv_conf.h" +#if USE_LV_MBOX != 0 + +#include "lv_mbox.h" +#include "../lv_misc/anim.h" +/********************* + * DEFINES + *********************/ +#define LV_MBOX_CLOSE_FADE_TIME 750 /*ms*/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * STATIC PROTOTYPES + **********************/ +#if 0 /*Unused*/ +static bool lv_mbox_design(lv_obj_t * mbox, const area_t * mask, lv_design_mode_t mode); +#endif +static void lv_temps_init(void); +static void lv_mbox_realign(lv_obj_t * mbox); + +/********************** + * STATIC VARIABLES + **********************/ +static lv_mboxs_t lv_mboxs_def; /*Default message box style*/ + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +/*----------------- + * Create function + *-----------------*/ + +/** + * Create a message box objects + * @param par pointer to an object, it will be the parent of the new message box + * @param copy pointer to a message box object, if not NULL then the new object will be copied from it + * @return pointer to the created message box + */ +lv_obj_t * lv_mbox_create(lv_obj_t * par, lv_obj_t * copy) +{ + /*Create the ancestor message box*/ + lv_obj_t * new_mbox = lv_rect_create(par, copy); + dm_assert(new_mbox); + + /*Allocate the message box type specific extended data*/ + lv_mbox_ext_t * ext = lv_obj_alloc_ext(new_mbox, sizeof(lv_mbox_ext_t)); + dm_assert(ext); + + /*The signal and design functions are not copied so set them here*/ + lv_obj_set_signal_f(new_mbox, lv_mbox_signal); + + /* Let the design function of rect + lv_obj_set_design_f(new_mbox, lv_mbox_design); */ + + /*Init the new message box message box*/ + if(copy == NULL) { + lv_rect_set_layout(new_mbox, LV_RECT_LAYOUT_COL_L); + lv_rect_set_fit(new_mbox, true, true); + + ext->title = lv_label_create(new_mbox, NULL); + lv_label_set_text(ext->title, "MESSAGE BOX"); + + ext->txt = lv_label_create(new_mbox, NULL); + lv_label_set_text(ext->txt, "Text of the message box"); + + ext->btnh = lv_rect_create(new_mbox, NULL); + lv_rect_set_fit(ext->btnh, false, true); + lv_rect_set_layout(ext->btnh, LV_RECT_LAYOUT_PRETTY); + + lv_obj_set_style(new_mbox, lv_mboxs_get(LV_MBOXS_DEF, NULL)); + + lv_mbox_realign(new_mbox); + } + /*Copy an existing message box*/ + else { +// lv_mbox_ext_t * copy_ext = lv_obj_get_ext(copy); + /*TODO*/ + } + + return new_mbox; +} + +/** + * Signal function of the message box + * @param mbox pointer to a message box object + * @param sign a signal type from lv_signal_t enum + * @param param pointer to a signal specific variable + * @return true: the object is still valid (not deleted), false: the object become invalid + */ +bool lv_mbox_signal(lv_obj_t * mbox, lv_signal_t sign, void * param) +{ + bool valid; + + /* Include the ancient signal function */ + valid = lv_rect_signal(mbox, sign, param); + + /* The object can be deleted so check its validity and then + * make the object specific signal handling */ + if(valid != false) { + lv_mbox_ext_t * ext = lv_obj_get_ext(mbox); + lv_mboxs_t * style = lv_obj_get_style(mbox); + lv_obj_t * btn; + + switch(sign) { + case LV_SIGNAL_CLEANUP: + /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/ + break; + case LV_SIGNAL_CORD_CHG: + /*If the size is changed refresh the message box*/ + if(area_get_width(param) != lv_obj_get_width(mbox) || + area_get_height(param) != lv_obj_get_height(mbox)) { + lv_mbox_realign(mbox); + } + break; + case LV_SIGNAL_STYLE_CHG: + lv_obj_set_style(ext->title, &style->title); + lv_obj_set_style(ext->txt, &style->txt); + lv_obj_set_style(ext->btnh, &style->btnh); + + /*Refresh all the buttons*/ + btn = lv_obj_get_child(ext->btnh, NULL); + while(btn != NULL) { + /*Refresh the next button's style*/ + lv_obj_set_style(btn, &style->btn); + lv_obj_set_size(btn, style->btn_w, style->btn_h); + + /*Refresh the button label too*/ + lv_obj_set_style(lv_obj_get_child(btn, NULL), &style->btn_label); + btn = lv_obj_get_child(ext->btnh, NULL); + } + + /*Hide the title and/or buttons*/ + lv_obj_set_hidden(ext->title, style->hide_title == 0 ? false : true); + + if(style->hide_btns != 0 || lv_obj_get_child_num(ext->btnh) != 0) { + lv_obj_set_hidden(ext->btnh, true); + } else { + lv_obj_set_hidden(ext->btnh, false); + } + break; + default: + break; + } + } + + return valid; +} + +/*===================== + * Setter functions + *====================*/ + +/** + * Add a button to the message box + * @param mbox pointer to message box object + * @param btn_txt the text of the button + * @param rel_action a function which will be called when the button is relesed + * @return pointer to the created button (lv_btn) + */ +lv_obj_t * lv_mbox_add_btn(lv_obj_t * mbox, const char * btn_txt, lv_action_t rel_action) +{ + lv_mbox_ext_t * ext = lv_obj_get_ext(mbox); + lv_mboxs_t * style = lv_obj_get_style(mbox); + + lv_obj_t * btn; + btn = lv_btn_create(ext->btnh, NULL); + lv_btn_set_rel_action(btn, rel_action); + lv_obj_set_style(btn, &style->btn); + lv_obj_set_size(btn, style->btn_w, style->btn_h); + + lv_obj_t * label; + label = lv_label_create(btn, NULL); + lv_obj_set_style(label, &style->btn_label); + lv_label_set_text(label, btn_txt); + + /*With 1 button set center layout but from 3 set grid*/ + uint16_t child_num = lv_obj_get_child_num(ext->btnh); + if(child_num == 1) { + lv_rect_set_layout(ext->btnh, LV_RECT_LAYOUT_CENTER); + } else if (child_num == 2) { + lv_rect_set_layout(ext->btnh, LV_RECT_LAYOUT_PRETTY); + } + + return btn; +} + +/** + * A release action which can be assigned to a message box button to close it + * @param btn pointer to the released button + * @param dispi pointer to the caller display input + * @return always false because the button is deleted with the mesage box + */ +bool lv_mbox_close_action(lv_obj_t * btn, lv_dispi_t * dispi) +{ + lv_obj_t * mbox = lv_mbox_get_from_btn(btn); + + lv_obj_del(mbox); + + return false; +} + +/** + * Automatically delete the message box after a given time + * @param mbox pointer to a message box object + * @param tout a time (in milliseconds) to wait before delete the message box + */ +void lv_mbox_auto_close(lv_obj_t * mbox, uint16_t tout) +{ + + lv_obj_anim(mbox, LV_ANIM_FADE | ANIM_OUT, LV_MBOX_CLOSE_FADE_TIME, tout, lv_obj_del); +} + + +/** + * Set the title of the message box + * @param mbox pointer to a message box + * @param title a '\0' terminated character string which will be the message box title + */ +void lv_mbox_set_title(lv_obj_t * mbox, const char * title) +{ + lv_mbox_ext_t * ext = lv_obj_get_ext(mbox); + + lv_label_set_text(ext->title, title); +} + +/** + * Set the text of the message box + * @param mbox pointer to a message box + * @param txt a '\0' terminated character string which will be the message box text + */ +void lv_mbox_set_txt(lv_obj_t * mbox, const char * txt) +{ + lv_mbox_ext_t * ext = lv_obj_get_ext(mbox); + + lv_label_set_text(ext->txt, txt); +} + + +/*===================== + * Getter functions + *====================*/ + +/** + * get the title of the message box + * @param mbox pointer to a message box object + * @return pointer to the title of the message box + */ +const char * lv_mbox_get_title(lv_obj_t * mbox) +{ + lv_mbox_ext_t * ext = lv_obj_get_ext(mbox); + + return lv_label_get_text(ext->title); +} + +/** + * Get the text of the message box + * @param mbox pointer to a message box object + * @return pointer to the text of the message box + */ +const char * lv_mbox_get_txt(lv_obj_t * mbox) +{ + lv_mbox_ext_t * ext = lv_obj_get_ext(mbox); + + return lv_label_get_text(ext->txt); +} + +/** + * Get the message box object from one of its button. + * It is useful in the button release actions where only the button is known + * @param btn pointer to a button of a message box + * @return pointer to the button's message box + */ +lv_obj_t * lv_mbox_get_from_btn(lv_obj_t * btn) +{ + lv_obj_t * btnh = lv_obj_get_parent(btn); + lv_obj_t * mbox = lv_obj_get_parent(btnh); + + return mbox; +} + + +/** + * Return with a pointer to a built-in style and/or copy it to a variable + * @param style a style name from lv_mboxs_builtin_t enum + * @param copy copy the style to this variable. (NULL if unused) + * @return pointer to an lv_mboxs_t style + */ +lv_mboxs_t * lv_mboxs_get(lv_mboxs_builtin_t style, lv_mboxs_t * copy) +{ + static bool style_inited = false; + + /*Make the style initialization if it is not done yet*/ + if(style_inited == false) { + lv_temps_init(); + style_inited = true; + } + + lv_mboxs_t *style_p; + + switch(style) { + case LV_MBOXS_DEF: + case LV_MBOXS_INFO: + case LV_MBOXS_WARN: + case LV_MBOXS_ERR: + case LV_MBOXS_BUBBLE: + style_p = &lv_mboxs_def; + break; + default: + style_p = &lv_mboxs_def; + } + + if(copy != NULL) { + if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_mboxs_t)); + else memcpy(copy, &lv_mboxs_def, sizeof(lv_mboxs_t)); + } + + return style_p; +} + + + +/********************** + * STATIC FUNCTIONS + **********************/ + +#if 0 /*Not used*/ +/** + * Handle the drawing related tasks of the message boxs + * @param mbox pointer to an object + * @param mask the object will be drawn only in this area + * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area + * (return 'true' if yes) + * LV_DESIGN_DRAW: draw the object (always return 'true') + * LV_DESIGN_DRAW_POST: drawing after every children are drawn + * @param return true/false, depends on 'mode' + */ +static bool lv_mbox_design(lv_obj_t * mbox, const area_t * mask, lv_design_mode_t mode) +{ + if(mode == LV_DESIGN_COVER_CHK) { + /*Return false if the object is not covers the mask_p area*/ + return false; + } + + + /*Draw the object*/ + + return true; +} +#endif + +/** + * Initialize the message box styles + */ +static void lv_temps_init(void) +{ + /*Default style*/ + lv_rects_get(LV_RECTS_DEF, &lv_mboxs_def.bg); + lv_mboxs_def.bg.light = 10 * LV_DOWNSCALE; + + lv_btns_get(LV_BTNS_DEF, &lv_mboxs_def.btn); + lv_mboxs_def.btn.flags[LV_BTN_STATE_PR].light_en = 0; + lv_mboxs_def.btn.flags[LV_BTN_STATE_REL].light_en = 0; + lv_labels_get(LV_LABELS_TITLE, &lv_mboxs_def.title); + lv_labels_get(LV_LABELS_TXT, &lv_mboxs_def.txt); + lv_labels_get(LV_LABELS_BTN, &lv_mboxs_def.btn_label); + lv_rects_get(LV_RECTS_TRANSP, &lv_mboxs_def.btnh); + lv_mboxs_def.btnh.hpad = 0; + lv_mboxs_def.btnh.vpad = 0; + + lv_mboxs_def.btn_w = 80 * LV_DOWNSCALE; + lv_mboxs_def.btn_h = 50 * LV_DOWNSCALE; + lv_mboxs_def.hide_btns = 0; + lv_mboxs_def.hide_title = 0; + + /*TODO add further styles*/ +} + +/** + * Realign the elements of the message box + * @param mbox pointer to message box object + */ +static void lv_mbox_realign(lv_obj_t * mbox) +{ + lv_mbox_ext_t * ext = lv_obj_get_ext(mbox); + lv_mboxs_t * style = lv_obj_get_style(mbox); + + if(ext->btnh == NULL || ext->title == NULL || ext->txt == NULL) return; + + lv_obj_set_width(ext->btnh, lv_obj_get_width(mbox) - 2 * style->bg.hpad); + + lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0); +} + + +#endif diff --git a/lv_objx/lv_mbox.h b/lv_objx/lv_mbox.h new file mode 100644 index 000000000..840754bd9 --- /dev/null +++ b/lv_objx/lv_mbox.h @@ -0,0 +1,88 @@ +/** + * @file lv_mbox.h + * + */ + +#ifndef LV_MBOX_H +#define LV_MBOX_H + +/********************* + * INCLUDES + *********************/ +#include "lv_conf.h" +#if USE_LV_MBOX != 0 + +#include "../lv_obj/lv_obj.h" +#include "lv_rect.h" +#include "lv_btn.h" +#include "lv_label.h" + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/*Style of message box*/ +typedef struct +{ + lv_rects_t bg; /*Style of ancestor*/ + /*New style element for this type */ + lv_labels_t title; + lv_labels_t txt; + lv_rects_t btnh; + lv_btns_t btn; + lv_labels_t btn_label; + cord_t btn_w; + cord_t btn_h; + uint8_t hide_title :1; + uint8_t hide_btns :1; +}lv_mboxs_t; + +/*Built-in styles of message box*/ +typedef enum +{ + LV_MBOXS_DEF, + LV_MBOXS_INFO, + LV_MBOXS_WARN, + LV_MBOXS_ERR, + LV_MBOXS_BUBBLE, +}lv_mboxs_builtin_t; + +/*Data of message box*/ +typedef struct +{ + lv_rect_ext_t rect; /*Ext. of ancestor*/ + /*New data for this type */ + lv_obj_t * title; + lv_obj_t * txt; + lv_obj_t * btnh; +}lv_mbox_ext_t; + +/********************** + * GLOBAL PROTOTYPES + **********************/ +lv_obj_t * lv_mbox_create(lv_obj_t * par, lv_obj_t * copy); +bool lv_mbox_signal(lv_obj_t * mbox, lv_signal_t sign, void * param); +lv_mboxs_t * lv_mboxs_get(lv_mboxs_builtin_t style, lv_mboxs_t * copy); + +lv_obj_t * lv_mbox_add_btn(lv_obj_t * mbox, const char * btn_txt, lv_action_t rel_action); +bool lv_mbox_close_action (lv_obj_t * mbox, lv_dispi_t *dispi); +void lv_mbox_auto_close(lv_obj_t * mbox, uint16_t tout); +void lv_mbox_set_title(lv_obj_t * mbox, const char * title); +void lv_mbox_set_txt(lv_obj_t * mbox, const char * txt); + +const char * lv_mbox_get_title(lv_obj_t * mbox); +const char * lv_mbox_get_txt(lv_obj_t * mbox); +lv_obj_t * lv_mbox_get_from_btn(lv_obj_t * btn); + + +/********************** + * MACROS + **********************/ + +#endif + +#endif diff --git a/lv_objx/lv_objx_templ.c b/lv_objx/lv_objx_templ.c index b9c112891..e4e6c3fe6 100644 --- a/lv_objx/lv_objx_templ.c +++ b/lv_objx/lv_objx_templ.c @@ -56,25 +56,26 @@ static lv_templs_t lv_templs_def; /*Default template style*/ */ lv_obj_t * lv_templ_create(lv_obj_t * par, lv_obj_t * copy) { - /*Create the ancestor templect*/ - lv_templ_t * new_templ = lv_templ_create(par, copy); + /*Create the ancestor template*/ + /*TODO modify it to the ancestor create function */ + lv_obj_t * new_templ = lv_obj_create(par, copy); dm_assert(new_templ); - /*Allocate the templect type specific extended data*/ - lv_templ_ext_t * ext = lv_templ_alloc_ext(new_templ, sizeof(lv_templ_ext_t)); + /*Allocate the template type specific extended data*/ + lv_templ_ext_t * ext = lv_obj_alloc_ext(new_templ, sizeof(lv_templ_ext_t)); dm_assert(ext); /*The signal and design functions are not copied so set them here*/ - lv_templ_set_signal_f(new_templ, lv_templ_signal); - lv_templ_set_design_f(new_templ, lv_templ_design); + lv_obj_set_signal_f(new_templ, lv_templ_signal); + lv_obj_set_design_f(new_templ, lv_templ_design); - /*Init the new template templect*/ + /*Init the new template template*/ if(copy == NULL) { } - /*Copy an existing templect*/ + /*Copy an existing template*/ else { - lv_templ_ext_t * copy_ext = lv_templ_get_ext(copy); + lv_templ_ext_t * copy_ext = lv_obj_get_ext(copy); } return new_templ; diff --git a/lv_objx/lv_page.c b/lv_objx/lv_page.c index 5829ad43b..6491430d2 100644 --- a/lv_objx/lv_page.c +++ b/lv_objx/lv_page.c @@ -14,6 +14,7 @@ #include "../lv_objx/lv_rect.h" #include "../lv_draw/lv_draw.h" #include "../lv_obj/lv_refr.h" +#include "../lv_misc/anim.h" /********************* * DEFINES @@ -153,8 +154,23 @@ bool lv_page_signal(lv_obj_t * page, lv_signal_t sign, void * param) break; case LV_SIGNAL_CORD_CHG: - lv_page_sb_refresh(page); + if(ext->scrolling != NULL) { + ext->scrolling->signal_f(ext->scrolling, LV_SIGNAL_CORD_CHG, &ext->scrolling->cords); + lv_page_sb_refresh(page); + } break; + case LV_SIGNAL_PRESSED: + if(ext->pr_action != NULL) { + ext->pr_action(page, param); + } + break; + case LV_SIGNAL_RELEASED: + if(lv_dispi_is_dragging(param) == false) { + if(ext->rel_action != NULL) { + ext->rel_action(page, param); + } + } + break; default: break; @@ -263,6 +279,18 @@ static bool lv_scrolling_signal(lv_obj_t * scrolling, lv_signal_t sign, void* pa lv_inv_area(&page_ext->sbv); } break; + case LV_SIGNAL_PRESSED: + if(page_ext->pr_action != NULL) { + page_ext->pr_action(page, param); + } + break; + case LV_SIGNAL_RELEASED: + if(lv_dispi_is_dragging(param) == false) { + if(page_ext->rel_action != NULL) { + page_ext->rel_action(page, param); + } + } + break; default: break; @@ -277,21 +305,121 @@ static bool lv_scrolling_signal(lv_obj_t * scrolling, lv_signal_t sign, void* pa *====================*/ /** - * Glue the object to the page. After it the page can be moved (dragged) with this object too. - * @param page pointer to an object on a page - * @param glue true: enable glue, false: disable glue + * Set a release action for the page + * @param page pointer to a page object + * @param rel_action a function to call when the page is released */ -void lv_page_glue_obj(lv_obj_t * page, bool glue) +void lv_page_set_rel_action(lv_obj_t * page, lv_action_t rel_action) { - lv_obj_set_drag_parent(page, glue); - lv_obj_set_drag(page, glue); + lv_page_ext_t * ext = lv_obj_get_ext(page); + ext->rel_action = rel_action; } +/** + * Set a press action for the page + * @param page pointer to a page object + * @param pr_action a function to call when the page is pressed + */ +void lv_page_set_pr_action(lv_obj_t * page, lv_action_t pr_action) +{ + lv_page_ext_t * ext = lv_obj_get_ext(page); + ext->pr_action = pr_action; +} + + +/** + * Glue the object to the page. After it the page can be moved (dragged) with this object too. + * @param obj pointer to an object on a page + * @param glue true: enable glue, false: disable glue + */ +void lv_page_glue_obj(lv_obj_t * obj, bool glue) +{ + lv_obj_set_drag_parent(obj, glue); + lv_obj_set_drag(obj, glue); +} + +/** + * Focus on an object. It ensures that the object will be visible on the page. + * @param page pointer to a page object + * @param obj pointer to an object to focus (must be on the page) + * @param anim_en true: scroll with animation + */ +void lv_page_focus(lv_obj_t * page, lv_obj_t * obj, bool anim_en) +{ + + lv_page_ext_t * ext = lv_obj_get_ext(page); + lv_pages_t * style = lv_obj_get_style(page); + + cord_t obj_y = lv_obj_get_y(obj); + cord_t obj_h = lv_obj_get_height(obj); + cord_t scrlable_y = lv_obj_get_y(ext->scrolling); + cord_t page_h = lv_obj_get_height(page); + + bool refr = false; + + cord_t top_err = -(scrlable_y + obj_y); + cord_t bot_err = scrlable_y + obj_y + obj_h - page_h; + + /*If obj is higher then the page focus where the "error" is smaller*/ + /*Out of the page on the top*/ + if((obj_h <= page_h && top_err > 0) || + (obj_h > page_h && top_err >= bot_err)) { + /*Calculate a new position and to let scrable_rects.vpad space above*/ + scrlable_y = -(obj_y - style->scrable_rects.vpad - style->bg_rects.vpad); + scrlable_y += style->scrable_rects.vpad; + refr = true; + } + /*Out of the page on the bottom*/ + else if((obj_h <= page_h && bot_err > 0) || + (obj_h > page_h && top_err < bot_err)) { + /*Calculate a new position and to let scrable_rects.vpad space below*/ + scrlable_y = -obj_y; + scrlable_y += page_h - obj_h; + scrlable_y -= style->scrable_rects.vpad; + refr = true; + } + + if(refr != false) { +#if LV_PAGE_ANIM_FOCUS_TIME == 0 + lv_obj_set_y(ext->scrolling, scrlable_y); +#else + if(anim_en == false) { + lv_obj_set_y(ext->scrolling, scrlable_y); + } else { + anim_t a; + a.act_time = 0; + a.start = lv_obj_get_y(ext->scrolling); + a.end = scrlable_y; + a.time = LV_PAGE_ANIM_FOCUS_TIME;//anim_speed_to_time(LV_PAGE_ANIM_SPEED, a.start, a.end); + a.end_cb = NULL; + a.playback = 0; + a.repeat = 0; + a.var = ext->scrolling; + a.path = anim_get_path(ANIM_PATH_LIN); + + a.fp = (anim_fp_t) lv_obj_set_y; + anim_create(&a); + } + } +#endif +} /*===================== * Getter functions *====================*/ +/** + * Get the scrollable object of a page- + * @param page pointer to page object + * @return pointer to rectangle which is the scrollable part of the page + */ +lv_obj_t * lv_page_get_scrable(lv_obj_t * page) +{ + lv_page_ext_t * ext = lv_obj_get_ext(page); + + return ext->scrolling; +} + /** * Return with a pointer to a built-in style and/or copy it to a variable * @param style a style name from lv_pages_builtin_t enum @@ -388,8 +516,12 @@ static void lv_page_sb_refresh(lv_obj_t * page) cord_t page_x0 = page->cords.x1; cord_t page_y0 = page->cords.y1; - lv_inv_area(&page_ext->sbh); - lv_inv_area(&page_ext->sbv); + + if(pages->sb_mode == LV_PAGE_SB_MODE_OFF) return; + + /*Invalidate the current (old) scrollbar areas*/ + if(page_ext->sbh_draw != 0) lv_inv_area(&page_ext->sbh); + if(page_ext->sbv_draw != 0) lv_inv_area(&page_ext->sbv); /*Horizontal scrollbar*/ if(scrolling_w <= obj_w - 2 * hpad) { /*Full sized scroll bar*/ @@ -424,9 +556,10 @@ static void lv_page_sb_refresh(lv_obj_t * page) (-(lv_obj_get_y(scrolling) - vpad) * (obj_h - size_tmp - pages->sb_width)) / (scrolling_h - obj_h + 2 * vpad)); } - - lv_inv_area(&page_ext->sbh); - lv_inv_area(&page_ext->sbv); + + /*Invalidate the new scrollbar areas*/ + if(page_ext->sbh_draw != 0) lv_inv_area(&page_ext->sbh); + if(page_ext->sbv_draw != 0) lv_inv_area(&page_ext->sbv); } /** @@ -446,10 +579,10 @@ static void lv_pages_init(void) lv_pages_def.sb_rects.objs.color = COLOR_BLACK; lv_pages_def.sb_rects.gcolor = COLOR_BLACK; lv_pages_def.sb_rects.bcolor = COLOR_WHITE; - lv_pages_def.sb_rects.bwidth = 1 * LV_STYLE_MULT; - lv_pages_def.sb_rects.round = 5 * LV_STYLE_MULT; + lv_pages_def.sb_rects.bwidth = 1 * LV_DOWNSCALE; + lv_pages_def.sb_rects.round = 5 * LV_DOWNSCALE; - lv_pages_def.sb_width= 8 * LV_STYLE_MULT; + lv_pages_def.sb_width= 8 * LV_DOWNSCALE; lv_pages_def.sb_opa=50; lv_pages_def.sb_mode = LV_PAGE_SB_MODE_AUTO; diff --git a/lv_objx/lv_page.h b/lv_objx/lv_page.h index 11ba1d0d2..28351e476 100644 --- a/lv_objx/lv_page.h +++ b/lv_objx/lv_page.h @@ -29,6 +29,7 @@ typedef enum LV_PAGE_SB_MODE_AUTO, }lv_page_sb_mode_t; + /*Style of page*/ typedef struct { @@ -54,6 +55,8 @@ typedef struct lv_rect_ext_t rect_ext; /*Ext. of ancestor*/ /*New data for this type */ lv_obj_t * scrolling; /*The scrollable object on the background*/ + lv_action_t rel_action; + lv_action_t pr_action; area_t sbh; /*Horizontal scrollbar*/ area_t sbv; /*Vertical scrollbar*/ uint8_t sbh_draw :1; /*1: horizontal scrollbar is visible now*/ @@ -61,16 +64,20 @@ typedef struct }lv_page_ext_t; - /********************** * GLOBAL PROTOTYPES **********************/ /*Create function*/ lv_obj_t * lv_page_create(lv_obj_t * par, lv_obj_t * copy); -void lv_page_glue_obj(lv_obj_t * page, bool glue); lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * copy); bool lv_page_signal(lv_obj_t * page, lv_signal_t sign, void * param); +void lv_page_set_rel_action(lv_obj_t * page, lv_action_t rel_action); +void lv_page_set_pr_action(lv_obj_t * page, lv_action_t pr_action); +void lv_page_glue_obj(lv_obj_t * page, bool glue); +void lv_page_focus(lv_obj_t * page, lv_obj_t * obj, bool anim_en); +lv_obj_t * lv_page_get_scrable(lv_obj_t * page); + /********************** * MACROS **********************/ diff --git a/lv_objx/lv_rect.c b/lv_objx/lv_rect.c index bb29f48af..b7030c7f5 100644 --- a/lv_objx/lv_rect.c +++ b/lv_objx/lv_rect.c @@ -41,6 +41,7 @@ static void lv_rect_refr_layout(lv_obj_t * rect); static void lv_rect_layout_col(lv_obj_t * rect); static void lv_rect_layout_row(lv_obj_t * rect); static void lv_rect_layout_center(lv_obj_t * rect); +static void lv_rect_layout_pretty(lv_obj_t * rect); static void lv_rect_layout_grid(lv_obj_t * rect); static void lv_rect_refr_autofit(lv_obj_t * rect); static void lv_rects_init(void); @@ -364,6 +365,9 @@ static void lv_rect_refr_layout(lv_obj_t * rect) { lv_rect_layout_t type = lv_rect_get_layout(rect); + /*'rect' has to be at least 1 child*/ + if(lv_obj_get_child(rect, NULL) == NULL) return; + if(type == LV_RECT_LAYOUT_OFF) return; if(type == LV_RECT_LAYOUT_CENTER) { @@ -372,7 +376,9 @@ static void lv_rect_refr_layout(lv_obj_t * rect) lv_rect_layout_col(rect); } else if(type == LV_RECT_LAYOUT_ROW_T || type == LV_RECT_LAYOUT_ROW_M || type == LV_RECT_LAYOUT_ROW_B) { lv_rect_layout_row(rect); - } else if(type == LV_RECT_LAYOUT_GRID) { + } else if(type == LV_RECT_LAYOUT_PRETTY) { + lv_rect_layout_pretty(rect); + } else if(type == LV_RECT_LAYOUT_GRID) { lv_rect_layout_grid(rect); } } @@ -405,6 +411,7 @@ static void lv_rect_layout_col(lv_obj_t * rect) align = LV_ALIGN_IN_TOP_RIGHT; break; default: + hpad_corr = 0; align = LV_ALIGN_IN_TOP_LEFT; break; } @@ -510,11 +517,11 @@ static void lv_rect_layout_center(lv_obj_t * rect) } /** - * Handle the grid layout. Put as many object as possible in row + * Handle the pretty layout. Put as many object as possible in row * then begin a new row * @param rect pointer to an object which layout should be handled */ -static void lv_rect_layout_grid(lv_obj_t * rect) +static void lv_rect_layout_pretty(lv_obj_t * rect) { lv_obj_t * child_rs; /* Row starter child */ lv_obj_t * child_rc; /* Row closer child */ @@ -585,6 +592,56 @@ static void lv_rect_layout_grid(lv_obj_t * rect) rect->child_chg_off = 0; } +/** + * Handle the grid layout. Align same-sized objects in a grid + * @param rect pointer to an object which layout should be handled + */ +static void lv_rect_layout_grid(lv_obj_t * rect) +{ + lv_obj_t * child; + lv_rects_t * style = lv_obj_get_style(rect); + cord_t w_tot = lv_obj_get_width(rect); + cord_t w_obj = lv_obj_get_width(lv_obj_get_child(rect, NULL)); + cord_t h_obj = lv_obj_get_height(lv_obj_get_child(rect, NULL)); + uint16_t obj_row = (w_tot - (2 * style->hpad)) / (w_obj + style->opad); /*Obj. num. in a row*/ + cord_t x_ofs; + if(obj_row > 1) { + x_ofs = w_obj + (w_tot - (2 * style->hpad) - (obj_row * w_obj)) / (obj_row - 1); + } else { + x_ofs = w_tot / 2 - w_obj / 2; + } + cord_t y_ofs = h_obj + style->opad; + + /* Disable child change action because the children will be moved a lot + * an unnecessary child change signals could be sent*/ + rect->child_chg_off = 1; + + /* Align the children */ + cord_t act_x = style->hpad; + cord_t act_y = style->vpad; + uint16_t obj_cnt = 0; + LL_READ_BACK(rect->child_ll, child) { + if(lv_obj_get_hidden(child) != false) continue; + + if(obj_row > 1) { + lv_obj_set_pos(child, act_x, act_y); + act_x += x_ofs; + } else { + lv_obj_set_pos(child, x_ofs, act_y); + } + obj_cnt ++; + + if(obj_cnt >= obj_row) { + obj_cnt = 0; + act_x = style->hpad; + act_y += y_ofs; + } + } + + rect->child_chg_off = 0; + +} + /** * Handle auto fit. Set the size of the object to involve all children. * @param rect pointer to an object which size will be modified @@ -598,7 +655,7 @@ void lv_rect_refr_autofit(lv_obj_t * rect) return; } - area_t rect_cords; + area_t new_cords; area_t ori; lv_rects_t * style = lv_obj_get_style(rect); lv_obj_t * i; @@ -607,48 +664,55 @@ void lv_rect_refr_autofit(lv_obj_t * rect) /*Search the side coordinates of the children*/ lv_obj_get_cords(rect, &ori); - lv_obj_get_cords(rect, &rect_cords); + lv_obj_get_cords(rect, &new_cords); - rect_cords.x1 = LV_CORD_MAX; - rect_cords.y1 = LV_CORD_MAX; - rect_cords.x2 = LV_CORD_MIN; - rect_cords.y2 = LV_CORD_MIN; + new_cords.x1 = LV_CORD_MAX; + new_cords.y1 = LV_CORD_MAX; + new_cords.x2 = LV_CORD_MIN; + new_cords.y2 = LV_CORD_MIN; LL_READ(rect->child_ll, i) { if(lv_obj_get_hidden(i) != false) continue; - rect_cords.x1 = min(rect_cords.x1, i->cords.x1); - rect_cords.y1 = min(rect_cords.y1, i->cords.y1); - rect_cords.x2 = max(rect_cords.x2, i->cords.x2); - rect_cords.y2 = max(rect_cords.y2, i->cords.y2); + new_cords.x1 = min(new_cords.x1, i->cords.x1); + new_cords.y1 = min(new_cords.y1, i->cords.y1); + new_cords.x2 = max(new_cords.x2, i->cords.x2); + new_cords.y2 = max(new_cords.y2, i->cords.y2); } /*If the value is not the init value then the page has >=1 child.*/ - if(rect_cords.x1 != LV_CORD_MAX) { + if(new_cords.x1 != LV_CORD_MAX) { if(ext->hfit_en != 0) { - rect_cords.x1 -= hpad; - rect_cords.x2 += hpad; + new_cords.x1 -= hpad; + new_cords.x2 += hpad; } else { - rect_cords.x1 = rect->cords.x1; - rect_cords.x2 = rect->cords.x2; + new_cords.x1 = rect->cords.x1; + new_cords.x2 = rect->cords.x2; } if(ext->vfit_en != 0) { - rect_cords.y1 -= vpad; - rect_cords.y2 += vpad; + new_cords.y1 -= vpad; + new_cords.y2 += vpad; } else { - rect_cords.y1 = rect->cords.y1; - rect_cords.y2 = rect->cords.y2; + new_cords.y1 = rect->cords.y1; + new_cords.y2 = rect->cords.y2; } - lv_obj_inv(rect); - area_cpy(&rect->cords, &rect_cords); - lv_obj_inv(rect); + /*Do nothing if the coordinates are not changed*/ + if(rect->cords.x1 != new_cords.x1 || + rect->cords.y1 != new_cords.y1 || + rect->cords.x2 != new_cords.x2 || + rect->cords.y2 != new_cords.y2) { - /*Notify the object about its new coordinates*/ - rect->signal_f(rect, LV_SIGNAL_CORD_CHG, &ori); + lv_obj_inv(rect); + area_cpy(&rect->cords, &new_cords); + lv_obj_inv(rect); - /*Inform the parent about the new coordinates*/ - lv_obj_t * par = lv_obj_get_parent(rect); - par->signal_f(par, LV_SIGNAL_CHILD_CHG, rect); + /*Notify the object about its new coordinates*/ + rect->signal_f(rect, LV_SIGNAL_CORD_CHG, &ori); + + /*Inform the parent about the new coordinates*/ + lv_obj_t * par = lv_obj_get_parent(rect); + par->signal_f(par, LV_SIGNAL_CHILD_CHG, rect); + } } } @@ -661,13 +725,13 @@ static void lv_rects_init(void) lv_rects_def.objs.color = COLOR_MAKE(0x50, 0x70, 0x90); lv_rects_def.gcolor = COLOR_MAKE(0x70, 0xA0, 0xC0); lv_rects_def.bcolor = COLOR_WHITE; - lv_rects_def.bwidth = 2 * LV_STYLE_MULT; + lv_rects_def.bwidth = 2 * LV_DOWNSCALE; lv_rects_def.bopa = 50; - lv_rects_def.round = 4 * LV_STYLE_MULT; + lv_rects_def.round = 4 * LV_DOWNSCALE; lv_rects_def.empty = 0; - lv_rects_def.hpad = 10 * LV_STYLE_MULT; - lv_rects_def.vpad = 10 * LV_STYLE_MULT; - lv_rects_def.opad = 10 * LV_STYLE_MULT; + lv_rects_def.hpad = 10 * LV_DOWNSCALE; + lv_rects_def.vpad = 10 * LV_DOWNSCALE; + lv_rects_def.opad = 10 * LV_DOWNSCALE; lv_rects_def.light = 0; lv_rects_def.lcolor = COLOR_MAKE(0x60, 0x60, 0x60); @@ -680,9 +744,9 @@ static void lv_rects_init(void) /*Border style*/ memcpy(&lv_rects_border, &lv_rects_def, sizeof(lv_rects_t)); lv_rects_border.bcolor = COLOR_BLACK; - lv_rects_border.bwidth = 2 * LV_STYLE_MULT; + lv_rects_border.bwidth = 2 * LV_DOWNSCALE; lv_rects_border.bopa = 100; - lv_rects_border.round = 4 * LV_STYLE_MULT; + lv_rects_border.round = 4 * LV_DOWNSCALE; lv_rects_border.empty = 1; } #endif diff --git a/lv_objx/lv_rect.h b/lv_objx/lv_rect.h index 1ad8e5de2..1ebac42bd 100644 --- a/lv_objx/lv_rect.h +++ b/lv_objx/lv_rect.h @@ -34,7 +34,8 @@ typedef enum LV_RECT_LAYOUT_ROW_T, /*Row left align*/ LV_RECT_LAYOUT_ROW_M, /*Row middle align*/ LV_RECT_LAYOUT_ROW_B, /*Row right align*/ - LV_RECT_LAYOUT_GRID, /*Put as many object as possible in row and begin a new row*/ + LV_RECT_LAYOUT_PRETTY, /*Put as many object as possible in row and begin a new row*/ + LV_RECT_LAYOUT_GRID, /*Align same-sized object into a grid*/ }lv_rect_layout_t; /*Style of rectangle*/ diff --git a/lv_objx/lv_ta.c b/lv_objx/lv_ta.c index 042bcd820..00646160e 100644 --- a/lv_objx/lv_ta.c +++ b/lv_objx/lv_ta.c @@ -17,10 +17,6 @@ /********************* * DEFINES *********************/ -#define LV_TA_MAX_LENGTH 512 -#define LV_TA_DEF_WIDTH 120 -#define LV_TA_DEF_HEIGHT 80 -#define LV_TA_CUR_BLINK_TIME 400 /*ms*/ /********************** * TYPEDEFS @@ -93,7 +89,7 @@ lv_obj_t * lv_ta_create(lv_obj_t * par, lv_obj_t * copy) lv_label_set_long_mode(ext->label, LV_LABEL_LONG_BREAK); lv_label_set_text(ext->label, "Text area"); lv_page_glue_obj(ext->label, true); - lv_obj_set_click(ext->label, true); + lv_obj_set_click(ext->label, false); lv_obj_set_style(new_ta, lv_tas_get(LV_TAS_DEF, NULL)); lv_obj_set_size_us(new_ta, LV_TA_DEF_WIDTH, LV_TA_DEF_HEIGHT); } @@ -115,6 +111,8 @@ lv_obj_t * lv_ta_create(lv_obj_t * par, lv_obj_t * copy) a.time = LV_TA_CUR_BLINK_TIME; a.act_time = 0; a.end_cb = NULL; + a.start = 0; + a.end= 1; a.repeat = 1; a.repeat_pause = 0; a.playback = 1; @@ -230,7 +228,7 @@ void lv_ta_add_text(lv_obj_t * ta, const char * txt) } /** - * Set the text os a text area + * Set the text of a text area * @param ta pointer to a text area * @param txt pointer to the text */ @@ -539,10 +537,10 @@ static bool lv_ta_scrling_design(lv_obj_t * scrling, const area_t * mask, lv_des static void lv_ta_hide_cursor(lv_obj_t * ta, uint8_t hide) { lv_ta_ext_t * ta_ext = lv_obj_get_ext(ta); - ta_ext->cur_hide = hide == 0 ? 0 : 1; - - lv_obj_inv(ta); - + if(hide != ta_ext->cur_hide) { + ta_ext->cur_hide = hide == 0 ? 0 : 1; + lv_obj_inv(ta); + } } /** @@ -569,7 +567,7 @@ static void lv_tas_init(void) lv_tas_def.labels.objs.color = COLOR_MAKE(0x20, 0x20, 0x20); lv_tas_def.cursor_color = COLOR_MAKE(0x10, 0x10, 0x10); - lv_tas_def.cursor_width = 1 * LV_STYLE_MULT; /*>=1 px for visible cursor*/ + lv_tas_def.cursor_width = 1 * LV_DOWNSCALE; /*>=1 px for visible cursor*/ lv_tas_def.cursor_show = 1; } #endif diff --git a/lv_objx/lv_ta.h b/lv_objx/lv_ta.h index 0a3e846db..a4f7f3d70 100644 --- a/lv_objx/lv_ta.h +++ b/lv_objx/lv_ta.h @@ -64,6 +64,7 @@ void lv_ta_add_char(lv_obj_t * ta, char c); void lv_ta_add_text(lv_obj_t * ta, const char * txt); void lv_ta_set_text(lv_obj_t * ta, const char * txt); void lv_ta_del(lv_obj_t * ta); + void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos); void lv_ta_cursor_right (lv_obj_t * ta); void lv_ta_cursor_left(lv_obj_t * taj); diff --git a/lv_objx/lv_win.c b/lv_objx/lv_win.c index 9fd1a22d6..2e9545d2e 100644 --- a/lv_objx/lv_win.c +++ b/lv_objx/lv_win.c @@ -14,8 +14,6 @@ /********************* * DEFINES *********************/ -#define LV_WIN_CTRL_BTN_DEF_W (30 * LV_DOWNSCALE) -#define LV_WIN_CTRL_BTN_DEF_H (30 * LV_DOWNSCALE) /********************** * TYPEDEFS @@ -50,7 +48,10 @@ static lv_wins_t lv_wins_def; /** * Create a window objects * @param par pointer to an object, it will be the parent of the new window - * @param copy pointer to a window object, if not NULL then the new object will be copied from it + * @param copy pointer to a window object, if not NULL then + lv_win_add_ctrl_btn(app->win, "U:/close", lv_app_win_close_action); + lv_win_add_ctrl_btn(app->win, "U:/close", lv_app_win_close_action); + lv_win_add_ctrl_btn(app->win, "U:/close", lv_app_win_close_action);the new object will be copied from it * @return pointer to the created window */ lv_obj_t * lv_win_create(lv_obj_t * par, lv_obj_t * copy) @@ -72,6 +73,9 @@ lv_obj_t * lv_win_create(lv_obj_t * par, lv_obj_t * copy) /*Init the new window object*/ if(copy == NULL) { + /*Create a page for the content*/ + ext->content = lv_page_create(new_win, NULL); + /*Create a holder for the header*/ ext->header = lv_rect_create(new_win, NULL); lv_rect_set_fit(ext->header, false, true); @@ -85,9 +89,6 @@ lv_obj_t * lv_win_create(lv_obj_t * par, lv_obj_t * copy) lv_rect_set_fit(ext->ctrl_holder, true, false); lv_rect_set_layout(ext->ctrl_holder, LV_RECT_LAYOUT_ROW_M); - /*Create a page for the content*/ - ext->content = lv_page_create(new_win, NULL); - lv_obj_set_style(new_win, lv_wins_get(LV_WINS_DEF, NULL)); lv_win_realign(new_win); @@ -149,15 +150,31 @@ bool lv_win_signal(lv_obj_t * win, lv_signal_t sign, void * param) lv_obj_set_style(ext->ctrl_holder, &style->ctrl_holder); lv_obj_set_style(ext->title, &style->title); lv_obj_set_style(ext->header, &style->header); + lv_obj_set_opa(ext->header, style->header_opa); + + if(style->header_opa == OPA_COVER || style->header_opa == OPA_TRANSP) { + lv_obj_set_opa_protect(ext->header, false); + } else { + lv_obj_set_opa_protect(ext->header, true); + } /*Refresh the style of all control buttons*/ child = lv_obj_get_child(ext->ctrl_holder, NULL); while(child != NULL) { lv_obj_set_style(child, &style->ctrl_btn); + lv_obj_set_opa(child, style->ctrl_btn_opa); + if(style->ctrl_btn_opa == OPA_COVER || style->ctrl_btn_opa == OPA_TRANSP) { + lv_obj_set_opa_protect(child, false); + } else { + lv_obj_set_opa_protect(child, true); + } /*Refresh the image style too*/ lv_obj_set_style(lv_obj_get_child(child, NULL), &style->ctrl_img); child = lv_obj_get_child(ext->ctrl_holder, child); } + + lv_win_realign(win); + break; case LV_SIGNAL_CHILD_CHG: /*If a child added move it to the 'content' object*/ @@ -170,6 +187,7 @@ bool lv_win_signal(lv_obj_t * win, lv_signal_t sign, void * param) } break; case LV_SIGNAL_CORD_CHG: + /*If the size is changed refresh the window*/ if(area_get_width(param) != lv_obj_get_width(win) || area_get_height(param) != lv_obj_get_height(win)) { lv_win_realign(win); @@ -194,15 +212,23 @@ bool lv_win_signal(lv_obj_t * win, lv_signal_t sign, void * param) * @param rel_action a function pointer to call when the button is released * @return pointer to the created button object */ -lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img_path, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)) +lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img_path, lv_action_t rel_action) { lv_win_ext_t * ext = lv_obj_get_ext(win); lv_wins_t * style = lv_obj_get_style(win); lv_obj_t * btn = lv_btn_create(ext->ctrl_holder, NULL); lv_obj_set_style(btn, &style->ctrl_btn); + lv_obj_set_opa(btn, style->ctrl_btn_opa); lv_obj_set_size(btn, style->ctrl_btn_w, style->ctrl_btn_h); lv_btn_set_rel_action(btn, rel_action); + + if(style->ctrl_btn_opa == OPA_COVER || style->ctrl_btn_opa == OPA_TRANSP) { + lv_obj_set_opa_protect(btn, false); + } else { + lv_obj_set_opa_protect(btn, true); + } + lv_obj_t * img = lv_img_create(btn, NULL); lv_obj_set_click(img, false); lv_obj_set_style(img, &style->ctrl_img); @@ -213,6 +239,21 @@ lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img_path, bool (*rel return btn; } +/** + * A release action which can be assigned to a window control button to close it + * @param btn pointer to the released button + * @param dispi pointer to the caller display input + * @return always false because the button is deleted with the window + */ +bool lv_win_close_action(lv_obj_t * btn, lv_dispi_t * dispi) +{ + lv_obj_t * win = lv_win_get_from_ctrl_btn(btn); + + lv_obj_del(win); + + return false; +} + /** * Set the title of a window * @param win pointer to a window object @@ -238,7 +279,19 @@ const char * lv_win_get_title(lv_obj_t * win) { lv_win_ext_t * ext = lv_obj_get_ext(win); - return ext->title; + return lv_label_get_text(ext->title); +} + +/** + * Get the content object (lv_page type) of a window + * @param win pointer to a window object + * @return pointer to the content page object of a window + */ +lv_obj_t * lv_win_get_content(lv_obj_t * win) +{ + lv_win_ext_t * ext = lv_obj_get_ext(win); + + return ext->content; } /** @@ -332,19 +385,21 @@ static void lv_wins_init(void) /*Transparent background. It will be always covered*/ lv_objs_get(LV_OBJS_TRANSP, &lv_wins_def.bg); + /*Style for the content*/ lv_pages_get(LV_PAGES_DEF, &lv_wins_def.content); lv_wins_def.content.bg_rects.objs.color = COLOR_WHITE; lv_wins_def.content.bg_rects.gcolor = COLOR_WHITE; - lv_wins_def.content.bg_rects.bwidth = 1 * LV_STYLE_MULT; + lv_wins_def.content.bg_rects.bwidth = 1 * LV_DOWNSCALE; lv_wins_def.content.bg_rects.bcolor = COLOR_GRAY; lv_wins_def.content.bg_rects.round = 0; lv_wins_def.content.bg_rects.hpad = 0; lv_wins_def.content.bg_rects.vpad = 0; + lv_wins_def.header_on_content = 0; /*Styles for the header*/ lv_rects_get(LV_RECTS_DEF, &lv_wins_def.header); - lv_wins_def.header.hpad = 5 * LV_STYLE_MULT; - lv_wins_def.header.vpad = 5 * LV_STYLE_MULT; + lv_wins_def.header.hpad = 5 * LV_DOWNSCALE; + lv_wins_def.header.vpad = 5 * LV_DOWNSCALE; lv_wins_def.header.objs.color = COLOR_MAKE(0x30, 0x40, 0x50); lv_wins_def.header.gcolor = COLOR_MAKE(0x30, 0x40, 0x50); lv_wins_def.header.bwidth = 0; @@ -353,14 +408,14 @@ static void lv_wins_init(void) lv_rects_get(LV_RECTS_TRANSP, &lv_wins_def.ctrl_holder); lv_wins_def.ctrl_holder.hpad = 0; lv_wins_def.ctrl_holder.vpad = 0; - lv_wins_def.ctrl_holder.opad = 10 * LV_STYLE_MULT; + lv_wins_def.ctrl_holder.opad = 10 * LV_DOWNSCALE; lv_btns_get(LV_BTNS_DEF, &lv_wins_def.ctrl_btn); lv_wins_def.ctrl_btn.bcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0xD0, 0xE0, 0xF0); lv_wins_def.ctrl_btn.mcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x30, 0x40, 0x50); lv_wins_def.ctrl_btn.gcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x30, 0x40, 0x50); lv_wins_def.ctrl_btn.rects.bopa = 70; - lv_wins_def.ctrl_btn.rects.bwidth = 2 * LV_STYLE_MULT; + lv_wins_def.ctrl_btn.rects.bwidth = 2 * LV_DOWNSCALE; lv_wins_def.ctrl_btn.rects.round = LV_RECT_CIRCLE; lv_imgs_get(LV_IMGS_DEF, &lv_wins_def.ctrl_img); @@ -369,11 +424,14 @@ static void lv_wins_init(void) lv_labels_get(LV_LABELS_TITLE, &lv_wins_def.title); lv_wins_def.title.objs.color = COLOR_MAKE(0xD0, 0xE0, 0xF0); - lv_wins_def.title.letter_space = 1 * LV_STYLE_MULT; - lv_wins_def.title.line_space = 1 * LV_STYLE_MULT; + lv_wins_def.title.letter_space = 1 * LV_DOWNSCALE; + lv_wins_def.title.line_space = 1 * LV_DOWNSCALE; - lv_wins_def.ctrl_btn_w = LV_WIN_CTRL_BTN_DEF_W; - lv_wins_def.ctrl_btn_h = LV_WIN_CTRL_BTN_DEF_H; + lv_wins_def.ctrl_btn_w = 30 * LV_DOWNSCALE; + lv_wins_def.ctrl_btn_h = 30 * LV_DOWNSCALE; + + lv_wins_def.header_opa = OPA_COVER; + lv_wins_def.ctrl_btn_opa = OPA_COVER; } /** @@ -397,7 +455,6 @@ static void lv_win_realign(lv_obj_t * win) lv_obj_set_height(ext->ctrl_holder, style->ctrl_btn_h + 2 * style->ctrl_holder.vpad * 2); lv_obj_set_width(ext->header, lv_obj_get_width(win)); - lv_obj_set_size(ext->content, lv_obj_get_width(win), lv_obj_get_height(win) - lv_obj_get_height(ext->header)); /*Align the higher object first to make the correct header size first*/ if(lv_obj_get_height(ext->title) > lv_obj_get_height(ext->ctrl_holder)) { @@ -409,7 +466,14 @@ static void lv_win_realign(lv_obj_t * win) } lv_obj_set_pos_us(ext->header, 0, 0); - lv_obj_align_us(ext->content, ext->header, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 0); + + if(style->header_on_content == 0) { + lv_obj_set_size(ext->content, lv_obj_get_width(win), lv_obj_get_height(win) - lv_obj_get_height(ext->header)); + lv_obj_align_us(ext->content, ext->header, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 0); + } else { + lv_obj_set_size(ext->content, lv_obj_get_width(win), lv_obj_get_height(win)); + lv_obj_set_pos(ext->content, 0, 0); + } } #endif diff --git a/lv_objx/lv_win.h b/lv_objx/lv_win.h index 226eb384d..1dacc2894 100644 --- a/lv_objx/lv_win.h +++ b/lv_objx/lv_win.h @@ -40,8 +40,11 @@ typedef struct lv_imgs_t ctrl_img; cord_t ctrl_btn_w; cord_t ctrl_btn_h; + opa_t ctrl_btn_opa; + opa_t header_opa; /*Content settings*/ lv_pages_t content; + uint8_t header_on_content:1; }lv_wins_t; /*Built-in styles of window*/ @@ -68,15 +71,17 @@ lv_obj_t * lv_win_create(lv_obj_t * par, lv_obj_t * copy); bool lv_win_signal(lv_obj_t * win, lv_signal_t sign, void * param); lv_wins_t * lv_wins_get(lv_wins_builtin_t style, lv_wins_t * copy); -lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img, bool (*rel_action)(lv_obj_t *, lv_dispi_t *)); +lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img, lv_action_t rel_action); +bool lv_win_close_action(lv_obj_t * btn, lv_dispi_t * dispi); void lv_win_set_title(lv_obj_t * win, const char * title); const char * lv_win_get_title(lv_obj_t * win); +lv_obj_t * lv_win_get_content(lv_obj_t * win); lv_obj_t * lv_win_get_from_ctrl_btn(lv_obj_t * ctrl_btn); /********************** * MACROS **********************/ -#endif +#endif /*USE_LV_WIN*/ -#endif +#endif /*LV_WIN_H*/ diff --git a/lvgl.h b/lvgl.h index faba488ec..59f14961f 100644 --- a/lvgl.h +++ b/lvgl.h @@ -24,13 +24,16 @@ #include "lv_objx/lv_btnm.h" #include "lv_objx/lv_ta.h" #include "lv_objx/lv_win.h" +#include "lv_objx/lv_mbox.h" + +#include "lv_app/lv_app.h" /********************* * DEFINES *********************/ -#define LVGL_VERSION_MAJOR 1 -#define LVGL_VERSION_MINOR 3 -#define LVGL_VERSION_BUGFIX 1 +#define LVGL_VERSION_MAJOR 2 +#define LVGL_VERSION_MINOR 0 +#define LVGL_VERSION_BUGFIX 0 /********************** * TYPEDEFS