Browse Source

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.
Grissiom 12 years ago
parent
commit
b0c84dc305
44 changed files with 0 additions and 4878 deletions
  1. 0 60
      examples/gui/SConscript
  2. 0 156
      examples/gui/demo_application.c
  3. 0 90
      examples/gui/demo_fnview.c
  4. 0 107
      examples/gui/demo_listview.c
  5. 0 350
      examples/gui/demo_listview_icon.c
  6. 0 27
      examples/gui/demo_panel.c
  7. 0 19
      examples/gui/demo_panel_single.c
  8. 0 77
      examples/gui/demo_plot.c
  9. 0 62
      examples/gui/demo_simple_workbench.c
  10. 0 132
      examples/gui/demo_view.c
  11. 0 34
      examples/gui/demo_view.h
  12. 0 141
      examples/gui/demo_view_animation.c
  13. 0 146
      examples/gui/demo_view_benchmark.c
  14. 0 304
      examples/gui/demo_view_bmp.c
  15. 0 44
      examples/gui/demo_view_box.c
  16. 0 157
      examples/gui/demo_view_buffer_animation.c
  17. 0 80
      examples/gui/demo_view_button.c
  18. 0 80
      examples/gui/demo_view_checkbox.c
  19. 0 40
      examples/gui/demo_view_combobox.c
  20. 0 194
      examples/gui/demo_view_dc.c
  21. 0 85
      examples/gui/demo_view_dc_buffer.c
  22. 0 56
      examples/gui/demo_view_digtube.c
  23. 0 182
      examples/gui/demo_view_edit.c
  24. 0 128
      examples/gui/demo_view_image.c
  25. 0 149
      examples/gui/demo_view_instrument_panel.c
  26. 0 104
      examples/gui/demo_view_label.c
  27. 0 195
      examples/gui/demo_view_listbox.c
  28. 0 264
      examples/gui/demo_view_listctrl.c
  29. 0 76
      examples/gui/demo_view_menu.c
  30. 0 78
      examples/gui/demo_view_module.c
  31. 0 42
      examples/gui/demo_view_mywidget.c
  32. 0 53
      examples/gui/demo_view_notebook.c
  33. 0 103
      examples/gui/demo_view_progressbar.c
  34. 0 69
      examples/gui/demo_view_radiobox.c
  35. 0 48
      examples/gui/demo_view_scrollbar.c
  36. 0 49
      examples/gui/demo_view_slider.c
  37. 0 102
      examples/gui/demo_view_textbox.c
  38. 0 98
      examples/gui/demo_view_ttf.c
  39. 0 299
      examples/gui/demo_view_window.c
  40. 0 26
      examples/gui/demo_xml.c
  41. 0 108
      examples/gui/mywidget.c
  42. 0 50
      examples/gui/mywidget.h
  43. 0 107
      examples/gui/play.hdh
  44. 0 107
      examples/gui/stop.hdh

+ 0 - 60
examples/gui/SConscript

@@ -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')

+ 0 - 156
examples/gui/demo_application.c

@@ -1,156 +0,0 @@
-#include <rtgui/rtgui.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/rtgui_app.h>
-
-#include <rtgui/widgets/window.h>
-#include <rtgui/widgets/notebook.h>
-
-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 <finsh.h>
-void application()
-{
-    application_init();
-}
-/* finsh的命令输出,可以直接执行application()函数以执行上面的函数 */
-FINSH_FUNCTION_EXPORT(application, application demo)
-#endif

+ 0 - 90
examples/gui/demo_fnview.c

@@ -1,90 +0,0 @@
-/*
- * 程序清单:文件列表视图演示
- *
- * 这个例子会先创建出一个演示用的view,当点击上面的按钮时会按照模式显示的形式显示
- * 新的文件列表视图。
- */
-#include "demo_view.h"
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/button.h>
-#include <rtgui/widgets/filelist_view.h>
-
-#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

+ 0 - 107
examples/gui/demo_listview.c

@@ -1,107 +0,0 @@
-/*
- * 程序清单:列表视图演示
- *
- * 这个例子会先创建出一个演示用的container,当点击上面的按钮时会按照模式显示的形式显示
- * 新的列表视图
- */
-#include "demo_view.h"
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/button.h>
-#include <rtgui/widgets/window.h>
-#include <rtgui/widgets/list_view.h>
-
-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;
-}

+ 0 - 350
examples/gui/demo_listview_icon.c

