CARPLAY版本整理

This commit is contained in:
2025-01-21 16:49:37 +08:00
commit f0fb64e4e6
26542 changed files with 13719676 additions and 0 deletions

View File

@ -0,0 +1,5 @@
demo1
demoui
prefix_xml_ui
*.exe
*.lib

View File

@ -0,0 +1,25 @@
# Demo程序
### 源文件和目录介绍
* demo1\_app.c 演示按传统方式创建界面。
* demo\_ui\_app.c 演示各种控件和动画效果(不适合作为编写代码参考,编写代码请参考:[awtk-c-demos](https://github.com/zlgopen/awtk-c-demos) )。
* demo\_animator\_app.c 演示控件动画。
* demo\_desktop.c 演示开发桌面应用程序(使用原生输入法,可以调整窗口大小)。
* demo\_thread\_app.c 演示非GUI线程操作GUI。
* demo\_vg\_app.c 演示矢量图绘制。
* preview\_ui.c 预览UI文件。
* assets.c 资源初始化代码。
* common.inc 公共代码。
* assets 资源文件夹。
### 可执行文件介绍
* preview\_ui 预览界面描述文件。
```
./bin/preview_ui demos/assets/default/raw/ui/main.xml
```
* bin下的demo*可以直接运行。

View File

@ -0,0 +1,27 @@
import os
env=DefaultEnvironment().Clone();
BIN_DIR=os.environ['BIN_DIR'];
LIB_DIR=os.environ['LIB_DIR'];
env['LINKFLAGS'] = env['OS_SUBSYSTEM_WINDOWS'] + env['LINKFLAGS'];
env.Library(os.path.join(LIB_DIR, 'assets'), ['assets.c']);
env.Program(os.path.join(BIN_DIR, 'demoui'), ['demo_ui_app.c'], LIBS=['assets'] + env['LIBS']);
env.Library(os.path.join(LIB_DIR, 'assets_old'), ['assets_old.c']);
env['LIBS'] = ['assets_old'] + env['LIBS']
env.Program(os.path.join(BIN_DIR, 'demo1'), ['demo1_app.c']);
env.Program(os.path.join(BIN_DIR, 'demovg'), ['demo_vg_app.c']);
env.Program(os.path.join(BIN_DIR, 'demouiold'), ['demo_ui_old_app.c']);
env.Program(os.path.join(BIN_DIR, 'demotr'), ['demo_tr_app.c']);
env.Program(os.path.join(BIN_DIR, 'demo_basic'), ['demo_basic.c']);
env.Program(os.path.join(BIN_DIR, 'demo_thread'), ['demo_thread_app.c']);
env.Program(os.path.join(BIN_DIR, 'demo_animator'), ['demo_animator_app.c']);
env.Program(os.path.join(BIN_DIR, 'demo_scroll_view'), ['demo_scroll_view.c']);
env.Program(os.path.join(BIN_DIR, 'preview_ui'), ['preview_ui.c']);
env.Program(os.path.join(BIN_DIR, 'demo_desktop'), ['demo_desktop.c']);
env.Program(os.path.join(BIN_DIR, 'demo_file_browser'), ['demo_file_browser.c']);
env.Program(os.path.join(BIN_DIR, 'demo_canvas_offline'), ['demo_canvas_offline.c']);

View File

@ -0,0 +1,626 @@
#include "awtk.h"
#include "base/assets_manager.h"
#ifndef APP_THEME
#define APP_THEME "default"
#endif /*APP_THEME*/
/*** default ***/
#ifndef WITH_FS_RES
#include "../res/assets/default/inc/strings/en_US.data"
#include "../res/assets/default/inc/styles/dialog_toast.data"
#include "../res/assets/default/inc/styles/uiex.data"
#include "../res/assets/default/inc/styles/uiex_dialog_confirm.data"
#include "../res/assets/default/inc/styles/uiex_dialog_info.data"
#include "../res/assets/default/inc/styles/uiex_dialog_warn.data"
#include "../res/assets/default/inc/styles/uiex_keyboard.data"
#include "../res/assets/default/inc/ui/uiex/cbp_fast_food.data"
#include "../res/assets/default/inc/ui/uiex/cbp_font.data"
#include "../res/assets/default/inc/ui/uiex/cbp_font_size.data"
#include "../res/assets/default/inc/ui/uiex/cbp_week.data"
#include "../res/assets/default/inc/ui/uiex/dlg_center_scale.data"
#include "../res/assets/default/inc/ui/uiex/dlg_fade.data"
#include "../res/assets/default/inc/ui/uiex/dlg_popdown.data"
#include "../res/assets/default/inc/ui/uiex/dlg_popup.data"
#include "../res/assets/default/inc/ui/uiex/htranslate.data"
#include "../res/assets/default/inc/ui/uiex/kb_ascii.data"
#include "../res/assets/default/inc/ui/uiex/kb_default.data"
#include "../res/assets/default/inc/ui/uiex/kb_foo.data"
#include "../res/assets/default/inc/ui/uiex/kb_hex.data"
#include "../res/assets/default/inc/ui/uiex/kb_int.data"
#include "../res/assets/default/inc/ui/uiex/kb_uint.data"
#include "../res/assets/default/inc/ui/uiex/menu_bar.data"
#include "../res/assets/default/inc/ui/uiex/menu_landscape.data"
#include "../res/assets/default/inc/ui/uiex/menu_portrait.data"
#include "../res/assets/default/inc/ui/uiex/overlay.data"
#include "../res/assets/default/inc/ui/uiex/page_animate.data"
#include "../res/assets/default/inc/ui/uiex/page_button.data"
#include "../res/assets/default/inc/ui/uiex/page_chart.data"
#include "../res/assets/default/inc/ui/uiex/page_checkbox.data"
#include "../res/assets/default/inc/ui/uiex/page_color.data"
#include "../res/assets/default/inc/ui/uiex/page_date_time.data"
#include "../res/assets/default/inc/ui/uiex/page_edit.data"
#include "../res/assets/default/inc/ui/uiex/page_image.data"
#include "../res/assets/default/inc/ui/uiex/page_label.data"
#include "../res/assets/default/inc/ui/uiex/page_layout.data"
#include "../res/assets/default/inc/ui/uiex/page_list_view.data"
#include "../res/assets/default/inc/ui/uiex/page_mledit.data"
#include "../res/assets/default/inc/ui/uiex/page_progress.data"
#include "../res/assets/default/inc/ui/uiex/page_selector.data"
#include "../res/assets/default/inc/ui/uiex/page_slider.data"
#include "../res/assets/default/inc/ui/uiex/page_slide_view.data"
#include "../res/assets/default/inc/ui/uiex/page_tab_ctrl.data"
#include "../res/assets/default/inc/ui/uiex/page_window.data"
#include "../res/assets/default/inc/ui/uiex/popup.data"
#include "../res/assets/default/inc/ui/uiex/preload.data"
#include "../res/assets/default/inc/ui/uiex/slide_down.data"
#include "../res/assets/default/inc/ui/uiex/slide_left.data"
#include "../res/assets/default/inc/ui/uiex/slide_right.data"
#include "../res/assets/default/inc/ui/uiex/slide_up.data"
#include "../res/assets/default/inc/ui/uiex/sysbar_landscape.data"
#include "../res/assets/default/inc/ui/uiex/sysbar_portrait.data"
#include "../res/assets/default/inc/ui/uiex/vtranslate.data"
#ifdef WITH_STB_IMAGE
#include "../res/assets/default/inc/images/uiex_arrow_down_n.res"
#include "../res/assets/default/inc/images/uiex_arrow_down_p.res"
#include "../res/assets/default/inc/images/uiex_arrow_up_n.res"
#include "../res/assets/default/inc/images/uiex_arrow_up_p.res"
#include "../res/assets/default/inc/images/uiex_big_logo.res"
#include "../res/assets/default/inc/images/uiex_Boot_loading.res"
#include "../res/assets/default/inc/images/uiex_button_Empty.res"
#include "../res/assets/default/inc/images/uiex_button_Export.res"
#include "../res/assets/default/inc/images/uiex_button_Import.res"
#include "../res/assets/default/inc/images/uiex_button_search.res"
#include "../res/assets/default/inc/images/uiex_button_time.res"
#include "../res/assets/default/inc/images/uiex_check.res"
#include "../res/assets/default/inc/images/uiex_check_checked_d.res"
#include "../res/assets/default/inc/images/uiex_check_checked_n.res"
#include "../res/assets/default/inc/images/uiex_check_checked_p.res"
#include "../res/assets/default/inc/images/uiex_check_d.res"
#include "../res/assets/default/inc/images/uiex_check_n.res"
#include "../res/assets/default/inc/images/uiex_check_p.res"
#include "../res/assets/default/inc/images/uiex_close_n.res"
#include "../res/assets/default/inc/images/uiex_close_p.res"
#include "../res/assets/default/inc/images/uiex_combobox_btn_d.res"
#include "../res/assets/default/inc/images/uiex_combobox_btn_n.res"
#include "../res/assets/default/inc/images/uiex_combobox_btn_p.res"
#include "../res/assets/default/inc/images/uiex_Configuration_nor.res"
#include "../res/assets/default/inc/images/uiex_Configuration_sel.res"
#include "../res/assets/default/inc/images/uiex_Coverwindow.res"
#include "../res/assets/default/inc/images/uiex_editor_bgcolor.res"
#include "../res/assets/default/inc/images/uiex_editor_Importpictures.res"
#include "../res/assets/default/inc/images/uiex_editor_TextAlignBoth.res"
#include "../res/assets/default/inc/images/uiex_editor_TextAlignleft.res"
#include "../res/assets/default/inc/images/uiex_editor_TextAlignright.res"
#include "../res/assets/default/inc/images/uiex_editor_TextBold.res"
#include "../res/assets/default/inc/images/uiex_editor_TextCenteralignment.res"
#include "../res/assets/default/inc/images/uiex_editor_Textcolor.res"
#include "../res/assets/default/inc/images/uiex_editor_TextItalic.res"
#include "../res/assets/default/inc/images/uiex_editor_TextLinespacing.res"
#include "../res/assets/default/inc/images/uiex_editor_TextUnderscore.res"
#include "../res/assets/default/inc/images/uiex_keyboard_backspace_n.res"
#include "../res/assets/default/inc/images/uiex_keyboard_backspace_p.res"
#include "../res/assets/default/inc/images/uiex_keyboard_CN.res"
#include "../res/assets/default/inc/images/uiex_keyboard_EN.res"
#include "../res/assets/default/inc/images/uiex_loading_repeat_bg.res"
#include "../res/assets/default/inc/images/uiex_logo.res"
#include "../res/assets/default/inc/images/uiex_Portraitmenu_n.res"
#include "../res/assets/default/inc/images/uiex_Portraitmenu_p.res"
#include "../res/assets/default/inc/images/uiex_radio_checked_d.res"
#include "../res/assets/default/inc/images/uiex_radio_checked_n.res"
#include "../res/assets/default/inc/images/uiex_radio_checked_p.res"
#include "../res/assets/default/inc/images/uiex_radio_d.res"
#include "../res/assets/default/inc/images/uiex_radio_n.res"
#include "../res/assets/default/inc/images/uiex_radio_p.res"
#include "../res/assets/default/inc/images/uiex_send_nor.res"
#include "../res/assets/default/inc/images/uiex_send_sel.res"
#include "../res/assets/default/inc/images/uiex_shift.res"
#include "../res/assets/default/inc/images/uiex_shifton.res"
#include "../res/assets/default/inc/images/uiex_Sliding_dot.res"
#include "../res/assets/default/inc/images/uiex_Sliding_Square.res"
#include "../res/assets/default/inc/images/uiex_switch.res"
#include "../res/assets/default/inc/images/uiex_takeover_nor.res"
#include "../res/assets/default/inc/images/uiex_takeover_sel.res"
#include "../res/assets/default/inc/images/uiex_texteditorhide.res"
#include "../res/assets/default/inc/images/uiex_texteditor_show.res"
#include "../res/assets/default/inc/images/uiex_Universal_nor.res"
#include "../res/assets/default/inc/images/uiex_Universal_sel.res"
#include "../res/assets/default/inc/images/uiex_Windowclosed_n.res"
#include "../res/assets/default/inc/images/uiex_Windowclosed_p.res"
#else
#endif /*WITH_STB_IMAGE*/
#ifdef WITH_VGCANVAS
#endif /*WITH_VGCANVAS*/
#ifdef WITH_TRUETYPE_FONT
#include "../res/assets/default/inc/fonts/default.res"
#else /*WITH_TRUETYPE_FONT*/
#endif /*WITH_TRUETYPE_FONT*/
#endif /*WITH_FS_RES*/
ret_t assets_init_default(void) {
assets_manager_t* am = assets_manager();
assets_manager_set_theme(am, "default");
#ifdef WITH_FS_RES
assets_manager_preload(am, ASSET_TYPE_FONT, "default");
assets_manager_preload(am, ASSET_TYPE_STYLE, "default");
#else
assets_manager_add(am, strings_en_US);
assets_manager_add(am, style_dialog_toast);
assets_manager_add(am, style_uiex);
assets_manager_add(am, style_uiex_dialog_confirm);
assets_manager_add(am, style_uiex_dialog_info);
assets_manager_add(am, style_uiex_dialog_warn);
assets_manager_add(am, style_uiex_keyboard);
assets_manager_add(am, ui_uiex_cbp_fast_food);
assets_manager_add(am, ui_uiex_cbp_font);
assets_manager_add(am, ui_uiex_cbp_font_size);
assets_manager_add(am, ui_uiex_cbp_week);
assets_manager_add(am, ui_uiex_dlg_center_scale);
assets_manager_add(am, ui_uiex_dlg_fade);
assets_manager_add(am, ui_uiex_dlg_popdown);
assets_manager_add(am, ui_uiex_dlg_popup);
assets_manager_add(am, ui_uiex_htranslate);
assets_manager_add(am, ui_uiex_kb_ascii);
assets_manager_add(am, ui_uiex_kb_default);
assets_manager_add(am, ui_uiex_kb_foo);
assets_manager_add(am, ui_uiex_kb_hex);
assets_manager_add(am, ui_uiex_kb_int);
assets_manager_add(am, ui_uiex_kb_uint);
assets_manager_add(am, ui_uiex_menu_bar);
assets_manager_add(am, ui_uiex_menu_landscape);
assets_manager_add(am, ui_uiex_menu_portrait);
assets_manager_add(am, ui_uiex_overlay);
assets_manager_add(am, ui_uiex_page_animate);
assets_manager_add(am, ui_uiex_page_button);
assets_manager_add(am, ui_uiex_page_chart);
assets_manager_add(am, ui_uiex_page_checkbox);
assets_manager_add(am, ui_uiex_page_color);
assets_manager_add(am, ui_uiex_page_date_time);
assets_manager_add(am, ui_uiex_page_edit);
assets_manager_add(am, ui_uiex_page_image);
assets_manager_add(am, ui_uiex_page_label);
assets_manager_add(am, ui_uiex_page_layout);
assets_manager_add(am, ui_uiex_page_list_view);
assets_manager_add(am, ui_uiex_page_mledit);
assets_manager_add(am, ui_uiex_page_progress);
assets_manager_add(am, ui_uiex_page_selector);
assets_manager_add(am, ui_uiex_page_slider);
assets_manager_add(am, ui_uiex_page_slide_view);
assets_manager_add(am, ui_uiex_page_tab_ctrl);
assets_manager_add(am, ui_uiex_page_window);
assets_manager_add(am, ui_uiex_popup);
assets_manager_add(am, ui_uiex_preload);
assets_manager_add(am, ui_uiex_slide_down);
assets_manager_add(am, ui_uiex_slide_left);
assets_manager_add(am, ui_uiex_slide_right);
assets_manager_add(am, ui_uiex_slide_up);
assets_manager_add(am, ui_uiex_sysbar_landscape);
assets_manager_add(am, ui_uiex_sysbar_portrait);
assets_manager_add(am, ui_uiex_vtranslate);
assets_manager_add(am, image_uiex_arrow_down_n);
assets_manager_add(am, image_uiex_arrow_down_p);
assets_manager_add(am, image_uiex_arrow_up_n);
assets_manager_add(am, image_uiex_arrow_up_p);
assets_manager_add(am, image_uiex_big_logo);
assets_manager_add(am, image_uiex_Boot_loading);
assets_manager_add(am, image_uiex_button_Empty);
assets_manager_add(am, image_uiex_button_Export);
assets_manager_add(am, image_uiex_button_Import);
assets_manager_add(am, image_uiex_button_search);
assets_manager_add(am, image_uiex_button_time);
assets_manager_add(am, image_uiex_check);
assets_manager_add(am, image_uiex_check_checked_d);
assets_manager_add(am, image_uiex_check_checked_n);
assets_manager_add(am, image_uiex_check_checked_p);
assets_manager_add(am, image_uiex_check_d);
assets_manager_add(am, image_uiex_check_n);
assets_manager_add(am, image_uiex_check_p);
assets_manager_add(am, image_uiex_close_n);
assets_manager_add(am, image_uiex_close_p);
assets_manager_add(am, image_uiex_combobox_btn_d);
assets_manager_add(am, image_uiex_combobox_btn_n);
assets_manager_add(am, image_uiex_combobox_btn_p);
assets_manager_add(am, image_uiex_Configuration_nor);
assets_manager_add(am, image_uiex_Configuration_sel);
assets_manager_add(am, image_uiex_Coverwindow);
assets_manager_add(am, image_uiex_editor_bgcolor);
assets_manager_add(am, image_uiex_editor_Importpictures);
assets_manager_add(am, image_uiex_editor_TextAlignBoth);
assets_manager_add(am, image_uiex_editor_TextAlignleft);
assets_manager_add(am, image_uiex_editor_TextAlignright);
assets_manager_add(am, image_uiex_editor_TextBold);
assets_manager_add(am, image_uiex_editor_TextCenteralignment);
assets_manager_add(am, image_uiex_editor_Textcolor);
assets_manager_add(am, image_uiex_editor_TextItalic);
assets_manager_add(am, image_uiex_editor_TextLinespacing);
assets_manager_add(am, image_uiex_editor_TextUnderscore);
assets_manager_add(am, image_uiex_keyboard_backspace_n);
assets_manager_add(am, image_uiex_keyboard_backspace_p);
assets_manager_add(am, image_uiex_keyboard_CN);
assets_manager_add(am, image_uiex_keyboard_EN);
assets_manager_add(am, image_uiex_loading_repeat_bg);
assets_manager_add(am, image_uiex_logo);
assets_manager_add(am, image_uiex_Portraitmenu_n);
assets_manager_add(am, image_uiex_Portraitmenu_p);
assets_manager_add(am, image_uiex_radio_checked_d);
assets_manager_add(am, image_uiex_radio_checked_n);
assets_manager_add(am, image_uiex_radio_checked_p);
assets_manager_add(am, image_uiex_radio_d);
assets_manager_add(am, image_uiex_radio_n);
assets_manager_add(am, image_uiex_radio_p);
assets_manager_add(am, image_uiex_send_nor);
assets_manager_add(am, image_uiex_send_sel);
assets_manager_add(am, image_uiex_shift);
assets_manager_add(am, image_uiex_shifton);
assets_manager_add(am, image_uiex_Sliding_dot);
assets_manager_add(am, image_uiex_Sliding_Square);
assets_manager_add(am, image_uiex_switch);
assets_manager_add(am, image_uiex_takeover_nor);
assets_manager_add(am, image_uiex_takeover_sel);
assets_manager_add(am, image_uiex_texteditorhide);
assets_manager_add(am, image_uiex_texteditor_show);
assets_manager_add(am, image_uiex_Universal_nor);
assets_manager_add(am, image_uiex_Universal_sel);
assets_manager_add(am, image_uiex_Windowclosed_n);
assets_manager_add(am, image_uiex_Windowclosed_p);
#ifdef WITH_VGCANVAS
#endif /*WITH_VGCANVAS*/
#ifdef WITH_TRUETYPE_FONT
assets_manager_add(am, font_default);
#else /*WITH_TRUETYPE_FONT*/
#endif /*WITH_TRUETYPE_FONT*/
#endif
tk_init_assets();
return RET_OK;
}
/*** default end ***/
/*** dark ***/
#ifndef WITH_FS_RES
extern TK_CONST_DATA_ALIGN(const unsigned char strings_en_US[]);
#include "../res/assets/dark/inc/styles/uiex.data"
#include "../res/assets/dark/inc/styles/uiex_dialog_confirm.data"
#include "../res/assets/dark/inc/styles/uiex_dialog_info.data"
#include "../res/assets/dark/inc/styles/uiex_dialog_warn.data"
#include "../res/assets/dark/inc/styles/uiex_keyboard.data"
extern TK_CONST_DATA_ALIGN(const unsigned char style_dialog_toast[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_cbp_fast_food[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_cbp_font[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_cbp_font_size[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_cbp_week[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_dlg_center_scale[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_dlg_fade[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_dlg_popdown[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_dlg_popup[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_htranslate[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_kb_ascii[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_kb_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_kb_foo[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_kb_hex[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_kb_int[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_kb_uint[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_menu_bar[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_menu_landscape[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_menu_portrait[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_overlay[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_animate[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_button[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_chart[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_checkbox[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_color[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_date_time[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_edit[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_image[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_label[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_layout[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_list_view[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_mledit[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_progress[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_selector[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_slider[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_slide_view[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_tab_ctrl[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_page_window[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_popup[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_preload[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_slide_down[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_slide_left[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_slide_right[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_slide_up[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_sysbar_landscape[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_sysbar_portrait[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_uiex_vtranslate[]);
#ifdef WITH_STB_IMAGE
#include "../res/assets/dark/inc/images/uiex_arrow_down_n.res"
#include "../res/assets/dark/inc/images/uiex_arrow_down_p.res"
#include "../res/assets/dark/inc/images/uiex_arrow_up_n.res"
#include "../res/assets/dark/inc/images/uiex_arrow_up_p.res"
#include "../res/assets/dark/inc/images/uiex_big_logo.res"
#include "../res/assets/dark/inc/images/uiex_button_Empty.res"
#include "../res/assets/dark/inc/images/uiex_button_Export.res"
#include "../res/assets/dark/inc/images/uiex_button_Import.res"
#include "../res/assets/dark/inc/images/uiex_button_search.res"
#include "../res/assets/dark/inc/images/uiex_button_time.res"
#include "../res/assets/dark/inc/images/uiex_check_checked_d.res"
#include "../res/assets/dark/inc/images/uiex_check_checked_n.res"
#include "../res/assets/dark/inc/images/uiex_check_checked_p.res"
#include "../res/assets/dark/inc/images/uiex_check_d.res"
#include "../res/assets/dark/inc/images/uiex_check_n.res"
#include "../res/assets/dark/inc/images/uiex_check_p.res"
#include "../res/assets/dark/inc/images/uiex_close_n.res"
#include "../res/assets/dark/inc/images/uiex_close_p.res"
#include "../res/assets/dark/inc/images/uiex_combobox_btn_d.res"
#include "../res/assets/dark/inc/images/uiex_combobox_btn_n.res"
#include "../res/assets/dark/inc/images/uiex_combobox_btn_p.res"
#include "../res/assets/dark/inc/images/uiex_editor_bgcolor.res"
#include "../res/assets/dark/inc/images/uiex_editor_Importpictures.res"
#include "../res/assets/dark/inc/images/uiex_editor_TextAlignBoth.res"
#include "../res/assets/dark/inc/images/uiex_editor_TextAlignleft.res"
#include "../res/assets/dark/inc/images/uiex_editor_TextAlignright.res"
#include "../res/assets/dark/inc/images/uiex_editor_TextBold.res"
#include "../res/assets/dark/inc/images/uiex_editor_TextCenteralignment.res"
#include "../res/assets/dark/inc/images/uiex_editor_Textcolor.res"
#include "../res/assets/dark/inc/images/uiex_editor_TextItalic.res"
#include "../res/assets/dark/inc/images/uiex_editor_TextLinespacing.res"
#include "../res/assets/dark/inc/images/uiex_editor_TextUnderscore.res"
#include "../res/assets/dark/inc/images/uiex_keyboard_backspace_n.res"
#include "../res/assets/dark/inc/images/uiex_keyboard_backspace_p.res"
#include "../res/assets/dark/inc/images/uiex_keyboard_CN.res"
#include "../res/assets/dark/inc/images/uiex_keyboard_EN.res"
#include "../res/assets/dark/inc/images/uiex_logo.res"
#include "../res/assets/dark/inc/images/uiex_Portraitmenu_n.res"
#include "../res/assets/dark/inc/images/uiex_Portraitmenu_p.res"
#include "../res/assets/dark/inc/images/uiex_radio_checked_d.res"
#include "../res/assets/dark/inc/images/uiex_radio_checked_n.res"
#include "../res/assets/dark/inc/images/uiex_radio_checked_p.res"
#include "../res/assets/dark/inc/images/uiex_radio_d.res"
#include "../res/assets/dark/inc/images/uiex_radio_n.res"
#include "../res/assets/dark/inc/images/uiex_radio_p.res"
#include "../res/assets/dark/inc/images/uiex_shift.res"
#include "../res/assets/dark/inc/images/uiex_shifton.res"
#include "../res/assets/dark/inc/images/uiex_texteditorhide.res"
#include "../res/assets/dark/inc/images/uiex_texteditor_show.res"
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Boot_loading[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_check[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Configuration_nor[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Configuration_sel[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Coverwindow[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_loading_repeat_bg[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_send_nor[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_send_sel[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Sliding_dot[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Sliding_Square[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_switch[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_takeover_nor[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_takeover_sel[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Universal_nor[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Universal_sel[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Windowclosed_n[]);
extern TK_CONST_DATA_ALIGN(const unsigned char image_uiex_Windowclosed_p[]);
#else
#endif /*WITH_STB_IMAGE*/
#ifdef WITH_VGCANVAS
#endif /*WITH_VGCANVAS*/
#ifdef WITH_TRUETYPE_FONT
extern TK_CONST_DATA_ALIGN(const unsigned char font_default[]);
#else /*WITH_TRUETYPE_FONT*/
#endif /*WITH_TRUETYPE_FONT*/
#endif /*WITH_FS_RES*/
ret_t assets_init_dark(void) {
assets_manager_t* am = assets_manager();
assets_manager_set_theme(am, "dark");
#ifdef WITH_FS_RES
assets_manager_preload(am, ASSET_TYPE_FONT, "default");
assets_manager_preload(am, ASSET_TYPE_STYLE, "default");
#else
assets_manager_add(am, strings_en_US);
assets_manager_add(am, style_uiex_dark);
assets_manager_add(am, style_uiex_dialog_confirm_dark);
assets_manager_add(am, style_uiex_dialog_info_dark);
assets_manager_add(am, style_uiex_dialog_warn_dark);
assets_manager_add(am, style_uiex_keyboard_dark);
assets_manager_add(am, style_dialog_toast);
assets_manager_add(am, ui_uiex_cbp_fast_food);
assets_manager_add(am, ui_uiex_cbp_font);
assets_manager_add(am, ui_uiex_cbp_font_size);
assets_manager_add(am, ui_uiex_cbp_week);
assets_manager_add(am, ui_uiex_dlg_center_scale);
assets_manager_add(am, ui_uiex_dlg_fade);
assets_manager_add(am, ui_uiex_dlg_popdown);
assets_manager_add(am, ui_uiex_dlg_popup);
assets_manager_add(am, ui_uiex_htranslate);
assets_manager_add(am, ui_uiex_kb_ascii);
assets_manager_add(am, ui_uiex_kb_default);
assets_manager_add(am, ui_uiex_kb_foo);
assets_manager_add(am, ui_uiex_kb_hex);
assets_manager_add(am, ui_uiex_kb_int);
assets_manager_add(am, ui_uiex_kb_uint);
assets_manager_add(am, ui_uiex_menu_bar);
assets_manager_add(am, ui_uiex_menu_landscape);
assets_manager_add(am, ui_uiex_menu_portrait);
assets_manager_add(am, ui_uiex_overlay);
assets_manager_add(am, ui_uiex_page_animate);
assets_manager_add(am, ui_uiex_page_button);
assets_manager_add(am, ui_uiex_page_chart);
assets_manager_add(am, ui_uiex_page_checkbox);
assets_manager_add(am, ui_uiex_page_color);
assets_manager_add(am, ui_uiex_page_date_time);
assets_manager_add(am, ui_uiex_page_edit);
assets_manager_add(am, ui_uiex_page_image);
assets_manager_add(am, ui_uiex_page_label);
assets_manager_add(am, ui_uiex_page_layout);
assets_manager_add(am, ui_uiex_page_list_view);
assets_manager_add(am, ui_uiex_page_mledit);
assets_manager_add(am, ui_uiex_page_progress);
assets_manager_add(am, ui_uiex_page_selector);
assets_manager_add(am, ui_uiex_page_slider);
assets_manager_add(am, ui_uiex_page_slide_view);
assets_manager_add(am, ui_uiex_page_tab_ctrl);
assets_manager_add(am, ui_uiex_page_window);
assets_manager_add(am, ui_uiex_popup);
assets_manager_add(am, ui_uiex_preload);
assets_manager_add(am, ui_uiex_slide_down);
assets_manager_add(am, ui_uiex_slide_left);
assets_manager_add(am, ui_uiex_slide_right);
assets_manager_add(am, ui_uiex_slide_up);
assets_manager_add(am, ui_uiex_sysbar_landscape);
assets_manager_add(am, ui_uiex_sysbar_portrait);
assets_manager_add(am, ui_uiex_vtranslate);
assets_manager_add(am, image_uiex_arrow_down_n_dark);
assets_manager_add(am, image_uiex_arrow_down_p_dark);
assets_manager_add(am, image_uiex_arrow_up_n_dark);
assets_manager_add(am, image_uiex_arrow_up_p_dark);
assets_manager_add(am, image_uiex_big_logo_dark);
assets_manager_add(am, image_uiex_button_Empty_dark);
assets_manager_add(am, image_uiex_button_Export_dark);
assets_manager_add(am, image_uiex_button_Import_dark);
assets_manager_add(am, image_uiex_button_search_dark);
assets_manager_add(am, image_uiex_button_time_dark);
assets_manager_add(am, image_uiex_check_checked_d_dark);
assets_manager_add(am, image_uiex_check_checked_n_dark);
assets_manager_add(am, image_uiex_check_checked_p_dark);
assets_manager_add(am, image_uiex_check_d_dark);
assets_manager_add(am, image_uiex_check_n_dark);
assets_manager_add(am, image_uiex_check_p_dark);
assets_manager_add(am, image_uiex_close_n_dark);
assets_manager_add(am, image_uiex_close_p_dark);
assets_manager_add(am, image_uiex_combobox_btn_d_dark);
assets_manager_add(am, image_uiex_combobox_btn_n_dark);
assets_manager_add(am, image_uiex_combobox_btn_p_dark);
assets_manager_add(am, image_uiex_editor_bgcolor_dark);
assets_manager_add(am, image_uiex_editor_Importpictures_dark);
assets_manager_add(am, image_uiex_editor_TextAlignBoth_dark);
assets_manager_add(am, image_uiex_editor_TextAlignleft_dark);
assets_manager_add(am, image_uiex_editor_TextAlignright_dark);
assets_manager_add(am, image_uiex_editor_TextBold_dark);
assets_manager_add(am, image_uiex_editor_TextCenteralignment_dark);
assets_manager_add(am, image_uiex_editor_Textcolor_dark);
assets_manager_add(am, image_uiex_editor_TextItalic_dark);
assets_manager_add(am, image_uiex_editor_TextLinespacing_dark);
assets_manager_add(am, image_uiex_editor_TextUnderscore_dark);
assets_manager_add(am, image_uiex_keyboard_backspace_n_dark);
assets_manager_add(am, image_uiex_keyboard_backspace_p_dark);
assets_manager_add(am, image_uiex_keyboard_CN_dark);
assets_manager_add(am, image_uiex_keyboard_EN_dark);
assets_manager_add(am, image_uiex_logo_dark);
assets_manager_add(am, image_uiex_Portraitmenu_n_dark);
assets_manager_add(am, image_uiex_Portraitmenu_p_dark);
assets_manager_add(am, image_uiex_radio_checked_d_dark);
assets_manager_add(am, image_uiex_radio_checked_n_dark);
assets_manager_add(am, image_uiex_radio_checked_p_dark);
assets_manager_add(am, image_uiex_radio_d_dark);
assets_manager_add(am, image_uiex_radio_n_dark);
assets_manager_add(am, image_uiex_radio_p_dark);
assets_manager_add(am, image_uiex_shift_dark);
assets_manager_add(am, image_uiex_shifton_dark);
assets_manager_add(am, image_uiex_texteditorhide_dark);
assets_manager_add(am, image_uiex_texteditor_show_dark);
assets_manager_add(am, image_uiex_Boot_loading);
assets_manager_add(am, image_uiex_check);
assets_manager_add(am, image_uiex_Configuration_nor);
assets_manager_add(am, image_uiex_Configuration_sel);
assets_manager_add(am, image_uiex_Coverwindow);
assets_manager_add(am, image_uiex_loading_repeat_bg);
assets_manager_add(am, image_uiex_send_nor);
assets_manager_add(am, image_uiex_send_sel);
assets_manager_add(am, image_uiex_Sliding_dot);
assets_manager_add(am, image_uiex_Sliding_Square);
assets_manager_add(am, image_uiex_switch);
assets_manager_add(am, image_uiex_takeover_nor);
assets_manager_add(am, image_uiex_takeover_sel);
assets_manager_add(am, image_uiex_Universal_nor);
assets_manager_add(am, image_uiex_Universal_sel);
assets_manager_add(am, image_uiex_Windowclosed_n);
assets_manager_add(am, image_uiex_Windowclosed_p);
#ifdef WITH_VGCANVAS
#endif /*WITH_VGCANVAS*/
#ifdef WITH_TRUETYPE_FONT
assets_manager_add(am, font_default);
#else /*WITH_TRUETYPE_FONT*/
#endif /*WITH_TRUETYPE_FONT*/
#endif
tk_init_assets();
return RET_OK;
}
/*** dark end ***/
bool_t assets_has_theme(const char* name) {
return_value_if_fail(name != NULL, FALSE);
if (tk_str_eq(name, "default")) {
return TRUE;
} else if (tk_str_eq(name, "dark")) {
return TRUE;
} else {
return FALSE;
}
}
static ret_t assets_init_internal(const char* theme) {
assets_manager_t* am = assets_manager();
return_value_if_fail(theme != NULL && am != NULL, RET_BAD_PARAMS);
assets_manager_set_theme(am, theme);
if (tk_str_eq(theme, "default")) {
return assets_init_default();
} else if (tk_str_eq(theme, "dark")) {
return assets_init_dark();
} else {
log_debug("%s not support.\n", theme);
return RET_NOT_IMPL;
}
}
ret_t assets_init(void) {
return assets_init_internal(APP_THEME);
}
#ifndef WITH_FS_RES
static ret_t widget_set_theme_without_file_system(widget_t* widget, const char* name) {
const asset_info_t* info = NULL;
event_t e = event_init(EVT_THEME_CHANGED, NULL);
widget_t* wm = widget_get_window_manager(widget);
font_manager_t* fm = widget_get_font_manager(widget);
image_manager_t* imm = widget_get_image_manager(widget);
assets_manager_t* am = widget_get_assets_manager(widget);
locale_info_t* locale_info = widget_get_locale_info(widget);
return_value_if_fail(am != NULL && name != NULL, RET_BAD_PARAMS);
return_value_if_fail(assets_has_theme(name), RET_BAD_PARAMS);
font_manager_unload_all(fm);
image_manager_unload_all(imm);
assets_manager_clear_all(am);
widget_reset_canvas(widget);
assets_init_internal(name);
locale_info_reload(locale_info);
info = assets_manager_ref(am, ASSET_TYPE_STYLE, "default");
if (info != NULL) {
assets_manager_unref(assets_manager(), info);
theme_set_theme_data(theme(), info->data);
}
widget_dispatch(wm, &e);
widget_invalidate_force(wm, NULL);
log_debug("theme changed: %s\n", name);
return RET_OK;
}
#endif /*WITH_FS_RES*/
ret_t assets_set_global_theme(const char* name) {
#ifdef WITH_FS_RES
return widget_set_theme(window_manager(), name);
#else /*WITH_FS_RES*/
return widget_set_theme_without_file_system(window_manager(), name);
#endif /*WITH_FS_RES*/
}

View File

@ -0,0 +1,106 @@
#include "awtk.h"
#include "base/assets_manager.h"
#include "../res/assets/default/inc/fonts/default_18.data"
#include "../res/assets/default/inc/images/bricks.data"
#include "../res/assets/default/inc/images/checked.data"
#include "../res/assets/default/inc/images/dialog_title.data"
#include "../res/assets/default/inc/images/earth.data"
#include "../res/assets/default/inc/images/green_btn_n.data"
#include "../res/assets/default/inc/images/green_btn_o.data"
#include "../res/assets/default/inc/images/green_btn_p.data"
#include "../res/assets/default/inc/images/info.data"
#include "../res/assets/default/inc/images/left_off.data"
#include "../res/assets/default/inc/images/left_on.data"
#include "../res/assets/default/inc/images/middle_off.data"
#include "../res/assets/default/inc/images/middle_on.data"
#include "../res/assets/default/inc/images/muted.data"
#include "../res/assets/default/inc/images/question.data"
#include "../res/assets/default/inc/images/radio_checked.data"
#include "../res/assets/default/inc/images/radio_unchecked.data"
#include "../res/assets/default/inc/images/red_btn_n.data"
#include "../res/assets/default/inc/images/red_btn_o.data"
#include "../res/assets/default/inc/images/red_btn_p.data"
#include "../res/assets/default/inc/images/right_off.data"
#include "../res/assets/default/inc/images/right_on.data"
#include "../res/assets/default/inc/images/slider_bg.data"
#include "../res/assets/default/inc/images/slider_drag.data"
#include "../res/assets/default/inc/images/slider_drag_o.data"
#include "../res/assets/default/inc/images/slider_drag_p.data"
#include "../res/assets/default/inc/images/slider_fg.data"
#include "../res/assets/default/inc/images/slider_v_bg.data"
#include "../res/assets/default/inc/images/slider_v_fg.data"
#include "../res/assets/default/inc/images/unchecked.data"
#include "../res/assets/default/inc/images/unmuted.data"
#include "../res/assets/default/inc/images/warn.data"
#include "../res/assets/default/inc/styles/default.data"
#include "../res/assets/default/inc/ui/basic.data"
#include "../res/assets/default/inc/ui/system_bar.data"
#include "../res/assets/default/inc/images/rgba.data"
#include "../res/assets/default/inc/images/rgb.data"
#include "../res/assets/default/inc/images/message.data"
#include "../res/assets/default/inc/styles/system_bar.data"
#include "../res/assets/default/inc/images/close_n.data"
#include "../res/assets/default/inc/images/close_p.data"
#include "../res/assets/default/inc/images/close_o.data"
ret_t assets_init(void) {
assets_manager_t* am = assets_manager();
assets_manager_add(am, font_default_18);
assets_manager_add(am, image_bricks);
assets_manager_add(am, image_checked);
assets_manager_add(am, image_dialog_title);
assets_manager_add(am, image_earth);
assets_manager_add(am, image_green_btn_n);
assets_manager_add(am, image_green_btn_o);
assets_manager_add(am, image_green_btn_p);
assets_manager_add(am, image_info);
assets_manager_add(am, image_left_off);
assets_manager_add(am, image_left_on);
assets_manager_add(am, image_middle_off);
assets_manager_add(am, image_middle_on);
assets_manager_add(am, image_muted);
assets_manager_add(am, image_question);
assets_manager_add(am, image_radio_checked);
assets_manager_add(am, image_radio_unchecked);
assets_manager_add(am, image_red_btn_n);
assets_manager_add(am, image_red_btn_o);
assets_manager_add(am, image_red_btn_p);
assets_manager_add(am, image_right_off);
assets_manager_add(am, image_right_on);
assets_manager_add(am, image_slider_bg);
assets_manager_add(am, image_slider_drag);
assets_manager_add(am, image_slider_drag_o);
assets_manager_add(am, image_slider_drag_p);
assets_manager_add(am, image_slider_fg);
assets_manager_add(am, image_slider_v_bg);
assets_manager_add(am, image_slider_v_fg);
assets_manager_add(am, image_unchecked);
assets_manager_add(am, image_unmuted);
assets_manager_add(am, image_warn);
assets_manager_add(am, style_default);
assets_manager_add(am, ui_basic);
assets_manager_add(am, ui_system_bar);
assets_manager_add(am, image_rgb);
assets_manager_add(am, image_rgba);
assets_manager_add(am, image_message);
assets_manager_add(am, image_close_p);
assets_manager_add(am, image_close_n);
assets_manager_add(am, image_close_o);
assets_manager_add(am, image_info);
assets_manager_add(am, image_warn);
assets_manager_add(am, image_question);
assets_manager_add(am, style_system_bar);
tk_init_assets();
return RET_OK;
}
bool_t assets_has_theme(const char* name) {
return FALSE;
}
ret_t assets_set_global_theme(const char* name) {
return RET_NOT_IMPL;
}

View File

@ -0,0 +1,6 @@
#include "awtk.h"
#ifdef AWTK_WEB
#include "assets_web.inc"
#else /*AWTK_WEB*/
#include "../res/assets.inc"
#endif /*AWTK_WEB*/

View File

@ -0,0 +1,36 @@
/**
* File: asset.h
* Author: AWTK Develop Team
* Brief: asset init
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-02-03 Li XianJing <xianjimli@hotmail.com> created
*
*/
#ifndef ASSET_H
#define ASSET_H
#include "tkc/types_def.h"
BEGIN_C_DECLS
ret_t assets_init(void);
bool_t assets_has_theme(const char* name);
ret_t assets_set_global_theme(const char* name);
END_C_DECLS
#endif /*ASSET_H*/

View File

@ -0,0 +1,6 @@
#include "awtk.h"
#ifdef AWTK_WEB
#include "assets_web.inc"
#else /*AWTK_WEB*/
#include "../res/assets_all.inc"
#endif /*AWTK_WEB*/

View File

@ -0,0 +1,561 @@
#include "awtk.h"
#include "base/assets_manager.h"
#ifndef WITH_FS_RES
#include "../res/assets/default/inc/strings/zh_CN.data"
#include "../res/assets/default/inc/strings/en_US.data"
#include "../res/assets/default/inc/styles/slide_menu.data"
#include "../res/assets/default/inc/styles/digit_clock.data"
#include "../res/assets/default/inc/styles/dialog_toast.data"
#include "../res/assets/default/inc/styles/edit.data"
#include "../res/assets/default/inc/styles/keyboard.data"
#include "../res/assets/default/inc/styles/color.data"
#include "../res/assets/default/inc/styles/tab_bottom.data"
#include "../res/assets/default/inc/styles/calibration.data"
#include "../res/assets/default/inc/styles/tab_list.data"
#include "../res/assets/default/inc/styles/default.data"
#include "../res/assets/default/inc/styles/tab_top_compact.data"
#include "../res/assets/default/inc/styles/dialog_info.data"
#include "../res/assets/default/inc/styles/gauge.data"
#include "../res/assets/default/inc/styles/dialog_confirm.data"
#include "../res/assets/default/inc/styles/dialog.data"
#include "../res/assets/default/inc/styles/tab_top.data"
#include "../res/assets/default/inc/styles/button.data"
#include "../res/assets/default/inc/styles/system_bar.data"
#include "../res/assets/default/inc/styles/tab_bottom_compact.data"
#include "../res/assets/default/inc/styles/dialog_warn.data"
#include "../res/assets/default/inc/ui/kb_ascii.data"
#include "../res/assets/default/inc/ui/vgcanvas.data"
#include "../res/assets/default/inc/ui/slide_menu.data"
#include "../res/assets/default/inc/ui/radial_gradient.data"
#include "../res/assets/default/inc/ui/auto_play_landscape.data"
#include "../res/assets/default/inc/ui/color_picker_simple.data"
#include "../res/assets/default/inc/ui/progress_circle.data"
#include "../res/assets/default/inc/ui/combo_box.data"
#include "../res/assets/default/inc/ui/kb_phone.data"
#include "../res/assets/default/inc/ui/main.data"
#include "../res/assets/default/inc/ui/digit_clock.data"
#include "../res/assets/default/inc/ui/scroll_bar.data"
#include "../res/assets/default/inc/ui/lua.data"
#include "../res/assets/default/inc/ui/linear_gradient.data"
#include "../res/assets/default/inc/ui/preload.data"
#include "../res/assets/default/inc/ui/images.data"
#include "../res/assets/default/inc/ui/soft_keyboard.data"
#include "../res/assets/default/inc/ui/edit.data"
#include "../res/assets/default/inc/ui/locale.data"
#include "../res/assets/default/inc/ui/kb_int.data"
#include "../res/assets/default/inc/ui/tab_control.data"
#include "../res/assets/default/inc/ui/slide_view_v2.data"
#include "../res/assets/default/inc/ui/animation.data"
#include "../res/assets/default/inc/ui/keyboard.data"
#include "../res/assets/default/inc/ui/kb_hex.data"
#include "../res/assets/default/inc/ui/popdown.data"
#include "../res/assets/default/inc/ui/color.data"
#include "../res/assets/default/inc/ui/color_picker.data"
#include "../res/assets/default/inc/ui/switch.data"
#include "../res/assets/default/inc/ui/dragger.data"
#include "../res/assets/default/inc/ui/dialog2.data"
#include "../res/assets/default/inc/ui/color_picker_hsv.data"
#include "../res/assets/default/inc/ui/tab_bottom.data"
#include "../res/assets/default/inc/ui/list_view_m.data"
#include "../res/assets/default/inc/ui/slide_view_h_loop.data"
#include "../res/assets/default/inc/ui/calibration_win.data"
#include "../res/assets/default/inc/ui/memtest.data"
#include "../res/assets/default/inc/ui/slide_view_h2.data"
#include "../res/assets/default/inc/ui/slide_view_v_loop.data"
#include "../res/assets/default/inc/ui/language.data"
#include "../res/assets/default/inc/ui/kb_float.data"
#include "../res/assets/default/inc/ui/htranslate.data"
#include "../res/assets/default/inc/ui/list_view_vh.data"
#include "../res/assets/default/inc/ui/rich_text.data"
#include "../res/assets/default/inc/ui/scroll_view.data"
#include "../res/assets/default/inc/ui/svg_image.data"
#include "../res/assets/default/inc/ui/tab_list.data"
#include "../res/assets/default/inc/ui/animator.data"
#include "../res/assets/default/inc/ui/slide_down.data"
#include "../res/assets/default/inc/ui/scroll_view_h.data"
#include "../res/assets/default/inc/ui/slide_right.data"
#include "../res/assets/default/inc/ui/scroll_bar_h.data"
#include "../res/assets/default/inc/ui/spinbox.data"
#include "../res/assets/default/inc/ui/label.data"
#include "../res/assets/default/inc/ui/gif_image.data"
#include "../res/assets/default/inc/ui/text_selector.data"
#include "../res/assets/default/inc/ui/tab_top_compact.data"
#include "../res/assets/default/inc/ui/slide_view_h.data"
#include "../res/assets/default/inc/ui/dialogs.data"
#include "../res/assets/default/inc/ui/list_view.data"
#include "../res/assets/default/inc/ui/stroke_gradient.data"
#include "../res/assets/default/inc/ui/slide_view_h1.data"
#include "../res/assets/default/inc/ui/basic.data"
#include "../res/assets/default/inc/ui/gauge.data"
#include "../res/assets/default/inc/ui/color_picker_full.data"
#include "../res/assets/default/inc/ui/dialog1.data"
#include "../res/assets/default/inc/ui/fade.data"
#include "../res/assets/default/inc/ui/image_list.data"
#include "../res/assets/default/inc/ui/slide_view_v1.data"
#include "../res/assets/default/inc/ui/slide_left.data"
#include "../res/assets/default/inc/ui/image_value.data"
#include "../res/assets/default/inc/ui/slide_view.data"
#include "../res/assets/default/inc/ui/time_clock.data"
#include "../res/assets/default/inc/ui/tab_top.data"
#include "../res/assets/default/inc/ui/slide_view_v.data"
#include "../res/assets/default/inc/ui/button.data"
#include "../res/assets/default/inc/ui/system_bar.data"
#include "../res/assets/default/inc/ui/list_view_d.data"
#include "../res/assets/default/inc/ui/vtranslate.data"
#include "../res/assets/default/inc/ui/kb_ufloat.data"
#include "../res/assets/default/inc/ui/kb_default.data"
#include "../res/assets/default/inc/ui/slide_up.data"
#include "../res/assets/default/inc/ui/rich_text2.data"
#include "../res/assets/default/inc/ui/list_view_h.data"
#include "../res/assets/default/inc/ui/color_picker_rgb.data"
#include "../res/assets/default/inc/ui/tab_bottom_compact.data"
#include "../res/assets/default/inc/ui/popup.data"
#include "../res/assets/default/inc/ui/kb_uint.data"
#include "../res/assets/default/inc/ui/scroll_view_v.data"
#include "../res/assets/default/inc/xml/test.data"
#ifdef WITH_STB_IMAGE
#include "../res/assets/default/inc/images/checked.res"
#include "../res/assets/default/inc/images/num_7.res"
#include "../res/assets/default/inc/images/close_p.res"
#include "../res/assets/default/inc/images/num_6.res"
#include "../res/assets/default/inc/images/shift.res"
#include "../res/assets/default/inc/images/contact.res"
#include "../res/assets/default/inc/images/battery_4.res"
#include "../res/assets/default/inc/images/num_4.res"
#include "../res/assets/default/inc/images/slider_fg.res"
#include "../res/assets/default/inc/images/contact_active.res"
#include "../res/assets/default/inc/images/close_d.res"
#include "../res/assets/default/inc/images/dialog_title.res"
#include "../res/assets/default/inc/images/battery_5.res"
#include "../res/assets/default/inc/images/num_5.res"
#include "../res/assets/default/inc/images/me_active.res"
#include "../res/assets/default/inc/images/arrow_up_n.res"
#include "../res/assets/default/inc/images/left_on.res"
#include "../res/assets/default/inc/images/num_1.res"
#include "../res/assets/default/inc/images/battery_1.res"
#include "../res/assets/default/inc/images/arrow_right_p.res"
#include "../res/assets/default/inc/images/slider_v_fg.res"
#include "../res/assets/default/inc/images/empty.res"
#include "../res/assets/default/inc/images/rgba.res"
#include "../res/assets/default/inc/images/num_0.res"
#include "../res/assets/default/inc/images/battery_0.res"
#include "../res/assets/default/inc/images/edit_clear_p.res"
#include "../res/assets/default/inc/images/arrow_up_o.res"
#include "../res/assets/default/inc/images/visible.res"
#include "../res/assets/default/inc/images/arrow_left_o.res"
#include "../res/assets/default/inc/images/clock_second.res"
#include "../res/assets/default/inc/images/battery_2.res"
#include "../res/assets/default/inc/images/num_2.res"
#include "../res/assets/default/inc/images/en.res"
#include "../res/assets/default/inc/images/slider_drag_o.res"
#include "../res/assets/default/inc/images/battery_3.res"
#include "../res/assets/default/inc/images/num_3.res"
#include "../res/assets/default/inc/images/arrow_left_n.res"
#include "../res/assets/default/inc/images/middle_on.res"
#include "../res/assets/default/inc/images/bricks.res"
#include "../res/assets/default/inc/images/play_o.res"
#include "../res/assets/default/inc/images/play_n.res"
#include "../res/assets/default/inc/images/msg_active.res"
#include "../res/assets/default/inc/images/radio_checked.res"
#include "../res/assets/default/inc/images/active_dot.res"
#include "../res/assets/default/inc/images/question.res"
#include "../res/assets/default/inc/images/discovery_active.res"
#include "../res/assets/default/inc/images/dot.res"
#include "../res/assets/default/inc/images/shifton.res"
#include "../res/assets/default/inc/images/check.res"
#include "../res/assets/default/inc/images/cursor.res"
#include "../res/assets/default/inc/images/me.res"
#include "../res/assets/default/inc/images/red_btn_p.res"
#include "../res/assets/default/inc/images/middle_off.res"
#include "../res/assets/default/inc/images/arrow_down_n.res"
#include "../res/assets/default/inc/images/green_btn_o.res"
#include "../res/assets/default/inc/images/green_btn_n.res"
#include "../res/assets/default/inc/images/muted.res"
#include "../res/assets/default/inc/images/arrow_down_o.res"
#include "../res/assets/default/inc/images/rgb.res"
#include "../res/assets/default/inc/images/num_dot.res"
#include "../res/assets/default/inc/images/unmuted.res"
#include "../res/assets/default/inc/images/right_off.res"
#include "../res/assets/default/inc/images/message.res"
#include "../res/assets/default/inc/images/play_p.res"
#include "../res/assets/default/inc/images/slider_bg.res"
#include "../res/assets/default/inc/images/right_on.res"
#include "../res/assets/default/inc/images/gauge_pointer.res"
#include "../res/assets/default/inc/images/left_off.res"
#include "../res/assets/default/inc/images/red_btn_o.res"
#include "../res/assets/default/inc/images/slider_drag.res"
#include "../res/assets/default/inc/images/unchecked.res"
#include "../res/assets/default/inc/images/red_btn_n.res"
#include "../res/assets/default/inc/images/arrow_down_p.res"
#include "../res/assets/default/inc/images/slider_v_bg.res"
#include "../res/assets/default/inc/images/green_btn_p.res"
#include "../res/assets/default/inc/images/switch.res"
#include "../res/assets/default/inc/images/radio_unchecked.res"
#include "../res/assets/default/inc/images/close_n.res"
#include "../res/assets/default/inc/images/close_o.res"
#include "../res/assets/default/inc/images/clock_minute.res"
#include "../res/assets/default/inc/images/cross.res"
#include "../res/assets/default/inc/images/clock.res"
#include "../res/assets/default/inc/images/find.res"
#include "../res/assets/default/inc/images/arrow_up_p.res"
#include "../res/assets/default/inc/images/edit_clear_o.res"
#include "../res/assets/default/inc/images/num_8.res"
#include "../res/assets/default/inc/images/arrow_right_n.res"
#include "../res/assets/default/inc/images/discovery.res"
#include "../res/assets/default/inc/images/arrow_right_o.res"
#include "../res/assets/default/inc/images/num_9.res"
#include "../res/assets/default/inc/images/edit_clear_n.res"
#include "../res/assets/default/inc/images/logo.res"
#include "../res/assets/default/inc/images/invisible.res"
#include "../res/assets/default/inc/images/slider_drag_p.res"
#include "../res/assets/default/inc/images/backspace.res"
#include "../res/assets/default/inc/images/arrow_left_p.res"
#include "../res/assets/default/inc/images/clock_hour.res"
#else
#include "../res/assets/default/inc/images/arrow_right_o.data"
#include "../res/assets/default/inc/images/num_4.data"
#include "../res/assets/default/inc/images/close_o.data"
#include "../res/assets/default/inc/images/battery_1.data"
#include "../res/assets/default/inc/images/slider_bg.data"
#include "../res/assets/default/inc/images/muted.data"
#include "../res/assets/default/inc/images/num_8.data"
#include "../res/assets/default/inc/images/shift.data"
#include "../res/assets/default/inc/images/arrow_up_p.data"
#include "../res/assets/default/inc/images/discovery_active.data"
#include "../res/assets/default/inc/images/en.data"
#include "../res/assets/default/inc/images/right_on.data"
#include "../res/assets/default/inc/images/discovery.data"
#include "../res/assets/default/inc/images/rgb.data"
#include "../res/assets/default/inc/images/num_9.data"
#include "../res/assets/default/inc/images/dot.data"
#include "../res/assets/default/inc/images/battery_0.data"
#include "../res/assets/default/inc/images/find.data"
#include "../res/assets/default/inc/images/slider_fg.data"
#include "../res/assets/default/inc/images/close_n.data"
#include "../res/assets/default/inc/images/left_on.data"
#include "../res/assets/default/inc/images/question.data"
#include "../res/assets/default/inc/images/invisible.data"
#include "../res/assets/default/inc/images/num_5.data"
#include "../res/assets/default/inc/images/num_dot.data"
#include "../res/assets/default/inc/images/arrow_right_n.data"
#include "../res/assets/default/inc/images/visible.data"
#include "../res/assets/default/inc/images/me_active.data"
#include "../res/assets/default/inc/images/cursor.data"
#include "../res/assets/default/inc/images/clock_minute.data"
#include "../res/assets/default/inc/images/switch.data"
#include "../res/assets/default/inc/images/checked.data"
#include "../res/assets/default/inc/images/middle_off.data"
#include "../res/assets/default/inc/images/close_p.data"
#include "../res/assets/default/inc/images/zh.data"
#include "../res/assets/default/inc/images/arrow_right_p.data"
#include "../res/assets/default/inc/images/num_2.data"
#include "../res/assets/default/inc/images/arrow_up_o.data"
#include "../res/assets/default/inc/images/clock.data"
#include "../res/assets/default/inc/images/empty.data"
#include "../res/assets/default/inc/images/left_off.data"
#include "../res/assets/default/inc/images/radio_unchecked.data"
#include "../res/assets/default/inc/images/rgba.data"
#include "../res/assets/default/inc/images/shifton.data"
#include "../res/assets/default/inc/images/arrow_up_n.data"
#include "../res/assets/default/inc/images/num_3.data"
#include "../res/assets/default/inc/images/msg_active.data"
#include "../res/assets/default/inc/images/active_dot.data"
#include "../res/assets/default/inc/images/gauge_pointer.data"
#include "../res/assets/default/inc/images/close_d.data"
#include "../res/assets/default/inc/images/right_off.data"
#include "../res/assets/default/inc/images/unmuted.data"
#include "../res/assets/default/inc/images/cross.data"
#include "../res/assets/default/inc/images/backspace.data"
#include "../res/assets/default/inc/images/arrow_left_p.data"
#include "../res/assets/default/inc/images/edit_clear_n.data"
#include "../res/assets/default/inc/images/clock_second.data"
#include "../res/assets/default/inc/images/contact.data"
#include "../res/assets/default/inc/images/bricks.data"
#include "../res/assets/default/inc/images/dialog_title.data"
#include "../res/assets/default/inc/images/play_p.data"
#include "../res/assets/default/inc/images/battery_5.data"
#include "../res/assets/default/inc/images/green_btn_p.data"
#include "../res/assets/default/inc/images/red_btn_p.data"
#include "../res/assets/default/inc/images/me.data"
#include "../res/assets/default/inc/images/num_0.data"
#include "../res/assets/default/inc/images/arrow_down_p.data"
#include "../res/assets/default/inc/images/num_1.data"
#include "../res/assets/default/inc/images/warn.data"
#include "../res/assets/default/inc/images/contact_active.data"
#include "../res/assets/default/inc/images/slider_drag_o.data"
#include "../res/assets/default/inc/images/battery_4.data"
#include "../res/assets/default/inc/images/message.data"
#include "../res/assets/default/inc/images/edit_clear_o.data"
#include "../res/assets/default/inc/images/battery_3.data"
#include "../res/assets/default/inc/images/logo.data"
#include "../res/assets/default/inc/images/arrow_left_o.data"
#include "../res/assets/default/inc/images/num_6.data"
#include "../res/assets/default/inc/images/check.data"
#include "../res/assets/default/inc/images/middle_on.data"
#include "../res/assets/default/inc/images/arrow_down_o.data"
#include "../res/assets/default/inc/images/radio_checked.data"
#include "../res/assets/default/inc/images/red_btn_o.data"
#include "../res/assets/default/inc/images/green_btn_o.data"
#include "../res/assets/default/inc/images/slider_v_bg.data"
#include "../res/assets/default/inc/images/clock_hour.data"
#include "../res/assets/default/inc/images/play_o.data"
#include "../res/assets/default/inc/images/play_n.data"
#include "../res/assets/default/inc/images/slider_drag.data"
#include "../res/assets/default/inc/images/unchecked.data"
#include "../res/assets/default/inc/images/green_btn_n.data"
#include "../res/assets/default/inc/images/red_btn_n.data"
#include "../res/assets/default/inc/images/slider_drag_p.data"
#include "../res/assets/default/inc/images/slider_v_fg.data"
#include "../res/assets/default/inc/images/arrow_down_n.data"
#include "../res/assets/default/inc/images/num_7.data"
#include "../res/assets/default/inc/images/arrow_left_n.data"
#include "../res/assets/default/inc/images/edit_clear_p.data"
#include "../res/assets/default/inc/images/battery_2.data"
#endif /*WITH_STB_IMAGE*/
#ifdef WITH_VGCANVAS
#include "../res/assets/default/inc/images/pointer_4.bsvg"
#include "../res/assets/default/inc/images/china.bsvg"
#include "../res/assets/default/inc/images/pointer_1.bsvg"
#include "../res/assets/default/inc/images/pointer.bsvg"
#endif /*WITH_VGCANVAS*/
#if defined(WITH_STB_FONT) || defined(WITH_FT_FONT)
#include "../res/assets/default/inc/fonts/default.res"
#else /*WITH_STB_FONT or WITH_FT_FONT*/
#include "../res/assets/default/inc/fonts/default.data"
#endif /*WITH_STB_FONT or WITH_FT_FONT*/
#endif /*WITH_FS_RES*/
ret_t assets_init(void) {
assets_manager_t* am = assets_manager();
#ifdef WITH_FS_RES
assets_manager_load(am, ASSET_TYPE_FONT, "default");
assets_manager_load(am, ASSET_TYPE_STYLE, "default");
#else
assets_manager_add(am, ui_kb_ascii);
assets_manager_add(am, ui_vgcanvas);
assets_manager_add(am, ui_slide_menu);
assets_manager_add(am, ui_radial_gradient);
assets_manager_add(am, ui_auto_play_landscape);
assets_manager_add(am, ui_color_picker_simple);
assets_manager_add(am, ui_progress_circle);
assets_manager_add(am, ui_combo_box);
assets_manager_add(am, ui_kb_phone);
assets_manager_add(am, ui_main);
assets_manager_add(am, ui_digit_clock);
assets_manager_add(am, ui_scroll_bar);
assets_manager_add(am, ui_lua);
assets_manager_add(am, ui_linear_gradient);
assets_manager_add(am, ui_preload);
assets_manager_add(am, ui_images);
assets_manager_add(am, ui_soft_keyboard);
assets_manager_add(am, ui_edit);
assets_manager_add(am, ui_locale);
assets_manager_add(am, ui_kb_int);
assets_manager_add(am, ui_tab_control);
assets_manager_add(am, ui_slide_view_v2);
assets_manager_add(am, ui_animation);
assets_manager_add(am, ui_keyboard);
assets_manager_add(am, ui_kb_hex);
assets_manager_add(am, ui_popdown);
assets_manager_add(am, ui_color);
assets_manager_add(am, ui_color_picker);
assets_manager_add(am, ui_switch);
assets_manager_add(am, ui_dragger);
assets_manager_add(am, ui_dialog2);
assets_manager_add(am, ui_color_picker_hsv);
assets_manager_add(am, ui_tab_bottom);
assets_manager_add(am, ui_list_view_m);
assets_manager_add(am, ui_slide_view_h_loop);
assets_manager_add(am, ui_calibration_win);
assets_manager_add(am, ui_memtest);
assets_manager_add(am, ui_slide_view_h2);
assets_manager_add(am, ui_slide_view_v_loop);
assets_manager_add(am, ui_language);
assets_manager_add(am, ui_kb_float);
assets_manager_add(am, ui_htranslate);
assets_manager_add(am, ui_list_view_vh);
assets_manager_add(am, ui_rich_text);
assets_manager_add(am, ui_scroll_view);
assets_manager_add(am, ui_svg_image);
assets_manager_add(am, ui_tab_list);
assets_manager_add(am, ui_animator);
assets_manager_add(am, ui_slide_down);
assets_manager_add(am, ui_scroll_view_h);
assets_manager_add(am, ui_slide_right);
assets_manager_add(am, ui_scroll_bar_h);
assets_manager_add(am, ui_spinbox);
assets_manager_add(am, ui_label);
assets_manager_add(am, ui_gif_image);
assets_manager_add(am, ui_text_selector);
assets_manager_add(am, ui_tab_top_compact);
assets_manager_add(am, ui_slide_view_h);
assets_manager_add(am, ui_dialogs);
assets_manager_add(am, ui_list_view);
assets_manager_add(am, ui_stroke_gradient);
assets_manager_add(am, ui_slide_view_h1);
assets_manager_add(am, ui_basic);
assets_manager_add(am, ui_gauge);
assets_manager_add(am, ui_color_picker_full);
assets_manager_add(am, ui_dialog1);
assets_manager_add(am, ui_fade);
assets_manager_add(am, ui_image_list);
assets_manager_add(am, ui_slide_view_v1);
assets_manager_add(am, ui_slide_left);
assets_manager_add(am, ui_image_value);
assets_manager_add(am, ui_slide_view);
assets_manager_add(am, ui_time_clock);
assets_manager_add(am, ui_tab_top);
assets_manager_add(am, ui_slide_view_v);
assets_manager_add(am, ui_button);
assets_manager_add(am, ui_system_bar);
assets_manager_add(am, ui_list_view_d);
assets_manager_add(am, ui_vtranslate);
assets_manager_add(am, ui_kb_ufloat);
assets_manager_add(am, ui_kb_default);
assets_manager_add(am, ui_slide_up);
assets_manager_add(am, ui_list_view_h);
assets_manager_add(am, ui_color_picker_rgb);
assets_manager_add(am, ui_tab_bottom_compact);
assets_manager_add(am, ui_popup);
assets_manager_add(am, ui_kb_uint);
assets_manager_add(am, ui_scroll_view_v);
assets_manager_add(am, strings_zh_CN);
assets_manager_add(am, strings_en_US);
assets_manager_add(am, image_arrow_right_o);
assets_manager_add(am, image_num_4);
assets_manager_add(am, image_close_o);
assets_manager_add(am, image_battery_1);
assets_manager_add(am, image_slider_bg);
assets_manager_add(am, image_muted);
assets_manager_add(am, image_num_8);
assets_manager_add(am, image_shift);
assets_manager_add(am, image_arrow_up_p);
assets_manager_add(am, image_discovery_active);
assets_manager_add(am, image_right_on);
assets_manager_add(am, image_discovery);
assets_manager_add(am, image_rgb);
assets_manager_add(am, image_num_9);
assets_manager_add(am, image_dot);
assets_manager_add(am, image_battery_0);
assets_manager_add(am, image_find);
assets_manager_add(am, image_slider_fg);
assets_manager_add(am, image_close_n);
assets_manager_add(am, image_left_on);
assets_manager_add(am, image_question);
assets_manager_add(am, image_invisible);
assets_manager_add(am, image_num_5);
assets_manager_add(am, image_num_dot);
assets_manager_add(am, image_arrow_right_n);
assets_manager_add(am, image_visible);
assets_manager_add(am, image_me_active);
assets_manager_add(am, image_cursor);
assets_manager_add(am, image_clock_minute);
assets_manager_add(am, image_switch);
assets_manager_add(am, image_checked);
assets_manager_add(am, image_middle_off);
assets_manager_add(am, image_close_p);
assets_manager_add(am, image_arrow_right_p);
assets_manager_add(am, image_num_2);
assets_manager_add(am, image_arrow_up_o);
assets_manager_add(am, image_clock);
assets_manager_add(am, image_empty);
assets_manager_add(am, image_left_off);
assets_manager_add(am, image_radio_unchecked);
assets_manager_add(am, image_rgba);
assets_manager_add(am, image_shifton);
assets_manager_add(am, image_arrow_up_n);
assets_manager_add(am, image_num_3);
assets_manager_add(am, image_msg_active);
assets_manager_add(am, image_active_dot);
assets_manager_add(am, image_gauge_pointer);
assets_manager_add(am, image_close_d);
assets_manager_add(am, image_right_off);
assets_manager_add(am, image_unmuted);
assets_manager_add(am, image_cross);
assets_manager_add(am, image_backspace);
assets_manager_add(am, image_arrow_left_p);
assets_manager_add(am, image_edit_clear_n);
assets_manager_add(am, image_clock_second);
assets_manager_add(am, image_contact);
assets_manager_add(am, image_bricks);
assets_manager_add(am, image_dialog_title);
assets_manager_add(am, image_play_p);
assets_manager_add(am, image_battery_5);
assets_manager_add(am, image_green_btn_p);
assets_manager_add(am, image_red_btn_p);
assets_manager_add(am, image_me);
assets_manager_add(am, image_num_0);
assets_manager_add(am, image_arrow_down_p);
assets_manager_add(am, image_num_1);
assets_manager_add(am, image_contact_active);
assets_manager_add(am, image_slider_drag_o);
assets_manager_add(am, image_battery_4);
assets_manager_add(am, image_message);
assets_manager_add(am, image_edit_clear_o);
assets_manager_add(am, image_battery_3);
assets_manager_add(am, image_logo);
assets_manager_add(am, image_arrow_left_o);
assets_manager_add(am, image_num_6);
assets_manager_add(am, image_check);
assets_manager_add(am, image_middle_on);
assets_manager_add(am, image_arrow_down_o);
assets_manager_add(am, image_radio_checked);
assets_manager_add(am, image_red_btn_o);
assets_manager_add(am, image_green_btn_o);
assets_manager_add(am, image_slider_v_bg);
assets_manager_add(am, image_clock_hour);
assets_manager_add(am, image_play_o);
assets_manager_add(am, image_play_n);
assets_manager_add(am, image_slider_drag);
assets_manager_add(am, image_unchecked);
assets_manager_add(am, image_green_btn_n);
assets_manager_add(am, image_red_btn_n);
assets_manager_add(am, image_slider_drag_p);
assets_manager_add(am, image_slider_v_fg);
assets_manager_add(am, image_arrow_down_n);
assets_manager_add(am, image_num_7);
assets_manager_add(am, image_arrow_left_n);
assets_manager_add(am, image_edit_clear_p);
assets_manager_add(am, image_battery_2);
assets_manager_add(am, xml_test);
assets_manager_add(am, style_slide_menu);
assets_manager_add(am, style_digit_clock);
assets_manager_add(am, style_dialog_toast);
assets_manager_add(am, style_edit);
assets_manager_add(am, style_keyboard);
assets_manager_add(am, style_color);
assets_manager_add(am, style_tab_bottom);
assets_manager_add(am, style_calibration);
assets_manager_add(am, style_tab_list);
assets_manager_add(am, style_default);
assets_manager_add(am, style_tab_top_compact);
assets_manager_add(am, style_dialog_info);
assets_manager_add(am, style_gauge);
assets_manager_add(am, style_dialog_confirm);
assets_manager_add(am, style_dialog);
assets_manager_add(am, style_tab_top);
assets_manager_add(am, style_button);
assets_manager_add(am, style_system_bar);
assets_manager_add(am, style_tab_bottom_compact);
assets_manager_add(am, style_dialog_warn);
assets_manager_add(am, font_default);
#ifdef WITH_VGCANVAS
assets_manager_add(am, image_pointer_4);
assets_manager_add(am, image_china);
assets_manager_add(am, image_pointer_1);
assets_manager_add(am, image_pointer);
#endif /*WITH_VGCANVAS*/
#endif
tk_init_assets();
return RET_OK;
}
bool_t assets_has_theme(const char* name) {
return FALSE;
}
ret_t assets_set_global_theme(const char* name) {
return RET_NOT_IMPL;
}

View File

@ -0,0 +1,6 @@
#include "awtk.h"
#ifdef AWTK_WEB
#include "assets_web.inc"
#else /*AWTK_WEB*/
#include "../res/assets_old.inc"
#endif /*AWTK_WEB*/

View File

@ -0,0 +1,24 @@
#include "awtk.h"
#include "base/assets_manager.h"
ret_t assets_init(void) {
assets_manager_t* am = assets_manager();
tk_init_assets();
return RET_OK;
}
bool_t assets_has_theme(const char* name) {
return_value_if_fail(name != NULL, FALSE);
if (tk_str_eq(name, "default")) {
return TRUE;
} else {
return FALSE;
}
}
ret_t assets_set_global_theme(const char* name) {
log_debug("not support to change theme.\n");
return RET_NOT_IMPL;
}

View File

@ -0,0 +1,18 @@
const g_awtk_assets = {
image: [
],
ui: [
],
style: [
],
string: [
],
xml: [
],
data: [
],
script: [
],
font: [
],
};

View File

@ -0,0 +1,49 @@
#include "base/timer.h"
static inline ret_t on_timer(const timer_info_t* timer) {
widget_t* progress_bar = (widget_t*)timer->ctx;
float_t value = ((int)(PROGRESS_BAR(progress_bar)->value + 5)) % 100;
progress_bar_set_value(progress_bar, value);
return RET_REPEAT;
}
static inline ret_t on_inc(void* ctx, event_t* e) {
widget_t* progress_bar = (widget_t*)ctx;
float_t value = ((int)(PROGRESS_BAR(progress_bar)->value + 10)) % 100;
progress_bar_set_value(progress_bar, value);
(void)e;
return RET_OK;
}
static inline ret_t on_dec(void* ctx, event_t* e) {
widget_t* progress_bar = (widget_t*)ctx;
float_t value = ((int)(PROGRESS_BAR(progress_bar)->value + 90)) % 100;
progress_bar_set_value(progress_bar, value);
(void)e;
return RET_OK;
}
static inline ret_t on_ok(void* ctx, event_t* e) {
widget_t* dialog = (widget_t*)ctx;
dialog_quit(dialog, 0);
(void)e;
tk_mem_dump();
return RET_OK;
}
static inline ret_t on_close(void* ctx, event_t* e) {
widget_t* win = (widget_t*)ctx;
(void)e;
return window_close(win);
}
static inline ret_t on_cancel(void* ctx, event_t* e) {
widget_t* dialog = (widget_t*)ctx;
dialog_quit(dialog, 1);
(void)e;
tk_mem_dump();
return RET_OK;
}

View File

@ -0,0 +1,186 @@
/**
* File: demo1_app.c
* Author: AWTK Develop Team
* Brief: basic demo
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-02-16 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "base/timer.h"
#include "base/enums.h"
#include "widgets/button.h"
#include "base/dialog.h"
#include "widgets/image.h"
#include "widgets/label.h"
#include "tkc/mem.h"
#include "tkc/utils.h"
#include "tkc/utf8.h"
#include "base/window.h"
#include "widgets/slider.h"
#include "widgets/group_box.h"
#include "widgets/check_button.h"
#include "base/image_manager.h"
#include "widgets/progress_bar.h"
#include "common.inc"
static ret_t on_show_dialog(void* ctx, event_t* e) {
uint32_t code = 0;
widget_t* ok = NULL;
widget_t* label = NULL;
widget_t* cancel = NULL;
widget_t* win = dialog_create_simple(NULL, 0, 0, 240, 160);
dialog_t* dialog = DIALOG(win);
widget_set_text(dialog->title, L"Dialog");
ok = button_create(dialog->client, 20, 80, 80, 30);
widget_set_text(ok, L"Go");
cancel = button_create(dialog->client, 140, 80, 80, 30);
widget_set_text(cancel, L"Cancel");
label = label_create(dialog->client, 10, 30, 200, 30);
widget_set_text(label, L"Are you ready!");
widget_on(ok, EVT_CLICK, on_ok, dialog);
widget_on(cancel, EVT_CLICK, on_cancel, dialog);
code = dialog_modal(win);
log_debug("code=%d\n", (int)code);
(void)code;
tk_mem_dump();
(void)e;
return RET_OK;
}
ret_t application_init() {
widget_t* image = NULL;
widget_t* ok = NULL;
widget_t* label = NULL;
widget_t* cancel = NULL;
widget_t* slider = NULL;
widget_t* progress_bar = NULL;
widget_t* check_button = NULL;
widget_t* radio_button = NULL;
widget_t* show_dialog = NULL;
widget_t* group_box = NULL;
widget_t* win = window_create(NULL, 0, 0, 0, 0);
ok = button_create(win, 10, 5, 80, 30);
widget_set_text(ok, L"Inc");
cancel = button_create(win, 100, 5, 80, 30);
widget_set_text(cancel, L"Dec");
show_dialog = button_create(win, 190, 5, 80, 30);
widget_set_text(show_dialog, L"Dialog");
image = image_create(win, 10, 230, 100, 100);
image_set_image(image, "earth");
image_set_draw_type(image, IMAGE_DRAW_ICON);
image = image_create(win, 100, 230, 100, 100);
image_set_image(image, "earth");
image_set_draw_type(image, IMAGE_DRAW_SCALE);
image = image_create(win, 10, 360, 100, 100);
image_set_image(image, "bricks");
image_set_draw_type(image, IMAGE_DRAW_ICON);
image = image_create(win, 100, 360, 100, 100);
image_set_image(image, "bricks");
image_set_draw_type(image, IMAGE_DRAW_SCALE);
label = label_create(win, 10, 40, 80, 30);
widget_set_text(label, L"Left");
widget_use_style(label, "left");
label = label_create(win, 100, 40, 80, 30);
widget_set_text(label, L"C enter");
#ifdef WITH_STB_FONT
widget_use_style(label, "center");
#else
widget_use_style(label, "center-ap");
#endif
label = label_create(win, 190, 40, 80, 30);
widget_set_text(label, L"Right");
widget_use_style(label, "right");
progress_bar = progress_bar_create(win, 10, 80, 168, 20);
widget_set_value(progress_bar, 40);
timer_add(on_timer, progress_bar, 500);
#ifdef WITH_STB_FONT
progress_bar_set_show_text(progress_bar, TRUE);
#endif
slider = slider_create(win, 10, 105, 168, 20);
widget_set_value(slider, 40);
progress_bar = progress_bar_create(win, 260, 80, 20, 118);
widget_set_value(progress_bar, 40);
progress_bar_set_vertical(progress_bar, TRUE);
timer_add(on_timer, progress_bar, 500);
slider = slider_create(win, 230, 80, 20, 118);
widget_set_value(slider, 40);
slider_set_vertical(slider, TRUE);
widget_on(ok, EVT_CLICK, on_inc, progress_bar);
widget_on(cancel, EVT_CLICK, on_dec, progress_bar);
widget_on(show_dialog, EVT_CLICK, on_show_dialog, NULL);
check_button = check_button_create(win, 10, 150, 80, 30);
widget_set_text(check_button, L"Book");
check_button = check_button_create(win, 100, 150, 80, 30);
widget_set_text(check_button, L"Food");
radio_button = check_button_create_radio(win, 10, 200, 80, 30);
widget_set_text(radio_button, L"Book");
radio_button = check_button_create_radio(win, 100, 200, 80, 30);
widget_set_text(radio_button, L"Food");
radio_button = check_button_create_radio(win, 190, 200, 80, 30);
widget_set_text(radio_button, L"Pencil");
widget_set_value(radio_button, TRUE);
group_box = group_box_create(win, 10, 300, 32 * 3, 32);
widget_use_style(group_box, "box");
radio_button = check_button_create_radio(group_box, 0, 0, 32, 32);
widget_use_style(radio_button, "left");
radio_button = check_button_create_radio(group_box, 32, 0, 32, 32);
widget_use_style(radio_button, "middle");
radio_button = check_button_create_radio(group_box, 64, 0, 32, 32);
widget_use_style(radio_button, "right");
check_button = check_button_create(win, 108, 300, 32, 32);
widget_use_style(check_button, "mute");
return RET_OK;
}
ret_t application_exit() {
log_debug("application_exit\n");
return RET_OK;
}
#include "awtk_main.inc"

View File

@ -0,0 +1,161 @@
/**
* File: demo1_app.c
* Author: AWTK Develop Team
* Brief: basic class of all widget
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-02-16 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "base/timer.h"
#include "base/enums.h"
#include "widgets/button.h"
#include "base/dialog.h"
#include "widgets/image.h"
#include "widgets/label.h"
#include "tkc/mem.h"
#include "tkc/utils.h"
#include "tkc/utf8.h"
#include "base/window.h"
#include "widgets/slider.h"
#include "widgets/group_box.h"
#include "widgets/check_button.h"
#include "base/image_manager.h"
#include "widgets/progress_bar.h"
#include "base/widget_animator_manager.h"
#include "widget_animators/widget_animator_opacity.h"
#include "widget_animators/widget_animator_value.h"
#include "widget_animators/widget_animator_move.h"
#include "widget_animators/widget_animator_scale.h"
#include "widget_animators/widget_animator_rotation.h"
static ret_t on_start(void* ctx, event_t* e) {
widget_start_animator(NULL, NULL);
return RET_OK;
}
static ret_t on_pause(void* ctx, event_t* e) {
widget_pause_animator(NULL, NULL);
return RET_OK;
}
static ret_t on_stop(void* ctx, event_t* e) {
widget_stop_animator(NULL, NULL);
return RET_OK;
}
ret_t application_init() {
int times = 100;
widget_t* image = NULL;
widget_t* image1 = NULL;
widget_t* image2 = NULL;
widget_t* image3 = NULL;
widget_t* image4 = NULL;
widget_t* image5 = NULL;
widget_t* start = NULL;
widget_t* pause = NULL;
widget_t* stop = NULL;
widget_t* opacity = NULL;
widget_t* image6 = NULL;
widget_t* progress_bar = NULL;
widget_t* win = window_create(NULL, 0, 0, 0, 0);
widget_animator_t* animator = NULL;
uint32_t delay = 0;
start = button_create(win, 10, 10, 80, 30);
widget_set_text(start, L"Start");
pause = button_create(win, 100, 10, 80, 30);
widget_set_text(pause, L"Pause");
stop = button_create(win, 190, 10, 80, 30);
widget_set_text(stop, L"Stop");
opacity = button_create(win, 10, 50, 80, 30);
widget_set_text(opacity, L"Opacity");
progress_bar = progress_bar_create(win, 10, 90, 168, 20);
image = image_create(win, 10, 220, 32, 32);
image_set_image(image, "earth");
image_set_draw_type(image, IMAGE_DRAW_ICON);
image1 = image_create(win, 10, 220, 32, 32);
image_set_image(image1, "earth");
image_set_draw_type(image1, IMAGE_DRAW_ICON);
image2 = image_create(win, 10, 118, 100, 100);
image_set_image(image2, "bricks");
image_set_draw_type(image2, IMAGE_DRAW_ICON);
image3 = image_create(win, 50, 118, 32, 32);
image_set_image(image3, "earth");
image_set_draw_type(image3, IMAGE_DRAW_ICON);
image4 = image_create(win, 100, 118, 32, 32);
image_set_image(image4, "earth");
image_set_draw_type(image4, IMAGE_DRAW_ICON);
image5 = image_create(win, 140, 118, 32, 32);
image_set_image(image5, "earth");
image_set_draw_type(image5, IMAGE_DRAW_ICON);
image6 = image_create(win, 180, 118, 32, 32);
image_set_image(image6, "earth");
image_set_draw_type(image6, IMAGE_DRAW_ICON);
animator = widget_animator_move_create(image, 1000, delay, EASING_SIN_INOUT);
widget_animator_move_set_params(animator, image->x, image->y, image->x + 100, image->y + 100);
widget_animator_set_destroy_when_done(animator, FALSE);
widget_animator_set_repeat(animator, times);
widget_animator_start(animator);
delay += 1000;
animator = widget_animator_move_create(image1, 1000, delay, EASING_SIN_INOUT);
widget_animator_move_set_params(animator, image1->x, image1->y, image1->x + 100, image->y);
widget_animator_set_destroy_when_done(animator, FALSE);
widget_animator_set_yoyo(animator, times);
widget_animator_start(animator);
widget_create_animator(progress_bar,
"value(from=50, to=100, duration=500, yoyo_times=1000, delay=1000)");
widget_create_animator(opacity, "opacity(to=50, duration=500, yoyo_times=1000)");
widget_create_animator(image6, "opacity(to=50, duration=500, yoyo_times=1000, delay=1000)");
widget_create_animator(image2, "rotation(to=6.28, yoyo_times=0, duration=1000, easing=sin_out)");
widget_create_animator(image3, "scale(x_to=-1, yoyo_times=1000, duration=1000, easing=sin_out)");
widget_create_animator(image4,
"scale(x_to=2, y_to=2, yoyo_times=1000, duration=1000, easing=sin_out)");
widget_create_animator(image5, "y(to=400, duration=1000, easing=sin_out)");
widget_create_animator(image5, "opacity(to=0, duration=500, yoyo_times=1000, delay=1000)");
widget_on(start, EVT_CLICK, on_start, NULL);
widget_on(pause, EVT_CLICK, on_pause, NULL);
widget_on(stop, EVT_CLICK, on_stop, NULL);
return RET_OK;
}
ret_t application_exit() {
log_debug("application_exit\n");
return RET_OK;
}
#include "awtk_main.inc"

View File

@ -0,0 +1,98 @@
/**
* File: demo1_app.c
* Author: AWTK Develop Team
* Brief: basic demo
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-02-16 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "awtk.h"
static ret_t on_timer(const timer_info_t* timer) {
widget_t* win = WIDGET(timer->ctx);
widget_t* progress_bar = widget_lookup(win, "bar1", TRUE);
float_t value = ((int)(PROGRESS_BAR(progress_bar)->value + 2)) % 100;
progress_bar_set_value(progress_bar, value);
progress_bar = widget_lookup(win, "bar2", TRUE);
value = ((int)(PROGRESS_BAR(progress_bar)->value + 2)) % 100;
progress_bar_set_value(progress_bar, value);
return RET_REPEAT;
}
static ret_t on_inc(void* ctx, event_t* e) {
widget_t* win = WIDGET(ctx);
widget_t* progress_bar = widget_lookup(win, "bar2", TRUE);
float_t value = ((int)(PROGRESS_BAR(progress_bar)->value + 10)) % 100;
progress_bar_set_value(progress_bar, value);
return RET_OK;
}
static ret_t on_dec(void* ctx, event_t* e) {
widget_t* win = WIDGET(ctx);
widget_t* progress_bar = widget_lookup(win, "bar2", TRUE);
float_t value = ((int)(PROGRESS_BAR(progress_bar)->value + 90)) % 100;
progress_bar_set_value(progress_bar, value);
return RET_OK;
}
static ret_t on_value_changed(void* ctx, event_t* e) {
widget_t* win = WIDGET(ctx);
widget_t* progress_bar = widget_lookup(win, "bar2", TRUE);
float_t value = widget_get_value(WIDGET(e->target));
progress_bar_set_value(progress_bar, value);
return RET_OK;
}
static ret_t on_close(void* ctx, event_t* e) {
dialog_confirm(NULL, "Hello AWTK!\nAre you sure to close?");
return RET_OK;
}
ret_t application_init() {
widget_t* system_bar = window_open("system_bar");
widget_t* win = window_open("basic");
image_manager_set_max_mem_size_of_cached_images(image_manager(), 8 * 1024 * 1024);
(void)system_bar;
widget_set_prop_str(win, WIDGET_PROP_CLICKABLE, "no");
widget_add_timer(win, on_timer, 200);
widget_child_on(win, "inc_value", EVT_CLICK, on_inc, win);
widget_child_on(win, "dec_value", EVT_CLICK, on_dec, win);
widget_child_on(win, "close", EVT_CLICK, on_close, win);
widget_child_on(win, "slider", EVT_VALUE_CHANGED, on_value_changed, win);
return RET_OK;
}
ret_t application_exit() {
log_debug("application_exit\n");
return RET_OK;
}
#include "awtk_main.inc"

View File

@ -0,0 +1,137 @@
/**
* File: demo_canvas_offline.c
* Author: AWTK Develop Team
* Brief: demo_canvas_offline
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2020-07-10 Luo Zhiming <luozhiming@zlg.cn> created
*
*/
#include "awtk.h"
#include "ext_widgets.h"
#include "base/canvas_offline.h"
static canvas_t* canvas_offline = NULL;
#include "vg_common.inc"
static ret_t on_paint_vgcanvas(void* ctx, event_t* e) {
#ifndef AWTK_WEB
paint_event_t* evt = paint_event_cast(e);
/* 设置离线的 canvas 为当前绘图的画布 */
canvas_t* c = canvas_offline;
/* 获取离线的 canvas 对应的离线 bitmap */
bitmap_t* offline_bitmap = canvas_offline_get_bitmap(canvas_offline);
/* 开始离线 canvas 绘图 */
canvas_offline_begin_draw(canvas_offline);
/*
* 下面绘图的内容是 demoui 中的 vgcanvas 的内容,
* 只不过这一部分内容绘图到离线的 canvas 中
*/
vgcanvas_t* vg = canvas_get_vgcanvas(c);
vgcanvas_save(vg);
vgcanvas_set_fill_color(vg, color_init(0xf0, 0xf0, 0xf0, 0xff));
vgcanvas_rounded_rect(vg, 0, 0, canvas_offline->lcd->w, canvas_offline->lcd->h, 0);
vgcanvas_fill(vg);
vgcanvas_translate(vg, c->ox, c->oy);
vgcanvas_set_line_width(vg, 1);
vgcanvas_set_stroke_color(vg, color_init(0, 0xff, 0, 0xff));
vgcanvas_set_fill_color(vg, color_init(0xff, 0, 0, 0xff));
draw_basic_shapes(vg, FALSE);
vgcanvas_translate(vg, 0, 50);
draw_basic_shapes(vg, TRUE);
vgcanvas_translate(vg, 0, 50);
stroke_lines(vg);
vgcanvas_translate(vg, 0, 50);
draw_image(vg);
vgcanvas_translate(vg, 50, 100);
draw_matrix(vg);
vgcanvas_translate(vg, 0, 100);
draw_text(vg);
vgcanvas_restore(vg);
/* 结束离线 canvas 绘图 */
canvas_offline_end_draw(canvas_offline);
/* 把显存中的 bitmap 显示到在线的 canvas 中 */
rect_t r = rect_init(0, 0, offline_bitmap->w, offline_bitmap->h);
canvas_draw_image_ex(evt->c, offline_bitmap, IMAGE_DRAW_DEFAULT, &r);
#endif /*AWTK_WEB*/
return RET_OK;
}
static ret_t on_snapshot(void* ctx, event_t* e) {
bitmap_t* offline_bitmap = NULL;
#ifndef AWTK_WEB
/* 开始离线 canvas 绘图 */
canvas_offline_begin_draw(canvas_offline);
/* 把整个窗口绘制到离线的 canvas 中 */
widget_paint(window_manager(), canvas_offline);
/* 结束离线 canvas 绘图 */
canvas_offline_end_draw(canvas_offline);
/* 由于需要把 bitmap 保存为 png 文件,所以需要把显存中的数据回传到内存中 */
canvas_offline_flush_bitmap(canvas_offline);
/* 获取离线的 canvas 对应的离线 bitmap */
offline_bitmap = canvas_offline_get_bitmap(canvas_offline);
/* 把 bitmap 保存到 png 文件 */
bitmap_save_png(offline_bitmap, "test.png");
#endif /*AWTK_WEB*/
return RET_OK;
}
ret_t application_init() {
widget_t* win = window_create(NULL, 0, 0, 0, 0);
widget_t* canvas_widget = canvas_widget_create(win, 0, 0, win->w, win->h);
widget_t* button = button_create(win, 0, 0, 0, 0);
widget_set_self_layout_params(button, "c", "b", "100", "40");
/* 创建离线的 canvas */
canvas_offline = canvas_offline_create(320, 480, BITMAP_FMT_RGBA8888);
widget_set_style_color(win, "bg_color", 0xff00ff00);
widget_on(canvas_widget, EVT_PAINT, on_paint_vgcanvas, NULL);
widget_on(button, EVT_CLICK, on_snapshot, NULL);
widget_set_text_utf8(button, "snapshot");
return RET_OK;
}
ret_t application_exit() {
/* 释放离线 canvas */
canvas_offline_destroy(canvas_offline);
log_debug("application_exit\n");
return RET_OK;
}
#ifdef WITH_FS_RES
#define APP_DEFAULT_FONT "default_full"
#endif /*WITH_FS_RES*/
#include "awtk_main.inc"

View File

@ -0,0 +1,73 @@
/**
* File: demo_main.c
* Author: AWTK Develop Team
* Brief: demo main
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-02-16 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "awtk.h"
static ret_t on_fullscreen(void* ctx, event_t* e) {
widget_t* btn = WIDGET(e->target);
window_t* win = WINDOW(widget_get_window(btn));
if (win->fullscreen) {
window_set_fullscreen(WIDGET(win), FALSE);
widget_set_text_utf8(btn, "Fullscreen");
} else {
window_set_fullscreen(WIDGET(win), TRUE);
widget_set_text_utf8(btn, "Unfullscreen");
}
return RET_OK;
}
static ret_t on_click_enlarge(void* ctx, event_t* e) {
window_manager_resize(window_manager(), 840, 800);
return RET_OK;
}
static ret_t on_click_close(void* ctx, event_t* e) {
tk_quit();
return RET_OK;
}
ret_t application_init(void) {
widget_t* win = window_open("desktop");
widget_child_on(win, "close", EVT_CLICK, on_click_close, NULL);
widget_child_on(win, "enlarge", EVT_CLICK, on_click_enlarge, NULL);
widget_child_on(win, "fullscreen", EVT_CLICK, on_fullscreen, win);
return RET_OK;
}
ret_t application_exit() {
log_debug("application_exit\n");
return RET_OK;
}
#define LCD_WIDTH 800
#define LCD_HEGHT 600
#define APP_TYPE APP_DESKTOP
#ifdef WITH_FS_RES
#define APP_DEFAULT_FONT "default_full"
#endif /*WITH_FS_RES*/
#include "awtk_main.inc"

View File

@ -0,0 +1,116 @@
/**
* File: demo_file_browser.c
* Author: AWTK Develop Team
* Brief: basic demo
*
* Copyright (c) 2020 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2020-01-12 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "awtk.h"
#include "ext_widgets/file_browser/file_chooser.h"
static ret_t on_quit(void* ctx, event_t* e) {
tk_quit();
return RET_OK;
}
static ret_t tk_on_choose_file_result(void* ctx, event_t* e) {
widget_t* win = WIDGET(ctx);
file_chooser_t* chooser = (file_chooser_t*)(e->target);
widget_t* cwd = widget_lookup(win, "cwd", TRUE);
widget_t* filename = widget_lookup(win, "filename", TRUE);
if (file_chooser_is_aborted(chooser)) {
widget_set_text_utf8(cwd, "aborted");
widget_set_text_utf8(filename, "aborted");
} else {
widget_set_text_utf8(cwd, file_chooser_get_dir(chooser));
if (chooser->filename.str) {
widget_set_text_utf8(filename, file_chooser_get_filename(chooser));
} else {
widget_set_text_utf8(filename, "");
}
}
return RET_OK;
}
static ret_t on_file_save(void* ctx, event_t* e) {
file_chooser_t* chooser = file_chooser_create();
emitter_on(EMITTER(chooser), EVT_DONE, tk_on_choose_file_result, ctx);
file_chooser_set_init_dir(chooser, "../");
file_chooser_set_top_dir(chooser, "../");
return file_chooser_choose_file_for_save(chooser);
}
static ret_t on_file_open(void* ctx, event_t* e) {
file_chooser_t* chooser = file_chooser_create();
emitter_on(EMITTER(chooser), EVT_DONE, tk_on_choose_file_result, ctx);
file_chooser_set_init_dir(chooser, "src");
file_chooser_set_top_dir(chooser, "./");
file_chooser_set_filter(chooser, ".c.h.cpp.inc");
return file_chooser_choose_file_for_open(chooser);
}
static ret_t on_choose_folder(void* ctx, event_t* e) {
file_chooser_t* chooser = file_chooser_create();
return_value_if_fail(chooser != NULL, RET_OOM);
emitter_on(EMITTER(chooser), EVT_DONE, tk_on_choose_file_result, ctx);
file_chooser_set_init_dir(chooser, "./");
return file_chooser_choose_folder(chooser);
}
static ret_t on_manager(void* ctx, event_t* e) {
file_chooser_t* chooser = file_chooser_create();
return_value_if_fail(chooser != NULL, RET_OOM);
emitter_on(EMITTER(chooser), EVT_DONE, tk_on_choose_file_result, ctx);
file_chooser_set_init_dir(chooser, "./");
return file_chooser_choose_folder(chooser);
}
ret_t application_init() {
widget_t* win = NULL;
window_open("system_bar");
win = window_open("file_browser");
widget_child_on(win, "file_save", EVT_CLICK, on_file_save, win);
widget_child_on(win, "file_open", EVT_CLICK, on_file_open, win);
widget_child_on(win, "folder", EVT_CLICK, on_choose_folder, win);
widget_child_on(win, "manager", EVT_CLICK, on_manager, win);
widget_child_on(win, "quit", EVT_CLICK, on_quit, win);
return RET_OK;
}
ret_t application_exit() {
log_debug("application_exit\n");
return RET_OK;
}
#ifdef WITH_FS_RES
#define APP_DEFAULT_FONT "default_full"
#endif /*WITH_FS_RES*/
#include "awtk_main.inc"

View File

@ -0,0 +1,154 @@
/**
* File: demo_scroll_view.c
* Author: AWTK Develop Team
* Brief: test scroll view
*
* Copyright (c) 2018 - 2021 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2021-01-22 Luo ZhiMing <luozhiming@zlg.cn> created
*
*/
#include "awtk.h"
#include "ext_widgets.h"
widget_t* bar_h = NULL;
widget_t* bar_v = NULL;
widget_t* scroll_view = NULL;
#define SCROLL_BAR_H_WIDGT_NAME "bar_h"
#define SCROLL_BAR_V_WIDGT_NAME "bar_v"
#define BUTTON_SET_FOCUSE_STRING "focused:"
static int32_t scroll_bar_value_to_scroll_view_offset_y(scroll_bar_t* scroll_bar,
scroll_view_t* sv) {
int32_t range = 0;
float_t percent = 0;
range = scroll_bar->virtual_size;
percent = range > 0 ? (float_t)scroll_bar->value / (float_t)(range) : 0;
return percent * (sv->virtual_h - sv->widget.h);
}
static int32_t scroll_bar_value_to_scroll_view_offset_x(scroll_bar_t* scroll_bar,
scroll_view_t* sv) {
int32_t range = 0;
float_t percent = 0;
range = scroll_bar->virtual_size;
percent = range > 0 ? (float_t)scroll_bar->value / (float_t)(range) : 0;
return percent * (sv->virtual_w - sv->widget.w);
}
static int32_t scroll_bar_value_from_scroll_view_offset_y(scroll_bar_t* scroll_bar,
scroll_view_t* sv) {
int32_t range = 0;
float_t percent = 0;
range = sv->virtual_h - sv->widget.h;
percent = range > 0 ? (float_t)sv->yoffset / (float_t)range : 0;
return percent * scroll_bar->virtual_size;
}
static int32_t scroll_bar_value_from_scroll_view_offset_x(scroll_bar_t* scroll_bar,
scroll_view_t* sv) {
int32_t range = 0;
float_t percent = 0;
range = sv->virtual_w - sv->widget.w;
percent = range > 0 ? (float_t)sv->xoffset / (float_t)range : 0;
return percent * scroll_bar->virtual_size;
}
static ret_t scroll_bar_value_changed(void* ctx, event_t* e) {
scroll_view_t* sv = SCROLL_VIEW(scroll_view);
scroll_bar_t* scroll_bar_h = SCROLL_BAR(bar_h);
scroll_bar_t* scroll_bar_v = SCROLL_BAR(bar_v);
int32_t offset_x = scroll_bar_value_to_scroll_view_offset_x(scroll_bar_h, sv);
int32_t offset_y = scroll_bar_value_to_scroll_view_offset_y(scroll_bar_v, sv);
scroll_view_set_offset(scroll_view, offset_x, offset_y);
return RET_OK;
}
static ret_t on_set_focuse_item(void* ctx, event_t* e) {
const char* name = (const char*)ctx;
if (name != NULL) {
widget_t* item = widget_lookup(scroll_view, name, TRUE);
widget_set_focused(item, TRUE);
}
return RET_OK;
}
static ret_t scroll_view_offset_changed(void* ctx, event_t* e) {
scroll_view_t* sv = SCROLL_VIEW(scroll_view);
scroll_bar_t* scroll_bar_h = SCROLL_BAR(bar_h);
scroll_bar_t* scroll_bar_v = SCROLL_BAR(bar_v);
int32_t value_x = scroll_bar_value_from_scroll_view_offset_x(scroll_bar_h, sv);
int32_t value_y = scroll_bar_value_from_scroll_view_offset_y(scroll_bar_v, sv);
scroll_bar_set_value_only(bar_h, value_x);
scroll_bar_set_value_only(bar_v, value_y);
return RET_OK;
}
static ret_t install_one(void* ctx, const void* iter) {
widget_t* widget = WIDGET(iter);
if (widget->name != NULL) {
const char* name = widget->name;
if (strstr(name, BUTTON_SET_FOCUSE_STRING) != NULL) {
widget_on(widget, EVT_CLICK, on_set_focuse_item,
(void*)(name + tk_strlen(BUTTON_SET_FOCUSE_STRING)));
} else if (tk_str_eq(name, SCROLL_BAR_H_WIDGT_NAME)) {
bar_h = widget;
widget_on(widget, EVT_VALUE_CHANGED, scroll_bar_value_changed, widget);
} else if (tk_str_eq(name, SCROLL_BAR_V_WIDGT_NAME)) {
bar_v = widget;
widget_on(widget, EVT_VALUE_CHANGED, scroll_bar_value_changed, widget);
}
} else if (tk_str_eq(widget->vt->type, "scroll_view")) {
scroll_view = widget;
widget_on(widget, EVT_SCROLL, scroll_view_offset_changed, widget);
}
return RET_OK;
}
ret_t on_idle_scroll_view_set_virtual_wh(const idle_info_t* idle) {
scroll_view_t* sv = SCROLL_VIEW(scroll_view);
scroll_bar_set_params(bar_h, sv->virtual_w, 10);
scroll_bar_set_params(bar_v, sv->virtual_h, 10);
return RET_OK;
}
ret_t application_init() {
widget_t* win = window_open("scroll_view");
widget_foreach(win, install_one, win);
idle_add(on_idle_scroll_view_set_virtual_wh, win);
return RET_OK;
}
ret_t application_exit() {
return RET_OK;
}
#ifdef WITH_FS_RES
#define APP_DEFAULT_FONT "default_full"
#endif /*WITH_FS_RES*/
#include "awtk_main.inc"

View File

@ -0,0 +1,180 @@
/**
* File: demo1_app.c
* Author: AWTK Develop Team
* Brief: basic class of all widget
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-02-16 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "base/idle.h"
#include "base/timer.h"
#include "base/enums.h"
#include "widgets/label.h"
#include "widgets/button.h"
#include "tkc/thread.h"
#include "tkc/platform.h"
#include "tkc/mem.h"
#include "tkc/utils.h"
#include "tkc/utf8.h"
#include "base/window.h"
#include "awtk_global.h"
#include "base/image_manager.h"
#include "widgets/progress_bar.h"
static bool_t s_app_quit = FALSE;
static ret_t update_progress_bar(widget_t* progress_bar) {
static bool_t inc = TRUE;
int value = widget_get_value(progress_bar);
if (inc) {
widget_set_value(progress_bar, ++value);
} else {
widget_set_value(progress_bar, --value);
}
if (value > 99) {
inc = FALSE;
} else if (value < 1) {
inc = TRUE;
}
return RET_OK;
}
void* test_thread1(void* args) {
int nr = 500000;
while ((nr-- > 0) && (!s_app_quit)) {
tk_run_in_ui_thread((tk_callback_t)update_progress_bar, args, TRUE);
sleep_ms(30);
}
return NULL;
}
void* test_thread2(void* args) {
int nr = 500000;
while ((nr-- > 0) && (!s_app_quit)) {
tk_run_in_ui_thread((tk_callback_t)update_progress_bar, args, FALSE);
sleep_ms(30);
}
return NULL;
}
static ret_t on_idle_destroy(void* ctx) {
idle_info_t* info = (idle_info_t*)ctx;
log_debug("on_idle_destroy:%p\n", info);
return RET_OK;
}
static ret_t on_idle_once(const idle_info_t* idle) {
update_progress_bar(WIDGET(idle->ctx));
return RET_REMOVE;
}
static ret_t on_idle(const idle_info_t* idle) {
return update_progress_bar(WIDGET(idle->ctx));
}
void* test_thread3(void* args) {
int nr = 500000;
idle_queue_ex(on_idle_once, args, on_idle_destroy, NULL);
while ((nr-- > 0) && (!s_app_quit)) {
idle_queue(on_idle, args);
sleep_ms(30);
}
return NULL;
}
static ret_t on_timer(const timer_info_t* timer) {
return update_progress_bar(WIDGET(timer->ctx));
}
void* test_thread4(void* args) {
int nr = 500000;
while ((nr-- > 0) && (!s_app_quit)) {
timer_queue(on_timer, args, 30);
sleep_ms(30);
}
return NULL;
}
static tk_thread_t* thread1 = NULL;
static tk_thread_t* thread2 = NULL;
static tk_thread_t* thread3 = NULL;
static tk_thread_t* thread4 = NULL;
static ret_t on_close(void* ctx, event_t* e) {
s_app_quit = TRUE;
tk_quit();
return RET_OK;
}
ret_t application_init() {
widget_t* win = window_create(NULL, 0, 0, 0, 0);
widget_t* label = label_create(win, 0, 0, 0, 0);
widget_t* close = button_create(win, 0, 0, 0, 0);
widget_t* progress_bar1 = progress_bar_create(win, 0, 0, 0, 0);
widget_t* progress_bar2 = progress_bar_create(win, 0, 0, 0, 0);
widget_t* progress_bar3 = progress_bar_create(win, 0, 0, 0, 0);
widget_t* progress_bar4 = progress_bar_create(win, 0, 0, 0, 0);
widget_set_text(label, L"Update progressbar in non GUI thread");
widget_set_self_layout_params(label, "center", "middle:-90", "80%", "30");
widget_set_self_layout_params(progress_bar1, "center", "middle:-60", "80%", "20");
widget_set_self_layout_params(progress_bar2, "center", "middle:-30", "80%", "20");
widget_set_self_layout_params(progress_bar3, "center", "middle:0", "80%", "20");
widget_set_self_layout_params(progress_bar4, "center", "middle:30", "80%", "20");
widget_set_text(close, L"close");
widget_set_self_layout_params(close, "center", "bottom:30", "50%", "30");
thread1 = tk_thread_create(test_thread1, progress_bar1);
tk_thread_start(thread1);
thread2 = tk_thread_create(test_thread2, progress_bar2);
tk_thread_start(thread2);
thread3 = tk_thread_create(test_thread3, progress_bar3);
tk_thread_start(thread3);
thread4 = tk_thread_create(test_thread4, progress_bar4);
tk_thread_start(thread4);
widget_on(close, EVT_CLICK, on_close, NULL);
widget_layout(win);
return RET_OK;
}
ret_t application_exit() {
tk_thread_destroy(thread1);
tk_thread_destroy(thread2);
tk_thread_destroy(thread3);
tk_thread_destroy(thread4);
log_debug("application_exit\n");
return RET_OK;
}
#include "awtk_main.inc"

View File

@ -0,0 +1,111 @@
/**
* File: demo_tr_app.c
* Author: AWTK Develop Team
* Brief: text translation
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-05-03 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "base/timer.h"
#include "base/enums.h"
#include "widgets/button.h"
#include "base/locale_info.h"
#include "widgets/check_button.h"
#include "base/dialog.h"
#include "widgets/image.h"
#include "base/image_manager.h"
#include "widgets/label.h"
#include "tkc/mem.h"
#include "widgets/progress_bar.h"
#include "tkc/utils.h"
#include "tkc/utf8.h"
#include "base/window.h"
#include "widgets/slider.h"
#include "widgets/group_box.h"
static ret_t change_locale(void* ctx, event_t* e) {
char country[3];
char language[3];
const char* str = (const char*)ctx;
widget_t* widget = WIDGET(e->target);
if (widget_get_value(widget)) {
strncpy(language, str, 2);
strncpy(country, str + 3, 2);
locale_info_change(locale_info(), language, country);
}
return RET_OK;
}
static ret_t set_locale_value(widget_t* widget, int32_t value) {
char str[64];
const char* format = locale_info_tr(locale_info(), "value is %d");
tk_snprintf(str, sizeof(str), format, value);
widget_set_text_utf8(widget, str);
return RET_OK;
}
static ret_t on_locale_changed(void* ctx, event_t* e) {
(void)ctx;
(void)e;
widget_t* win = WIDGET(ctx);
widget_t* value = widget_lookup(win, "value", TRUE);
set_locale_value(value, 100);
log_debug("locale_infod change: %s_%s\n", locale_info()->language, locale_info()->country);
return RET_OK;
}
ret_t application_init() {
widget_t* ok = NULL;
widget_t* cancel = NULL;
widget_t* value = NULL;
widget_t* radio_button = NULL;
widget_t* win = window_create(NULL, 0, 0, 0, 0);
widget_on(win, EVT_LOCALE_CHANGED, on_locale_changed, win);
ok = button_create(win, 10, 5, 80, 30);
widget_set_tr_text(ok, "ok");
cancel = button_create(win, 100, 5, 80, 30);
widget_set_tr_text(cancel, "cancel");
value = label_create(win, 200, 5, 80, 30);
widget_set_name(value, "value");
set_locale_value(value, 100);
radio_button = check_button_create_radio(win, 10, 200, 80, 30);
widget_set_tr_text(radio_button, "English");
widget_on(radio_button, EVT_VALUE_CHANGED, change_locale, (void*)"en_US");
widget_set_value(radio_button, 1);
radio_button = check_button_create_radio(win, 100, 200, 80, 30);
widget_set_tr_text(radio_button, "Chinese");
widget_on(radio_button, EVT_VALUE_CHANGED, change_locale, (void*)"zh_CN");
return RET_OK;
}
ret_t application_exit() {
log_debug("application_exit\n");
return RET_OK;
}
#include "awtk_main.inc"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
/**
* File: demo2_app.c
* Author: AWTK Develop Team
* Brief: demo paint
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-03-18 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "base/timer.h"
#include "base/window.h"
#include "base/image_manager.h"
#include "canvas_widget/canvas_widget.h"
#include "vg_common.inc"
ret_t application_init() {
widget_t* win = window_create(NULL, 0, 0, 0, 0);
widget_t* canvas = canvas_widget_create(win, 0, 0, win->w, win->h);
widget_on(canvas, EVT_PAINT, on_paint_vg, NULL);
timer_add(on_timer, win, 500);
return RET_OK;
}
ret_t application_exit() {
log_debug("application_exit\n");
return RET_OK;
}
#include "awtk_main.inc"

View File

@ -0,0 +1,233 @@
/**
* File: preview_ui.c
* Author: AWTK Develop Team
* Brief: preview ui
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2018-02-16 Li XianJing <xianjimli@hotmail.com> created
*
*/
#include "awtk.h"
#include "tkc/fs.h"
#include "tkc/mem.h"
#include "tkc/utils.h"
#include "base/timer.h"
#include "assets.h"
#include "tkc/utf8.h"
#include "ui_loader/ui_loader_xml.h"
#include "ui_loader/ui_loader_default.h"
#include "ui_loader/ui_builder_default.h"
#if defined(WITH_SDL) && !defined(MINGW)
#include <SDL.h>
#endif
static ret_t refresh_in_timer(const timer_info_t* info) {
widget_t* widget = WIDGET(info->ctx);
widget_invalidate(widget, NULL);
return RET_REPEAT;
}
widget_t* preview_ui(const char* filename) {
str_t s;
uint32_t size = 0;
widget_t* root = NULL;
char name[TK_NAME_LEN + 1];
ui_builder_t* builder = NULL;
uint8_t* content = NULL;
bool_t is_bin = strstr(filename, ".bin") != NULL;
ui_loader_t* loader = is_bin ? default_ui_loader() : xml_ui_loader();
str_init(&s, 0);
if (is_bin) {
content = (uint8_t*)file_read(filename, &size);
} else {
xml_file_expand_read(filename, &s);
content = (uint8_t*)s.str;
size = s.size;
}
filename_to_name(filename, name, TK_NAME_LEN);
builder = ui_builder_default_create(name);
printf("preview %s\n", filename);
return_value_if_fail(content != NULL, NULL);
ui_loader_load(loader, content, size, builder);
if (builder->root == NULL) {
builder->root = label_create(NULL, 10, 10, 100, 30);
widget_set_text_utf8(builder->root, "not found ui file!");
}
if (builder->root != NULL && !(builder->root->vt->is_window)) {
widget_t* win = window_create(NULL, 0, 0, 0, 0);
widget_add_child(win, builder->root);
widget_layout(win);
timer_add(refresh_in_timer, builder->root, 1000);
}
if (is_bin) {
TKMEM_FREE(content);
} else {
str_reset(&s);
}
root = builder->root;
ui_builder_destroy(builder);
return root;
}
#include "tkc/path.h"
#define DEFAULT_UI "./demos/assets/raw/ui/main.xml"
#if defined(WIN32) && !defined(MINGW)
#include <windows.h>
#define MAX_ARGV 7
void command_line_to_argv(char* lpcmdline, const char* argv[MAX_ARGV], int32_t* argc) {
int32_t i = 1;
char* p = lpcmdline;
argv[0] = "preview.exe";
for (i = 1; i < MAX_ARGV; i++) {
argv[i] = p;
if (*p == '\"') {
argv[i] = p + 1;
p = strchr(p + 1, '\"');
if (p == NULL) break;
*p++ = '\0';
if (*p == 0) break;
} else {
p = strchr(p, ' ');
}
if (p == NULL) {
break;
}
while (*p == ' ') {
*p++ = '\0';
}
}
*argc = i + 1;
return;
}
int WINAPI wWinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPWSTR lpcmdline, int ncmdshow) {
str_t str;
int argc = 1;
int32_t len = wcslen(lpcmdline) * 6;
char* utf8_line = (char*)TKMEM_ALLOC(len);
tk_utf8_from_utf16(lpcmdline, utf8_line, len);
char* argv[MAX_ARGV];
str_init(&str, 1024);
str_set(&str, utf8_line);
command_line_to_argv(str.str, argv, &argc);
#if defined(WIN32)
TK_ENABLE_CONSOLE();
#endif /*WIN32*/
#else
#include "tkc/mem.h"
int main(int argc, char* argv[]) {
#endif
int32_t w = 320;
int32_t h = 480;
bool_t have_lang = FALSE;
const char* filename = DEFAULT_UI;
const char* theme = "default";
char res_root[MAX_PATH + 1];
char country[3];
char language[3];
memset(res_root, 0x00, sizeof(res_root));
if (argc > 1) {
filename = argv[1];
} else {
log_debug("%s ui_file [w] [h] [res root] [language] [theme]\n", argv[0]);
#ifdef WIN32
assert(!"no ui file provided");
#endif /*WIN32*/
exit(0);
}
if (argc > 2) {
int32_t ww = atoi(argv[2]);
if (ww > 0) {
w = ww;
}
}
if (argc > 3) {
int32_t hh = atoi(argv[3]);
if (h > 0) {
h = hh;
}
}
if (argc > 4) {
memcpy(res_root, argv[4], strlen(argv[4]));
} else {
char* p = NULL;
memcpy(res_root, filename, strlen(filename));
p = strstr(res_root, "assets");
if (p != NULL) {
*p = '\0';
}
}
log_debug("%s %s %d %d %s\n", argv[0], argv[1], w, h, res_root);
if (argc > 5) {
char str[MAX_PATH + 1];
memset(str, 0x00, sizeof(str));
memcpy(str, argv[5], strlen(argv[5]));
tk_strncpy(language, str, 2);
tk_strncpy(country, str + 3, 2);
have_lang = TRUE;
}
if (argc > 6) {
theme = argv[6];
}
tk_init(w, h, APP_SIMULATOR, NULL, res_root);
assets_manager_set_res_root(assets_manager(), system_info()->app_root);
#ifdef WITH_FS_RES
system_info_set_default_font(system_info(), "default_full");
#endif /*WITH_FS_RES*/
assets_init();
tk_ext_widgets_init();
if (!tk_str_eq(theme, "default")) {
widget_set_theme(window_manager(), theme);
}
preview_ui(filename);
if (have_lang) {
locale_info_change(locale_info(), language, country);
}
widget_set_style_str(window_manager(), "bg_color", "white");
tk_run();
#if defined(WIN32) && !defined(MINGW)
TKMEM_FREE(utf8_line);
#endif
return 0;
}

View File

@ -0,0 +1,550 @@
static inline ret_t on_paint_rect(void* ctx, event_t* e) {
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
canvas_set_fill_color(c, color_init(0, 0, 0xff, 0));
canvas_fill_rect(c, 10, 10, 100, 100);
return RET_OK;
}
static inline ret_t on_paint_patch9(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, 200, 30);
canvas_draw_image_patch9(c, &img, &r);
r = rect_init(10, 70, 200, 60);
canvas_draw_image_patch9(c, &img, &r);
r = rect_init(10, 150, 20, 60);
canvas_draw_image_patch9(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_default(void* ctx, event_t* e) {
rect_t s;
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "earth", &img);
s = rect_init(0, 0, img.w, img.h);
r = rect_init(10, 220, img.w / 2, img.h / 2);
canvas_draw_image(c, &img, &s, &r);
s = rect_init(0, 0, img.w, img.h);
r = rect_init(60, 220, img.w, img.h);
canvas_draw_image(c, &img, &s, &r);
s = rect_init(0, 0, img.w, img.h);
r = rect_init(160, 220, img.w * 2, img.h * 2);
canvas_draw_image(c, &img, &s, &r);
return RET_OK;
}
static inline ret_t on_paint_line(void* ctx, event_t* e) {
color_t fill_color = color_init(0xe0, 0xe0, 0xe0, 0xff);
color_t stroke_color = color_init(0x80, 0x80, 0x80, 0xff);
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
canvas_set_fill_color(c, fill_color);
canvas_set_stroke_color(c, stroke_color);
canvas_set_stroke_color(c, stroke_color);
canvas_draw_line(c, 10, 10, 100, 300);
return RET_OK;
}
static inline ret_t on_paint_points(void* ctx, event_t* e) {
point_t points[] = {{100, 100}, {100, 101}, {100, 102}, {100, 103}};
color_t fill_color = color_init(0xe0, 0xe0, 0xe0, 0xff);
color_t stroke_color = color_init(0x80, 0x80, 0x80, 0xff);
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
canvas_set_fill_color(c, fill_color);
canvas_set_stroke_color(c, stroke_color);
canvas_draw_points(c, points, ARRAY_SIZE(points));
return RET_OK;
}
static inline ret_t on_paint_patch3_h(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, 100, 60);
canvas_draw_image_patch3_x(c, &img, &r);
r = rect_init(10, 80, 10, 60);
canvas_draw_image_patch3_x(c, &img, &r);
r = rect_init(10, 160, 300, 50);
canvas_draw_image_patch3_x(c, &img, &r);
r = rect_init(10, 220, 300, 20);
canvas_draw_image_patch3_x(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_patch3_v(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, 60, 100);
canvas_draw_image_patch3_x(c, &img, &r);
r = rect_init(80, 10, 60, 10);
canvas_draw_image_patch3_x(c, &img, &r);
r = rect_init(160, 10, 50, 300);
canvas_draw_image_patch3_x(c, &img, &r);
r = rect_init(220, 10, 20, 300);
canvas_draw_image_patch3_x(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_repeat_x(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, 10, img.h);
canvas_draw_image_repeat_x(c, &img, &r);
r = rect_init(10, 60, img.w, img.h);
canvas_draw_image_repeat_x(c, &img, &r);
r = rect_init(10, 160, img.w * 2, img.h * 2);
canvas_draw_image_repeat_x(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_repeat_y(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, img.w, 10);
canvas_draw_image_repeat_y(c, &img, &r);
r = rect_init(90, 10, img.w, img.h);
canvas_draw_image_repeat_y(c, &img, &r);
r = rect_init(160, 10, img.w * 2, img.h * 2);
canvas_draw_image_repeat_y(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_repeat(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, img.w / 2, img.h / 2);
canvas_draw_image_repeat(c, &img, &r);
r = rect_init(50, 50, img.w, img.h);
canvas_draw_image_repeat(c, &img, &r);
r = rect_init(100, 100, img.w * 2 + 10, img.h * 2 + 10);
canvas_draw_image_repeat(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_scale_x(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, img.w, img.h / 2);
canvas_draw_image_scale_w(c, &img, &r);
r = rect_init(50, 50, img.w, img.h);
canvas_draw_image_scale_w(c, &img, &r);
r = rect_init(100, 100, img.w * 2, img.h);
canvas_draw_image_scale_w(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_scale_y(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, img.w / 2, img.h);
canvas_draw_image_scale_h(c, &img, &r);
r = rect_init(50, 50, img.w, img.h);
canvas_draw_image_scale_h(c, &img, &r);
r = rect_init(100, 100, img.w, img.h * 2);
canvas_draw_image_scale_h(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_scale(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, img.w / 2, img.h);
canvas_draw_image_scale(c, &img, &r);
r = rect_init(50, 50, img.w, img.h);
canvas_draw_image_scale(c, &img, &r);
r = rect_init(100, 100, img.w, img.h * 2);
canvas_draw_image_scale(c, &img, &r);
return RET_OK;
}
static inline ret_t on_paint_center(void* ctx, event_t* e) {
rect_t r;
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
image_manager_get_bitmap(image_manager(), "btn_blue_n", &img);
r = rect_init(10, 10, img.w / 2, img.h);
canvas_draw_image_center(c, &img, &r);
r = rect_init(50, 50, img.w, img.h);
canvas_draw_image_center(c, &img, &r);
r = rect_init(100, 100, img.w, img.h * 2);
canvas_draw_image_center(c, &img, &r);
return RET_OK;
}
static void draw_basic_shapes(vgcanvas_t* vg, bool_t stroke) {
vgcanvas_save(vg);
vgcanvas_translate(vg, 5, 5);
vgcanvas_rounded_rect(vg, 0, 0, 60, 40, 5);
if (stroke)
vgcanvas_stroke(vg);
else
vgcanvas_fill(vg);
vgcanvas_translate(vg, 65, 0);
vgcanvas_rounded_rect(vg, 0, 0, 60, 40, 1);
if (stroke)
vgcanvas_stroke(vg);
else
vgcanvas_fill(vg);
vgcanvas_translate(vg, 65, 0);
vgcanvas_ellipse(vg, 30, 20, 30, 20);
if (stroke)
vgcanvas_stroke(vg);
else
vgcanvas_fill(vg);
vgcanvas_begin_path(vg);
vgcanvas_translate(vg, 65, 0);
vgcanvas_arc(vg, 20, 20, 20, 0, 2 * 3.15, FALSE);
if (stroke)
vgcanvas_stroke(vg);
else
vgcanvas_fill(vg);
vgcanvas_begin_path(vg);
vgcanvas_translate(vg, 50, 0);
vgcanvas_move_to(vg, 0, 0);
vgcanvas_line_to(vg, 40, 0);
vgcanvas_line_to(vg, 40, 40);
vgcanvas_close_path(vg);
if (stroke)
vgcanvas_stroke(vg);
else
vgcanvas_fill(vg);
vgcanvas_begin_path(vg);
vgcanvas_restore(vg);
}
static void stroke_lines(vgcanvas_t* vg) {
vgcanvas_save(vg);
vgcanvas_set_stroke_color(vg, color_init(0, 0, 0xff, 0xff));
vgcanvas_move_to(vg, 0, 0);
vgcanvas_line_to(vg, 40, 40);
vgcanvas_translate(vg, 40, 0);
vgcanvas_move_to(vg, 0, 0);
vgcanvas_quad_to(vg, 40, 0, 40, 40);
vgcanvas_translate(vg, 40, 0);
vgcanvas_move_to(vg, 0, 0);
vgcanvas_bezier_to(vg, 20, 0, 20, 40, 40, 40);
vgcanvas_stroke(vg);
vgcanvas_translate(vg, 40, 0);
vgcanvas_begin_path(vg);
vgcanvas_arc(vg, 20, 20, 20, 0, 3.14, TRUE);
vgcanvas_stroke(vg);
vgcanvas_translate(vg, 40, 0);
vgcanvas_set_line_width(vg, 2);
vgcanvas_set_line_cap(vg, "round");
vgcanvas_begin_path(vg);
vgcanvas_arc(vg, 20, 20, 20, 0, 3.14 / 2, FALSE);
vgcanvas_stroke(vg);
vgcanvas_stroke(vg);
vgcanvas_restore(vg);
}
static void draw_image(vgcanvas_t* vg) {
bitmap_t img;
vgcanvas_save(vg);
image_manager_get_bitmap(image_manager(), "bricks", &img);
vgcanvas_translate(vg, (vg->w - img.w) / 2, 0);
vgcanvas_translate(vg, img.w >> 1, img.h >> 1);
vgcanvas_rotate(vg, 3.14 / 4);
vgcanvas_translate(vg, -img.w >> 1, -img.h >> 1);
vgcanvas_scale(vg, 1.5, 1.5);
vgcanvas_draw_image(vg, &img, 0, 0, img.w, img.h, 0, 0, img.w, img.h);
vgcanvas_restore(vg);
return;
}
static void draw_matrix(vgcanvas_t* vg) {
float_t w = 50;
float_t h = 50;
vgcanvas_save(vg);
vgcanvas_translate(vg, w / 2, h / 2);
vgcanvas_rotate(vg, 3.14 / 4);
vgcanvas_translate(vg, -w / 2, -h / 2);
vgcanvas_rect(vg, 0, 0, w, h);
vgcanvas_fill(vg);
vgcanvas_restore(vg);
}
static void draw_text(vgcanvas_t* vg) {
float_t h = 20;
const char* text = "Hello AWTK";
float_t w = 100;
vgcanvas_set_font_size(vg, 20);
vgcanvas_set_font(vg, NULL);
w = vgcanvas_measure_text(vg, text);
vgcanvas_save(vg);
vgcanvas_translate(vg, w / 2, h / 2);
vgcanvas_rotate(vg, 3.14 / 4);
vgcanvas_translate(vg, -w / 2, -h / 2);
vgcanvas_fill_text(vg, text, 10, 10, 100);
log_debug("text=%s w=%f\n", text, w);
vgcanvas_restore(vg);
}
static inline ret_t on_paint_text(void* ctx, event_t* e) {
int32_t x = 0;
int32_t y = 0;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
color_t color = color_init(0xff, 0, 0, 0xff);
vgcanvas_t* vg = canvas_get_vgcanvas(c);
color = color_init(0xff, 0, 0, 0xff);
canvas_set_stroke_color(c, color);
canvas_stroke_rect(c, x, y, 100, 30);
color = color_init(0xff, 0, 0, 0xff);
canvas_set_text_color(c, color);
canvas_set_font(c, NULL, 30);
vgcanvas_set_fill_color(vg, color);
vgcanvas_fill_text(vg, "ABC", 0, 0, 100);
/*
vgcanvas_translate(vg, x, y);
canvas_draw_text(c, L"abc", 3, 0, 0);
*/
return RET_OK;
}
static inline ret_t on_paint_vg(void* ctx, event_t* e) {
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
vgcanvas_t* vg = canvas_get_vgcanvas(c);
vgcanvas_save(vg);
vgcanvas_set_line_width(vg, 1);
vgcanvas_set_stroke_color(vg, color_init(0, 0xff, 0, 0xff));
vgcanvas_set_fill_color(vg, color_init(0xff, 0, 0, 0xff));
draw_basic_shapes(vg, FALSE);
vgcanvas_translate(vg, 0, 50);
draw_basic_shapes(vg, TRUE);
vgcanvas_translate(vg, 0, 50);
stroke_lines(vg);
vgcanvas_translate(vg, 0, 50);
draw_image(vg);
vgcanvas_translate(vg, 50, 100);
draw_matrix(vg);
vgcanvas_translate(vg, 0, 100);
draw_text(vg);
vgcanvas_restore(vg);
return RET_OK;
}
static inline ret_t on_paint_global_alpha(void* ctx, event_t* e) {
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
vgcanvas_t* vg = canvas_get_vgcanvas(c);
color_t fill = color_init(0x00, 0xff, 0x00, 0xff);
color_t stroke = color_init(0x00, 0x00, 0xff, 0xff);
vgcanvas_save(vg);
image_manager_get_bitmap(image_manager(), "bricks", &img);
vgcanvas_set_global_alpha(vg, 1);
vgcanvas_draw_image(vg, &img, 0, 0, img.w, img.h, 0, 0, img.w, img.h);
vgcanvas_set_global_alpha(vg, 0.5);
vgcanvas_set_fill_color(vg, fill);
vgcanvas_rect(vg, 0, 0, 20, 20);
vgcanvas_fill(vg);
vgcanvas_set_stroke_color(vg, stroke);
vgcanvas_set_line_width(vg, 5);
vgcanvas_rect(vg, 20, 20, 20, 20);
vgcanvas_stroke(vg);
vgcanvas_translate(vg, 15, 15);
vgcanvas_draw_image(vg, &img, 0, 0, img.w, img.h, 0, 0, img.w, img.h);
vgcanvas_restore(vg);
return RET_OK;
}
static inline ret_t on_paint_vg_simple(void* ctx, event_t* e) {
bitmap_t img;
paint_event_t* evt = (paint_event_t*)e;
canvas_t* c = evt->c;
vgcanvas_t* vg = canvas_get_vgcanvas(c);
image_manager_get_bitmap(image_manager(), "rgba", &img);
canvas_set_fill_color(c, color_init(0x11, 0x22, 0x33, 0xff));
canvas_fill_rect(c, 0, 0, 10, 10);
rect_t s = rect_init(0, 0, img.w, img.h);
rect_t r = rect_init(10, 10, img.w, img.h);
canvas_draw_image(c, &img, &s, &r);
vgcanvas_save(vg);
vgcanvas_translate(vg, 0, 100);
vgcanvas_set_line_width(vg, 1);
vgcanvas_set_fill_color(vg, color_init(0xff, 0, 0, 0xff));
vgcanvas_rect(vg, 5, 5, 100, 100);
vgcanvas_fill(vg);
vgcanvas_set_fill_color(vg, color_init(0, 0xff, 0, 0xff));
vgcanvas_rect(vg, 110, 5, 100, 100);
vgcanvas_fill(vg);
vgcanvas_set_fill_color(vg, color_init(0, 0, 0xff, 0xff));
vgcanvas_rect(vg, 215, 5, 100, 100);
vgcanvas_fill(vg);
vgcanvas_translate(vg, 0, 105);
vgcanvas_set_stroke_color(vg, color_init(0xff, 0, 0, 0xff));
vgcanvas_rect(vg, 5, 5, 100, 100);
vgcanvas_stroke(vg);
vgcanvas_set_stroke_color(vg, color_init(0, 0xff, 0, 0xff));
vgcanvas_rect(vg, 110, 5, 100, 100);
vgcanvas_stroke(vg);
vgcanvas_set_stroke_color(vg, color_init(0, 0, 0xff, 0xff));
vgcanvas_rect(vg, 215, 5, 100, 100);
vgcanvas_stroke(vg);
vgcanvas_translate(vg, 0, 128);
image_manager_get_bitmap(image_manager(), "rgb", &img);
vgcanvas_draw_image(vg, &img, 0, 0, img.w, img.h, 0, 0, img.w, img.h);
image_manager_get_bitmap(image_manager(), "rgba", &img);
vgcanvas_draw_image(vg, &img, 0, 0, img.w, img.h, 100, 0, img.w, img.h);
image_manager_get_bitmap(image_manager(), "switch", &img);
vgcanvas_draw_image(vg, &img, 0, 0, img.w, img.h, 200, 0, img.w, img.h);
vgcanvas_translate(vg, 0, 60);
vgcanvas_rounded_rect(vg, 0, 0, img.w, img.h, 5);
vgcanvas_paint(vg, FALSE, &img);
vg = canvas_get_vgcanvas(c);
vgcanvas_translate(vg, 160, 0);
vgcanvas_rounded_rect(vg, 0, 0, img.w, img.h, 5);
vgcanvas_paint(vg, FALSE, &img);
vgcanvas_restore(vg);
return RET_OK;
}
static inline ret_t on_timer(const timer_info_t* timer) {
widget_t* widget = WIDGET(timer->ctx);
widget_invalidate(widget, NULL);
return RET_REPEAT;
}