From b0c84dc305dce24d67b247512fe33d74b22904f6 Mon Sep 17 00:00:00 2001 From: Grissiom Date: Sun, 24 Feb 2013 18:19:31 +0800 Subject: [PATCH] remove gui examples As part of RTGUI, we should also remove gui examples. Copy demo/examples/* in RT-Thread/RTGUI to examples/gui in RTT When you need them. --- examples/gui/SConscript | 60 ---- examples/gui/demo_application.c | 156 ---------- examples/gui/demo_fnview.c | 90 ------ examples/gui/demo_listview.c | 107 ------- examples/gui/demo_listview_icon.c | 350 ---------------------- examples/gui/demo_panel.c | 27 -- examples/gui/demo_panel_single.c | 19 -- examples/gui/demo_plot.c | 77 ----- examples/gui/demo_simple_workbench.c | 62 ---- examples/gui/demo_view.c | 132 -------- examples/gui/demo_view.h | 34 --- examples/gui/demo_view_animation.c | 141 --------- examples/gui/demo_view_benchmark.c | 146 --------- examples/gui/demo_view_bmp.c | 304 ------------------- examples/gui/demo_view_box.c | 44 --- examples/gui/demo_view_buffer_animation.c | 157 ---------- examples/gui/demo_view_button.c | 80 ----- examples/gui/demo_view_checkbox.c | 80 ----- examples/gui/demo_view_combobox.c | 40 --- examples/gui/demo_view_dc.c | 194 ------------ examples/gui/demo_view_dc_buffer.c | 85 ------ examples/gui/demo_view_digtube.c | 56 ---- examples/gui/demo_view_edit.c | 182 ----------- examples/gui/demo_view_image.c | 128 -------- examples/gui/demo_view_instrument_panel.c | 149 --------- examples/gui/demo_view_label.c | 104 ------- examples/gui/demo_view_listbox.c | 195 ------------ examples/gui/demo_view_listctrl.c | 264 ---------------- examples/gui/demo_view_menu.c | 76 ----- examples/gui/demo_view_module.c | 78 ----- examples/gui/demo_view_mywidget.c | 42 --- examples/gui/demo_view_notebook.c | 53 ---- examples/gui/demo_view_progressbar.c | 103 ------- examples/gui/demo_view_radiobox.c | 69 ----- examples/gui/demo_view_scrollbar.c | 48 --- examples/gui/demo_view_slider.c | 49 --- examples/gui/demo_view_textbox.c | 102 ------- examples/gui/demo_view_ttf.c | 98 ------ examples/gui/demo_view_window.c | 299 ------------------ examples/gui/demo_xml.c | 26 -- examples/gui/mywidget.c | 108 ------- examples/gui/mywidget.h | 50 ---- examples/gui/play.hdh | 107 ------- examples/gui/stop.hdh | 107 ------- 44 files changed, 4878 deletions(-) delete mode 100644 examples/gui/SConscript delete mode 100644 examples/gui/demo_application.c delete mode 100644 examples/gui/demo_fnview.c delete mode 100644 examples/gui/demo_listview.c delete mode 100644 examples/gui/demo_listview_icon.c delete mode 100644 examples/gui/demo_panel.c delete mode 100644 examples/gui/demo_panel_single.c delete mode 100644 examples/gui/demo_plot.c delete mode 100644 examples/gui/demo_simple_workbench.c delete mode 100644 examples/gui/demo_view.c delete mode 100644 examples/gui/demo_view.h delete mode 100644 examples/gui/demo_view_animation.c delete mode 100644 examples/gui/demo_view_benchmark.c delete mode 100644 examples/gui/demo_view_bmp.c delete mode 100644 examples/gui/demo_view_box.c delete mode 100644 examples/gui/demo_view_buffer_animation.c delete mode 100644 examples/gui/demo_view_button.c delete mode 100644 examples/gui/demo_view_checkbox.c delete mode 100644 examples/gui/demo_view_combobox.c delete mode 100644 examples/gui/demo_view_dc.c delete mode 100644 examples/gui/demo_view_dc_buffer.c delete mode 100644 examples/gui/demo_view_digtube.c delete mode 100644 examples/gui/demo_view_edit.c delete mode 100644 examples/gui/demo_view_image.c delete mode 100644 examples/gui/demo_view_instrument_panel.c delete mode 100644 examples/gui/demo_view_label.c delete mode 100644 examples/gui/demo_view_listbox.c delete mode 100644 examples/gui/demo_view_listctrl.c delete mode 100644 examples/gui/demo_view_menu.c delete mode 100644 examples/gui/demo_view_module.c delete mode 100644 examples/gui/demo_view_mywidget.c delete mode 100644 examples/gui/demo_view_notebook.c delete mode 100644 examples/gui/demo_view_progressbar.c delete mode 100644 examples/gui/demo_view_radiobox.c delete mode 100644 examples/gui/demo_view_scrollbar.c delete mode 100644 examples/gui/demo_view_slider.c delete mode 100644 examples/gui/demo_view_textbox.c delete mode 100644 examples/gui/demo_view_ttf.c delete mode 100644 examples/gui/demo_view_window.c delete mode 100644 examples/gui/demo_xml.c delete mode 100644 examples/gui/mywidget.c delete mode 100644 examples/gui/mywidget.h delete mode 100644 examples/gui/play.hdh delete mode 100644 examples/gui/stop.hdh diff --git a/examples/gui/SConscript b/examples/gui/SConscript deleted file mode 100644 index 1d82cccdb0..0000000000 --- a/examples/gui/SConscript +++ /dev/null @@ -1,60 +0,0 @@ -from building import * -import os - -''' -demo_view_dc_buffer.c -demo_fnview.c -demo_listview.c -demo_listview_icon.c -demo_panel_single.c -demo_view_box.c -demo_view_image.c -demo_view_module.c -''' - -src = Split(""" -demo_application.c -demo_view.c -demo_xml.c -demo_view_benchmark.c -demo_view_dc.c -demo_view_ttf.c -demo_view_dc_buffer.c -demo_view_animation.c -demo_view_buffer_animation.c -demo_view_instrument_panel.c -demo_view_window.c -demo_view_label.c -demo_view_button.c -demo_view_checkbox.c -demo_view_progressbar.c -demo_view_scrollbar.c -demo_view_radiobox.c -demo_view_textbox.c -demo_view_listbox.c -demo_view_menu.c -demo_view_listctrl.c -demo_view_combobox.c -demo_view_slider.c -demo_view_notebook.c -demo_view_mywidget.c -demo_view_box.c -demo_view_edit.c -demo_view_bmp.c -demo_plot.c -mywidget.c -demo_view_digtube.c -""") - -if GetDepend('RTGUI_USING_FONT_COMPACT'): - import stract_cjk as sf - fl1 = sf.get_font_lib('hz16') - fl2 = sf.get_font_lib('hz12') - cwd = GetCurrentDir() - for i in src: - fl1.push_file(open(os.path.join(cwd, i), 'r')) - fl2.push_file(open(os.path.join(cwd, i), 'r')) - -group = DefineGroup('gui_examples', src, depend = ['RT_USING_RTGUI']) - -Return('group') diff --git a/examples/gui/demo_application.c b/examples/gui/demo_application.c deleted file mode 100644 index 45ce95251a..0000000000 --- a/examples/gui/demo_application.c +++ /dev/null @@ -1,156 +0,0 @@ -#include -#include -#include - -#include -#include - -struct rtgui_notebook *the_notebook; - -static rt_bool_t demo_handle_key(struct rtgui_object *object, struct rtgui_event *event) -{ - struct rtgui_event_kbd *ekbd = (struct rtgui_event_kbd *)event; - - if (ekbd->type == RTGUI_KEYUP) - { - if (ekbd->key == RTGUIK_RIGHT) - { - demo_view_next(RT_NULL, RT_NULL); - return RT_TRUE; - } - else if (ekbd->key == RTGUIK_LEFT) - { - demo_view_prev(RT_NULL, RT_NULL); - return RT_TRUE; - } - } - return RT_TRUE; -} - -struct rtgui_win *main_win; -static void application_entry(void *parameter) -{ - struct rtgui_app *app; - struct rtgui_rect rect; - - app = rtgui_app_create("gui_demo"); - if (app == RT_NULL) - return; - - /* create a full screen window */ - rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), &rect); - - main_win = rtgui_win_create(RT_NULL, "demo_win", &rect, - RTGUI_WIN_STYLE_NO_BORDER | RTGUI_WIN_STYLE_NO_TITLE); - if (main_win == RT_NULL) - { - rtgui_app_destroy(app); - return; - } - - rtgui_win_set_onkey(main_win, demo_handle_key); - - /* create a no title notebook that we can switch demo on it easily. */ - the_notebook = rtgui_notebook_create(&rect, RTGUI_NOTEBOOK_NOTAB); - if (the_notebook == RT_NULL) - { - rtgui_win_destroy(main_win); - rtgui_app_destroy(app); - return; - } - - rtgui_container_add_child(RTGUI_CONTAINER(main_win), RTGUI_WIDGET(the_notebook)); - - //demo_view_box(); - - /* 初始化各个例子的视图 */ - demo_view_benchmark(); - - demo_view_dc(); -#ifdef RTGUI_USING_TTF - demo_view_ttf(); -#endif - -#ifndef RTGUI_USING_SMALL_SIZE - demo_view_dc_buffer(); -#endif - demo_view_animation(); -#ifndef RTGUI_USING_SMALL_SIZE - demo_view_buffer_animation(); - demo_view_instrument_panel(); -#endif - demo_view_window(); - demo_view_label(); - demo_view_button(); - demo_view_checkbox(); - demo_view_progressbar(); - demo_view_scrollbar(); - demo_view_radiobox(); - demo_view_textbox(); - demo_view_listbox(); - demo_view_menu(); - demo_view_listctrl(); - demo_view_combobox(); - demo_view_slider(); - demo_view_notebook(); - demo_view_mywidget(); - demo_plot(); - demo_view_digtube(); - -#if defined(RTGUI_USING_DFS_FILERW) - demo_view_edit(); - demo_view_bmp(); -#endif - -#if 0 -#if defined(RTGUI_USING_DFS_FILERW) - demo_view_image(); -#endif -#ifdef RT_USING_MODULE -#if defined(RTGUI_USING_DFS_FILERW) - demo_view_module(); -#endif -#endif - demo_listview_view(); - demo_listview_icon_view(); -#if defined(RTGUI_USING_DFS_FILERW) - demo_fn_view(); -#endif -#endif - - rtgui_win_show(main_win, RT_FALSE); - - /* 执行工作台事件循环 */ - rtgui_app_run(app); - - rtgui_app_destroy(app); -} - -void application_init() -{ - static rt_bool_t inited = RT_FALSE; - - if (inited == RT_FALSE) /* 避免重复初始化而做的保护 */ - { - rt_thread_t tid; - - tid = rt_thread_create("wb", - application_entry, RT_NULL, - 2048 * 2, 25, 10); - - if (tid != RT_NULL) - rt_thread_startup(tid); - - inited = RT_TRUE; - } -} - -#ifdef RT_USING_FINSH -#include -void application() -{ - application_init(); -} -/* finsh的命令输出,可以直接执行application()函数以执行上面的函数 */ -FINSH_FUNCTION_EXPORT(application, application demo) -#endif diff --git a/examples/gui/demo_fnview.c b/examples/gui/demo_fnview.c deleted file mode 100644 index af170101b4..0000000000 --- a/examples/gui/demo_fnview.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 程序清单:文件列表视图演示 - * - * 这个例子会先创建出一个演示用的view,当点击上面的按钮时会按照模式显示的形式显示 - * 新的文件列表视图。 - */ -#include "demo_view.h" -#include -#include -#include - -#if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW) -/* 用于显示选择文件名的文本标签 */ -static rtgui_label_t *label; -/* 触发文件列表视图的按钮回调函数 */ -static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event) -{ - rtgui_filelist_view_t *view; - rtgui_workbench_t *workbench; - rtgui_rect_t rect; - - /* 获得顶层的workbench对象 */ - workbench = RTGUI_APPLICATION(rtgui_widget_get_toplevel(widget)); - rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); - - /* 针对Win32平台和其他平台做的不同的其实目录位置 */ -#ifdef _WIN32 - view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); -#else - view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect); -#endif - - /* 采用模式形式显示文件列表视图 */ - if (rtgui_container_show(RTGUI_CONTAINER(view), RT_TRUE) == RTGUI_MODAL_OK) - { - char path[32]; - - /* 在文件列表视图中成功选择文件,这里获得相应的路径名 */ - rtgui_filelist_view_get_fullpath(view, path, sizeof(path)); - - /* 设置文件路径到文本标签 */ - rtgui_label_set_text(label, path); - } - - /* 删除 文件列表 视图 */ - rtgui_container_destroy(RTGUI_CONTAINER(view)); -} - -/* 创建用于演示文件列表视图的视图 */ -rtgui_container_t *demo_fn_view(rtgui_workbench_t *workbench) -{ - rtgui_rect_t rect; - rtgui_container_t *view; - rtgui_button_t *open_btn; - rtgui_font_t *font; - - /* 默认采用12字体的显示 */ - font = rtgui_font_refer("asc", 12); - - /* 创建演示用的视图 */ - view = demo_view(workbench, "FileList View"); - /* 获得演示视图的位置信息 */ - demo_view_get_rect(view, &rect); - - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建显示文件路径用的文本标签 */ - label = rtgui_label_create("fn: "); - rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(label)); - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - RTGUI_WIDGET_FONT(RTGUI_WIDGET(label)) = font; - - /* 获得演示视图的位置信息 */ - demo_view_get_rect(view, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 80; - rect.y1 += 30; - rect.y2 = rect.y1 + 20; - /* 创建按钮以触发一个新的文件列表视图 */ - open_btn = rtgui_button_create("Open File"); - rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(open_btn)); - rtgui_widget_set_rect(RTGUI_WIDGET(open_btn), &rect); - RTGUI_WIDGET_FONT(RTGUI_WIDGET(open_btn)) = font; - rtgui_button_set_onbutton(open_btn, open_btn_onbutton); - - return view; -} -#endif diff --git a/examples/gui/demo_listview.c b/examples/gui/demo_listview.c deleted file mode 100644 index 0d0bbeba8d..0000000000 --- a/examples/gui/demo_listview.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 程序清单:列表视图演示 - * - * 这个例子会先创建出一个演示用的container,当点击上面的按钮时会按照模式显示的形式显示 - * 新的列表视图 - */ -#include "demo_view.h" -#include -#include -#include -#include - -static struct rtgui_application *application = RT_NULL; -static rtgui_list_view_t *_view = RT_NULL; -// static rtgui_image_t* return_image = RT_NULL; - -/* 列表项的动作函数 */ -static void listitem_action(rtgui_widget_t *widget, void *parameter) -{ - char label_text[32]; - rtgui_win_t *win; - rtgui_label_t *label; - rtgui_rect_t rect = {0, 0, 150, 80}; - int no = (int)parameter; - - rtgui_rect_moveto(&rect, 20, 50); - - /* 显示消息窗口 */ - win = rtgui_win_create(RTGUI_TOPLEVEL(application), - "窗口", &rect, RTGUI_WIN_STYLE_DEFAULT); - - rect.x1 += 20; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - - /* 添加相应的标签 */ - rt_sprintf(label_text, "动作 %d", no); - label = rtgui_label_create(label_text); - - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(win, RTGUI_WIDGET(label)); - - /* 非模态显示窗口 */ - rtgui_win_show(win, RT_FALSE); -} - -/* 返回功能的动作函数 */ -static void return_action(rtgui_widget_t *widget, void *parameter) -{ - rtgui_container_end_modal(RTGUI_CONTAINER(_view), RTGUI_MODAL_OK); -} - -/* 各个列表项定义 */ -static struct rtgui_list_item items[] = -{ - {"列表项1", RT_NULL, listitem_action, (void *)1}, - {"列表项2", RT_NULL, listitem_action, (void *)2}, - {"列表项3", RT_NULL, listitem_action, (void *)3}, - {"列表项4", RT_NULL, listitem_action, (void *)4}, - {"列表项5", RT_NULL, listitem_action, (void *)5}, - {"返回", RT_NULL, return_action, RT_NULL}, -}; - -/* 打开列表视图用的按钮触发函数 */ -static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event) -{ - rtgui_rect_t rect; - - /* 获得顶层的application */ - application = RTGUI_APPLICATION(rtgui_widget_get_toplevel(widget)); - rtgui_widget_get_rect(RTGUI_WIDGET(application), &rect); - - /* 创建一个列表视图, 项指定为items */ - _view = rtgui_list_view_create(items, sizeof(items) / sizeof(struct rtgui_list_item), - &rect, RTGUI_LIST_VIEW_LIST); - - rtgui_application_add_container(application, RTGUI_CONTAINER(_view)); - - /* 模式显示视图 */ - rtgui_container_show(RTGUI_CONTAINER(_view), RT_TRUE); - rtgui_container_destroy(RTGUI_CONTAINER(_view)); - _view = RT_NULL; -} - -/* 创建用于演示列表视图的视图 */ -rtgui_container_t *demo_listview_view(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_button_t *open_btn; - - container = demo_view("列表视图演示"); - - /* 添加动作按钮 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 80; - rect.y1 += 30; - rect.y2 = rect.y1 + 20; - open_btn = rtgui_button_create("打开列表"); - rtgui_container_add_child(container, RTGUI_WIDGET(open_btn)); - rtgui_widget_set_rect(RTGUI_WIDGET(open_btn), &rect); - rtgui_button_set_onbutton(open_btn, open_btn_onbutton); - - return container; -} diff --git a/examples/gui/demo_listview_icon.c b/examples/gui/demo_listview_icon.c deleted file mode 100644 index 6014172582..0000000000 --- a/examples/gui/demo_listview_icon.c +++ /dev/null @@ -1,350 +0,0 @@ -/* - * 程序清单:列表视图演示 - * - * 这个例子会先创建出一个演示用的view,当点击上面的按钮时会按照模式显示的形式显示 - * 新的列表视图 - */ -#include "demo_view.h" -#include -#include -#include -#include - -static struct rtgui_application *application = RT_NULL; -static rtgui_list_view_t *_view = RT_NULL; - -/* 列表项的动作函数 */ -static void listitem_action(rtgui_widget_t *widget, void *parameter) -{ - char label_text[32]; - rtgui_win_t *win; - rtgui_label_t *label; - rtgui_rect_t rect = {0, 0, 150, 80}; - int no = (int)parameter; - - rtgui_rect_moveto(&rect, 20, 50); - - /* 显示消息窗口 */ - win = rtgui_win_create(RTGUI_TOPLEVEL(application), - "窗口", &rect, RTGUI_WIN_STYLE_DEFAULT); - - rect.x1 += 20; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - - /* 添加相应的标签 */ - rt_sprintf(label_text, "动作 %d", no); - label = rtgui_label_create(label_text); - - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(win), RTGUI_WIDGET(label)); - - /* 非模态显示窗口 */ - rtgui_win_show(win, RT_FALSE); -} - -/* 返回功能的动作函数 */ -static void return_action(rtgui_widget_t *widget, void *parameter) -{ - /* 退出模态显示 */ - rtgui_container_end_modal(RTGUI_CONTAINER(_view), RTGUI_MODAL_OK); -} - -/* 列表项 */ -#define ITEM_MAX 50 -static struct rtgui_list_item *items = RT_NULL; -static rtgui_image_t *item_icon = RT_NULL; -static rtgui_image_t *exit_icon = RT_NULL; - -static const char *image_xpm[] = -{ - "16 16 106 2", - " c None", - ". c #D0C83F", - "+ c #D0C840", - "@ c #D0C030", - "# c #D0B820", - "$ c #D0B020", - "% c #D0B01F", - "& c #5F571F", - "* c #F0F0C0", - "= c #FFF8D0", - "- c #FFF8C0", - "; c #FFF8B0", - "> c #FFF8A0", - ", c #F0E870", - "' c #707030", - ") c #4F87EF", - "! c #4F78C0", - "~ c #5088E0", - "{ c #5078C0", - "] c #C0D0F0", - "^ c #FFF8E0", - "/ c #FFF090", - "( c #F0E070", - "_ c #6F97D0", - ": c #C0D8FE", - "< c #80A8F0", - "[ c #7088D0", - "} c #B0D0FF", - "| c #90B0F0", - "1 c #1040A0", - "2 c #F0F080", - "3 c #707040", - "4 c #7098F0", - "5 c #3068E0", - "6 c #A0B8F0", - "7 c #4070C0", - "8 c #002880", - "9 c #404040", - "0 c #505050", - "a c #F0F090", - "b c #F0E860", - "c c #F0D860", - "d c #807840", - "e c #2F5FC0", - "f c #1050D0", - "g c #1048B0", - "h c #002870", - "i c #C0C080", - "j c #C0C070", - "k c #F0F070", - "l c #F0E060", - "m c #E0D050", - "n c #00277F", - "o c #00287F", - "p c #1F3F6F", - "q c #1048C0", - "r c #0040B0", - "s c #204080", - "t c #FFF890", - "u c #F0D850", - "v c #E0C840", - "w c #807040", - "x c #A0B06F", - "y c #204880", - "z c #2048A0", - "A c #90A8C0", - "B c #FFF080", - "C c #F0D050", - "D c #C0A830", - "E c #6F682F", - "F c #F0F0A0", - "G c #E0D060", - "H c #B0A040", - "I c #D0B840", - "J c #E0C040", - "K c #D0B030", - "L c #706820", - "M c #5F581F", - "N c #CFBF3F", - "O c #FFF0A0", - "P c #A09830", - "Q c #A08820", - "R c #908030", - "S c #807830", - "T c #707020", - "U c #605820", - "V c #6F672F", - "W c #D0C040", - "X c #F0E880", - "Y c #907820", - "Z c #B09820", - "` c #B09010", - " . c #B08820", - ".. c #806820", - "+. c #5F5F1F", - "@. c #F0E080", - "#. c #B09020", - "$. c #C0B040", - "%. c #A09030", - "&. c #908020", - "*. c #606020", - "=. c #6F5F1F", - "-. c #9F982F", - ";. c #A0872F", - ">. c #6F681F", - ",. c #706020", - " ", - " . + + + @ @ # # $ % & ", - " + * = = = = - ; > , ' ", - " ) ! ~ { ] ^ = - - > / ( ' ", - "_ : < { [ } | 1 - ; > > / 2 ( 3 ", - "{ 4 5 1 6 7 5 8 9 0 a / , b c d ", - "e f g h 8 8 g h i j / k l c m d ", - " n o p q r s t 2 , l c u v w ", - " x y z A B , l u C v D E ", - " @ F > t k G H I J K L M ", - " N @ O / 2 l P Q R S T U V ", - " W m 2 X l I Y Z ` ...+. ", - " W @.l u I R #.Z Y U M ", - " $.G I $.%.R &.Y *.& =. ", - " -.;.>.,.L L ,.& M ", - " " -}; - -static const char *exit_xpm[] = -{ - "16 16 71 1", - " c None", - ". c #CF673F", - "+ c #D0673F", - "@ c #C05F3F", - "# c #BF5F3F", - "$ c #D0674F", - "% c #E07050", - "& c #F07850", - "* c #FF7040", - "= c #F06830", - "- c #E05830", - "; c #D05030", - "> c #B04F2F", - ", c #D06F4F", - "' c #F08060", - ") c #FF9070", - "! c #FF8860", - "~ c #FF8050", - "{ c #FF5820", - "] c #FF4810", - "^ c #D04810", - "/ c #B0482F", - "( c #FF9880", - "_ c #FF6030", - ": c #F04000", - "< c #C04010", - "[ c #A03F2F", - "} c #E06840", - "| c #FF9870", - "1 c #FF7850", - "2 c #FF6840", - "3 c #F04010", - "4 c #E03800", - "5 c #A03820", - "6 c #8F372F", - "7 c #F06840", - "8 c #FF8060", - "9 c #FFFFFF", - "0 c #FFF8F0", - "a c #FFF0F0", - "b c #FFE8E0", - "c c #FFD0C0", - "d c #E04010", - "e c #B03010", - "f c #7F2F1F", - "g c #FFD8D0", - "h c #FFC8C0", - "i c #C03000", - "j c #6F281F", - "k c #F04810", - "l c #FF6830", - "m c #FFE0D0", - "n c #F0C0B0", - "o c #D04010", - "p c #5F1F1F", - "q c #E04820", - "r c #FF4000", - "s c #FF5020", - "t c #FF5010", - "u c #D03800", - "v c #D03000", - "w c #B02800", - "x c #5F170F", - "y c #C05020", - "z c #F03800", - "A c #802010", - "B c #4F0F0F", - "C c #A02800", - "D c #C03810", - "E c #5F0F00", - "F c #A03810", - " ", - " .+@@@# ", - " $%&*=-;> ", - " ,')!~*{]^/ ", - " +&)()~*_]:<[ ", - " .}~!||!12{3456 ", - " +7899990abcdef ", - " @{19990bgchdij ", - " @kl0abmchcnoip ", - " @qr]stt]3duvwx ", - " #yz:::z44uvvAB ", - " >o4444uvvvCB ", - " /DvvvvvvCE ", - " [FeiiwAB ", - " 6fjpxB ", - " " -}; - -/* 打开列表视图用的按钮触发函数 */ -static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event) -{ - rtgui_rect_t rect; - rt_uint32_t index; - - /* 获得顶层的application */ - application = RTGUI_APPLICATION(rtgui_widget_get_toplevel(widget)); - rtgui_widget_get_rect(RTGUI_WIDGET(application), &rect); - - /* 初始化图标列表 */ - if (items == RT_NULL) - { - char item_name[32]; - - items = (struct rtgui_list_item *) rtgui_malloc((ITEM_MAX + 1) * sizeof(struct rtgui_list_item)); - for (index = 0; index < ITEM_MAX; index ++) - { - rt_snprintf(item_name, sizeof(item_name), "图标%d", index); - items[index].action = listitem_action; - items[index].image = item_icon; - items[index].name = rt_strdup(item_name); - items[index].parameter = (void *) index; - } - - items[ITEM_MAX].action = return_action; - items[ITEM_MAX].image = exit_icon; - items[ITEM_MAX].name = "退出"; - items[ITEM_MAX].parameter = RT_NULL; - } - - /* 创建一个列表视图, 项指定为items */ - _view = rtgui_list_view_create(items, ITEM_MAX + 1, &rect, RTGUI_LIST_VIEW_ICON); - /* 在application中添加相应的视图 */ - rtgui_application_add_container(application, RTGUI_CONTAINER(_view)); - - /* 模式显示视图 */ - rtgui_container_show(RTGUI_CONTAINER(_view), RT_TRUE); - rtgui_container_destroy(RTGUI_CONTAINER(_view)); - - _view = RT_NULL; -} - -/* 创建用于演示列表视图的视图 */ -rtgui_container_t *demo_listview_icon_view(struct rtgui_application *app) -{ - rtgui_rect_t rect; - rtgui_container_t *view; - rtgui_button_t *open_btn; - - view = demo_view(app, "图标视图演示"); - - if (item_icon == RT_NULL) - item_icon = rtgui_image_create_from_mem("xpm", - (const rt_uint8_t *)image_xpm, sizeof(image_xpm), RT_TRUE); - if (exit_icon == RT_NULL) - exit_icon = rtgui_image_create_from_mem("xpm", - (const rt_uint8_t *)exit_xpm, sizeof(exit_xpm), RT_TRUE); - - /* 添加动作按钮 */ - demo_view_get_rect(view, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 80; - rect.y1 += 30; - rect.y2 = rect.y1 + 20; - open_btn = rtgui_button_create("打开图标列表"); - rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(open_btn)); - rtgui_widget_set_rect(RTGUI_WIDGET(open_btn), &rect); - rtgui_button_set_onbutton(open_btn, open_btn_onbutton); - - return view; -} diff --git a/examples/gui/demo_panel.c b/examples/gui/demo_panel.c deleted file mode 100644 index 339b67cc7d..0000000000 --- a/examples/gui/demo_panel.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -/* - * Panel demo for 240x320 - * info panel: (0, 0) - (240, 25) - * main panel: (0, 25) - (240, 320) - */ -void panel_init(void) -{ - rtgui_rect_t rect; - - /* register dock panel */ - rect.x1 = 0; - rect.y1 = 0; - rect.x2 = 240; - rect.y2 = 25; - rtgui_panel_register("info", &rect); - - /* register main panel */ - rect.x1 = 0; - rect.y1 = 25; - rect.x2 = 240; - rect.y2 = 320; - rtgui_panel_register("main", &rect); - rtgui_panel_set_default_focused("main"); -} diff --git a/examples/gui/demo_panel_single.c b/examples/gui/demo_panel_single.c deleted file mode 100644 index c31e878f4a..0000000000 --- a/examples/gui/demo_panel_single.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include -#include - -/* - * a single panel - */ -void panel_init(void) -{ - rtgui_rect_t rect; - - /* register main panel */ - rect.x1 = 0; - rect.y1 = 0; - rect.x2 = rtgui_graphic_driver_get_default()->width; - rect.y2 = rtgui_graphic_driver_get_default()->height; - rtgui_panel_register("main", &rect); - rtgui_panel_set_default_focused("main"); -} diff --git a/examples/gui/demo_plot.c b/examples/gui/demo_plot.c deleted file mode 100644 index 14595cb1e9..0000000000 --- a/examples/gui/demo_plot.c +++ /dev/null @@ -1,77 +0,0 @@ -#include -#include - -#include "demo_view.h" - -/* sin data */ -rt_int16_t sin_ydata[] = { - 0, 9, 19, 29, 38, 47, 56, 64, 71, 78, 84, 89, 93, 96, 98, 99, 99, 99, 97, - 94, 90, 86, 80, 74, 67, 59, 51, 42, 33, 23, 14, 4, -5, -15, -25, -35, -44, - -52, -61, -68, -75, -81, -87, -91, -95, -97, -99, -99, -99, -98, -95, -92, - -88, -83, -77, -70, -63, -55, -46, -37, -27, -18, -8, 1, 11, 21, 31 -}; -rt_int16_t cos_ydata[] = { - 50, 49, 46, 41, 34, 27, 18, 8, -1, -11, -20, -29, -36, -42, -47, -49, -49, - -48, -44, -39, -32, -24, -15, -5, 4, 14, 23, 31, 38, 44, 48, 49, 49, 47, - 43, 37, 30, 21, 12, 2, -7, -16, -25, -33, -40, -45, -48, -49, -49, -46, - -41, -35, -28, -19, -9, 0, 10, 19, 28, 36, 42, 46, 49, 49, 48, 45, 40, 33, - 25, 16, 6, -3, -12, -22, -30, -37, -43, -47, -49, -49, -47, -44, -38, -31, - -23, -13, -3, 6, 15, 24, 33, 39, 45, 48, 49, 49, 46, 42, 36, 29, 20, 10, 1, - -8, -18, -27, -35, -41, -46, -49, -49, -48, -45, -41, -34, -26, -17, -8, 1, - 11, 21, 29, 37, 43, 47, 49, 49, 48, 44, 39, 32, 24, 14, 5, -4, -14, -23, - -32, -39, -44, -48, -49, -49, -47, -43, -37, -30, -21, -12, -2, 7, 17, 26, - 34, 40, 45, 48, 49, 49, 46, 41, 35, 27, 18, 9, 0, -10, -20, -28, -36, -42, - -46, -49, -49, -48, -45, -40, -33, -25, -16, -6, 3, 13, 22, 31, 38, 43, 47, - 49, 49, 47, 43, 38 -}; - -struct rtgui_container* demo_plot(void) -{ - struct rtgui_container *cnt; - struct rtgui_plot_curve *curve1, *curve2, *curve3; - struct rtgui_plot *plot; - struct rtgui_rect rect; - - cnt = demo_view("曲线绘图"); - - plot = rtgui_plot_create(); - - curve1 = rtgui_plot_curve_create(); - rtgui_plot_curve_set_y(curve1, sin_ydata); - RTGUI_MV_MODEL(curve1)->length = sizeof(sin_ydata)/sizeof(sin_ydata[0]); - curve1->min_x = 0; - curve1->max_x = sizeof(sin_ydata)/sizeof(sin_ydata[0]); - curve1->min_y = -100; - curve1->max_y = 100; - curve1->color = red; - rtgui_mv_model_add_view(RTGUI_MV_MODEL(curve1), RTGUI_MV_VIEW(plot)); - - curve2 = rtgui_plot_curve_create(); - rtgui_plot_curve_set_y(curve2, cos_ydata); - RTGUI_MV_MODEL(curve2)->length = sizeof(cos_ydata)/sizeof(cos_ydata[0]); - curve2->min_x = 0; - curve2->max_x = sizeof(cos_ydata)/sizeof(cos_ydata[0]); - curve2->min_y = -50; - curve2->max_y = 50; - curve2->color = blue; - rtgui_mv_model_add_view(RTGUI_MV_MODEL(curve2), RTGUI_MV_VIEW(plot)); - - curve3 = rtgui_plot_curve_create(); - rtgui_plot_curve_set_x(curve3, cos_ydata); - rtgui_plot_curve_set_y(curve3, sin_ydata); - curve3->min_x = -50; - curve3->max_x = 50; - curve3->min_y = -100; - curve3->max_y = 100; - RTGUI_MV_MODEL(curve3)->length = sizeof(sin_ydata)/sizeof(sin_ydata[0]); - curve3->color = black; - rtgui_mv_model_add_view(RTGUI_MV_MODEL(curve3), RTGUI_MV_VIEW(plot)); - - rtgui_widget_get_rect(RTGUI_WIDGET(cnt), &rect); - rtgui_widget_set_rect(RTGUI_WIDGET(plot), &rect); - rtgui_plot_set_base(plot, -100, -300); - - rtgui_container_add_child(cnt, RTGUI_WIDGET(plot)); - - return cnt; -} diff --git a/examples/gui/demo_simple_workbench.c b/examples/gui/demo_simple_workbench.c deleted file mode 100644 index 7baa0b0c50..0000000000 --- a/examples/gui/demo_simple_workbench.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * A simple workbench - */ -#include -#include -#include -#include -#include - -static void workbench_entry(void *parameter) -{ - rt_mq_t mq; - rtgui_container_t *view; - rtgui_label_t *label; - struct rtgui_workbench *workbench; - rtgui_rect_t rect; - - mq = rt_mq_create("wmq", 256, 8, RT_IPC_FLAG_FIFO); - /* 注册当前线程为GUI线程 */ - rtgui_thread_register(rt_thread_self(), mq); - /* 创建一个工作台 */ - workbench = rtgui_workbench_create("main", "workbench #1"); - if (workbench == RT_NULL) return; - - view = rtgui_container_create("view"); - if (view == RT_NULL) return; - /* 指定视图的背景色 */ - RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(view)) = white; - - /* 添加一个label */ - label = rtgui_label_create("你好!RT-Thread!"); - rect.x1 = 10; - rect.y1 = 10; - rect.x2 = 210; - rect.y2 = 30; - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(label)); - - /* 添加到父workbench中 */ - rtgui_workbench_add_view(workbench, view); - /* 非模式方式显示视图 */ - rtgui_container_show(view, RT_FALSE); - - /* 执行工作台事件循环 */ - rtgui_workbench_event_loop(workbench); - - /* 去注册GUI线程 */ - rtgui_thread_deregister(rt_thread_self()); - - /* delete message queue */ - rt_mq_delete(mq); -} - -/* 初始化workbench */ -void wb_init() -{ - rt_thread_t tid; - - tid = rt_thread_create("wb1", workbench_entry, RT_NULL, 2048, 20, 5); - if (tid != RT_NULL) rt_thread_startup(tid); -} diff --git a/examples/gui/demo_view.c b/examples/gui/demo_view.c deleted file mode 100644 index 42f0680b88..0000000000 --- a/examples/gui/demo_view.c +++ /dev/null @@ -1,132 +0,0 @@ -#include -#include - -#include -#include -#include -#include -#include - -extern struct rtgui_notebook *the_notebook; - -void demo_view_next(struct rtgui_object *object, struct rtgui_event *event) -{ - rtgui_notebook_set_current_by_index(the_notebook, - (rtgui_notebook_get_current_index(the_notebook) + 1) % - rtgui_notebook_get_count(the_notebook)); -} - -void demo_view_prev(struct rtgui_object *object, struct rtgui_event *event) -{ - rt_int16_t cur_idx = rtgui_notebook_get_current_index(the_notebook); - - if (cur_idx == 0) - rtgui_notebook_set_current_by_index(the_notebook, - rtgui_notebook_get_count(the_notebook) - 1); - else - rtgui_notebook_set_current_by_index(the_notebook, - --cur_idx); -} - -rtgui_container_t *demo_view(const char *title) -{ - struct rtgui_container *container; - struct rtgui_label *label; - struct rtgui_staticline *line; - struct rtgui_button *next_btn, *prev_btn; - struct rtgui_rect rect; - - container = rtgui_container_create(); - if (container == RT_NULL) - return RT_NULL; - - rtgui_notebook_add(the_notebook, title, RTGUI_WIDGET(container)); - - /* 获得视图的位置信息(在加入到 notebook 中时,notebook 会自动调整 container - * 的大小) */ - rtgui_widget_get_rect(RTGUI_WIDGET(container), &rect); - rtgui_widget_rect_to_device(RTGUI_WIDGET(container), &rect); - rect.x1 += 5; - rect.y1 += 5; - rect.x2 = rect.x1 + rt_strlen(title)*8; - rect.y2 = rect.y1 + 20; - - /* 创建标题用的标签 */ - label = rtgui_label_create(title); - /* 设置标签位置信息 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* 添加标签到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - rtgui_widget_get_rect(RTGUI_WIDGET(container), &rect); - rtgui_widget_rect_to_device(RTGUI_WIDGET(container), &rect); - rect.y1 += 20 + 5; - rect.y2 = rect.y1 + 2; - /* 创建一个水平的 staticline 线 */ - line = rtgui_staticline_create(RTGUI_HORIZONTAL); - /* 设置静态线的位置信息 */ - rtgui_widget_set_rect(RTGUI_WIDGET(line), &rect); - /* 添加静态线到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(line)); - - /* 获得视图的位置信息 */ - rtgui_widget_get_rect(RTGUI_WIDGET(container), &rect); - rtgui_widget_rect_to_device(RTGUI_WIDGET(container), &rect); - rect.x2 -= 5; - rect.y2 -= 5; - rect.x1 = rect.x2 - 100; - rect.y1 = rect.y2 - 25; - - /* 创建"下一个"按钮 */ - next_btn = rtgui_button_create("下一个"); - /* 设置onbutton动作到demo_view_next函数 */ - rtgui_button_set_onbutton(next_btn, demo_view_next); - /* 设置按钮的位置信息 */ - rtgui_widget_set_rect(RTGUI_WIDGET(next_btn), &rect); - /* 添加按钮到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(next_btn)); - - /* 获得视图的位置信息 */ - rtgui_widget_get_rect(RTGUI_WIDGET(container), &rect); - rtgui_widget_rect_to_device(RTGUI_WIDGET(container), &rect); - rect.x1 += 5; - rect.y2 -= 5; - rect.x2 = rect.x1 + 100; - rect.y1 = rect.y2 - 25; - - /* 创建"上一个"按钮 */ - prev_btn = rtgui_button_create("上一个"); - /* 设置onbutton动作到demo_view_prev函数 */ - rtgui_button_set_onbutton(prev_btn, demo_view_prev); - /* 设置按钮的位置信息 */ - rtgui_widget_set_rect(RTGUI_WIDGET(prev_btn), &rect); - /* 添加按钮到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(prev_btn)); - - /* 返回创建的视图 */ - return container; -} - -/* 这个函数用于返回演示视图的对外可用区域 */ -void demo_view_get_rect(rtgui_container_t *container, rtgui_rect_t *rect) -{ - RT_ASSERT(container != RT_NULL); - RT_ASSERT(rect != RT_NULL); - - rtgui_widget_get_rect(RTGUI_WIDGET(container), rect); - rtgui_widget_rect_to_device(RTGUI_WIDGET(container), rect); - /* 去除演示标题和下方按钮的区域 */ - rect->y1 += 45; - rect->y2 -= 35; -} - -void demo_view_get_logic_rect(rtgui_container_t *container, rtgui_rect_t *rect) -{ - RT_ASSERT(container != RT_NULL); - RT_ASSERT(rect != RT_NULL); - - rtgui_widget_get_rect(RTGUI_WIDGET(container), rect); - /* 去除演示标题和下方按钮的区域 */ - rect->y1 += 45; - rect->y2 -= 35; -} diff --git a/examples/gui/demo_view.h b/examples/gui/demo_view.h deleted file mode 100644 index 8ab8ffeb97..0000000000 --- a/examples/gui/demo_view.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 绋嬪簭娓呭崟锛歷iew婕旂ず - * - * 杩欐槸涓涓鍥剧殑婕旂ず锛屼篃鏄负浜嗛厤鍚堟暣涓狦UI婕旂ず鑰屽埗浣滅殑瑙嗗浘锛屾垨鑰呰锛屽叾浠栧ぇ澶氭暟鎺т欢鐨勬紨绀 - * 閮芥槸閲囩敤锛屽厛鍒涘缓涓涓猟emo_view锛堟紨绀鸿鍥撅級锛岀劧鍚庡啀鍦ㄨ繖涓紨绀鸿鍥句笂娣诲姞鐩稿簲鐨勬帶浠躲 - * - * 杩欎釜婕旂ず瑙嗗浘榛樿涓婃柟甯︿竴涓紨绀烘爣棰橈紝涓嬫柟甯︿袱涓寜閽紝鐐瑰嚮瀹冨垏鎹㈠埌鍓嶄竴涓鍥炬垨鍚庝竴涓鍥俱 - * 閽堝鎺т欢婕旂ず鑰岃█锛岃繖涓紨绀鸿鍥炬渶閲嶈鐨勬槸鎻愪緵浜嗕竴涓彲鏄剧ず鐨勫尯鍩燂紝鍙渶瑕佸湪杩欏潡鍖哄煙涓婃坊鍔 - * 鎺т欢鍗冲彲杈惧埌婕旂ず鐨勭洰鐨勩 - * - * 鑾峰緱杩欎釜鏄剧ず鍖哄煙鐨勫嚱鏁版槸锛 - * demo_view_get_rect鍑芥暟銆 - */ -#ifndef __DEMO_VIEW_H__ -#define __DEMO_VIEW_H__ - -#include -#include -#include - -/* 濡傛灉鏄爣鍑嗙増鏈紝鍙互鍚敤box鑷姩甯冨眬寮曟搸 */ -#ifndef RTGUI_USING_SMALL_SIZE -#include -#endif - -/* 鍒涘缓涓涓紨绀鸿鍥撅紝闇瑕佺粰鍑鸿繖涓鍥剧殑婕旂ず鏍囬 */ -rtgui_container_t *demo_view(const char *title); -/* 鑾峰緱婕旂ず瑙嗗浘鎻愪緵缁欐紨绀烘帶浠剁敤鐨勫尯鍩熶俊鎭 */ -void demo_view_get_rect(rtgui_container_t *view, rtgui_rect_t *rect); -void demo_view_get_logic_rect(rtgui_container_t *view, rtgui_rect_t *rect); -void demo_view_show(void); - -#endif - diff --git a/examples/gui/demo_view_animation.c b/examples/gui/demo_view_animation.c deleted file mode 100644 index 4145ba2055..0000000000 --- a/examples/gui/demo_view_animation.c +++ /dev/null @@ -1,141 +0,0 @@ -#include -#include -#include -#include "demo_view.h" - -/* - * 直接在DC上绘图以实现动画效果 - * - * 动画是依赖于定时器驱动的,会上下翻滚显示文字 - * "飞线乱飞" - */ -static rt_int8_t dx = 1, dy = 1; -static rtgui_rect_t text_rect; -static rtgui_timer_t *timer; - -void timeout(struct rtgui_timer *timer, void *parameter) -{ - struct rtgui_dc *dc; - struct rtgui_rect rect; - struct rtgui_widget *widget; - - /* 控件(container)通过parameter参数传递给定时器 */ - widget = RTGUI_WIDGET(parameter); - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return ; - - /* 获得demo container允许绘图的区域,主要用于判断边界 */ - demo_view_get_rect(RTGUI_CONTAINER(widget), &rect); - rect.y2 -= 5; - - /* 判断是否是第一次绘图 */ - if ((text_rect.x1 == 0) && (text_rect.y1 == 0)) - { - rtgui_rect_moveto(&text_rect, rect.x1, rect.y1); - } - else - { - /* 擦除老的文字 */ - rtgui_dc_fill_rect(dc, &text_rect); - } - - /* 设置dx和dy */ - if (text_rect.x2 >= rect.x2) dx = -1; - if (text_rect.x1 < rect.x1) dx = 1; - if (text_rect.y2 >= rect.y2) dy = -1; - if (text_rect.y1 < rect.y1) dy = 1; - - /* 移动文本框的位置 */ - text_rect.x1 += dx; - text_rect.x2 += dx; - text_rect.y1 += dy; - text_rect.y2 += dy; - - /* 绘图 */ - rtgui_dc_draw_text(dc, "飞线乱飞", &text_rect); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); -} - -static rt_bool_t animation_on_show(struct rtgui_object *object, struct rtgui_event *event) -{ - rt_kprintf("animation on show\n"); - if (timer != RT_NULL) - rtgui_timer_start(timer); - return RT_TRUE; -} - -static rt_bool_t animation_on_hide(struct rtgui_object *object, struct rtgui_event *event) -{ - rt_kprintf("animation on hide\n"); - if (timer != RT_NULL) - rtgui_timer_stop(timer); - return RT_TRUE; -} - -rt_bool_t animation_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_widget *widget = RTGUI_WIDGET(object); - - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc *dc; - rtgui_rect_t rect; - - /* 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container先绘图 */ - rtgui_container_event_handler(object, event); - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return RT_FALSE; - - /* 获得demo container允许绘图的区域 */ - demo_view_get_rect(RTGUI_CONTAINER(widget), &rect); - - /* 擦除所有 */ - rtgui_dc_fill_rect(dc, &rect); - - /* 绘图 */ - rtgui_dc_draw_text(dc, "飞线乱飞", &text_rect); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else if (event->type == RTGUI_EVENT_SHOW) - { - rtgui_container_event_handler(object, event); - animation_on_show(object, event); - } - else if (event->type == RTGUI_EVENT_HIDE) - { - rtgui_container_event_handler(object, event); - animation_on_hide(object, event); - } - else - { - /* 调用默认的事件处理函数 */ - return rtgui_container_event_handler(object, event); - } - - return RT_FALSE; -} - -rtgui_container_t *demo_view_animation() -{ - rtgui_container_t *container; - - container = demo_view("DC 动画"); - if (container != RT_NULL) - rtgui_object_set_event_handler(RTGUI_OBJECT(container), animation_event_handler); - - rtgui_font_get_metrics(RTGUI_WIDGET_FONT(container), "飞线乱飞", &text_rect); - rtgui_rect_moveto(&text_rect, 0, 45); - timer = rtgui_timer_create(2, RT_TIMER_FLAG_PERIODIC, timeout, (void *)container); - - return container; -} diff --git a/examples/gui/demo_view_benchmark.c b/examples/gui/demo_view_benchmark.c deleted file mode 100644 index 8664759b5c..0000000000 --- a/examples/gui/demo_view_benchmark.c +++ /dev/null @@ -1,146 +0,0 @@ -#include -#include -#include -#include -#include -#include "demo_view.h" - -#define RAND(x1, x2) ((rand() % (x2 - x1)) + x1) -#define _int_swap(x, y) do {x ^= y; y ^= x; x ^= y; } while(0) - -static struct rtgui_container *container = RT_NULL; -static int running = 0; -static rt_tick_t ticks; -static long long area; - -static rt_bool_t _benchmark_onshow(struct rtgui_object *obj, struct rtgui_event *ev) -{ - rtgui_widget_focus(RTGUI_WIDGET(obj)); - - return RT_TRUE; -} - -void _onidle(struct rtgui_object *object, rtgui_event_t *event) -{ - rtgui_color_t color; - rtgui_rect_t rect, draw_rect; - struct rtgui_dc *dc; - - /* 获得控件所属的DC */ - // dc = rtgui_dc_hw_create(RTGUI_WIDGET(container)); - dc = rtgui_dc_begin_drawing(RTGUI_WIDGET(container)); - if (dc == RT_NULL) - return; - - demo_view_get_logic_rect(RTGUI_CONTAINER(container), &rect); - draw_rect.x1 = RAND(rect.x1, rect.x2); - draw_rect.y1 = RAND(rect.y1, rect.y2); - draw_rect.x2 = RAND(rect.x1, rect.x2); - draw_rect.y2 = RAND(rect.y1, rect.y2); - - if(draw_rect.x1 > draw_rect.x2) _int_swap(draw_rect.x1, draw_rect.x2); - if(draw_rect.y1 > draw_rect.y2) _int_swap(draw_rect.y1, draw_rect.y2); - - area += rtgui_rect_width(draw_rect) * rtgui_rect_height(draw_rect); - color = RTGUI_RGB(rand() % 255, rand() % 255, rand() % 255); - RTGUI_WIDGET_BACKGROUND(container) = color; - - rtgui_dc_fill_rect(dc, &draw_rect); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - if(rt_tick_get()-ticks >= RT_TICK_PER_SECOND) - { - char buf[16]; - sprintf(buf, "%.2f", (double)area/(800*480)); - rt_kprintf("frames per second: %s fps\n", buf); - area = 0; - ticks = rt_tick_get(); - } -} - -void _draw_default(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_widget *widget = RTGUI_WIDGET(object); - struct rtgui_dc *dc; - rtgui_rect_t rect; - - /* 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container先绘图 */ - rtgui_container_event_handler(object, event); - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return; - - /* 获得demo container允许绘图的区域 */ - demo_view_get_logic_rect(RTGUI_CONTAINER(widget), &rect); - - /* 擦除所有 */ - RTGUI_WIDGET_BACKGROUND(widget) = default_background; - rtgui_dc_fill_rect(dc, &rect); - - /* 显示提示 */ - rtgui_dc_draw_text(dc, "按任意键开始/停止测试...", &rect); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); -} - -rt_bool_t benchmark_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - if (event->type == RTGUI_EVENT_PAINT) - { - _draw_default(object, event); - } - else if (event->type == RTGUI_EVENT_SHOW) - { - rtgui_container_event_handler(object, event); - _benchmark_onshow(object, event); - } - else if (event->type == RTGUI_EVENT_KBD) - { - struct rtgui_event_kbd *kbd = (struct rtgui_event_kbd *)event; - - if (kbd->key == RTGUIK_LEFT || kbd->key == RTGUIK_RIGHT) - return RT_FALSE; - - if (RTGUI_KBD_IS_UP(kbd)) - { - if (running) - { - /* stop */ - rtgui_app_set_onidle(rtgui_app_self(), RT_NULL); - _draw_default(object, event); - } - else - { - /* run */ - ticks = rt_tick_get(); - area = 0; - rtgui_app_set_onidle(rtgui_app_self(), _onidle); - } - - running = !running; - } - - return RT_TRUE; - } - else - { - /* 调用默认的事件处理函数 */ - return rtgui_container_event_handler(object, event); - } - - return RT_FALSE; -} - -rtgui_container_t *demo_view_benchmark(void) -{ - srand(100); - container = demo_view("绘图测试"); - RTGUI_WIDGET(container)->flag |= RTGUI_WIDGET_FLAG_FOCUSABLE; - rtgui_object_set_event_handler(RTGUI_OBJECT(container), benchmark_event_handler); - - return container; -} diff --git a/examples/gui/demo_view_bmp.c b/examples/gui/demo_view_bmp.c deleted file mode 100644 index 304f3defcf..0000000000 --- a/examples/gui/demo_view_bmp.c +++ /dev/null @@ -1,304 +0,0 @@ -/* -* 程序清单:bmp_zoom演示 -*/ -#include "demo_view.h" -#include -#include -#include -#include -#include -#include -#include - -#if defined(RTGUI_USING_DFS_FILERW) -struct demo_bmp_dt -{ - float scale, angle; - char *filename; - struct rtgui_image *image; - struct rtgui_image *showimg; - rtgui_container_t *showbox; - rtgui_textbox_t *box; - rtgui_rect_t lastrect; -}bmpdt; - -rt_bool_t demo_bitmap_showbox(struct rtgui_object* object, struct rtgui_event* event) -{ - rtgui_container_t *container; - rtgui_widget_t *widget; - - RT_ASSERT(object != RT_NULL); - - container = RTGUI_CONTAINER(object); - widget = RTGUI_WIDGET(object); - - if(event->type == RTGUI_EVENT_PAINT) - { - int w, h; - rtgui_rect_t rect; - struct rtgui_dc *dc; - struct rtgui_image *image = bmpdt.showimg; - /* 如果从其他标签切换到当前标签, image应该是RT_NULL, 重置它 */ - if(image == RT_NULL && bmpdt.image != RT_NULL) - { - image = bmpdt.image; - bmpdt.scale = 1.0f; - bmpdt.angle = 0.0f; - rtgui_widget_get_rect(RTGUI_WIDGET(bmpdt.showbox), &bmpdt.lastrect); - rtgui_rect_inflate(&bmpdt.lastrect, -RTGUI_WIDGET_BORDER(bmpdt.showbox)); - } - - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) - return RT_FALSE; - - rtgui_widget_get_rect(widget, &rect); - /* 在绘制边框后, 再将rect缩小填充背景, 可以降低闪烁现象 */ - rtgui_dc_draw_border(dc, &rect, RTGUI_WIDGET_BORDER_STYLE(widget)); - rtgui_rect_inflate(&rect, -RTGUI_WIDGET_BORDER(widget)); - w = rtgui_rect_width(bmpdt.lastrect); - h = rtgui_rect_height(bmpdt.lastrect); - if(w > rtgui_rect_width(rect)) w = rtgui_rect_width(rect); - if(h > rtgui_rect_height(rect)) h = rtgui_rect_height(rect); - - /* fill container with background */ - /* - * 参数lastrect会记录上一次绘图所用区域 - * 每次重绘时,只需与lastrect比较,即可得知那些背景区域需要刷新 - * 例如当放大图片时,lastrect比当前绘图区小,所有无需更新背景区, - * 当缩小图片时, 也仅需要更新绘图区比lastrect大的区域. - */ - if(image != RT_NULL) - { /* 减少不必要的绘图 */ - rtgui_rect_t rc; - if(w > image->w) - { - rc.x1 = image->w; - rc.y1 = bmpdt.lastrect.y1; - rc.x2 = bmpdt.lastrect.x2; - rc.y2 = (h > image->h) ? image->h : bmpdt.lastrect.y2; - rtgui_dc_fill_rect(dc, &rc); - } - if(h > image->h) - { - rc.x1 = bmpdt.lastrect.x1; - rc.y1 = image->h; - rc.x2 = bmpdt.lastrect.x2; - rc.y2 = bmpdt.lastrect.y2; - rtgui_dc_fill_rect(dc, &rc); - } - } - else - rtgui_dc_fill_rect(dc, &bmpdt.lastrect); - - /* 将图像数据blit到画布上 */ - if (image != RT_NULL) - { - int value; - rtgui_image_blit(image, dc, &rect); - bmpdt.lastrect.x1 = bmpdt.lastrect.y1 = RTGUI_WIDGET_BORDER(bmpdt.showbox); - - if(image->w > rtgui_rect_width(rect)) - value = rtgui_rect_width(rect); - else - value = image->w; - bmpdt.lastrect.x2 = bmpdt.lastrect.x1 + value; - - if(image->h > rtgui_rect_height(rect)) - value = rtgui_rect_height(rect); - else - value = image->h; - bmpdt.lastrect.y2 = bmpdt.lastrect.y1 + value; - } - - rtgui_dc_end_drawing(dc); - return RT_FALSE; - } - return rtgui_container_event_handler(object, event); -} - -void demo_bitmap_open(struct rtgui_object* object, struct rtgui_event* event) -{ - char *str; - rtgui_button_t *button = RTGUI_BUTTON(object); - /* 从textbox控件中取得文件名 */ - str = (char*)rtgui_textbox_get_value(bmpdt.box); - if(str == RT_NULL) return; - if(*str == '/' && (rt_strstr(str, ".bmp")!=RT_NULL || rt_strstr(str, ".BMP")!=RT_NULL)) - { /* 如果是bmp文件, 且文件名有效, 则读入图像数据 */ - if(bmpdt.filename != RT_NULL) - rt_free(bmpdt.filename); - bmpdt.filename = rt_strdup(str); - - if(bmpdt.image != RT_NULL) - rtgui_image_destroy(bmpdt.image); - - bmpdt.image = rtgui_image_create_from_file("bmp", bmpdt.filename, RT_TRUE); - - if(bmpdt.image != RT_NULL) - { - bmpdt.showimg = bmpdt.image; - bmpdt.scale = 1.0; - bmpdt.angle = 0.0; - rtgui_widget_update(RTGUI_WIDGET(bmpdt.showbox)); - } - } - else - rt_kprintf("Bad filename!"); -} - -void demo_image_zoom_in(struct rtgui_object* object, struct rtgui_event* event) -{ - rtgui_button_t *button = RTGUI_BUTTON(object); - - if (bmpdt.image == RT_NULL) return; - - if (bmpdt.scale > 0.45) - { /* 更新缩放倍率 */ - if (bmpdt.scale > 1.0) bmpdt.scale -= (float)0.5; - else bmpdt.scale -= (float)0.1; - } - /* 根据缩放倍率, 缩放原始图形, 并得到新图形的指针 */ - bmpdt.showimg = rtgui_image_zoom(bmpdt.image, bmpdt.scale, bmpdt.scale, RTGUI_IMG_ZOOM_BILINEAR); - if (bmpdt.showimg != RT_NULL) - rtgui_widget_update(RTGUI_WIDGET(bmpdt.showbox)); - else - return; - if(bmpdt.showimg != bmpdt.image) - { /* 释放掉新图形所用的资源 */ - rtgui_image_destroy(bmpdt.showimg); - bmpdt.showimg = RT_NULL; - } -} - -void demo_image_zoom_out(struct rtgui_object* object, struct rtgui_event* event) -{ - rtgui_button_t *button = RTGUI_BUTTON(object); - - if (bmpdt.image == RT_NULL) return; - - if (bmpdt.scale < 4.95) - { /* 更新缩放倍率 */ - if (bmpdt.scale > 0.95) bmpdt.scale += (float)0.5; - else bmpdt.scale += (float)0.1; - } - - bmpdt.showimg = rtgui_image_zoom(bmpdt.image, bmpdt.scale, bmpdt.scale, RTGUI_IMG_ZOOM_BILINEAR); - if (bmpdt.showimg != RT_NULL) - rtgui_widget_update(RTGUI_WIDGET(bmpdt.showbox)); - else - return; - if(bmpdt.showimg != bmpdt.image) - { - rtgui_image_destroy(bmpdt.showimg); - bmpdt.showimg = RT_NULL; - } -} - -void demo_image_rotate(struct rtgui_object* object, struct rtgui_event* event) -{ - rtgui_button_t *button = RTGUI_BUTTON(object); - - if (bmpdt.image == RT_NULL) return; - /* 更新图像旋转角度 */ - if (bmpdt.angle < 360.0) - bmpdt.angle += (float)1.0; - else - bmpdt.angle = 0.0; - /* 调用旋转函数执行旋转, 并取得一个新的图像指针 */ - bmpdt.showimg = rtgui_image_rotate(bmpdt.image, bmpdt.angle); - if (bmpdt.showimg != RT_NULL) - rtgui_widget_update(RTGUI_WIDGET(bmpdt.showbox)); - else - return; - if(bmpdt.showimg != bmpdt.image) - { - rtgui_image_destroy(bmpdt.showimg); - bmpdt.showimg = RT_NULL; - } -} - -rtgui_container_t *demo_view_bmp(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container, *showbox; - rtgui_button_t *button; - rtgui_textbox_t *box; - /* 用bmpdt结构体记录一些参数 */ - rt_memset(&bmpdt, 0, sizeof(struct demo_bmp_dt)); - bmpdt.scale = 1.0; - bmpdt.angle = 0.0; - /* 创建用于演示本代码的容器控件 */ - container = demo_view("Bmp File:"); - - demo_view_get_rect(container, &rect); - rect.x1 += 85; - rect.x2 -= 5; - rect.y1 -= 42; - rect.y2 = rect.y1 + 20; - box = rtgui_textbox_create("", RTGUI_TEXTBOX_SINGLE); - rtgui_widget_set_rect(RTGUI_WIDGET(box), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(box)); - bmpdt.box = box; - /* create a button "open" */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 60; - rect.y1 -= 10; - rect.y2 = rect.y1 + 24; - button = rtgui_button_create("open"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, demo_bitmap_open); - - /* create a button "zoom in" */ - demo_view_get_rect(container, &rect); - rect.x1 += 85; - rect.x2 = rect.x1 + 70; - rect.y1 -= 10; - rect.y2 = rect.y1 + 24; - button = rtgui_button_create("zoom in"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, demo_image_zoom_in); - - /* create a button "zoom out" */ - demo_view_get_rect(container, &rect); - rect.x1 += 165; - rect.x2 = rect.x1 + 70; - rect.y1 -= 10; - rect.y2 = rect.y1 + 24; - button = rtgui_button_create("zoom out"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, demo_image_zoom_out); - - /* create a button "rotate" */ - demo_view_get_rect(container, &rect); - rect.x1 += 245; - rect.x2 = rect.x1 + 70; - rect.y1 -= 10; - rect.y2 = rect.y1 + 24; - button = rtgui_button_create("rotate"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, demo_image_rotate); - - /* create a container "showbox" */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 20; - rect.y2 -= 0; - showbox = rtgui_container_create(); - rtgui_widget_set_rect(RTGUI_WIDGET(showbox), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(showbox)); - rtgui_widget_set_border(RTGUI_WIDGET(showbox), RTGUI_BORDER_SIMPLE); - bmpdt.showbox = showbox; - rtgui_object_set_event_handler(RTGUI_OBJECT(showbox), demo_bitmap_showbox); - rtgui_widget_get_rect(RTGUI_WIDGET(showbox), &bmpdt.lastrect); - rtgui_rect_inflate(&bmpdt.lastrect, -RTGUI_WIDGET_BORDER(showbox)); - - return container; -} -#endif diff --git a/examples/gui/demo_view_box.c b/examples/gui/demo_view_box.c deleted file mode 100644 index 51e264aefe..0000000000 --- a/examples/gui/demo_view_box.c +++ /dev/null @@ -1,44 +0,0 @@ -#include "demo_view.h" -#include -#include -#include -#include - -rtgui_container_t *demo_view_box(void) -{ - rtgui_rect_t rect; - rtgui_container_t *view; - struct rtgui_panel *panel; - struct rtgui_box *box; - - struct rtgui_label *label; - struct rtgui_button *button; - - view = demo_view("Box View"); - demo_view_get_rect(view, &rect); - - panel = rtgui_panel_create(RTGUI_BORDER_NONE); - rtgui_widget_set_rect(RTGUI_WIDGET(panel), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(panel)); - - box = rtgui_box_create(RTGUI_VERTICAL, 5); - rtgui_container_set_box(RTGUI_CONTAINER(panel), box); - - label = rtgui_label_create("label 1"); - rtgui_container_add_child(RTGUI_CONTAINER(panel), RTGUI_WIDGET(label)); - label = rtgui_label_create("label 2"); - rtgui_container_add_child(RTGUI_CONTAINER(panel), RTGUI_WIDGET(label)); - - button = rtgui_button_create("button 1"); - rtgui_container_add_child(RTGUI_CONTAINER(panel), RTGUI_WIDGET(button)); - - button = rtgui_button_create("button 2"); - rtgui_container_add_child(RTGUI_CONTAINER(panel), RTGUI_WIDGET(button)); - rtgui_widget_set_minheight(RTGUI_WIDGET(button), 25); - RTGUI_WIDGET_ALIGN(button) = RTGUI_ALIGN_EXPAND; - - rtgui_container_layout(RTGUI_CONTAINER(panel)); - - return view; -} - diff --git a/examples/gui/demo_view_buffer_animation.c b/examples/gui/demo_view_buffer_animation.c deleted file mode 100644 index 6f17feaea0..0000000000 --- a/examples/gui/demo_view_buffer_animation.c +++ /dev/null @@ -1,157 +0,0 @@ -#include -#include -#include -#include "demo_view.h" - -/* - * 直接在DC上绘图以实现动画效果 - * - * 动画是依赖于定时器驱动的,会上下翻滚显示文字 - * "飞线乱飞" - */ -static rt_int8_t dx = 1, dy = 1; -static rtgui_rect_t text_rect; -static rtgui_timer_t *timer; -static struct rtgui_dc *dc_buffer; -static void timeout(struct rtgui_timer *timer, void *parameter) -{ - struct rtgui_dc *dc; - rtgui_rect_t rect; - rtgui_widget_t *widget; - - /* 控件(view)通过parameter参数传递给定时器 */ - widget = (rtgui_widget_t *)parameter; - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return ; - - /* 获得demo view允许绘图的区域,主要用于判断边界 */ - demo_view_get_logic_rect(RTGUI_CONTAINER(widget), &rect); - rect.y2 -= 5; - - /* 判断是否是第一次绘图 */ - if ((text_rect.x1 == 0) && (text_rect.y1 == 0)) - { - rtgui_rect_moveto(&text_rect, rect.x1, rect.y1); - } - - /* 设置dx和dy */ - if (text_rect.x2 >= rect.x2) dx = -1; - if (text_rect.x1 < rect.x1) dx = 1; - if (text_rect.y2 >= rect.y2) dy = -1; - if (text_rect.y1 < rect.y1) dy = 1; - - /* 移动文本框的位置 */ - text_rect.x1 += dx; - text_rect.x2 += dx; - text_rect.y1 += dy; - text_rect.y2 += dy; - - /* 绘图 */ - rect = text_rect; - rect.x2 += 2; - rect.y2 += 2; - rtgui_dc_blit(dc_buffer, NULL, dc, &rect); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); -} - -static rt_bool_t animation_on_show(struct rtgui_object *object, struct rtgui_event *event) -{ - rt_kprintf("buffer animation on show\n"); - rtgui_timer_start(timer); - - return RT_TRUE; -} - -static rt_bool_t animation_on_hide(struct rtgui_object *object, struct rtgui_event *event) -{ - rt_kprintf("buffer animation on hide\n"); - rtgui_timer_stop(timer); - - return RT_TRUE; -} - -static rt_bool_t animation_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_widget *widget = RTGUI_WIDGET(object); - - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc *dc; - rtgui_rect_t rect; - - /* 因为用的是demo view,上面本身有一部分控件,所以在绘图时先要让demo view先绘图 */ - rtgui_container_event_handler(object, event); - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return RT_FALSE; - - /* 获得demo view允许绘图的区域 */ - demo_view_get_logic_rect(RTGUI_CONTAINER(widget), &rect); - - /* 绘图 */ - rect = text_rect; - rtgui_rect_inflate(&rect, +1); - rtgui_dc_blit(dc_buffer, NULL, dc, &rect); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else if (event->type == RTGUI_EVENT_SHOW) - { - rtgui_container_event_handler(object, event); - animation_on_show(object, event); - } - else if (event->type == RTGUI_EVENT_HIDE) - { - rtgui_container_event_handler(object, event); - animation_on_hide(object, event); - } - else - { - /* 调用默认的事件处理函数 */ - return rtgui_container_event_handler(object, event); - } - - return RT_FALSE; -} - -struct rtgui_container *demo_view_buffer_animation(void) -{ - struct rtgui_container *container; - - container = demo_view("DC 缓冲区动画"); - if (container != RT_NULL) - rtgui_object_set_event_handler(RTGUI_OBJECT(container), animation_event_handler); - - rtgui_font_get_metrics(RTGUI_WIDGET_FONT(container), "缓冲动画", &text_rect); - if (dc_buffer == RT_NULL) - { - rtgui_rect_t rect; - - rect.x1 = 0; - rect.x2 = rtgui_rect_width(text_rect) + 2; - rect.y1 = 0; - rect.y2 = rtgui_rect_height(text_rect) + 2; - - /* 创建 DC Buffer,长 50,宽 50 */ - dc_buffer = rtgui_dc_buffer_create(rtgui_rect_width(rect), rtgui_rect_height(rect)); - RTGUI_DC_FC(dc_buffer) = RTGUI_WIDGET_BACKGROUND(container); - rtgui_dc_fill_rect(dc_buffer, &rect); - RTGUI_DC_FC(dc_buffer) = black; - rect.x1 = 1; - rect.y1 = 1; - rtgui_dc_draw_text(dc_buffer, "缓冲动画", &rect); - } - - /* 启动定时器以触发动画 */ - timer = rtgui_timer_create(1, RT_TIMER_FLAG_PERIODIC, timeout, (void *)container); - - return container; -} diff --git a/examples/gui/demo_view_button.c b/examples/gui/demo_view_button.c deleted file mode 100644 index 2fc73727bb..0000000000 --- a/examples/gui/demo_view_button.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 程序清单:button控件演示 - * - * 这个例子会在创建出的container上添加几个不同类型的button控件 - */ - -#include "demo_view.h" -#include - -/* 创建用于演示button控件的视图 */ -rtgui_container_t *demo_view_button(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_button_t *button; - rtgui_font_t *font; - - /* 先创建一个演示用的视图 */ - container = demo_view("Button View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建一个button控件 */ - button = rtgui_button_create("Red"); - /* 设置label控件的前景色为红色 */ - RTGUI_WIDGET_FOREGROUND(button) = red; - /* 设置button的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个button控件 */ - button = rtgui_button_create("Blue"); - /* 设置label控件的前景色为蓝色 */ - RTGUI_WIDGET_FOREGROUND(button) = blue; - /* 设置button的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个button控件 */ - button = rtgui_button_create("12 font"); - /* 设置字体为12点阵的asc字体 */ - font = rtgui_font_refer("asc", 12); - RTGUI_WIDGET_FONT(button) = font; - /* 设置button的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个button控件 */ - button = rtgui_button_create("16 font"); - /* 设置字体为16点阵的asc字体 */ - font = rtgui_font_refer("asc", 16); - RTGUI_WIDGET_FONT(button) = font; - /* 设置button的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - - return container; -} diff --git a/examples/gui/demo_view_checkbox.c b/examples/gui/demo_view_checkbox.c deleted file mode 100644 index 0dc3c751dc..0000000000 --- a/examples/gui/demo_view_checkbox.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 程序清单:checkbox控件演示 - * - * 这个例子会在创建出的container上添加几个checkbox控件 - */ - -#include "demo_view.h" -#include - -/* 创建用于演示checkbox控件的视图 */ -rtgui_container_t *demo_view_checkbox(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_checkbox_t *checkbox; - rtgui_font_t *font; - - /* 先创建一个演示用的视图 */ - container = demo_view("CheckBox View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建一个checkbox控件 */ - checkbox = rtgui_checkbox_create("Red", RT_TRUE); - /* 设置前景色为红色 */ - RTGUI_WIDGET_FOREGROUND(checkbox) = red; - /* 设置checkbox的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(checkbox), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(checkbox)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个checkbox控件 */ - checkbox = rtgui_checkbox_create("Blue", RT_TRUE); - /* 设置前景色为蓝色 */ - RTGUI_WIDGET_FOREGROUND(checkbox) = blue; - /* 设置checkbox的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(checkbox), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(checkbox)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个checkbox控件 */ - checkbox = rtgui_checkbox_create("12 font", RT_TRUE); - /* 设置字体为12点阵 */ - font = rtgui_font_refer("asc", 12); - RTGUI_WIDGET_FONT(checkbox) = font; - /* 设置checkbox的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(checkbox), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(checkbox)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个checkbox控件 */ - checkbox = rtgui_checkbox_create("16 font", RT_TRUE); - /* 设置字体为16点阵 */ - font = rtgui_font_refer("asc", 16); - RTGUI_WIDGET_FONT(checkbox) = font; - /* 设置checkbox的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(checkbox), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(checkbox)); - - return container; -} diff --git a/examples/gui/demo_view_combobox.c b/examples/gui/demo_view_combobox.c deleted file mode 100644 index 4d57a175e0..0000000000 --- a/examples/gui/demo_view_combobox.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 程序清单:label控件演示 - * - * 这个例子会在创建出的container上添加几个不同类型的label控件 - */ -#include "demo_view.h" -#include - -struct rtgui_listbox_item items[] = -{ - {"item 1", RT_NULL}, - {"item 2", RT_NULL}, - {"item 3", RT_NULL}, - {"item 4", RT_NULL}, - {"item 5", RT_NULL}, -}; - -/* 创建用于演示combobox控件的视图 */ -rtgui_container_t *demo_view_combobox(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_combobox_t *box; - - /* 先创建一个演示用的视图 */ - container = demo_view("ComboBox View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - box = rtgui_combobox_create(items, sizeof(items) / sizeof(items[0]), &rect); - /* container是一个container控件,调用add_child方法添加这个box控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(box)); - - return container; -} diff --git a/examples/gui/demo_view_dc.c b/examples/gui/demo_view_dc.c deleted file mode 100644 index 695f3e6ab3..0000000000 --- a/examples/gui/demo_view_dc.c +++ /dev/null @@ -1,194 +0,0 @@ -/* - * 程序清单:DC操作演示 - * - * 这个例子会在创建出的view上进行DC操作的演示 - */ - -#include "demo_view.h" -#include -#include -#include -#include -#include - -#include "play.hdh" -#include "stop.hdh" -struct rtgui_image_hdcmm play_image = RTGUI_IMAGE_HDC_DEF(2, 0x1c, 0x16, play_hdh); -struct rtgui_image_hdcmm stop_image = RTGUI_IMAGE_HDC_DEF(2, 0x1c, 0x16, stop_hdh); - -/* - * view的事件处理函数 - */ -rt_bool_t dc_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_widget *widget = RTGUI_WIDGET(object); - - /* 仅对PAINT事件进行处理 */ - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc *dc; - rtgui_rect_t rect; - const int vx[] = {20, 50, 60, 45, 60, 20}; - const int vy[] = {150, 50, 90, 60, 45, 50}; - - /* - * 因为用的是demo view,上面本身有一部分控件,所以在绘图时先要让demo view - * 先绘图 - */ - rtgui_container_event_handler(RTGUI_OBJECT(widget), event); - - /************************************************************************/ - /* 下面的是DC的操作 */ - /************************************************************************/ - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - if (dc == RT_NULL) - return RT_FALSE; - - /* 获得demo view允许绘图的区域 */ - demo_view_get_logic_rect(RTGUI_CONTAINER(widget), &rect); - - RTGUI_DC_TEXTALIGN(dc) = RTGUI_ALIGN_BOTTOM | RTGUI_ALIGN_CENTER_HORIZONTAL; - /* 显示GUI的版本信息 */ -#ifdef RTGUI_USING_SMALL_SIZE - rtgui_dc_draw_text(dc, "RT-Thread/GUI小型版本", &rect); -#else - rtgui_dc_draw_text(dc, "RT-Thread/GUI标准版本", &rect); -#endif - - { - rtgui_rect_t rect = {0, 0, 0x1c, 0x16}; - rtgui_rect_moveto(&rect, 80, 80); - rtgui_image_blit((rtgui_image_t *)&play_image, dc, &rect); - - rect.x1 = 0; - rect.y1 = 0; - rect.x2 = 0x1c; - rect.y2 = 0x16; - rtgui_rect_moveto(&rect, 130, 80); - rtgui_image_blit((rtgui_image_t *)&stop_image, dc, &rect); - } - /* 绘制一个圆形 */ - RTGUI_DC_FC(dc) = red; - rtgui_dc_draw_circle(dc, rect.x1 + 10, rect.y1 + 10, 10); - - /* 填充一个圆形 */ - RTGUI_DC_FC(dc) = green; - rtgui_dc_fill_circle(dc, rect.x1 + 30, rect.y1 + 10, 10); -#if 0 - /* 画一个圆角矩形 */ - rect.x1 = 150; - rect.y1 = 180; - rect.x2 = 210; - rect.y2 = 260; - RTGUI_DC_FC(dc) = RTGUI_RGB(25, 70, 150); - rtgui_dc_draw_round_rect(dc, &rect, 10); - - rect.x1 = 160; - rect.y1 = 190; - rect.x2 = 200; - rect.y2 = 250; - RTGUI_DC_FC(dc) = RTGUI_RGB(170, 7, 80); - rtgui_dc_fill_round_rect(dc, &rect, 7); - - /* 画一个圆弧 */ - RTGUI_DC_FC(dc) = RTGUI_RGB(250, 120, 120); - rtgui_dc_draw_arc(dc, rect.x1 + 120, rect.y1 + 60, 30, 0, 120); - - /* 画一个扇形圆环 */ - RTGUI_DC_FC(dc) = RTGUI_RGB(150, 23, 100); - rtgui_dc_draw_annulus(dc, 180, 170, 30, 50, 210, 330); - - /* 多边形 */ - RTGUI_DC_FC(dc) = blue; - rtgui_dc_draw_polygon(dc, vx, vy, 6); - -#endif - RTGUI_DC_FC(dc) = blue; - - /* 绘制不同的边框 */ - { - rtgui_rect_t rect = {0, 0, 16, 16}; - rtgui_rect_moveto(&rect, 30, 120); - - rtgui_dc_draw_border(dc, &rect, RTGUI_BORDER_RAISE); - rect.x1 += 20; - rect.x2 += 20 + 50; - rtgui_dc_draw_text(dc, "raise", &rect); - rect.x1 -= 20; - rect.x2 -= 20 + 50; - rect.y1 += 20; - rect.y2 += 20; - - rtgui_dc_draw_border(dc, &rect, RTGUI_BORDER_SIMPLE); - rect.x1 += 20; - rect.x2 += 20 + 50; - rtgui_dc_draw_text(dc, "simple", &rect); - rect.x1 -= 20; - rect.x2 -= 20 + 50; - rect.y1 += 20; - rect.y2 += 20; - - rtgui_dc_draw_border(dc, &rect, RTGUI_BORDER_SUNKEN); - rect.x1 += 20; - rect.x2 += 20 + 50; - rtgui_dc_draw_text(dc, "sunken", &rect); - rect.x1 -= 20; - rect.x2 -= 20 + 50; - rect.y1 += 20; - rect.y2 += 20; - - rtgui_dc_draw_border(dc, &rect, RTGUI_BORDER_BOX); - rect.x1 += 20; - rect.x2 += 20 + 50; - rtgui_dc_draw_text(dc, "box", &rect); - rect.x1 -= 20; - rect.x2 -= 20 + 50; - rect.y1 += 20; - rect.y2 += 20; - - rtgui_dc_draw_border(dc, &rect, RTGUI_BORDER_STATIC); - rect.x1 += 20; - rect.x2 += 20 + 50; - rtgui_dc_draw_text(dc, "static", &rect); - rect.x1 -= 20; - rect.x2 -= 20 + 50; - rect.y1 += 20; - rect.y2 += 20; - - rtgui_dc_draw_border(dc, &rect, RTGUI_BORDER_EXTRA); - rect.x1 += 20; - rect.x2 += 20 + 50; - rtgui_dc_draw_text(dc, "extera", &rect); - rect.x1 -= 20; - rect.x2 -= 20 + 50; - rect.y1 += 20; - rect.y2 += 20; - } - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else - { - /* 其他事件,调用默认的事件处理函数 */ - return rtgui_container_event_handler(object, event); - } - - return RT_FALSE; -} - -/* 创建用于DC操作演示用的视图 */ -rtgui_container_t *demo_view_dc(void) -{ - rtgui_container_t *view; - - view = demo_view("DC Demo"); - if (view != RT_NULL) - /* 设置成自己的事件处理函数 */ - rtgui_object_set_event_handler(RTGUI_OBJECT(view), dc_event_handler); - - return view; -} diff --git a/examples/gui/demo_view_dc_buffer.c b/examples/gui/demo_view_dc_buffer.c deleted file mode 100644 index b8ba4a5ca6..0000000000 --- a/examples/gui/demo_view_dc_buffer.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * 程序清单:DC Buffer演示 - * - * 这个例子会在创建出的view上进行DC Buffer的演示 - */ - -#include "demo_view.h" -#include -#include -#include -#include - - -/* - * view的事件处理函数 - */ -static rt_bool_t dc_buffer_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_widget *widget = RTGUI_WIDGET(object); - struct rtgui_dc *dc_buffer; - - /* 仅对PAINT事件进行处理 */ - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc *dc; - rtgui_rect_t rect; - - /* - * 因为用的是demo view,上面本身有一部分控件,所以在绘图时先要让demo view - * 先绘图 - */ - rtgui_container_event_handler(object, event); - dc_buffer = (struct rtgui_dc*)widget->user_data; - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - if (dc == RT_NULL) - return RT_FALSE; - - /* 获得demo view允许绘图的区域 */ - demo_view_get_logic_rect(RTGUI_CONTAINER(widget), &rect); - - rect.x1 += 10; - rect.y1 += 10; - rtgui_dc_blit(dc_buffer, NULL, dc, &rect); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else - { - /* 其他事件,调用默认的事件处理函数 */ - return rtgui_container_event_handler(object, event); - } - - return RT_FALSE; -} - -/* 创建用于DC Buffer操作演示用的视图 */ -rtgui_container_t *demo_view_dc_buffer() -{ - rtgui_container_t *view; - struct rtgui_dc *dc_buffer=RT_NULL; - - if (dc_buffer == RT_NULL) - { - rtgui_rect_t rect = {0, 0, 50, 50}; - - /* 创建 DC Buffer,长 50,宽 50 */ - dc_buffer = rtgui_dc_buffer_create(50, 50); - RTGUI_DC_BC(dc_buffer) = blue; - rtgui_dc_fill_rect(dc_buffer, &rect); - - RTGUI_DC_FC(dc_buffer) = red; - rtgui_dc_draw_circle(dc_buffer, 25, 25, 10); - } - - view = demo_view("缓冲DC演示"); - if (view != RT_NULL) - /* 设置成自己的事件处理函数 */ - rtgui_object_set_event_handler(RTGUI_OBJECT(view), dc_buffer_event_handler); - RTGUI_WIDGET(view)->user_data = (rt_uint32_t)dc_buffer; - - return view; -} diff --git a/examples/gui/demo_view_digtube.c b/examples/gui/demo_view_digtube.c deleted file mode 100644 index cff1d34f5e..0000000000 --- a/examples/gui/demo_view_digtube.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "demo_view.h" -#include - -/* digit tube codes: "ERROR" */ -static char digitbuf[5] = {0x79, 0x77, 0x77, 0x3F, 0x77}; - -rtgui_container_t * demo_view_digtube(void) -{ - struct rtgui_rect rect; - rtgui_container_t *container; - struct rtgui_digtube * digtube; - struct rtgui_digitfont digitfont; - - container = demo_view("Digit Tube View"); - /* add digtube 1: use the default digit font */ - digtube = rtgui_digtube_create(RT_NULL, 5, (void *)4213, 0); - rtgui_container_add_child(container, RTGUI_WIDGET(digtube)); - - demo_view_get_rect(container, &rect); - rect.y2 = rect.y1 + 80; - rtgui_widget_set_rect(RTGUI_WIDGET(digtube), &rect); - - /* add digtube 2: show hex */ - digitfont.seg1_len = 20; - digitfont.seg1_hspace = 4; - digitfont.seg1_nr = 3; - digitfont.seg2_len = 20; - digitfont.seg3_len = 20; - digitfont.seg1_vspace = 1; - digitfont.data = RT_NULL; - - digtube = rtgui_digtube_create(&digitfont, 5, (void *)0xABC, RTGUI_DIGTUBE_STYLE_NOBACKFONT | RTGUI_DIGTUBE_STYLE_DISHEXNUM); - rtgui_container_add_child(container, RTGUI_WIDGET(digtube)); - rect.y1 = rect.y2 + 10;; - rect.y2 = rect.y1 + 60; - rtgui_widget_set_rect(RTGUI_WIDGET(digtube), &rect); - - /* add digtube 3: show custom codes table */ - digitfont.seg1_len = 25; - digitfont.seg1_hspace = 5; - digitfont.seg1_nr = 5; - digitfont.seg2_len = 25; - digitfont.seg3_len = 25; - digitfont.seg1_vspace = 1; - digitfont.data = RT_NULL; - digtube = rtgui_digtube_create(&digitfont, 5, (void *)digitbuf, RTGUI_DIGTUBE_STYLE_DISCODES); - rtgui_container_add_child(container, RTGUI_WIDGET(digtube)); - rect.y1 = rect.y2 + 5; - rect.y2 = rect.y1 + 80; - rtgui_widget_set_rect(RTGUI_WIDGET(digtube), &rect); - RTGUI_WIDGET_BACKGROUND(digtube) = RTGUI_RGB(0x00, 0x00, 0x00); - RTGUI_WIDGET_FOREGROUND(digtube) = RTGUI_RGB(0x00, 0xFF, 0x00); - digtube->digit_bc = RTGUI_RGB(0x00, 0xFF, 0xFF); - - return container; -} \ No newline at end of file diff --git a/examples/gui/demo_view_edit.c b/examples/gui/demo_view_edit.c deleted file mode 100644 index fd3f81e949..0000000000 --- a/examples/gui/demo_view_edit.c +++ /dev/null @@ -1,182 +0,0 @@ -/* - * 程序清单:edit控件演示 - * - * 这个例子会在conatiner上进行edit控件的演示 - */ - -#include "demo_view.h" -#include -#include -#include -#include -#include -#include - -#ifdef RTGUI_USING_DFS_FILERW -void demo_edit_readin_file(struct rtgui_object *object, struct rtgui_event *event) -{ - rtgui_button_t *button; - struct rtgui_edit *edit; - const char *filename = "/test_readin.txt"; - struct rtgui_filerw *file; - - RT_ASSERT(object != RT_NULL); - button = RTGUI_BUTTON(object); - /* 取得edit指针 */ - edit = RTGUI_EDIT(RTGUI_WIDGET(button)->user_data); - - /* 判断文件是否存在 */ - file = rtgui_filerw_create_file(filename, "rb"); - if (file == RT_NULL) - { - /* 不存在存在,则创建它 */ - rt_kprintf("file:\"%s\" does not exist!\n", filename); - - return; - } - rtgui_filerw_close(file); - - rt_kprintf("read-in file:\"%s\"\n", filename); - rtgui_edit_readin_file(edit, filename); -} - -void demo_edit_saveas_file(struct rtgui_object *object, struct rtgui_event *event) -{ - rtgui_button_t *button; - struct rtgui_edit *edit; - const char* filename = "/test_saveas.txt"; - struct rtgui_filerw *file; - - RT_ASSERT(object != RT_NULL); - button = RTGUI_BUTTON(object); - /* 取得edit指针 */ - edit = RTGUI_EDIT(RTGUI_WIDGET(button)->user_data); - - /* 判断文件是否存在, 如果存在则删除之 */ - file = rtgui_filerw_create_file(filename, "rb"); - if (file != RT_NULL) - { - rtgui_filerw_close(file); - /* 如果是在win32中调试, 请手工删除该文件吧, NT中文件是只读的,unlink删除不掉 */ - if (rtgui_filerw_unlink(filename) == -1) - rt_kprintf("Could not delete %s\n", filename); - } - - rt_kprintf("save as file:\"%s\"\n", filename); - rtgui_edit_saveas_file(edit, filename); -} - -void demo_edit_get_mem(struct rtgui_object* object, struct rtgui_event* event) -{ - rtgui_button_t *button; - struct rtgui_edit *edit; - - RT_ASSERT(object != RT_NULL); - - button = RTGUI_BUTTON(object); - edit = RTGUI_EDIT( RTGUI_WIDGET(button)->user_data ); - rt_kprintf("edit mem consume: %d\n", rtgui_edit_get_mem_consume(edit)); -} - -rt_bool_t demo_edit_event_handler(struct rtgui_object* object, struct rtgui_event *event) -{ - rt_bool_t result; - char buf[32]; - rtgui_point_t p; - struct rtgui_edit *edit = RTGUI_EDIT(object); - struct rtgui_label *label = (struct rtgui_label*)RTGUI_WIDGET(edit)->user_data; - - result = rtgui_edit_event_handler(object, event); - - p = rtgui_edit_get_current_point(edit); - rt_sprintf(buf, "TRACK: line:%d, col:%d", p.y, p.x); - rtgui_label_set_text(label, buf); - - return result; -} - -/* 创建用于演示edit控件的视图 */ -rtgui_container_t *demo_view_edit(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - struct rtgui_edit *edit; - struct rtgui_label *label; - struct rtgui_button *button; - - /* 先创建一个演示用的视图 */ - container = demo_view("Edit View"); - - edit = rtgui_edit_create(container, 10, 35, 220, 200); - rtgui_edit_set_text(edit, - "Edit beta v0.1\n" - "Hello RT-Thread\n" - "this's edit demo\n" - "rtgui_edit_create\n" - "rtgui_edit_append_line\n" - "rtgui_edit_insert_line\n" - "rtgui_edit_delete_line\n" - "rtgui_edit_connect_line\n" - "双字节测试\n" - "a\n" - "b\n" - "c\n" - "d\n" - "1234567890\n"); - - /* 创建一个按钮, 读取某个文件 */ - demo_view_get_rect(container, &rect); - rect.x1 += 10; - rect.x2 = rect.x1 + 100; - rect.y1 += 200; - rect.y2 = rect.y1 + 22; - button = rtgui_button_create("ReadIn File"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, demo_edit_readin_file); - /* 使用user_data传递edit指针 */ - RTGUI_WIDGET(button)->user_data = (rt_uint32_t)edit; - - /* 创建一个按钮, 保存为某个文件 */ - demo_view_get_rect(container, &rect); - rect.x1 += 130; - rect.x2 = rect.x1 + 100; - rect.y1 += 200; - rect.y2 = rect.y1 + 22; - button = rtgui_button_create("SaveAs File"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, demo_edit_saveas_file); - /* 使用user_data传递edit指针 */ - RTGUI_WIDGET(button)->user_data = (rt_uint32_t)edit; - - /* 创建一个标签, 显示EDIT的主要参数 */ - demo_view_get_rect(container, &rect); - rect.x1 += 10; - rect.x2 = rect.x1 + 220; - rect.y1 += 225; - rect.y2 = rect.y1 + 18; - label = rtgui_label_create("TRACK:"); - RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_LEFT | RTGUI_ALIGN_CENTER_VERTICAL; - RTGUI_WIDGET_FOREGROUND(label) = blue; - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - RTGUI_WIDGET(edit)->user_data = (rt_uint32_t)label; - rtgui_object_set_event_handler(RTGUI_OBJECT(edit), demo_edit_event_handler); - - /* 创建一个按钮, 读取EDIT的内存消耗 */ - demo_view_get_rect(container, &rect); - rect.x1 += 150; - rect.x2 = rect.x1 + 80; - rect.y1 -= 42; - rect.y2 = rect.y1 + 20; - button = rtgui_button_create("Get Mem"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, demo_edit_get_mem); - RTGUI_WIDGET(button)->user_data = (rt_uint32_t)edit; - - return container; -} -#endif diff --git a/examples/gui/demo_view_image.c b/examples/gui/demo_view_image.c deleted file mode 100644 index b4dc923192..0000000000 --- a/examples/gui/demo_view_image.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * 程序清单:DC上显示图像演示 - * - * 这个例子会在创建出的container上显示图像 - */ - -#include "demo_view.h" -#include -#include -#include - -static rtgui_image_t *image = RT_NULL; -static rtgui_container_t *_container = RT_NULL; - -#if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW) -/* 打开按钮的回调函数 */ -static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event) -{ - rtgui_filelist_view_t *filelist; - struct rtgui_rect rect = {0, 100, 240, 280}; - - /* WIN32平台上和真实设备上的初始路径处理 */ -#ifdef _WIN32 - filelist = rtgui_filelist_view_create("e:\\", "*.*", &rect); -#else - filelist = rtgui_filelist_view_create("/", "*.*", &rect); -#endif - /* 模态显示一个文件列表视图,以提供给用户选择图像文件 */ - if (rtgui_widget_show(RTGUI_WIDGET(filelist), RT_TRUE) == RTGUI_MODAL_OK) - { - char path[32], image_type[8]; - - /* 设置文件路径的标签 */ - rtgui_filelist_view_get_fullpath(filelist, path, sizeof(path)); - if (image != RT_NULL) - { - rtgui_image_destroy(image); - image = RT_NULL; - } - - rt_memset(image_type, 0, sizeof(image_type)); - - /* 获得图像的类型 */ - if (rt_strstr(path, ".bmp") != RT_NULL || - rt_strstr(path, ".BMP") != RT_NULL) - strcat(image_type, "bmp"); - if (rt_strstr(path, ".png") != RT_NULL || - rt_strstr(path, ".PNG") != RT_NULL) - strcat(image_type, "png"); - if (rt_strstr(path, ".jpg") != RT_NULL || - rt_strstr(path, ".JPG") != RT_NULL) - strcat(image_type, "jpeg"); - if (rt_strstr(path, ".hdc") != RT_NULL || - rt_strstr(path, ".HDC") != RT_NULL) - strcat(image_type, "hdc"); - - /* 如果图像文件有效,创建相应的rtgui_image对象 */ - if (image_type[0] != '\0') - image = rtgui_image_create_from_file(image_type, path, RT_TRUE); - } - - /* 删除 文件列表 视图 */ - rtgui_container_destroy(RTGUI_CONTAINER(filelist)); - rtgui_container_show(_container, RT_FALSE); -} - -/* 演示视图的事件处理函数 */ -static rt_bool_t demo_view_event_handler(rtgui_widget_t *widget, rtgui_event_t *event) -{ - rt_bool_t result; - - /* 先调用默认的事件处理函数(这里只关心PAINT事件,但演示视图还有本身的一些控件) */ - result = rtgui_container_event_handler(widget, event); - - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc *dc; - rtgui_rect_t rect; - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return RT_FALSE; - - /* 获得demo container允许绘图的区域 */ - demo_view_get_rect(RTGUI_CONTAINER(widget), &rect); - - /* 获得图像显示区域 */ - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 30; - - if (image != RT_NULL) - rtgui_image_blit(image, dc, &rect); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - - return result; -} - -/* 创建用于显示图像的演示视图 */ -rtgui_container_t *demo_view_image(void) -{ - rtgui_rect_t rect; - rtgui_button_t *open_btn; - - /* 先创建一个演示视图 */ - _container = demo_view("图像演示"); - if (_container != RT_NULL) - /* 设置默认的事件处理函数到demo_view_event_handler函数 */ - rtgui_object_set_event_handler(RTGUI_WIDGET(_container), demo_view_event_handler); - - /* 添加一个按钮 */ - demo_view_get_rect(_container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 120; - rect.y2 = rect.y1 + 20; - open_btn = rtgui_button_create("打开图像文件"); - rtgui_container_add_child(RTGUI_CONTAINER(_container), RTGUI_WIDGET(open_btn)); - rtgui_widget_set_rect(RTGUI_WIDGET(open_btn), &rect); - rtgui_button_set_onbutton(open_btn, open_btn_onbutton); - - return _container; -} -#endif diff --git a/examples/gui/demo_view_instrument_panel.c b/examples/gui/demo_view_instrument_panel.c deleted file mode 100644 index 1efe3c85ec..0000000000 --- a/examples/gui/demo_view_instrument_panel.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * 程序清单:DC操作演示 - * - * 这个例子会在创建出的container上进行DC操作的演示 - */ - -#include "demo_view.h" -#include -#include -#include -#include -#include -#include - -/* - * container的事件处理函数 - */ -rt_bool_t instrument_panel_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_widget *widget = RTGUI_WIDGET(object); - char ac[4]; - int i; - int x0 = 120; - int y0 = 170; - int x, y; - int default_color; - - /* 仅对PAINT事件进行处理 */ - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc *dc; - rtgui_rect_t rect; - const int arrowx[] = {120 + 75, 120 + 75, 120 + 85}; - const int arrowy[] = {170 - 5, 170 + 5, 170}; - - /* - * 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container - * 先绘图 - */ - rtgui_container_event_handler(RTGUI_OBJECT(widget), event); - - /************************************************************************/ - /* 下面的是DC的操作 */ - /************************************************************************/ - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - if (dc == RT_NULL) - return RT_FALSE; - - /* 获得demo container允许绘图的区域 */ - demo_view_get_rect(RTGUI_CONTAINER(widget), &rect); - - RTGUI_DC_TEXTALIGN(dc) = RTGUI_ALIGN_BOTTOM | RTGUI_ALIGN_CENTER_HORIZONTAL; - /* 显示GUI的版本信息 */ -#ifdef RTGUI_USING_SMALL_SIZE - rtgui_dc_draw_text(dc, "RT-Thread/GUI小型版本", &rect); -#else - rtgui_dc_draw_text(dc, "RT-Thread/GUI标准版本", &rect); -#endif - - - RTGUI_DC_TEXTALIGN(dc) = RTGUI_ALIGN_CENTER_VERTICAL | RTGUI_ALIGN_CENTER_HORIZONTAL; - RTGUI_DC_FC(dc) = blue; - rect.y2 = 270; - rtgui_dc_draw_text(dc, "rtgui-panel", &rect); - - for (i = 0; i < 6; i++) - { - rtgui_dc_draw_arc(dc, x0, y0, 117 - i, 150, 30); - } - - RTGUI_DC_FC(dc) = black; - - RTGUI_DC_TEXTALIGN(dc) = RTGUI_ALIGN_LEFT; - for (i = 0; i <= 23; i++) - { - if (i < 12) - { - x = x0 + 105 * cos((150 + i * 10) * 3.1415926 / 180); - y = y0 + 105 * sin((150 + i * 10) * 3.1415926 / 180); - rect.x1 = x; - rect.y1 = y; - rect.x2 = rect.x1 + 12 * 3; - rect.y2 = rect.y1 + 12; - rt_sprintf(ac, "%d", 10 * i); - rtgui_dc_draw_text(dc, ac, &rect); - } - else - { - RTGUI_DC_TEXTALIGN(dc) = RTGUI_ALIGN_RIGHT; - - x = x0 + 105 * cos((160 + i * 10) * 3.1415926 / 180); - y = y0 + 105 * sin((160 + i * 10) * 3.1415926 / 180); - - rect.x1 = x - 12 * 3; - rect.y1 = y; - rect.x2 = rect.x1 + 12 * 3; - rect.y2 = rect.y1 + 12; - rt_sprintf(ac, "%d", 10 * i); - rtgui_dc_draw_text(dc, ac, &rect); - } - - x = x0 + 107 * cos((150 + i * 10) * 3.1415926 / 180); - y = y0 + 107 * sin((150 + i * 10) * 3.1415926 / 180); - rtgui_dc_fill_circle(dc, x, y, 3); - } - RTGUI_DC_FC(dc) = RTGUI_RGB(166, 0, 166); - rtgui_dc_fill_circle(dc, x0, y0, 3); - RTGUI_DC_FC(dc) = RTGUI_RGB(120, 141, 30); - rtgui_dc_draw_circle(dc, x0, y0, 5); - - default_color = RTGUI_DC_BC(dc); - RTGUI_DC_BC(dc) = red; - rect.x1 = x0 + 7; - rect.y1 = y0 - 1; - rect.x2 = x0 + 75; - rect.y2 = y0 + 1; - rtgui_dc_fill_rect(dc, &rect); - - RTGUI_DC_BC(dc) = default_color; - - rtgui_dc_fill_polygon(dc, arrowx, arrowy, 3); - - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else - { - /* 其他事件,调用默认的事件处理函数 */ - return rtgui_container_event_handler(RTGUI_OBJECT(widget), event); - } - - return RT_FALSE; -} - -/* 创建用于DC操作演示用的视图 */ -rtgui_container_t *demo_view_instrument_panel(void) -{ - rtgui_container_t *container; - - container = demo_view("instrument panel Demo"); - if (container != RT_NULL) - /* 设置成自己的事件处理函数 */ - rtgui_object_set_event_handler(RTGUI_OBJECT(container), instrument_panel_event_handler); - - return container; -} diff --git a/examples/gui/demo_view_label.c b/examples/gui/demo_view_label.c deleted file mode 100644 index 7355cca648..0000000000 --- a/examples/gui/demo_view_label.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 程序清单:label控件演示 - * - * 这个例子会在创建出的container上添加几个不同类型的label控件 - */ -#include "demo_view.h" -#include - -/* 创建用于演示label控件的视图 */ -rtgui_container_t *demo_view_label(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_label_t *label; - rtgui_font_t *font; - - /* 先创建一个演示用的视图 */ - container = demo_view("Label View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("Red Left"); - /* 设置label控件上的文本对齐方式为:左对齐 */ - RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_LEFT; - /* 设置label控件的前景色为红色 */ - RTGUI_WIDGET_FOREGROUND(label) = red; - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container是一个container控件,调用add_child方法添加这个label控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("Blue Right"); - /* 设置label控件上的文本对齐方式为:右对齐 */ - RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_RIGHT; - /* 设置label控件的前景色为蓝色 */ - RTGUI_WIDGET_FOREGROUND(label) = blue; - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container是一个container控件,调用add_child方法添加这个label控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("Green Center"); - /* 设置label控件的前景色为绿色 */ - RTGUI_WIDGET_FOREGROUND(label) = green; - /* 设置label控件上的文本对齐方式为:右对齐 */ - RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_CENTER_HORIZONTAL; - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container是一个container控件,调用add_child方法添加这个label控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5 + 25 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("12 font"); - /* 设置字体为12点阵的asc字体 */ - font = rtgui_font_refer("asc", 12); - RTGUI_WIDGET_FONT(label) = font; - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container是一个container控件,调用add_child方法添加这个label控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.y1 += 5 + 25 + 25 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("16 font"); - /* 设置字体为16点阵的asc字体 */ - font = rtgui_font_refer("asc", 16); - RTGUI_WIDGET_FONT(label) = font; - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container是一个container控件,调用add_child方法添加这个label控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - return container; -} - diff --git a/examples/gui/demo_view_listbox.c b/examples/gui/demo_view_listbox.c deleted file mode 100644 index 9b7f4ed302..0000000000 --- a/examples/gui/demo_view_listbox.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * 程序清单:label控件演示 - * - * 这个例子会在创建出的container上添加几个不同类型的label控件 - */ -#include "demo_view.h" -#include -#include - -static rtgui_image_t *item_icon = RT_NULL; -static const char *image_xpm[] = -{ - "16 16 106 2", - " c None", - ". c #D0C83F", - "+ c #D0C840", - "@ c #D0C030", - "# c #D0B820", - "$ c #D0B020", - "% c #D0B01F", - "& c #5F571F", - "* c #F0F0C0", - "= c #FFF8D0", - "- c #FFF8C0", - "; c #FFF8B0", - "> c #FFF8A0", - ", c #F0E870", - "' c #707030", - ") c #4F87EF", - "! c #4F78C0", - "~ c #5088E0", - "{ c #5078C0", - "] c #C0D0F0", - "^ c #FFF8E0", - "/ c #FFF090", - "( c #F0E070", - "_ c #6F97D0", - ": c #C0D8FE", - "< c #80A8F0", - "[ c #7088D0", - "} c #B0D0FF", - "| c #90B0F0", - "1 c #1040A0", - "2 c #F0F080", - "3 c #707040", - "4 c #7098F0", - "5 c #3068E0", - "6 c #A0B8F0", - "7 c #4070C0", - "8 c #002880", - "9 c #404040", - "0 c #505050", - "a c #F0F090", - "b c #F0E860", - "c c #F0D860", - "d c #807840", - "e c #2F5FC0", - "f c #1050D0", - "g c #1048B0", - "h c #002870", - "i c #C0C080", - "j c #C0C070", - "k c #F0F070", - "l c #F0E060", - "m c #E0D050", - "n c #00277F", - "o c #00287F", - "p c #1F3F6F", - "q c #1048C0", - "r c #0040B0", - "s c #204080", - "t c #FFF890", - "u c #F0D850", - "v c #E0C840", - "w c #807040", - "x c #A0B06F", - "y c #204880", - "z c #2048A0", - "A c #90A8C0", - "B c #FFF080", - "C c #F0D050", - "D c #C0A830", - "E c #6F682F", - "F c #F0F0A0", - "G c #E0D060", - "H c #B0A040", - "I c #D0B840", - "J c #E0C040", - "K c #D0B030", - "L c #706820", - "M c #5F581F", - "N c #CFBF3F", - "O c #FFF0A0", - "P c #A09830", - "Q c #A08820", - "R c #908030", - "S c #807830", - "T c #707020", - "U c #605820", - "V c #6F672F", - "W c #D0C040", - "X c #F0E880", - "Y c #907820", - "Z c #B09820", - "` c #B09010", - " . c #B08820", - ".. c #806820", - "+. c #5F5F1F", - "@. c #F0E080", - "#. c #B09020", - "$. c #C0B040", - "%. c #A09030", - "&. c #908020", - "*. c #606020", - "=. c #6F5F1F", - "-. c #9F982F", - ";. c #A0872F", - ">. c #6F681F", - ",. c #706020", - " ", - " . + + + @ @ # # $ % & ", - " + * = = = = - ; > , ' ", - " ) ! ~ { ] ^ = - - > / ( ' ", - "_ : < { [ } | 1 - ; > > / 2 ( 3 ", - "{ 4 5 1 6 7 5 8 9 0 a / , b c d ", - "e f g h 8 8 g h i j / k l c m d ", - " n o p q r s t 2 , l c u v w ", - " x y z A B , l u C v D E ", - " @ F > t k G H I J K L M ", - " N @ O / 2 l P Q R S T U V ", - " W m 2 X l I Y Z ` ...+. ", - " W @.l u I R #.Z Y U M ", - " $.G I $.%.R &.Y *.& =. ", - " -.;.>.,.L L ,.& M ", - " " -}; - -static struct rtgui_listbox_item items[] = -{ - {"list #0", RT_NULL}, - {"list #1", RT_NULL}, - {"list #2", RT_NULL}, - {"list #3", RT_NULL}, -}; - -static rt_bool_t on_items(struct rtgui_object *object, struct rtgui_event *event) -{ - rtgui_listbox_t *box; - /* get listbox */ - box = RTGUI_LISTBOX(object); - - /* 打印当前的项 */ - rt_kprintf("current item: %d\n", box->current_item); - - return RT_TRUE; -} - -/* 创建用于演示label控件的视图 */ -rtgui_container_t *demo_view_listbox(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_label_t *label; - rtgui_listbox_t *box; - - /* 先创建一个演示用的视图 */ - container = demo_view("ListBox Demo"); - - if (item_icon == RT_NULL) - item_icon = rtgui_image_create_from_mem("xpm", - (const rt_uint8_t *)image_xpm, sizeof(image_xpm), RT_TRUE); - items[1].image = item_icon; - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("listbox: "); - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container是一个container控件,调用add_child方法添加这个label控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - rect.y1 = rect.y2 + 3; - rect.y2 = 250; - box = rtgui_listbox_create(items, sizeof(items) / sizeof(struct rtgui_listbox_item), &rect); - rtgui_listbox_set_onitem(box, on_items); - /* container是一个container控件,调用add_child方法添加这个listbox控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(box)); - - return container; -} diff --git a/examples/gui/demo_view_listctrl.c b/examples/gui/demo_view_listctrl.c deleted file mode 100644 index 166e4412ae..0000000000 --- a/examples/gui/demo_view_listctrl.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * 程序清单:label控件演示 - * - * 这个例子会在创建出的container上添加几个不同类型的label控件 - */ -#include "demo_view.h" -#include -#include - -static rtgui_image_t *item_icon = RT_NULL; -static const char *image_xpm[] = -{ - "16 16 106 2", - " c None", - ". c #D0C83F", - "+ c #D0C840", - "@ c #D0C030", - "# c #D0B820", - "$ c #D0B020", - "% c #D0B01F", - "& c #5F571F", - "* c #F0F0C0", - "= c #FFF8D0", - "- c #FFF8C0", - "; c #FFF8B0", - "> c #FFF8A0", - ", c #F0E870", - "' c #707030", - ") c #4F87EF", - "! c #4F78C0", - "~ c #5088E0", - "{ c #5078C0", - "] c #C0D0F0", - "^ c #FFF8E0", - "/ c #FFF090", - "( c #F0E070", - "_ c #6F97D0", - ": c #C0D8FE", - "< c #80A8F0", - "[ c #7088D0", - "} c #B0D0FF", - "| c #90B0F0", - "1 c #1040A0", - "2 c #F0F080", - "3 c #707040", - "4 c #7098F0", - "5 c #3068E0", - "6 c #A0B8F0", - "7 c #4070C0", - "8 c #002880", - "9 c #404040", - "0 c #505050", - "a c #F0F090", - "b c #F0E860", - "c c #F0D860", - "d c #807840", - "e c #2F5FC0", - "f c #1050D0", - "g c #1048B0", - "h c #002870", - "i c #C0C080", - "j c #C0C070", - "k c #F0F070", - "l c #F0E060", - "m c #E0D050", - "n c #00277F", - "o c #00287F", - "p c #1F3F6F", - "q c #1048C0", - "r c #0040B0", - "s c #204080", - "t c #FFF890", - "u c #F0D850", - "v c #E0C840", - "w c #807040", - "x c #A0B06F", - "y c #204880", - "z c #2048A0", - "A c #90A8C0", - "B c #FFF080", - "C c #F0D050", - "D c #C0A830", - "E c #6F682F", - "F c #F0F0A0", - "G c #E0D060", - "H c #B0A040", - "I c #D0B840", - "J c #E0C040", - "K c #D0B030", - "L c #706820", - "M c #5F581F", - "N c #CFBF3F", - "O c #FFF0A0", - "P c #A09830", - "Q c #A08820", - "R c #908030", - "S c #807830", - "T c #707020", - "U c #605820", - "V c #6F672F", - "W c #D0C040", - "X c #F0E880", - "Y c #907820", - "Z c #B09820", - "` c #B09010", - " . c #B08820", - ".. c #806820", - "+. c #5F5F1F", - "@. c #F0E080", - "#. c #B09020", - "$. c #C0B040", - "%. c #A09030", - "&. c #908020", - "*. c #606020", - "=. c #6F5F1F", - "-. c #9F982F", - ";. c #A0872F", - ">. c #6F681F", - ",. c #706020", - " ", - " . + + + @ @ # # $ % & ", - " + * = = = = - ; > , ' ", - " ) ! ~ { ] ^ = - - > / ( ' ", - "_ : < { [ } | 1 - ; > > / 2 ( 3 ", - "{ 4 5 1 6 7 5 8 9 0 a / , b c d ", - "e f g h 8 8 g h i j / k l c m d ", - " n o p q r s t 2 , l c u v w ", - " x y z A B , l u C v D E ", - " @ F > t k G H I J K L M ", - " N @ O / 2 l P Q R S T U V ", - " W m 2 X l I Y Z ` ...+. ", - " W @.l u I R #.Z Y U M ", - " $.G I $.%.R &.Y *.& =. ", - " -.;.>.,.L L ,.& M ", - " " -}; - -static struct list_item -{ - const char *name; - const char *gender; - int age; - rtgui_image_t *image; -} items[] = -{ - {"index0", "00", 30, RT_NULL}, - {"index1", "m1", 30, RT_NULL}, - {"index2", "m2", 30, RT_NULL}, - {"index3", "m3", 30, RT_NULL}, - {"index4", "m4", 30, RT_NULL}, - {"index5", "m5", 30, RT_NULL}, - {"index6", "m6", 30, RT_NULL}, - {"index7", "m7", 30, RT_NULL}, - {"index8", "m8", 30, RT_NULL}, - {"index9", "m9", 30, RT_NULL}, - {"index10", "m10", 30, RT_NULL}, - {"index11", "m11", 30, RT_NULL}, - {"index12", "m12", 30, RT_NULL}, - {"index13", "m13", 30, RT_NULL}, - {"index14", "m14", 30, RT_NULL}, - {"index15", "m15", 30, RT_NULL}, - {"index16", "m16", 30, RT_NULL}, - {"index17", "m17", 30, RT_NULL}, - {"index18", "m18", 30, RT_NULL}, - {"index19", "m19", 30, RT_NULL}, -}; - -void _rtgui_listctrl_item_draw(struct rtgui_listctrl *list, - struct rtgui_dc *dc, - rtgui_rect_t *rect, - rt_uint16_t index) -{ - char age_str[8]; - rtgui_rect_t item_rect; - struct list_item *items, *item; - - item_rect = *rect; - item_rect.x1 += 5; - items = (struct list_item *)list->items; - item = &items[index]; - - /* draw text */ - rtgui_dc_draw_text(dc, item->name, &item_rect); - item_rect.x1 += 60; - rtgui_dc_draw_vline(dc, item_rect.x1, item_rect.y1, item_rect.y2); - - item_rect.x1 += 5; - rtgui_dc_draw_text(dc, item->gender, &item_rect); - item_rect.x1 += 60; - rtgui_dc_draw_vline(dc, item_rect.x1, item_rect.y1, item_rect.y2); - - item_rect.x1 += 5; - rt_snprintf(age_str, sizeof(age_str), "%d", item->age); - rtgui_dc_draw_text(dc, age_str, &item_rect); - item_rect.x1 += 40; - rtgui_dc_draw_vline(dc, item_rect.x1, item_rect.y1, item_rect.y2); - - item_rect.x1 += 5; - - /* draw image */ - if (item->image != RT_NULL) - { - rtgui_rect_t image_rect; - - image_rect.x1 = 0; - image_rect.y1 = 0; - image_rect.x2 = item->image->w; - image_rect.y2 = item->image->h; - rtgui_rect_moveto_align(&item_rect, &image_rect, RTGUI_ALIGN_CENTER_VERTICAL); - rtgui_image_blit(item->image, dc, &image_rect); - } -} - -static rt_bool_t on_items(struct rtgui_object *object, struct rtgui_event *event) -{ - rtgui_listctrl_t *ctrl; - /* get listctrl */ - ctrl = RTGUI_LISTCTRL(object); - - /* 打印当前的项 */ - rt_kprintf("current item: %d\n", ctrl->current_item); - - return RT_TRUE; -} - -/* 创建用于演示label控件的视图 */ -rtgui_container_t *demo_view_listctrl(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_label_t *label; - rtgui_listctrl_t *box; - - /* 先创建一个演示用的视图 */ - container = demo_view("List Control Demo"); - - if (item_icon == RT_NULL) - item_icon = rtgui_image_create_from_mem("xpm", - (const rt_uint8_t *)image_xpm, sizeof(image_xpm), RT_TRUE); - items[1].image = item_icon; - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("List Control: "); - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container是一个container控件,调用add_child方法添加这个label控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - rect.y1 = rect.y2 + 3; - rect.y2 = 250; - box = rtgui_listctrl_create((rt_uint32_t)items, sizeof(items) / sizeof(items[0]), &rect, - _rtgui_listctrl_item_draw); - rtgui_listctrl_set_onitem(box, on_items); - /* container是一个container控件,调用add_child方法添加这个listctrl控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(box)); - - return container; -} diff --git a/examples/gui/demo_view_menu.c b/examples/gui/demo_view_menu.c deleted file mode 100644 index e49ceca239..0000000000 --- a/examples/gui/demo_view_menu.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 程序清单:menu控件演示 - * - * 这个例子会在创建出的container上添加几个不同类型的label控件 - */ -#include "demo_view.h" -#include -#include - -static rt_bool_t _onmenuitem(struct rtgui_object *object, struct rtgui_event *event) -{ - rt_kprintf("menu action!!\n"); - return RT_TRUE; -} - -static const rtgui_menu_item_t sub_items[] = -{ - {RTGUI_ITEM_NORMAL, "item #1", RT_NULL, RT_NULL, 0, _onmenuitem}, - {RTGUI_ITEM_NORMAL, "item #2", RT_NULL, RT_NULL, 0, RT_NULL}, - {RTGUI_ITEM_SEPARATOR, RT_NULL, RT_NULL, RT_NULL, 0, RT_NULL}, - {RTGUI_ITEM_NORMAL, "item #3", RT_NULL, RT_NULL, 0, RT_NULL}, -}; -static const rtgui_menu_item_t items[] = -{ - {RTGUI_ITEM_NORMAL, "item #1", RT_NULL, RT_NULL, 0, RT_NULL}, - {RTGUI_ITEM_NORMAL, "item #2", RT_NULL, RT_NULL, 0, RT_NULL}, - {RTGUI_ITEM_SEPARATOR, RT_NULL, RT_NULL, RT_NULL, 0, RT_NULL}, - { - RTGUI_ITEM_SUBMENU, "item #3", RT_NULL, - (struct rtgui_menu_item_t *)sub_items, - sizeof(sub_items) / sizeof(sub_items[0]), RT_NULL - }, -}; -static rtgui_menu_t *menu; - -static rt_bool_t _onmenu(struct rtgui_object *object, struct rtgui_event *event) -{ - rtgui_rect_t rect; - - rtgui_widget_get_rect(RTGUI_WIDGET(object), &rect); - rtgui_widget_rect_to_device(RTGUI_WIDGET(object), &rect); - - if (menu != RT_NULL) - rtgui_menu_pop(menu, rect.x1, rect.y2 + 5); - - return RT_TRUE; -} - -/* 创建用于演示menu控件的视图 */ -rtgui_container_t *demo_view_menu(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_button_t *button; - - /* 先创建一个演示用的视图 */ - container = demo_view("MENU View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建一个button控件 */ - button = rtgui_button_create("Pop Menu"); - /* 设置button的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - /* container是一个container控件,调用add_child方法添加这个button控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, _onmenu); - - menu = rtgui_menu_create("Menu Test", RT_NULL, items, sizeof(items) / sizeof(items[0])); - - return container; -} diff --git a/examples/gui/demo_view_module.c b/examples/gui/demo_view_module.c deleted file mode 100644 index 9649ce7bef..0000000000 --- a/examples/gui/demo_view_module.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * 程序清单:DC上显示图像演示 - * - * 这个例子会在创建出的view上显示图像 - */ - -#include "demo_view.h" -#include -#include -#include - -#ifdef RT_USING_MODULE -#if defined(RTGUI_USING_DFS_FILERW) -static rtgui_container_t *_view = RT_NULL; - -/* 打开按钮的回调函数 */ -static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event) -{ - rtgui_filelist_view_t *view; - rtgui_workbench_t *workbench; - rtgui_rect_t rect; - - /* 获得顶层的workbench */ - workbench = RTGUI_WORKBENCH(rtgui_widget_get_toplevel(widget)); - rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); - - /* WIN32平台上和真实设备上的初始路径处理 */ -#ifdef _WIN32 - view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); -#else - view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect); -#endif - /* 模态显示一个文件列表视图,以提供给用户选择图像文件 */ - if (rtgui_container_show(RTGUI_CONTAINER(view), RT_TRUE) == RTGUI_MODAL_OK) - { - char path[32], name[8]; - - /* 设置文件路径的标签 */ - rtgui_filelist_view_get_fullpath(view, path, sizeof(path)); - - rt_memset(name, 0, sizeof(name)); - - /* 获得应用模块的类型 */ - if (rt_strstr(path, ".mo") != RT_NULL || rt_strstr(path, ".so") != RT_NULL) - { - rt_module_open(path); - } - } - - /* 删除 文件列表 视图 */ - rtgui_container_destroy(RTGUI_CONTAINER(view)); - rtgui_container_show(_view, RT_FALSE); -} - -/* 创建用于显示应用模块的演示视图 */ -rtgui_container_t *demo_view_module(rtgui_workbench_t *workbench) -{ - rtgui_rect_t rect; - rtgui_button_t *open_btn; - - /* 先创建一个演示视图 */ - _view = demo_view(workbench, "应用模块演示"); - - /* 添加一个按钮 */ - demo_view_get_rect(_view, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 120; - rect.y2 = rect.y1 + 20; - open_btn = rtgui_button_create("打开应用模块"); - rtgui_container_add_child(RTGUI_CONTAINER(_view), RTGUI_WIDGET(open_btn)); - rtgui_widget_set_rect(RTGUI_WIDGET(open_btn), &rect); - rtgui_button_set_onbutton(open_btn, open_btn_onbutton); - - return _view; -} -#endif -#endif - diff --git a/examples/gui/demo_view_mywidget.c b/examples/gui/demo_view_mywidget.c deleted file mode 100644 index 622cc5a5bd..0000000000 --- a/examples/gui/demo_view_mywidget.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 程序清单:自定义控件演示 - * - * 这个例子会在创建出的container上添加两个自定义控件 - */ -#include "demo_view.h" -#include "mywidget.h" - -/* 创建用于演示自定义控件的视图 */ -rtgui_container_t *demo_view_mywidget(void) -{ - rtgui_container_t *container; - rtgui_rect_t rect; - rtgui_mywidget_t *mywidget; - - /* 先创建一个演示用的视图 */ - container = demo_view("MyWidget View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.y1 + 80; - rect.y1 += 5; - rect.y2 = rect.y1 + 80; - /* 创建一个自定义控件 */ - mywidget = rtgui_mywidget_create(&rect); - /* container是一个container控件,调用add_child方法添加这个自控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(mywidget)); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 25; - rect.x2 = rect.y1 + 40; - rect.y1 += 5 + 100; - rect.y2 = rect.y1 + 40; - /* 创建一个自定义控件 */ - mywidget = rtgui_mywidget_create(&rect); - /* container是一个container控件,调用add_child方法添加这个自控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(mywidget)); - - return container; -} diff --git a/examples/gui/demo_view_notebook.c b/examples/gui/demo_view_notebook.c deleted file mode 100644 index 07bc84c966..0000000000 --- a/examples/gui/demo_view_notebook.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 程序清单:notebook控件演示 - * - * 这个例子会在创建出的container上演示notebook控件 - */ - -#include "demo_view.h" -#include -#include - -const static struct rtgui_listbox_item items[] = -{ - {"list #0", RT_NULL}, - {"list #1", RT_NULL}, - {"list #2", RT_NULL}, - {"list #3", RT_NULL}, -}; - -const static struct rtgui_listbox_item items2[] = -{ - {"list #0", RT_NULL}, - {"list #1", RT_NULL}, - {"list #2", RT_NULL}, - {"new list #1", RT_NULL}, - {"new list #2", RT_NULL}, -}; - -/* 创建用于演示notebook控件的视图 */ -rtgui_container_t *demo_view_notebook(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - struct rtgui_notebook *notebook; - rtgui_listbox_t *box; - - /* 先创建一个演示用的视图 */ - container = demo_view("Notebook View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - - notebook = rtgui_notebook_create(&rect, RTGUI_NOTEBOOK_BOTTOM); - /* container是一个container控件,调用add_child方法添加这个notebook控件 */ - rtgui_container_add_child(container, RTGUI_WIDGET(notebook)); - - box = rtgui_listbox_create(items, sizeof(items) / sizeof(struct rtgui_listbox_item), &rect); - rtgui_notebook_add(notebook, "Tab 1", RTGUI_WIDGET(box)); - - box = rtgui_listbox_create(items2, sizeof(items2) / sizeof(struct rtgui_listbox_item), &rect); - rtgui_notebook_add(notebook, "Tab 2", RTGUI_WIDGET(box)); - - return container; -} diff --git a/examples/gui/demo_view_progressbar.c b/examples/gui/demo_view_progressbar.c deleted file mode 100644 index 91e30e4d90..0000000000 --- a/examples/gui/demo_view_progressbar.c +++ /dev/null @@ -1,103 +0,0 @@ -#include "demo_view.h" -#include -#include -#include - -static rtgui_progressbar_t *hbar; -static rtgui_progressbar_t *vbar; -static rtgui_timer_t *bar_timer = RT_NULL; - -void progressbar_timeout(struct rtgui_timer *timer, void *parameter) -{ - static rt_uint32_t value = 0; - - value++; - if (value == 100) - value = 0; - - rtgui_progressbar_set_value(hbar, value); - rtgui_progressbar_set_value(vbar, value); -} - -static rt_bool_t start_timer(struct rtgui_object *object, struct rtgui_event *event) -{ - if (bar_timer != RT_NULL) - rtgui_timer_start(bar_timer); - return RT_TRUE; -} - -static rt_bool_t stop_timer(struct rtgui_object *object, struct rtgui_event *event) -{ - if (bar_timer != RT_NULL) - rtgui_timer_stop(bar_timer); - return RT_TRUE; -} - -static rt_bool_t progressbar_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_widget *widget = RTGUI_WIDGET(object); - - if (event->type == RTGUI_EVENT_SHOW) - { - rtgui_container_event_handler(object, event); - start_timer(object, event); - } - else if (event->type == RTGUI_EVENT_HIDE) - { - rtgui_container_event_handler(object, event); - stop_timer(object, event); - } - else - { - /* 调用默认的事件处理函数 */ - return rtgui_progressbar_event_handler(object, event); - } - - return RT_FALSE; -} - -rtgui_container_t *demo_view_progressbar(void) -{ - rtgui_container_t *container; - rtgui_rect_t rect; - rtgui_label_t *label; - - /* create a demo container */ - container = demo_view("ProgressBar View"); - - /* get demo container rect */ - demo_view_get_rect(container, &rect); - label = rtgui_label_create("水平进度条:"); - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 18; - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rect.y1 += 20; - rect.y2 = rect.y1 + 18; - hbar = rtgui_progressbar_create(RTGUI_HORIZONTAL, 100, &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(hbar)); - - /* get demo container rect */ - demo_view_get_rect(container, &rect); - label = rtgui_label_create("垂直进度条:"); - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 45; - rect.y2 = rect.y1 + 18; - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rect.x1 += 110; - rect.x2 = rect.x1 + 20; - rect.y1 += 18 + 5; - rect.y2 = rect.y1 + 150; - vbar = rtgui_progressbar_create(RTGUI_VERTICAL, 100, &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(vbar)); - - bar_timer = rtgui_timer_create(50, RT_TIMER_FLAG_PERIODIC, - progressbar_timeout, RT_NULL); - - return container; -} - diff --git a/examples/gui/demo_view_radiobox.c b/examples/gui/demo_view_radiobox.c deleted file mode 100644 index 7d72d550a6..0000000000 --- a/examples/gui/demo_view_radiobox.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 程序清单:radiobox控件演示 - * - * 这个例子会在创建出的container上添加两个不同方向的radiobox控件 - */ - -#include "demo_view.h" -#include - -/* 用于显示垂直方向的radio文本项数组 */ -static char *radio_item_v[5] = -{ - "one", - "two", - "three", - "item 1", - "item 2" -}; - -/* 用于显示水平方向的radio文本项数组 */ -static char *radio_item_h[3] = -{ - "one", "two", "three" -}; - -/* 创建用于演示radiobox控件的视图 */ -rtgui_container_t *demo_view_radiobox(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_radiobox_t *radiobox; - - /* 先创建一个演示用的视图 */ - container = demo_view("RadioBox View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 5 * 25; - - /* 创建一个垂直方向显示的radiobox控件,文本项是radio_item_v数组,共5个项 */ - radiobox = rtgui_radiobox_create("Radio Box", RTGUI_VERTICAL, radio_item_v, 5); - /* 设置当前选择的数组是第0项 */ - rtgui_radiobox_set_selection(radiobox, 0); - /* 添加radiobox控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(radiobox)); - /* 设置radiobox控件的位置信息 */ - rtgui_widget_set_rect(RTGUI_WIDGET(radiobox), &rect); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5 + 5 * 25; - rect.y2 = rect.y1 + 60; - - /* 创建一个水平方向显示的radiobox控件,文本项是radio_item_h数组,共3个项 */ - radiobox = rtgui_radiobox_create("Radio Box", RTGUI_HORIZONTAL, radio_item_h, 3); - /* 设置当前选择的数组是第0项 */ - rtgui_radiobox_set_selection(radiobox, 0); - /* 添加radiobox控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(radiobox)); - /* 设置radiobox控件的位置信息 */ - rtgui_widget_set_rect(RTGUI_WIDGET(radiobox), &rect); - - return container; -} diff --git a/examples/gui/demo_view_scrollbar.c b/examples/gui/demo_view_scrollbar.c deleted file mode 100644 index 363748d5a3..0000000000 --- a/examples/gui/demo_view_scrollbar.c +++ /dev/null @@ -1,48 +0,0 @@ -#include "demo_view.h" -#include -#include -#include - -rtgui_container_t *demo_view_scrollbar(void) -{ - rtgui_container_t *container; - rtgui_rect_t rect; - rtgui_label_t *label; - rtgui_scrollbar_t *hbar; - rtgui_scrollbar_t *vbar; - - /* create a demo container */ - container = demo_view("ScrollBar View"); - - /* get demo container rect */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - label = rtgui_label_create("horizontal bar:"); - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - hbar = rtgui_scrollbar_create(container, 5, 70, 20, 200, RTGUI_HORIZONTAL); - rtgui_scrollbar_set_line_step(hbar, 1); - rtgui_scrollbar_set_page_step(hbar, 3); - rtgui_scrollbar_set_range(hbar, 20); - - /* get demo container rect */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5+40; - rect.y2 = rect.y1 + 20; - label = rtgui_label_create("vertical bar:"); - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - vbar = rtgui_scrollbar_create(container, 10, 110, 20, 200, RTGUI_VERTICAL); - rtgui_scrollbar_set_line_step(vbar, 1); - rtgui_scrollbar_set_page_step(vbar, 5); - rtgui_scrollbar_set_range(vbar, 20); - - return container; -} diff --git a/examples/gui/demo_view_slider.c b/examples/gui/demo_view_slider.c deleted file mode 100644 index 32d98d9abc..0000000000 --- a/examples/gui/demo_view_slider.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "demo_view.h" -#include -#include -#include - -rtgui_container_t *demo_view_slider(void) -{ - rtgui_container_t *container; - rtgui_rect_t rect; - rtgui_label_t *label; - rtgui_slider_t *slider; - - /* create a demo container */ - container = demo_view("Slider View"); - - /* get demo container rect */ - demo_view_get_rect(container, &rect); - label = rtgui_label_create("horizontal slider:"); - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 18; - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rect.y1 += 20; - rect.y2 = rect.y1 + 18; - slider = rtgui_slider_create(0, 100, RTGUI_HORIZONTAL); - rtgui_container_add_child(container, RTGUI_WIDGET(slider)); - rtgui_widget_set_rect(RTGUI_WIDGET(slider), &rect); - - /* get demo container rect */ - demo_view_get_rect(container, &rect); - label = rtgui_label_create("vertical slider:"); - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 50; - rect.y2 = rect.y1 + 18; - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rect.x1 += 110; - rect.x2 = rect.x1 + 20; - rect.y1 += 18 + 5; - rect.y2 = rect.y1 + 150; - slider = rtgui_slider_create(0, 100, RTGUI_VERTICAL); - rtgui_container_add_child(container, RTGUI_WIDGET(slider)); - rtgui_widget_set_rect(RTGUI_WIDGET(slider), &rect); - - return container; -} diff --git a/examples/gui/demo_view_textbox.c b/examples/gui/demo_view_textbox.c deleted file mode 100644 index 2a6047563c..0000000000 --- a/examples/gui/demo_view_textbox.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 程序清单:texbox控件演示 - * - * 这个例子会在创建出的container上添加几个不同类型的textbox控件 - */ -#include "demo_view.h" -#include -#include - -/* 创建用于演示textbox控件的视图 */ -rtgui_container_t *demo_view_textbox(void) -{ - rtgui_rect_t rect, textbox_rect; - rtgui_container_t *container; - rtgui_label_t *label; - rtgui_textbox_t *text; - - /* 先创建一个演示用的视图 */ - container = demo_view("TextBox View"); - - /* 获得视图的位置信息 */ - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 30; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("名字: "); - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - - /* 让textbox_rect赋值到rect,以计算textbox控件的位置 */ - textbox_rect = rect; - textbox_rect.x1 = textbox_rect.x2 + 5; - textbox_rect.x2 = textbox_rect.x1 + 160; - /* 创建一个textbox控件 */ - text = rtgui_textbox_create("bernard", RTGUI_TEXTBOX_SINGLE); - /* 设置textbox控件的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect); - /* 添加textbox控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(text)); - - /* 计算下一个label控件的位置 */ - rect.y1 += 23; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("邮件: "); - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* 添加label控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - textbox_rect = rect; - textbox_rect.x1 = textbox_rect.x2 + 5; - textbox_rect.x2 = textbox_rect.x1 + 160; - /* 创建一个textbox控件 */ - text = rtgui_textbox_create("bernard.xiong@gmail.com", RTGUI_TEXTBOX_SINGLE); - /* 设置textbox控件的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect); - /* 添加textbox控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(text)); - - rect.y1 += 23; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("密码: "); - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* 添加label控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - textbox_rect = rect; - textbox_rect.x1 = textbox_rect.x2 + 5; - textbox_rect.x2 = textbox_rect.x1 + 160; - /* 创建一个textbox控件 */ - text = rtgui_textbox_create("rt-thread", RTGUI_TEXTBOX_SINGLE); - /* 设置textbox显示文本为掩码形式(即显示为*号,适合于显示密码的情况) */ - text->flag |= RTGUI_TEXTBOX_MASK; - /* 设置textbox控件的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect); - /* 添加textbox控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(text)); - - rect.y1 += 23; - rect.y2 = rect.y1 + 20; - /* 创建一个label控件 */ - label = rtgui_label_create("主页: "); - /* 设置label的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* 添加label控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(label)); - textbox_rect = rect; - textbox_rect.x1 = textbox_rect.x2 + 5; - textbox_rect.x2 = textbox_rect.x1 + 160; - /* 创建一个textbox控件 */ - text = rtgui_textbox_create("http://www.rt-thread.org", RTGUI_TEXTBOX_SINGLE); - /* 设置textbox控件的位置 */ - rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect); - /* 添加textbox控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(text)); - - return container; -} diff --git a/examples/gui/demo_view_ttf.c b/examples/gui/demo_view_ttf.c deleted file mode 100644 index 09820ef889..0000000000 --- a/examples/gui/demo_view_ttf.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 程序清单:TTF字体显示演示 - * - * 这个例子会在创建出的container上进行TTF字体显示的演示 - */ - -#include "demo_view.h" -#include -#include -#include - -#ifdef RTGUI_USING_TTF -static rtgui_font_t *font_16, *font_24, *font_36, *font_48; - -/* - * container的事件处理函数 - */ -rt_bool_t ttf_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_widget *widget = RTGUI_WIDGET(object); - - /* 仅对PAINT事件进行处理 */ - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc *dc; - rtgui_rect_t rect; - rtgui_font_t *saved; - - /* - * 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container - * 先绘图 - */ - rtgui_container_event_handler(widget, event); - - /************************************************************************/ - /* 下面的是DC的操作 */ - /************************************************************************/ - - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - if (dc == RT_NULL) - return RT_FALSE; - - /* 获得demo container允许绘图的区域 */ - demo_view_get_rect(RTGUI_CONTAINER(widget), &rect); - - saved = RTGUI_WIDGET_FONT(widget); - - RTGUI_WIDGET_FONT(widget) = font_16; - rtgui_dc_draw_text(dc, "ABCD中文", &rect); - rect.y1 += 18; - - RTGUI_WIDGET_FONT(widget) = font_24; - rtgui_dc_draw_text(dc, "ABCD中文", &rect); - rect.y1 += 26; - - RTGUI_WIDGET_FONT(widget) = font_36; - rtgui_dc_draw_text(dc, "ABCD中文", &rect); - rect.y1 += 38; - - RTGUI_WIDGET_FONT(widget) = font_48; - rtgui_dc_draw_text(dc, "ABCD中文", &rect); - - RTGUI_WIDGET_FONT(widget) = saved; - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else - { - /* 其他事件,调用默认的事件处理函数 */ - return rtgui_container_event_handler(widget, event); - } - - return RT_FALSE; -} - -/* 创建用于TTF字体显示演示用的视图 */ -rtgui_container_t *demo_view_ttf() -{ - rtgui_container_t *container; - - font_16 = rtgui_freetype_font_create("d:/simsun.ttf", 0, 0, 16); - font_24 = rtgui_freetype_font_create("d:/simsun.ttf", 0, 0, 24); - font_36 = rtgui_freetype_font_create("d:/simsun.ttf", 0, 0, 36); - font_48 = rtgui_freetype_font_create("d:/simsun.TTF", 0, 0, 72); - - container = demo_view("TTF 演示"); - if (container != RT_NULL) - { - RTGUI_WIDGET_BACKGROUND(container) = white; - /* 设置成自己的事件处理函数 */ - rtgui_object_set_event_handler(RTGUI_OBJECT(container), ttf_event_handler); - } - - return container; -} -#endif diff --git a/examples/gui/demo_view_window.c b/examples/gui/demo_view_window.c deleted file mode 100644 index 222dc7dde1..0000000000 --- a/examples/gui/demo_view_window.c +++ /dev/null @@ -1,299 +0,0 @@ -/* - * 程序清单:窗口演示 - * - * 这个例子会先创建出一个演示用的container,当点击上面的按钮时会不同的模式创建窗口 - */ - -#include -#include -#include -#include -#include -#include "demo_view.h" -#include - -static struct rtgui_timer *timer; -static struct rtgui_label *label; -static struct rtgui_win *autowin = RT_NULL; -static char label_text[80]; -static rt_uint8_t cnt = 5; - -rtgui_win_t *normal_window; -rtgui_label_t *normal_window_label; -static char normal_window_label_text[16]; -static unsigned char normal_window_show_count = 1; -extern struct rtgui_win *main_win; - -static rt_bool_t normal_window_onclose(struct rtgui_object *win, - struct rtgui_event *event) -{ - normal_window_show_count++; - - return RT_TRUE; -} - -static void create_normal_win(void) -{ - rtgui_rect_t rect = {30, 40, 150, 80}; - - normal_window = rtgui_win_create(RT_NULL, "普通窗口", - &rect, RTGUI_WIN_STYLE_DEFAULT); - - rect.x1 += 20; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - - /* 添加一个文本标签 */ - rt_sprintf(normal_window_label_text, - "第 %d 次显示", normal_window_show_count); - normal_window_label = rtgui_label_create(normal_window_label_text); - rtgui_widget_set_rect(RTGUI_WIDGET(normal_window_label), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(normal_window), - RTGUI_WIDGET(normal_window_label)); - - rtgui_win_set_onclose(normal_window, - normal_window_onclose); -} - -/* 触发正常窗口显示 */ -static void demo_normal_window_onbutton(struct rtgui_object *object, rtgui_event_t *event) -{ - rt_sprintf(normal_window_label_text, - "第 %d 次显示", normal_window_show_count); - rtgui_label_set_text(normal_window_label, - normal_window_label_text); - if (RTGUI_WIDGET_IS_HIDE(normal_window)) - rtgui_win_show(normal_window, RT_FALSE); - else - rtgui_win_activate(normal_window); -} - -/* 获取一个递增的窗口标题 */ -static char *get_win_title() -{ - static rt_uint8_t win_no = 0; - static char win_title[16]; - - rt_sprintf(win_title, "窗口 %d", ++win_no); - return win_title; -} - -/* 关闭对话框时的回调函数 */ -void diag_close(struct rtgui_timer *timer, void *parameter) -{ - cnt --; - rt_sprintf(label_text, "closed then %d second!", cnt); - - /* 设置标签文本并更新控件 */ - rtgui_label_set_text(label, label_text); - rtgui_widget_update(RTGUI_WIDGET(label)); - - if (cnt == 0) - { - /* 超时,关闭对话框 */ - rtgui_win_destroy(autowin); - } -} - -/* AUTO窗口关闭时的事件处理 */ -rt_bool_t auto_window_close(struct rtgui_object *object, struct rtgui_event *event) -{ - if (timer != RT_NULL) - { - /* 停止并删除定时器 */ - rtgui_timer_stop(timer); - rtgui_timer_destory(timer); - - timer = RT_NULL; - } - autowin = RT_NULL; - - return RT_TRUE; -} - -static rt_uint16_t delta_x = 20; -static rt_uint16_t delta_y = 40; - -/* 触发自动窗口显示 */ -static void demo_autowin_onbutton(struct rtgui_object *object, rtgui_event_t *event) -{ - struct rtgui_rect rect = {50, 50, 200, 200}; - - /* don't create the window twice */ - if (autowin) - return; - - autowin = rtgui_win_create(main_win, "Information", - &rect, RTGUI_WIN_STYLE_DEFAULT | RTGUI_WIN_STYLE_DESTROY_ON_CLOSE); - if (autowin == RT_NULL) - return; - - cnt = 5; - rt_sprintf(label_text, "closed then %d second!", cnt); - label = rtgui_label_create(label_text); - rect.x1 += 5; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(autowin), - RTGUI_WIDGET(label)); - - /* 设置关闭窗口时的动作 */ - rtgui_win_set_onclose(autowin, auto_window_close); - - rtgui_win_show(autowin, RT_FALSE); - /* 创建一个定时器 */ - timer = rtgui_timer_create(100, RT_TIMER_FLAG_PERIODIC, diag_close, RT_NULL); - rtgui_timer_start(timer); -} - -/* 触发模态窗口显示 */ -static void demo_modalwin_onbutton(struct rtgui_object *object, rtgui_event_t *event) -{ - rtgui_win_t *win; - rtgui_label_t *label; - rtgui_rect_t rect = {0, 0, 150, 80}; - - rtgui_rect_moveto(&rect, delta_x, delta_y); - delta_x += 20; - delta_y += 20; - - /* 创建一个窗口 */ - win = rtgui_win_create(main_win, - get_win_title(), &rect, RTGUI_WIN_STYLE_DEFAULT); - - rect.x1 += 20; - rect.x2 -= 5; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - - label = rtgui_label_create("这是一个模式窗口"); - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(win), RTGUI_WIDGET(label)); - - /* 模态显示窗口 */ - rtgui_win_show(win, RT_TRUE); - - /* 删除非自动删除窗口 */ - rtgui_win_destroy(win); -} - -static void demo_close_ntitle_window(struct rtgui_object *object, rtgui_event_t *event) -{ - rtgui_win_t *win; - - /* 获得最顶层控件 */ - win = RTGUI_WIN(rtgui_widget_get_toplevel(RTGUI_WIDGET(object))); - - /* 销毁窗口 */ - rtgui_win_destroy(win); -} - -/* 触发无标题窗口显示 */ -static void demo_ntitlewin_onbutton(struct rtgui_object *object, rtgui_event_t *event) -{ - rtgui_win_t *win; - rtgui_label_t *label; - rtgui_button_t *button; - rtgui_rect_t widget_rect, rect = {0, 0, 150, 80}; - - rtgui_rect_moveto(&rect, delta_x, delta_y); - delta_x += 20; - delta_y += 20; - - /* 创建一个窗口,风格为无标题及无边框 */ - win = rtgui_win_create(main_win, - "no title", &rect, RTGUI_WIN_STYLE_NO_TITLE | - RTGUI_WIN_STYLE_NO_BORDER | - RTGUI_WIN_STYLE_DESTROY_ON_CLOSE); - RTGUI_WIDGET_BACKGROUND(win) = white; - - /* 创建一个文本标签 */ - label = rtgui_label_create("无边框窗口"); - rtgui_font_get_metrics(RTGUI_WIDGET_FONT(label), "无边框窗口", &widget_rect); - rtgui_rect_moveto_align(&rect, &widget_rect, RTGUI_ALIGN_CENTER_HORIZONTAL); - widget_rect.y1 += 20; - widget_rect.y2 += 20; - rtgui_widget_set_rect(RTGUI_WIDGET(label), &widget_rect); - rtgui_container_add_child(RTGUI_CONTAINER(win), RTGUI_WIDGET(label)); - RTGUI_WIDGET_BACKGROUND(label) = white; - - /* 创建一个关闭按钮 */ - widget_rect.x1 = 0; - widget_rect.y1 = 0; - widget_rect.x2 = 40; - widget_rect.y2 = 20; - rtgui_rect_moveto_align(&rect, &widget_rect, RTGUI_ALIGN_CENTER_HORIZONTAL); - widget_rect.y1 += 40; - widget_rect.y2 += 40; - button = rtgui_button_create("关闭"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect); - rtgui_container_add_child(RTGUI_CONTAINER(win), RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, demo_close_ntitle_window); - - rtgui_win_show(win, RT_FALSE); -} - -rtgui_container_t *demo_view_window(void) -{ - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_button_t *button; - - /* 创建一个演示用的视图 */ - container = demo_view("Window Demo"); - - create_normal_win(); - - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5; - rect.y2 = rect.y1 + 20; - /* 创建按钮用于显示正常窗口 */ - button = rtgui_button_create("Normal Win"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(container), RTGUI_WIDGET(button)); - /* 设置onbutton为demo_win_onbutton函数 */ - rtgui_button_set_onbutton(button, demo_normal_window_onbutton); - - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25; - rect.y2 = rect.y1 + 20; - /* 创建按钮用于显示一个自动关闭的窗口 */ - button = rtgui_button_create("Auto Win"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(container), RTGUI_WIDGET(button)); - /* 设置onbutton为demo_autowin_onbutton函数 */ - rtgui_button_set_onbutton(button, demo_autowin_onbutton); - - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建按钮用于触发一个模式窗口 */ - button = rtgui_button_create("Modal Win"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(container), RTGUI_WIDGET(button)); - /* 设置onbutton为demo_modalwin_onbutton函数 */ - rtgui_button_set_onbutton(button, demo_modalwin_onbutton); - - demo_view_get_rect(container, &rect); - rect.x1 += 5; - rect.x2 = rect.x1 + 100; - rect.y1 += 5 + 25 + 25 + 25; - rect.y2 = rect.y1 + 20; - /* 创建按钮用于触发一个不包含标题的窗口 */ - button = rtgui_button_create("NoTitle Win"); - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - rtgui_container_add_child(RTGUI_CONTAINER(container), RTGUI_WIDGET(button)); - /* 设置onbutton为demo_ntitlewin_onbutton函数 */ - rtgui_button_set_onbutton(button, demo_ntitlewin_onbutton); - - return container; -} diff --git a/examples/gui/demo_xml.c b/examples/gui/demo_xml.c deleted file mode 100644 index fe4f5321a6..0000000000 --- a/examples/gui/demo_xml.c +++ /dev/null @@ -1,26 +0,0 @@ -#include - -#include - -static int xml_event_handler(rt_uint8_t event, const char *text, rt_size_t len, void *user) -{ - rt_kprintf("%s: %s\n", rtgui_xml_event_str(event), text); - return 1; -} - -const char xml_str[] = "ToveJaniReminderDon't forget me this weekend!"; -void demo_xml() -{ - rtgui_xml_t *xml; - - xml = rtgui_xml_create(512, xml_event_handler, RT_NULL); - if (xml != RT_NULL) - { - rtgui_xml_parse(xml, xml_str, sizeof(xml_str)); - rtgui_xml_destroy(xml); - } -} -#ifdef RT_USING_FINSH -#include -FINSH_FUNCTION_EXPORT(demo_xml, show the demo of xml parser); -#endif diff --git a/examples/gui/mywidget.c b/examples/gui/mywidget.c deleted file mode 100644 index 514cd755da..0000000000 --- a/examples/gui/mywidget.c +++ /dev/null @@ -1,108 +0,0 @@ -#include -#include "mywidget.h" - -static void rtgui_mywidget_ondraw(struct rtgui_mywidget *me) -{ - struct rtgui_dc *dc; - struct rtgui_rect rect; - rt_uint16_t x, y; - - dc = rtgui_dc_begin_drawing(RTGUI_WIDGET(me)); - if (dc == RT_NULL) return; - - rtgui_widget_get_rect(RTGUI_WIDGET(me), &rect); - RTGUI_DC_BC(dc) = white; - rtgui_dc_fill_rect(dc, &rect); - - x = (rect.x2 + rect.x1) / 2; - y = (rect.y2 + rect.y1) / 2; - - RTGUI_DC_FC(dc) = black; - rtgui_dc_draw_hline(dc, rect.x1, rect.x2, y); - rtgui_dc_draw_vline(dc, x, rect.y1, rect.y2); - - if (me->status == MYWIDGET_STATUS_ON) - RTGUI_DC_FC(dc) = green; - else - RTGUI_DC_FC(dc) = red; - rtgui_dc_fill_circle(dc, x, y, 5); - - rtgui_dc_end_drawing(dc); - return; -} - -static void rtgui_mywidget_onmouse(struct rtgui_mywidget *me, struct rtgui_event_mouse *mouse) -{ - struct rtgui_rect rect; - rt_uint16_t x, y; - - if (!(mouse->button & RTGUI_MOUSE_BUTTON_UP)) return; - - rtgui_widget_get_rect(RTGUI_WIDGET(me), &rect); - rtgui_widget_rect_to_device(RTGUI_WIDGET(me), &rect); - - x = (rect.x2 + rect.x1) / 2; - y = (rect.y2 + rect.y1) / 2; - - if ((mouse->x < x + 5 && mouse->x > x - 5) && - (mouse->y < y + 5 && mouse->y > y - 5)) - { - if (me->status & MYWIDGET_STATUS_ON) me->status = MYWIDGET_STATUS_OFF; - else me->status = MYWIDGET_STATUS_ON; - - rtgui_mywidget_ondraw(me); - } -} - -rt_bool_t rtgui_mywidget_event_handler(struct rtgui_object *object, struct rtgui_event *event) -{ - struct rtgui_mywidget *me = RTGUI_MYWIDGET(object); - - switch (event->type) - { - case RTGUI_EVENT_PAINT: - rtgui_mywidget_ondraw(me); - break; - - case RTGUI_EVENT_MOUSE_BUTTON: - rtgui_mywidget_onmouse(RTGUI_MYWIDGET(me), (struct rtgui_event_mouse *) event); - break; - - default: - return rtgui_widget_event_handler(object, event); - } - - return RT_FALSE; -} - -static void _rtgui_mywidget_constructor(rtgui_mywidget_t *mywidget) -{ - RTGUI_WIDGET(mywidget)->flag |= RTGUI_WIDGET_FLAG_FOCUSABLE; - rtgui_object_set_event_handler(RTGUI_OBJECT(mywidget), rtgui_mywidget_event_handler); - - mywidget->status = MYWIDGET_STATUS_OFF; -} - -DEFINE_CLASS_TYPE(mywidget, "mywidget", - RTGUI_WIDGET_TYPE, - _rtgui_mywidget_constructor, - RT_NULL, - sizeof(struct rtgui_mywidget)); - -struct rtgui_mywidget *rtgui_mywidget_create(rtgui_rect_t *r) -{ - struct rtgui_mywidget *me; - - me = (struct rtgui_mywidget *) rtgui_widget_create(RTGUI_MYWIDGET_TYPE); - if (me != RT_NULL) - { - rtgui_widget_set_rect(RTGUI_WIDGET(me), r); - } - - return me; -} - -void rtgui_mywidget_destroy(struct rtgui_mywidget *me) -{ - rtgui_widget_destroy(RTGUI_WIDGET(me)); -} diff --git a/examples/gui/mywidget.h b/examples/gui/mywidget.h deleted file mode 100644 index 99f19c9416..0000000000 --- a/examples/gui/mywidget.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * 绋嬪簭娓呭崟锛氳嚜瀹氫箟鎺т欢 - * - * 杩欎釜渚嬪瓙鏄瀹炵幇涓涓嚜瀹氫箟鎺т欢锛屽瑙傚ぇ鑷村 - * | - * --o-- - * | - * 鐨勫舰鐘讹紝涓棿鐨刼鑹插僵琛ㄧず浜嗗綋鍓嶇殑鐘舵侊紝ON鐘舵佹椂鏄豢鑹诧紝OFF鐘舵佹椂鏄孩鑹层? - * 骞朵笖锛岃繖涓猳浣嶇疆鎺ュ彈榧犳爣鐐瑰嚮锛岀偣鍑讳笅鍒囨崲涓嬬浉搴旂殑鐘舵併? - */ -#ifndef __MY_WIDGET_H__ -#define __MY_WIDGET_H__ - -#include -#include - -/* 鑷畾涔夋帶浠剁殑鐘舵佸煎畾涔?*/ -#define MYWIDGET_STATUS_ON 1 -#define MYWIDGET_STATUS_OFF 0 - -DECLARE_CLASS_TYPE(mywidget); -/** 姣忎釜鎺т欢浼氭湁涓涓被鍨嬶紝閫氳繃濡備笅鐨勫畯鑾峰緱鎺т欢鐩稿簲鐨勭被鍨嬩俊鎭?*/ -#define RTGUI_MYWIDGET_TYPE (RTGUI_TYPE(mywidget)) -/** 瀵逛竴涓璞″疄渚嬶紝鍙互閫氳繃涓嬮潰鐨勫畯瀹炵幇绫诲瀷杞崲 */ -#define RTGUI_MYWIDGET(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_MYWIDGET_TYPE, rtgui_mywidget_t)) -/** 鍙互閫氳繃涓嬮潰鐨勫畯浠ュ喅瀹氫竴涓叿浣撳疄渚嬫槸鍚︽槸鑷畾涔夋帶浠剁被鍨?*/ -#define RTGUI_IS_MYWIDGET(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_MYWIDGET_TYPE)) - -/* 涓у寲鎺т欢绫诲畾涔?*/ -struct rtgui_mywidget -{ - /* 杩欎釜鎺т欢鏄户鎵胯嚜rtgui_widget鎺т欢 */ - struct rtgui_widget parent; - - /* 鐘舵侊細ON銆丱FF */ - rt_uint8_t status; -}; -typedef struct rtgui_mywidget rtgui_mywidget_t; - -/* 鎺т欢鐨勫垱寤哄拰鍒犻櫎 */ -struct rtgui_mywidget *rtgui_mywidget_create(rtgui_rect_t *r); -void rtgui_mywidget_destroy(struct rtgui_mywidget *me); - -/* 鎺т欢鐨勯粯璁や簨浠跺鐞嗗嚱鏁般? - * 瀵逛竴涓帶浠惰岃█锛屽鏋滄淳鐢熻嚜瀹冪殑瀛愭帶浠跺緢鍙兘浼氳皟鐢ㄧ埗鎺т欢鐨勪簨浠跺鐞嗗嚱鏁帮紝 - * 鎵浠ヨ繖閲岄噰鐢ㄥ叕寮澹版槑鐨勬柟寮忋? - */ -rt_bool_t rtgui_mywidget_event_handler(struct rtgui_object *object, struct rtgui_event *event); - -#endif diff --git a/examples/gui/play.hdh b/examples/gui/play.hdh deleted file mode 100644 index 0230cf09cc..0000000000 --- a/examples/gui/play.hdh +++ /dev/null @@ -1,107 +0,0 @@ -static const unsigned char play_hdh[] = { - 0x48, 0x44, 0x43, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0x9d, 0xae, 0xdf, 0xef, 0xbf, 0xe7, 0xbf, 0xe7, - 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, - 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, - 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, - 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0x9d, 0xae, - 0x9d, 0xae, 0xdf, 0xef, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0xdf, 0xef, 0x9d, 0xae, 0x7d, 0xae, 0xbf, 0xef, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0xbf, 0xef, 0x7d, 0xae, 0x7d, 0xae, 0xbf, 0xe7, 0x7f, 0xd7, 0x7f, 0xd7, - 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, - 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, - 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, - 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0xbf, 0xe7, 0x7d, 0xae, - 0x7d, 0xa6, 0xbf, 0xe7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, - 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x7a, 0x6d, 0x1a, 0x4d, 0x1a, 0x4d, - 0x7a, 0x6d, 0x5f, 0xd7, 0x5f, 0xd7, 0x7a, 0x6d, 0x1a, 0x4d, 0x1a, 0x4d, - 0x7a, 0x6d, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, - 0x5f, 0xd7, 0x5f, 0xd7, 0xbf, 0xe7, 0x7d, 0xa6, 0x5d, 0xa6, 0x9f, 0xe7, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x5f, 0xcf, 0xf9, 0x4c, 0x7c, 0x55, 0x7c, 0x55, 0xf9, 0x4c, 0x5f, 0xcf, - 0x5f, 0xcf, 0xf9, 0x4c, 0x7c, 0x55, 0x7c, 0x55, 0xf9, 0x4c, 0x5f, 0xcf, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x9f, 0xe7, 0x5d, 0xa6, 0x5d, 0xa6, 0x9f, 0xdf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0xf9, 0x4c, - 0x5b, 0x55, 0x5b, 0x55, 0xf9, 0x4c, 0x5f, 0xcf, 0x5f, 0xcf, 0xf9, 0x4c, - 0x5b, 0x55, 0x5b, 0x55, 0xf9, 0x4c, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x9f, 0xdf, 0x5d, 0xa6, - 0x5c, 0xa6, 0x9f, 0xdf, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, - 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0xd9, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, - 0xd9, 0x4c, 0x3f, 0xc7, 0x3f, 0xc7, 0xd9, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, - 0xd9, 0x4c, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, - 0x3f, 0xc7, 0x3f, 0xc7, 0x9f, 0xdf, 0x5c, 0xa6, 0x3c, 0xa6, 0x7f, 0xdf, - 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, - 0x3e, 0xc7, 0xb8, 0x44, 0x1a, 0x4d, 0x1a, 0x4d, 0xb8, 0x44, 0x3e, 0xc7, - 0x3e, 0xc7, 0xb8, 0x44, 0x1a, 0x4d, 0x1a, 0x4d, 0xb8, 0x44, 0x3e, 0xc7, - 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, - 0x7f, 0xdf, 0x3c, 0xa6, 0x3c, 0x9e, 0x7f, 0xd7, 0x1e, 0xbf, 0x1e, 0xbf, - 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x98, 0x3c, - 0xfa, 0x44, 0xfa, 0x44, 0x98, 0x3c, 0x1e, 0xbf, 0x1e, 0xbf, 0x98, 0x3c, - 0xfa, 0x44, 0xfa, 0x44, 0x98, 0x3c, 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, - 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x7f, 0xd7, 0x3c, 0x9e, - 0x1c, 0x9e, 0x7f, 0xd7, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0x77, 0x3c, 0xd9, 0x3c, 0xd9, 0x3c, - 0x77, 0x3c, 0xfe, 0xbe, 0xfe, 0xbe, 0x77, 0x3c, 0xd9, 0x3c, 0xd9, 0x3c, - 0x77, 0x3c, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0x7f, 0xd7, 0x1c, 0x9e, 0x1c, 0x9e, 0x5e, 0xcf, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0x56, 0x34, 0x98, 0x3c, 0x98, 0x3c, 0x56, 0x34, 0xfe, 0xbe, - 0xfe, 0xbe, 0x56, 0x34, 0x98, 0x3c, 0x98, 0x3c, 0x56, 0x34, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0x5e, 0xcf, 0x1c, 0x9e, 0xfc, 0x95, 0x5e, 0xcf, 0xfe, 0xb6, 0xfe, 0xb6, - 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0x36, 0x34, - 0x78, 0x34, 0x78, 0x34, 0x36, 0x34, 0xfe, 0xb6, 0xfe, 0xb6, 0x36, 0x34, - 0x78, 0x34, 0x78, 0x34, 0x36, 0x34, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, - 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0x5e, 0xcf, 0xfc, 0x95, - 0xfb, 0x95, 0x3e, 0xcf, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, - 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xf5, 0x2b, 0x57, 0x34, 0x57, 0x34, - 0xf5, 0x2b, 0xde, 0xb6, 0xde, 0xb6, 0xf5, 0x2b, 0x57, 0x34, 0x57, 0x34, - 0xf5, 0x2b, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, - 0xde, 0xb6, 0xde, 0xb6, 0x3e, 0xcf, 0xfb, 0x95, 0xdb, 0x95, 0x3e, 0xc7, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0xbe, 0xae, 0xd5, 0x2b, 0x36, 0x2c, 0x36, 0x2c, 0xd5, 0x2b, 0xbe, 0xae, - 0xbe, 0xae, 0xd5, 0x2b, 0x36, 0x2c, 0x36, 0x2c, 0xd5, 0x2b, 0xbe, 0xae, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0x3e, 0xc7, 0xdb, 0x95, 0xdb, 0x95, 0x3e, 0xc7, 0xbe, 0xae, 0xbe, 0xae, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0x56, 0x44, - 0xd4, 0x23, 0xd4, 0x23, 0x56, 0x44, 0xbe, 0xae, 0xbe, 0xae, 0x56, 0x44, - 0xd4, 0x23, 0xd4, 0x23, 0x56, 0x44, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0x3e, 0xc7, 0xdb, 0x95, - 0xdb, 0x8d, 0x1e, 0xc7, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x1e, 0xc7, 0xdb, 0x8d, 0xbb, 0x8d, 0x1e, 0xbf, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x1e, 0xbf, 0xbb, 0x8d, 0xbb, 0x8d, 0x1e, 0xbf, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x1e, 0xbf, 0xbb, 0x8d, - 0xbb, 0x8d, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xbb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, -}; diff --git a/examples/gui/stop.hdh b/examples/gui/stop.hdh deleted file mode 100644 index 83f9e60b78..0000000000 --- a/examples/gui/stop.hdh +++ /dev/null @@ -1,107 +0,0 @@ -static const unsigned char stop_hdh[] = { - 0x48, 0x44, 0x43, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0x9d, 0xae, 0xdf, 0xef, 0xbf, 0xe7, 0xbf, 0xe7, - 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, - 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, - 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, - 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0xbf, 0xe7, 0x9d, 0xae, - 0x9d, 0xae, 0xdf, 0xef, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0xdf, 0xef, 0x9d, 0xae, 0x7d, 0xae, 0xbf, 0xef, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, 0x9f, 0xdf, - 0xbf, 0xef, 0x7d, 0xae, 0x7d, 0xae, 0xbf, 0xe7, 0x7f, 0xd7, 0x7f, 0xd7, - 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, - 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, - 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, - 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0x7f, 0xd7, 0xbf, 0xe7, 0x7d, 0xae, - 0x7d, 0xa6, 0xbf, 0xe7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, - 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0xfb, 0x8d, 0x3c, 0x96, - 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, - 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, 0x5f, 0xd7, - 0x5f, 0xd7, 0x5f, 0xd7, 0xbf, 0xe7, 0x7d, 0xa6, 0x5d, 0xa6, 0x9f, 0xe7, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x5f, 0xcf, 0x5f, 0xcf, 0xf9, 0x4c, 0x3a, 0x55, 0x5a, 0x65, 0x9d, 0xae, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x9f, 0xe7, 0x5d, 0xa6, 0x5d, 0xa6, 0x9f, 0xdf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, - 0xf9, 0x4c, 0x5b, 0x55, 0x3b, 0x55, 0x1a, 0x4d, 0xba, 0x7d, 0x1e, 0xc7, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, - 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x5f, 0xcf, 0x9f, 0xdf, 0x5d, 0xa6, - 0x5c, 0xa6, 0x9f, 0xdf, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, - 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0xd9, 0x4c, 0x3b, 0x4d, - 0x3b, 0x4d, 0x3b, 0x4d, 0x1a, 0x4d, 0xf9, 0x4c, 0xfb, 0x8d, 0x3f, 0xc7, - 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, 0x3f, 0xc7, - 0x3f, 0xc7, 0x3f, 0xc7, 0x9f, 0xdf, 0x5c, 0xa6, 0x3c, 0xa6, 0x7f, 0xdf, - 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, - 0x3e, 0xc7, 0x3e, 0xc7, 0xb8, 0x44, 0x1a, 0x4d, 0x1a, 0x4d, 0x1a, 0x4d, - 0x1a, 0x4d, 0x1a, 0x4d, 0xd9, 0x44, 0x19, 0x5d, 0x7c, 0xa6, 0x3e, 0xc7, - 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, 0x3e, 0xc7, - 0x7f, 0xdf, 0x3c, 0xa6, 0x3c, 0x9e, 0x7f, 0xd7, 0x1e, 0xbf, 0x1e, 0xbf, - 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, - 0x98, 0x44, 0xfa, 0x44, 0xfa, 0x44, 0xfa, 0x44, 0xfa, 0x44, 0xfa, 0x44, - 0xf9, 0x44, 0xd9, 0x44, 0x98, 0x44, 0x39, 0x6d, 0x1e, 0xbf, 0x1e, 0xbf, - 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x1e, 0xbf, 0x7f, 0xd7, 0x3c, 0x9e, - 0x1c, 0x9e, 0x7f, 0xd7, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0x77, 0x3c, 0xd9, 0x44, - 0xd9, 0x44, 0xd9, 0x44, 0xd9, 0x44, 0xd9, 0x44, 0xb9, 0x44, 0xb8, 0x3c, - 0x77, 0x3c, 0x38, 0x6d, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0x7f, 0xd7, 0x1c, 0x9e, 0x1c, 0x9e, 0x5e, 0xcf, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0x56, 0x34, 0x98, 0x3c, 0x98, 0x3c, 0x98, 0x3c, - 0x98, 0x3c, 0x98, 0x3c, 0x77, 0x3c, 0xb7, 0x4c, 0x3c, 0x96, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0x5e, 0xcf, 0x1c, 0x9e, 0xfc, 0x95, 0x5e, 0xcf, 0xfe, 0xb6, 0xfe, 0xb6, - 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, - 0x36, 0x34, 0x78, 0x34, 0x78, 0x34, 0x78, 0x34, 0x57, 0x34, 0x56, 0x3c, - 0x9a, 0x7d, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, - 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb6, 0x5e, 0xcf, 0xfc, 0x95, - 0xfb, 0x95, 0x3e, 0xcf, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, - 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0x15, 0x2c, 0x57, 0x34, - 0x37, 0x34, 0x16, 0x2c, 0xf8, 0x5c, 0x9d, 0xae, 0xde, 0xb6, 0xde, 0xb6, - 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, 0xde, 0xb6, - 0xde, 0xb6, 0xde, 0xb6, 0x3e, 0xcf, 0xfb, 0x95, 0xdb, 0x95, 0x3e, 0xc7, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0xbe, 0xae, 0xbe, 0xae, 0xd4, 0x2b, 0xf5, 0x2b, 0x56, 0x44, 0xfb, 0x8d, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0x3e, 0xc7, 0xdb, 0x95, 0xdb, 0x95, 0x3e, 0xc7, 0xbe, 0xae, 0xbe, 0xae, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0xf8, 0x64, 0x39, 0x6d, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, - 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0xbe, 0xae, 0x3e, 0xc7, 0xdb, 0x95, - 0xdb, 0x8d, 0x1e, 0xc7, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x1e, 0xc7, 0xdb, 0x8d, 0xbb, 0x8d, 0x1e, 0xbf, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x1e, 0xbf, 0xbb, 0x8d, 0xbb, 0x8d, 0x1e, 0xbf, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, - 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x9d, 0xa6, 0x1e, 0xbf, 0xbb, 0x8d, - 0xbb, 0x8d, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, - 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbe, 0xbb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, 0xdb, 0x8d, - 0xdb, 0x8d, 0xdb, 0x8d, -};