@@ -1,350 +0,0 @@
-/*
- * 程序清单:列表视图演示
- *
- * 这个例子会先创建出一个演示用的view,当点击上面的按钮时会按照模式显示的形式显示
- * 新的列表视图
- */
-#include "demo_view.h"
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/button.h>
-#include <rtgui/widgets/window.h>
-#include <rtgui/widgets/list_view.h>
-
-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;
-}

+ 0 - 27
examples/gui/demo_panel.c

@@ -1,27 +0,0 @@
-#include <rtgui/rtgui.h>
-#include <rtgui/rtgui_server.h>
-
-/*
- * 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");
-}

+ 0 - 19
examples/gui/demo_panel_single.c

@@ -1,19 +0,0 @@
-#include <rtgui/rtgui.h>
-#include <rtgui/driver.h>
-#include <rtgui/rtgui_server.h>
-
-/*
- * 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");
-}

+ 0 - 77
examples/gui/demo_plot.c

@@ -1,77 +0,0 @@
-#include <rtgui/widgets/plot.h>
-#include <rtgui/widgets/plot_curve.h>
-
-#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;
-}

+ 0 - 62
examples/gui/demo_simple_workbench.c

@@ -1,62 +0,0 @@
-/*
- * A simple workbench
- */
-#include <rtthread.h>
-#include <rtgui/rtgui_server.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/workbench.h>
-
-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);
-}

+ 0 - 132
examples/gui/demo_view.c

@@ -1,132 +0,0 @@
-#include <rtgui/rtgui.h>
-#include <rtgui/rtgui_app.h>
-
-#include <rtgui/widgets/container.h>
-#include <rtgui/widgets/notebook.h>
-#include <rtgui/widgets/button.h>
-#include <rtgui/widgets/staticline.h>
-#include <rtgui/widgets/box.h>
-
-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;
-}

+ 0 - 34
examples/gui/demo_view.h

@@ -1,34 +0,0 @@
-/*
- * 程序清单:view演示
- *
- * 这是一个视图的演示,也是为了配合整个GUI演示而制作的视图,或者说,其他大多数控件的演示
- * 都是采用,先创建一个demo_view(演示视图),然后再在这个演示视图上添加相应的控件。
- *
- * 这个演示视图默认上方带一个演示标题,下方带两个按钮,点击它切换到前一个视图或后一个视图。
- * 针对控件演示而言,这个演示视图最重要的是提供了一个可显示的区域,只需要在这块区域上添加
- * 控件即可达到演示的目的。
- *
- * 获得这个显示区域的函数是:
- * demo_view_get_rect函数。
- */
-#ifndef __DEMO_VIEW_H__
-#define __DEMO_VIEW_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/rtgui_app.h>
-#include <rtgui/widgets/container.h>
-
-/* 如果是标准版本,可以启用box自动布局引擎 */
-#ifndef RTGUI_USING_SMALL_SIZE
-#include <rtgui/widgets/box.h>
-#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
-

+ 0 - 141
examples/gui/demo_view_animation.c

@@ -1,141 +0,0 @@
-#include <rtgui/dc.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/container.h>
-#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;
-}

+ 0 - 146
examples/gui/demo_view_benchmark.c

@@ -1,146 +0,0 @@
-#include <stdlib.h>
-#include <rtgui/dc.h>
-#include <rtgui/dc_hw.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/container.h>
-#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;
-}

+ 0 - 304
examples/gui/demo_view_bmp.c

@@ -1,304 +0,0 @@
-/*
-* 程序清单:bmp_zoom演示
-*/
-#include "demo_view.h"
-#include <rtgui/dc.h>
-#include <rtgui/image.h>
-#include <rtgui/image_bmp.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/button.h>
-#include <rtgui/widgets/textbox.h>
-#include <rtgui/widgets/container.h>
-
-#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

+ 0 - 44
examples/gui/demo_view_box.c

@@ -1,44 +0,0 @@
-#include "demo_view.h"
-#include <rtgui/widgets/box.h>
-#include <rtgui/widgets/panel.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/button.h>
-
-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;
-}
-

+ 0 - 157
examples/gui/demo_view_buffer_animation.c

@@ -1,157 +0,0 @@
-#include <rtgui/dc.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/container.h>
-#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;
-}

+ 0 - 80
examples/gui/demo_view_button.c

@@ -1,80 +0,0 @@
-/*
- * 程序清单:button控件演示
- *
- * 这个例子会在创建出的container上添加几个不同类型的button控件
- */
-
-#include "demo_view.h"
-#include <rtgui/widgets/button.h>
-
-/* 创建用于演示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;
-}

+ 0 - 80
examples/gui/demo_view_checkbox.c

@@ -1,80 +0,0 @@
-/*
- * 程序清单:checkbox控件演示
- *
- * 这个例子会在创建出的container上添加几个checkbox控件
- */
-
-#include "demo_view.h"
-#include <rtgui/widgets/checkbox.h>
-
-/* 创建用于演示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;
-}

+ 0 - 40
examples/gui/demo_view_combobox.c

@@ -1,40 +0,0 @@
-/*
- * 程序清单:label控件演示
- *
- * 这个例子会在创建出的container上添加几个不同类型的label控件
- */
-#include "demo_view.h"
-#include <rtgui/widgets/combobox.h>
-
-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;
-}

+ 0 - 194
examples/gui/demo_view_dc.c

@@ -1,194 +0,0 @@
-/*
- * 程序清单:DC操作演示
- *
- * 这个例子会在创建出的view上进行DC操作的演示
- */
-
-#include "demo_view.h"
-#include <rtgui/dc.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/slider.h>
-#include <rtgui/image_hdc.h>
-
-#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;
-}

+ 0 - 85
examples/gui/demo_view_dc_buffer.c

@@ -1,85 +0,0 @@
-/*
- * 程序清单:DC Buffer演示
- *
- * 这个例子会在创建出的view上进行DC Buffer的演示
- */
-
-#include "demo_view.h"
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/slider.h>
-#include <rtgui/image.h>
-
-
-/*
- * 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;
-}

+ 0 - 56
examples/gui/demo_view_digtube.c

@@ -1,56 +0,0 @@
-#include "demo_view.h"
-#include <rtgui/widgets/digtube.h>
-
-/* 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;
-}

+ 0 - 182
examples/gui/demo_view_edit.c

@@ -1,182 +0,0 @@
-/*
- * 程序清单:edit控件演示
- *
- * 这个例子会在conatiner上进行edit控件的演示
- */
-
-#include "demo_view.h"
-#include <rtgui/dc.h>
-#include <rtgui/filerw.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/edit.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/button.h>
-
-#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

+ 0 - 128
examples/gui/demo_view_image.c

@@ -1,128 +0,0 @@
-/*
- * 程序清单:DC上显示图像演示
- *
- * 这个例子会在创建出的container上显示图像
- */
-
-#include "demo_view.h"
-#include <rtgui/widgets/button.h>
-#include <rtgui/widgets/filelist_view.h>
-#include <string.h>
-
-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

+ 0 - 149
examples/gui/demo_view_instrument_panel.c

@@ -1,149 +0,0 @@
-/*
- * 程序清单:DC操作演示
- *
- * 这个例子会在创建出的container上进行DC操作的演示
- */
-
-#include "demo_view.h"
-#include <rtgui/dc.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/slider.h>
-#include <rtgui/image_hdc.h>
-#include <math.h>
-
-/*
- * 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;
-}

+ 0 - 104
examples/gui/demo_view_label.c

@@ -1,104 +0,0 @@
-/*
- * 程序清单:label控件演示
- *
- * 这个例子会在创建出的container上添加几个不同类型的label控件
- */
-#include "demo_view.h"
-#include <rtgui/widgets/label.h>
-
-/* 创建用于演示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;
-}
-

+ 0 - 195
examples/gui/demo_view_listbox.c

@@ -1,195 +0,0 @@
-/*
- * 程序清单:label控件演示
- *
- * 这个例子会在创建出的container上添加几个不同类型的label控件
- */
-#include "demo_view.h"
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/listbox.h>
-
-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;
-}

+ 0 - 264
examples/gui/demo_view_listctrl.c

@@ -1,264 +0,0 @@
-/*
- * 程序清单:label控件演示
- *
- * 这个例子会在创建出的container上添加几个不同类型的label控件
- */
-#include "demo_view.h"
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/listctrl.h>
-
-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;
-}

+ 0 - 76
examples/gui/demo_view_menu.c

@@ -1,76 +0,0 @@
-/*
- * 程序清单:menu控件演示
- *
- * 这个例子会在创建出的container上添加几个不同类型的label控件
- */
-#include "demo_view.h"
-#include <rtgui/widgets/menu.h>
-#include <rtgui/widgets/button.h>
-
-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;
-}

+ 0 - 78
examples/gui/demo_view_module.c

@@ -1,78 +0,0 @@
-/*
- * 程序清单:DC上显示图像演示
- *
- * 这个例子会在创建出的view上显示图像
- */
-
-#include "demo_view.h"
-#include <rtgui/widgets/button.h>
-#include <rtgui/widgets/filelist_view.h>
-#include <string.h>
-
-#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
-

+ 0 - 42
examples/gui/demo_view_mywidget.c

@@ -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;
-}

+ 0 - 53
examples/gui/demo_view_notebook.c

@@ -1,53 +0,0 @@
-/*
- * 程序清单:notebook控件演示
- *
- * 这个例子会在创建出的container上演示notebook控件
- */
-
-#include "demo_view.h"
-#include <rtgui/widgets/notebook.h>
-#include <rtgui/widgets/listbox.h>
-
-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;
-}

+ 0 - 103
examples/gui/demo_view_progressbar.c

@@ -1,103 +0,0 @@
-#include "demo_view.h"
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/progressbar.h>
-
-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;
-}
-

+ 0 - 69
examples/gui/demo_view_radiobox.c

@@ -1,69 +0,0 @@
-/*
- * 程序清单:radiobox控件演示
- *
- * 这个例子会在创建出的container上添加两个不同方向的radiobox控件
- */
-
-#include "demo_view.h"
-#include <rtgui/widgets/radiobox.h>
-
-/* 用于显示垂直方向的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;
-}

+ 0 - 48
examples/gui/demo_view_scrollbar.c

@@ -1,48 +0,0 @@
-#include "demo_view.h"
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/scrollbar.h>
-
-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;
-}

+ 0 - 49
examples/gui/demo_view_slider.c

@@ -1,49 +0,0 @@
-#include "demo_view.h"
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/slider.h>
-
-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;
-}

+ 0 - 102
examples/gui/demo_view_textbox.c

@@ -1,102 +0,0 @@
-/*
- * 程序清单:texbox控件演示
- *
- * 这个例子会在创建出的container上添加几个不同类型的textbox控件
- */
-#include "demo_view.h"
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/textbox.h>
-
-/* 创建用于演示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;
-}

+ 0 - 98
examples/gui/demo_view_ttf.c

@@ -1,98 +0,0 @@
-/*
- * 程序清单:TTF字体显示演示
- *
- * 这个例子会在创建出的container上进行TTF字体显示的演示
- */
-
-#include "demo_view.h"
-#include <rtgui/dc.h>
-#include <rtgui/font.h>
-#include <rtgui/rtgui_system.h>
-
-#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

+ 0 - 299
examples/gui/demo_view_window.c

@@ -1,299 +0,0 @@
-/*
- * 程序清单:窗口演示
- *
- * 这个例子会先创建出一个演示用的container,当点击上面的按钮时会不同的模式创建窗口
- */
-
-#include <rtgui/rtgui.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/widgets/window.h>
-#include <rtgui/widgets/label.h>
-#include <rtgui/widgets/button.h>
-#include "demo_view.h"
-#include <string.h>
-
-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;
-}

+ 0 - 26
examples/gui/demo_xml.c

@@ -1,26 +0,0 @@
-#include <rtthread.h>
-
-#include <rtgui/rtgui_xml.h>
-
-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[] = "<?xml version=\"1.0\"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>";
-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.h>
-FINSH_FUNCTION_EXPORT(demo_xml, show the demo of xml parser);
-#endif

+ 0 - 108
examples/gui/mywidget.c

@@ -1,108 +0,0 @@
-#include <rtgui/dc.h>
-#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));
-}

+ 0 - 50
examples/gui/mywidget.h

@@ -1,50 +0,0 @@
-/*
- * 程�清�:自定义控件
- *
- * 这个例�是�实现一个自定义控件,外观大致如
- *   |
- * --o--
- *   |
- * 的形状,中间的o色彩表示了当�的状�,ON状�时是绿色,OFF状�时是红色�
- * 并且,这个o�置接�鼠标点击,点击下切�下相应的状��
- */
-#ifndef __MY_WIDGET_H__
-#define __MY_WIDGET_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/widgets/widget.h>
-
-/* 自定义控件的状�值定�*/
-#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�OFF */
-    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

+ 0 - 107
examples/gui/play.hdh

@@ -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,
-};

+ 0 - 107
examples/gui/stop.hdh

@@ -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,
-};