diff --git a/examples/gui/SConscript b/examples/gui/SConscript index 35f4c9e810..7993944c0e 100644 --- a/examples/gui/SConscript +++ b/examples/gui/SConscript @@ -13,6 +13,8 @@ demo_view_module.c src = Split(""" demo_application.c +demo_listview.c +demo_listview_icon.c demo_view.c demo_view_benchmark.c demo_view_dc.c @@ -37,6 +39,7 @@ demo_view_slider.c demo_view_notebook.c demo_view_mywidget.c demo_view_box.c +demo_view_edit.c mywidget.c """) diff --git a/examples/gui/demo_application.c b/examples/gui/demo_application.c index b84eaa704f..b0ca552282 100644 --- a/examples/gui/demo_application.c +++ b/examples/gui/demo_application.c @@ -7,141 +7,142 @@ struct rtgui_notebook *the_notebook; -static rt_bool_t demo_handle_key(struct rtgui_object* object, struct rtgui_event* event) +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; + 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; + 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) +static void application_entry(void *parameter) { - struct rtgui_app *app; - struct rtgui_rect rect; + struct rtgui_app *app; + struct rtgui_rect rect; - app = rtgui_app_create(rt_thread_self(), "gui_demo"); - if (app == RT_NULL) - return; + app = rtgui_app_create(rt_thread_self(), "gui_demo"); + if (app == RT_NULL) + return; - /* create a full screen window */ - rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), &rect); + /* 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; - } + 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); + 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; - } + /* 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)); + rtgui_container_add_child(RTGUI_CONTAINER(main_win), RTGUI_WIDGET(the_notebook)); - demo_view_box(); + //demo_view_box(); - /* 初始化各个例子的视图 */ - demo_view_benchmark(); + /* 初始化各个例子的视图 */ + demo_view_benchmark(); - demo_view_dc(); + demo_view_dc(); #ifdef RTGUI_USING_TTF - demo_view_ttf(); + demo_view_ttf(); #endif #ifndef RTGUI_USING_SMALL_SIZE - demo_view_dc_buffer(); + demo_view_dc_buffer(); #endif - demo_view_animation(); + demo_view_animation(); #ifndef RTGUI_USING_SMALL_SIZE - demo_view_buffer_animation(); - demo_view_instrument_panel(); + 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_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_view_edit(); #if 0 #if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW) - demo_view_image(); + demo_view_image(); #endif -#ifdef RT_USING_MODULE +#ifdef RT_USING_MODULE #if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW) - demo_view_module(); + demo_view_module(); #endif #endif - demo_listview_view(); - demo_listview_icon_view(); + demo_listview_view(); + demo_listview_icon_view(); #if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW) - demo_fn_view(); + demo_fn_view(); #endif #endif - rtgui_win_show(main_win, RT_FALSE); + rtgui_win_show(main_win, RT_FALSE); - /* 执行工作台事件循环 */ - rtgui_app_run(app); + /* 执行工作台事件循环 */ + rtgui_app_run(app); - rtgui_app_destroy(app); + rtgui_app_destroy(app); } void application_init() { - static rt_bool_t inited = RT_FALSE; + static rt_bool_t inited = RT_FALSE; - if (inited == RT_FALSE) /* 避免重复初始化而做的保护 */ - { - rt_thread_t tid; + if (inited == RT_FALSE) /* 避免重复初始化而做的保护 */ + { + rt_thread_t tid; - tid = rt_thread_create("wb", - application_entry, RT_NULL, - 2048 * 2, 25, 10); + tid = rt_thread_create("wb", + application_entry, RT_NULL, + 2048 * 2, 25, 10); - if (tid != RT_NULL) - rt_thread_startup(tid); + if (tid != RT_NULL) + rt_thread_startup(tid); - inited = RT_TRUE; - } + inited = RT_TRUE; + } } #ifdef RT_USING_FINSH #include void application() { - application_init(); + application_init(); } /* finsh的命令输出,可以直接执行application()函数以执行上面的函数 */ FINSH_FUNCTION_EXPORT(application, application demo) diff --git a/examples/gui/demo_fnview.c b/examples/gui/demo_fnview.c index f7148659c0..af170101b4 100644 --- a/examples/gui/demo_fnview.c +++ b/examples/gui/demo_fnview.c @@ -11,80 +11,80 @@ #if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW) /* 用于显示选择文件名的文本标签 */ -static rtgui_label_t* label; +static rtgui_label_t *label; /* 触发文件列表视图的按钮回调函数 */ -static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event) +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; + 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); + /* 获得顶层的workbench对象 */ + workbench = RTGUI_APPLICATION(rtgui_widget_get_toplevel(widget)); + rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); - /* 针对Win32平台和其他平台做的不同的其实目录位置 */ + /* 针对Win32平台和其他平台做的不同的其实目录位置 */ #ifdef _WIN32 - view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); + view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); #else - view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect); + view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect); #endif - /* 采用模式形式显示文件列表视图 */ - if (rtgui_container_show(RTGUI_CONTAINER(view), RT_TRUE) == RTGUI_MODAL_OK) - { - char path[32]; + /* 采用模式形式显示文件列表视图 */ + 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_filelist_view_get_fullpath(view, path, sizeof(path)); - /* 设置文件路径到文本标签 */ - rtgui_label_set_text(label, path); - } + /* 设置文件路径到文本标签 */ + rtgui_label_set_text(label, path); + } - /* 删除 文件列表 视图 */ - rtgui_container_destroy(RTGUI_CONTAINER(view)); + /* 删除 文件列表 视图 */ + rtgui_container_destroy(RTGUI_CONTAINER(view)); } /* 创建用于演示文件列表视图的视图 */ -rtgui_container_t* demo_fn_view(rtgui_workbench_t* workbench) +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; + rtgui_rect_t rect; + rtgui_container_t *view; + rtgui_button_t *open_btn; + rtgui_font_t *font; - /* 默认采用12字体的显示 */ - font = rtgui_font_refer("asc", 12); + /* 默认采用12字体的显示 */ + font = rtgui_font_refer("asc", 12); - /* 创建演示用的视图 */ - view = demo_view(workbench, "FileList View"); - /* 获得演示视图的位置信息 */ - demo_view_get_rect(view, &rect); + /* 创建演示用的视图 */ + 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; + 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); + /* 获得演示视图的位置信息 */ + 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; + return view; } #endif diff --git a/examples/gui/demo_listview.c b/examples/gui/demo_listview.c index 28b9e84afe..0d0bbeba8d 100644 --- a/examples/gui/demo_listview.c +++ b/examples/gui/demo_listview.c @@ -10,98 +10,98 @@ #include #include -static struct rtgui_app *application = RT_NULL; -static rtgui_list_view_t* _view = RT_NULL; +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) +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; + 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); + rtgui_rect_moveto(&rect, 20, 50); - /* 显示消息窗口 */ - win = rtgui_win_create(RTGUI_TOPLEVEL(application), - "窗口", &rect, RTGUI_WIN_STYLE_DEFAULT); + /* 显示消息窗口 */ + 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; + 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); + /* 添加相应的标签 */ + 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_widget_set_rect(RTGUI_WIDGET(label), &rect); + rtgui_container_add_child(win, RTGUI_WIDGET(label)); - /* 非模态显示窗口 */ - rtgui_win_show(win, RT_FALSE); + /* 非模态显示窗口 */ + rtgui_win_show(win, RT_FALSE); } /* 返回功能的动作函数 */ -static void return_action(rtgui_widget_t* widget, void* parameter) +static void return_action(rtgui_widget_t *widget, void *parameter) { - rtgui_container_end_modal(RTGUI_CONTAINER(_view), RTGUI_MODAL_OK); + 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}, + {"列表项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) +static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event) { - rtgui_rect_t rect; + rtgui_rect_t rect; - /* 获得顶层的application */ - application = RTGUI_APPLICATION(rtgui_widget_get_toplevel(widget)); - rtgui_widget_get_rect(RTGUI_WIDGET(application), &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); + /* 创建一个列表视图, 项指定为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_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_show(RTGUI_CONTAINER(_view), RT_TRUE); + rtgui_container_destroy(RTGUI_CONTAINER(_view)); + _view = RT_NULL; } /* 创建用于演示列表视图的视图 */ -rtgui_container_t* demo_listview_view(void) +rtgui_container_t *demo_listview_view(void) { - rtgui_rect_t rect; - rtgui_container_t *container; - rtgui_button_t* open_btn; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_button_t *open_btn; - container = demo_view("列表视图演示"); + 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); + /* 添加动作按钮 */ + 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; + return container; } diff --git a/examples/gui/demo_listview_icon.c b/examples/gui/demo_listview_icon.c index e957e470d9..6014172582 100644 --- a/examples/gui/demo_listview_icon.c +++ b/examples/gui/demo_listview_icon.c @@ -10,337 +10,341 @@ #include #include -static struct rtgui_app *application = RT_NULL; -static rtgui_list_view_t* _view = RT_NULL; +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) +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; + 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); + rtgui_rect_moveto(&rect, 20, 50); - /* 显示消息窗口 */ - win = rtgui_win_create(RTGUI_TOPLEVEL(application), - "窗口", &rect, RTGUI_WIN_STYLE_DEFAULT); + /* 显示消息窗口 */ + 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; + 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); + /* 添加相应的标签 */ + 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_widget_set_rect(RTGUI_WIDGET(label), &rect); + rtgui_container_add_child(RTGUI_CONTAINER(win), RTGUI_WIDGET(label)); - /* 非模态显示窗口 */ - rtgui_win_show(win, RT_FALSE); + /* 非模态显示窗口 */ + rtgui_win_show(win, RT_FALSE); } /* 返回功能的动作函数 */ -static void return_action(rtgui_widget_t* widget, void* parameter) +static void return_action(rtgui_widget_t *widget, void *parameter) { - /* 退出模态显示 */ - rtgui_container_end_modal(RTGUI_CONTAINER(_view), RTGUI_MODAL_OK); + /* 退出模态显示 */ + rtgui_container_end_modal(RTGUI_CONTAINER(_view), RTGUI_MODAL_OK); } /* 列表项 */ -#define ITEM_MAX 50 +#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 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 *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 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) +static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event) { - rtgui_rect_t rect; - rt_uint32_t index; + 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); + /* 获得顶层的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]; + /* 初始化图标列表 */ + 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 = (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[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)); + /* 创建一个列表视图, 项指定为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)); + /* 模式显示视图 */ + rtgui_container_show(RTGUI_CONTAINER(_view), RT_TRUE); + rtgui_container_destroy(RTGUI_CONTAINER(_view)); - _view = RT_NULL; + _view = RT_NULL; } /* 创建用于演示列表视图的视图 */ -rtgui_container_t* demo_listview_icon_view(struct rtgui_app *app) +rtgui_container_t *demo_listview_icon_view(struct rtgui_application *app) { - rtgui_rect_t rect; - rtgui_container_t *view; - rtgui_button_t* open_btn; + rtgui_rect_t rect; + rtgui_container_t *view; + rtgui_button_t *open_btn; - view = demo_view(app, "图标视图演示"); + 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); + 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); + /* 添加动作按钮 */ + 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; + return view; } diff --git a/examples/gui/demo_simple_workbench.c b/examples/gui/demo_simple_workbench.c index 1f24ac72e5..7baa0b0c50 100644 --- a/examples/gui/demo_simple_workbench.c +++ b/examples/gui/demo_simple_workbench.c @@ -7,54 +7,56 @@ #include #include -static void workbench_entry(void* parameter) +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; + 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; + 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; + 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)); + /* 添加一个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); + /* 添加到父workbench中 */ + rtgui_workbench_add_view(workbench, view); + /* 非模式方式显示视图 */ + rtgui_container_show(view, RT_FALSE); - /* 执行工作台事件循环 */ - rtgui_workbench_event_loop(workbench); + /* 执行工作台事件循环 */ + rtgui_workbench_event_loop(workbench); - /* 去注册GUI线程 */ - rtgui_thread_deregister(rt_thread_self()); + /* 去注册GUI线程 */ + rtgui_thread_deregister(rt_thread_self()); - /* delete message queue */ - rt_mq_delete(mq); + /* delete message queue */ + rt_mq_delete(mq); } /* 初始化workbench */ void wb_init() { - rt_thread_t tid; + rt_thread_t tid; - tid = rt_thread_create("wb1", workbench_entry, RT_NULL, 2048, 20, 5); - if (tid != RT_NULL) rt_thread_startup(tid); + tid = rt_thread_create("wb1", workbench_entry, RT_NULL, 2048, 20, 5); + if (tid != RT_NULL) rt_thread_startup(tid); } diff --git a/examples/gui/demo_view.c b/examples/gui/demo_view.c index 885e600aeb..2597dc081a 100644 --- a/examples/gui/demo_view.c +++ b/examples/gui/demo_view.c @@ -11,141 +11,120 @@ 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)); + 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); + 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); + 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) +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; + 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; + container = rtgui_container_create(); + if (container == RT_NULL) + return RT_NULL; - rtgui_notebook_add(the_notebook, title, RTGUI_WIDGET(container)); + 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 -= 5; - rect.y2 = rect.y1 + 20; + /* 获得视图的位置信息(在加入到 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 -= 5; + 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)); + /* 创建标题用的标签 */ + label = rtgui_label_create(title); + /* 设置标签位置信息 */ + rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); + /* 添加标签到视图中 */ + rtgui_container_add_child(container, RTGUI_WIDGET(label)); - rect.y1 += 20; - rect.y2 += 20; - /* 创建一个水平的 staticline 线 */ - line = rtgui_staticline_create(RTGUI_HORIZONTAL); - /* 设置静态线的位置信息 */ - rtgui_widget_set_rect(RTGUI_WIDGET(line), &rect); - /* 添加静态线到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(line)); + rect.y1 += 20; + rect.y2 += 20; + /* 创建一个水平的 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; + /* 获得视图的位置信息 */ + 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)); + /* 创建"下一个"按钮 */ + 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; + /* 获得视图的位置信息 */ + 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)); + /* 创建"上一个"按钮 */ + 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; + /* 返回创建的视图 */ + return container; } /* 这个函数用于返回演示视图的对外可用区域 */ -void demo_view_get_rect(rtgui_container_t* container, rtgui_rect_t *rect) +void demo_view_get_rect(rtgui_container_t *container, rtgui_rect_t *rect) { - RT_ASSERT(container != RT_NULL); - RT_ASSERT(rect != RT_NULL); + 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; + 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) +void demo_view_get_logic_rect(rtgui_container_t *container, rtgui_rect_t *rect) { - RT_ASSERT(container != RT_NULL); - RT_ASSERT(rect != RT_NULL); + RT_ASSERT(container != RT_NULL); + RT_ASSERT(rect != RT_NULL); - rtgui_widget_get_rect(RTGUI_WIDGET(container), rect); - /* 去除演示标题和下方按钮的区域 */ - rect->y1 += 45; - rect->y2 -= 35; + rtgui_widget_get_rect(RTGUI_WIDGET(container), rect); + /* 去除演示标题和下方按钮的区域 */ + rect->y1 += 45; + rect->y2 -= 35; } - -/* 当是标准版本时,这个函数用于返回自动布局引擎box控件 */ -#ifndef RTGUI_USING_SMALL_SIZE -struct rtgui_box* demo_view_create_box(struct rtgui_container *container, int orient) -{ - rtgui_rect_t rect; - struct rtgui_box* box; - - /* 获得视图的位置信息 */ - rtgui_widget_get_rect(RTGUI_WIDGET(container), &rect); - rect.y1 += 45; - rect.y2 -= 25; - - /* 创建一个自动布局引擎 */ - box = rtgui_box_create(orient, 5); - /* 添加box控件到视图中 */ - rtgui_container_add_child(container, RTGUI_WIDGET(box)); - - return box; -} -#endif diff --git a/examples/gui/demo_view.h b/examples/gui/demo_view.h index 8f138a2750..8ab8ffeb97 100644 --- a/examples/gui/demo_view.h +++ b/examples/gui/demo_view.h @@ -24,16 +24,11 @@ #endif /* 鍒涘缓涓涓紨绀鸿鍥撅紝闇瑕佺粰鍑鸿繖涓鍥剧殑婕旂ず鏍囬 */ -rtgui_container_t* demo_view(const char* title); +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_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); -/* 濡傛灉鏄爣鍑嗙増锛屽彲浠ヨ皟鐢ㄨ繖涓嚱鏁拌幏寰椾竴涓嚜鍔ㄥ竷灞寮曟搸 */ -#ifndef RTGUI_USING_SMALL_SIZE -rtgui_box_t* demo_view_create_box(rtgui_container_t* view, int orient); -#endif - #endif diff --git a/examples/gui/demo_view_animation.c b/examples/gui/demo_view_animation.c index cc3bfb902f..3a676ee57c 100644 --- a/examples/gui/demo_view_animation.c +++ b/examples/gui/demo_view_animation.c @@ -13,120 +13,122 @@ 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) +void timeout(struct rtgui_timer *timer, void *parameter) { - struct rtgui_dc* dc; - struct rtgui_rect rect; - struct rtgui_widget *widget; + struct rtgui_dc *dc; + struct rtgui_rect rect; + struct rtgui_widget *widget; - /* 控件(container)通过parameter参数传递给定时器 */ - widget = RTGUI_WIDGET(parameter); + /* 控件(container)通过parameter参数传递给定时器 */ + widget = RTGUI_WIDGET(parameter); - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return ; + /* 获得控件所属的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; + /* 获得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); - } + /* 判断是否是第一次绘图 */ + 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; + 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; + 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_draw_text(dc, "飞线乱飞", &text_rect); - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); } -rt_bool_t animation_event_handler(struct rtgui_object* object, rtgui_event_t *event) +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; + if (event->type == RTGUI_EVENT_PAINT) + { + struct rtgui_dc *dc; + rtgui_rect_t rect; - /* 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container先绘图 */ - rtgui_container_event_handler(object, event); + /* 因为用的是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; + /* 获得控件所属的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_fill_rect(dc, &rect); /* 绘图 */ rtgui_dc_draw_text(dc, "飞线乱飞", &text_rect); - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else - { - /* 调用默认的事件处理函数 */ - return rtgui_container_event_handler(object, event); - } + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); + } + else + { + /* 调用默认的事件处理函数 */ + return rtgui_container_event_handler(object, event); + } - return RT_FALSE; + return RT_FALSE; } 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; + 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_kprintf("animation on hide\n"); + if (timer != RT_NULL) + rtgui_timer_stop(timer); + return RT_TRUE; } rtgui_container_t *demo_view_animation() { - rtgui_container_t *container; + rtgui_container_t *container; - container = demo_view("DC 动画"); - if (container != RT_NULL) - rtgui_object_set_event_handler(RTGUI_OBJECT(container), animation_event_handler); + 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(RTGUI_WIDGET(container)), "飞线乱飞", &text_rect); - rtgui_rect_moveto(&text_rect, 0, 45); - timer = rtgui_timer_create(2, RT_TIMER_FLAG_PERIODIC, timeout, (void*)container); + 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); - rtgui_widget_set_onshow(RTGUI_WIDGET(container), animation_on_show); - rtgui_widget_set_onhide(RTGUI_WIDGET(container), animation_on_hide); + rtgui_widget_set_onshow(RTGUI_WIDGET(container), animation_on_show); + rtgui_widget_set_onhide(RTGUI_WIDGET(container), animation_on_hide); - return container; + return container; } diff --git a/examples/gui/demo_view_benchmark.c b/examples/gui/demo_view_benchmark.c index 956bf9e4a2..f87304733f 100644 --- a/examples/gui/demo_view_benchmark.c +++ b/examples/gui/demo_view_benchmark.c @@ -11,112 +11,112 @@ static int running = 0; void _onidle(struct rtgui_object *object, rtgui_event_t *event) { - rtgui_color_t color; - rtgui_rect_t rect, draw_rect; - struct rtgui_dc *dc; + 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; + /* 获得控件所属的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(draw_rect.x1, rect.x2); - draw_rect.y2 = RAND(draw_rect.y1, rect.y2); + 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(draw_rect.x1, rect.x2); + draw_rect.y2 = RAND(draw_rect.y1, rect.y2); - color = RTGUI_RGB(rand() % 255, rand() % 255, rand() % 255); - RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(container)) = color; + color = RTGUI_RGB(rand() % 255, rand() % 255, rand() % 255); + RTGUI_WIDGET_BACKGROUND(container) = color; - rtgui_dc_fill_rect(dc, &draw_rect); + rtgui_dc_fill_rect(dc, &draw_rect); - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); } -void _draw_default(struct rtgui_object *object, rtgui_event_t* event) +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; + 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); + /* 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container先绘图 */ + rtgui_container_event_handler(object, event); - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return; + /* 获得控件所属的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); + /* 获得demo container允许绘图的区域 */ + demo_view_get_logic_rect(RTGUI_CONTAINER(widget), &rect); - /* 擦除所有 */ - RTGUI_WIDGET_BACKGROUND(widget) = default_background; - rtgui_dc_fill_rect(dc, &rect); + /* 擦除所有 */ + RTGUI_WIDGET_BACKGROUND(widget) = default_background; + rtgui_dc_fill_rect(dc, &rect); - /* 显示提示 */ - rtgui_dc_draw_text(dc, "按任意键开始/停止测试...", &rect); + /* 显示提示 */ + rtgui_dc_draw_text(dc, "按任意键开始/停止测试...", &rect); - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); + /* 绘图完成 */ + 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_KBD) - { - struct rtgui_event_kbd *kbd = (struct rtgui_event_kbd*)event; + if (event->type == RTGUI_EVENT_PAINT) + { + _draw_default(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 (kbd->key == RTGUIK_LEFT || kbd->key == RTGUIK_RIGHT) + return RT_FALSE; - if (RTGUI_KBD_IS_UP(kbd)) - { - if (running) - { - /* stop */ - rtgui_app_set_onidle(RT_NULL); - _draw_default(object, event); - } - else - { - /* run */ - rtgui_app_set_onidle(_onidle); - } + if (RTGUI_KBD_IS_UP(kbd)) + { + if (running) + { + /* stop */ + rtgui_app_set_onidle(RT_NULL); + _draw_default(object, event); + } + else + { + /* run */ + rtgui_app_set_onidle(_onidle); + } - running = !running; - } - return RT_TRUE; - } - else - { - /* 调用默认的事件处理函数 */ - return rtgui_container_event_handler(object, event); - } + running = !running; + } + return RT_TRUE; + } + else + { + /* 调用默认的事件处理函数 */ + return rtgui_container_event_handler(object, event); + } - return RT_FALSE; + return RT_FALSE; } -static rt_bool_t _benchmark_onshow(struct rtgui_object *obj, struct rtgui_event* ev) +static rt_bool_t _benchmark_onshow(struct rtgui_object *obj, struct rtgui_event *ev) { - rtgui_widget_focus(RTGUI_WIDGET(obj)); - return RT_TRUE; + rtgui_widget_focus(RTGUI_WIDGET(obj)); + return RT_TRUE; } 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); - rtgui_widget_set_onshow(RTGUI_WIDGET(container), _benchmark_onshow); + srand(100); + container = demo_view("绘图测试"); + RTGUI_WIDGET(container)->flag |= RTGUI_WIDGET_FLAG_FOCUSABLE; + rtgui_object_set_event_handler(RTGUI_OBJECT(container), benchmark_event_handler); + rtgui_widget_set_onshow(RTGUI_WIDGET(container), _benchmark_onshow); - return container; + return container; } diff --git a/examples/gui/demo_view_box.c b/examples/gui/demo_view_box.c index f567acdb78..f2ab96baa9 100644 --- a/examples/gui/demo_view_box.c +++ b/examples/gui/demo_view_box.c @@ -4,40 +4,40 @@ #include #include -rtgui_container_t* demo_view_box(void) +rtgui_container_t *demo_view_box(void) { rtgui_rect_t rect; - rtgui_container_t* view; - struct rtgui_panel *panel; - struct rtgui_box *box; + rtgui_container_t *view; + struct rtgui_panel *panel; + struct rtgui_box *box; - struct rtgui_label *label; - struct rtgui_button *button; + 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)); + 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); + 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)); + 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 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_miniheight(RTGUI_WIDGET(button), 25); - RTGUI_WIDGET_ALIGN(button) = RTGUI_ALIGN_EXPAND; + button = rtgui_button_create("button 2"); + rtgui_container_add_child(RTGUI_CONTAINER(panel), RTGUI_WIDGET(button)); + rtgui_widget_set_miniheight(RTGUI_WIDGET(button), 25); + RTGUI_WIDGET_ALIGN(button) = RTGUI_ALIGN_EXPAND; - rtgui_container_layout(RTGUI_CONTAINER(panel)); + rtgui_container_layout(RTGUI_CONTAINER(panel)); return view; } diff --git a/examples/gui/demo_view_buffer_animation.c b/examples/gui/demo_view_buffer_animation.c index d435c787b2..4b81700193 100644 --- a/examples/gui/demo_view_buffer_animation.c +++ b/examples/gui/demo_view_buffer_animation.c @@ -13,132 +13,138 @@ 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) +static void timeout(struct rtgui_timer *timer, void *parameter) { - struct rtgui_dc* dc; - rtgui_rect_t rect; - rtgui_widget_t *widget; + struct rtgui_dc *dc; + rtgui_rect_t rect; + rtgui_widget_t *widget; - /* 控件(view)通过parameter参数传递给定时器 */ - widget = (rtgui_widget_t*)parameter; + /* 控件(view)通过parameter参数传递给定时器 */ + widget = (rtgui_widget_t *)parameter; - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - if (dc == RT_NULL) /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - return ; + /* 获得控件所属的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; + /* 获得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); - } + /* 判断是否是第一次绘图 */ + 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; + 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; + 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); + rect = text_rect; + rect.x2 += 2; + rect.y2 += 2; + rtgui_dc_blit(dc_buffer, NULL, dc, &rect); - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); } static rt_bool_t animation_event_handler(struct rtgui_object *object, rtgui_event_t *event) { - struct rtgui_widget *widget = RTGUI_WIDGET(object); + struct rtgui_widget *widget = RTGUI_WIDGET(object); - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc* dc; - rtgui_rect_t rect; + if (event->type == RTGUI_EVENT_PAINT) + { + struct rtgui_dc *dc; + rtgui_rect_t rect; - /* 因为用的是demo view,上面本身有一部分控件,所以在绘图时先要让demo view先绘图 */ - rtgui_container_event_handler(object, event); + /* 因为用的是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; + /* 获得控件所属的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); + /* 绘图 */ + rect = text_rect; + rtgui_rect_inflate(&rect, +1); + rtgui_dc_blit(dc_buffer, NULL, dc, &rect); - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else - { - /* 调用默认的事件处理函数 */ - return rtgui_container_event_handler(object, event); - } + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); + } + else + { + /* 调用默认的事件处理函数 */ + return rtgui_container_event_handler(object, event); + } - return RT_FALSE; + return RT_FALSE; } 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); + rt_kprintf("buffer animation on show\n"); + rtgui_timer_start(timer); - return RT_TRUE; + 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); + rt_kprintf("buffer animation on hide\n"); + rtgui_timer_stop(timer); - return RT_TRUE; + return RT_TRUE; } struct rtgui_container *demo_view_buffer_animation(void) { - struct rtgui_container *container; + struct rtgui_container *container; - container= demo_view("DC 缓冲区动画"); - if (container!= RT_NULL) - rtgui_object_set_event_handler(RTGUI_OBJECT(container), animation_event_handler); + 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(RTGUI_WIDGET(container)), "缓冲动画", &text_rect); - if (dc_buffer == RT_NULL) - { - rtgui_rect_t rect; + 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; + 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(RTGUI_WIDGET(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); - } + /* 创建 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); + /* 启动定时器以触发动画 */ + timer = rtgui_timer_create(1, RT_TIMER_FLAG_PERIODIC, timeout, (void *)container); - rtgui_widget_set_onshow(RTGUI_WIDGET(container), animation_on_show); - rtgui_widget_set_onhide(RTGUI_WIDGET(container), animation_on_hide); + rtgui_widget_set_onshow(RTGUI_WIDGET(container), animation_on_show); + rtgui_widget_set_onhide(RTGUI_WIDGET(container), animation_on_hide); - return container; + return container; } diff --git a/examples/gui/demo_view_button.c b/examples/gui/demo_view_button.c index 70465384b0..45c688cfac 100644 --- a/examples/gui/demo_view_button.c +++ b/examples/gui/demo_view_button.c @@ -8,73 +8,73 @@ #include /* 鍒涘缓鐢ㄤ簬婕旂ずbutton鎺т欢鐨勮鍥 */ -rtgui_container_t* demo_view_button(void) +rtgui_container_t *demo_view_button(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_button_t* button; - rtgui_font_t* font; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_button_t *button; + rtgui_font_t *font; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("Button View"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + 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; - /* 鍒涘缓涓涓猙utton鎺т欢 */ - button = rtgui_button_create("Red"); - /* 璁剧疆label鎺т欢鐨勫墠鏅壊涓虹孩鑹 */ - RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(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; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猙utton鎺т欢 */ + 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; - /* 鍒涘缓涓涓猙utton鎺т欢 */ - button = rtgui_button_create("Blue"); - /* 璁剧疆label鎺т欢鐨勫墠鏅壊涓鸿摑鑹 */ - RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(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; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猙utton鎺т欢 */ + 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; - /* 鍒涘缓涓涓猙utton鎺т欢 */ - button = rtgui_button_create("12 font"); - /* 璁剧疆瀛椾綋涓12鐐归樀鐨刟sc瀛椾綋 */ - font = rtgui_font_refer("asc", 12); - RTGUI_WIDGET_FONT(RTGUI_WIDGET(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; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猙utton鎺т欢 */ + button = rtgui_button_create("12 font"); + /* 璁剧疆瀛椾綋涓12鐐归樀鐨刟sc瀛椾綋 */ + 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; - /* 鍒涘缓涓涓猙utton鎺т欢 */ - button = rtgui_button_create("16 font"); - /* 璁剧疆瀛椾綋涓16鐐归樀鐨刟sc瀛椾綋 */ - font = rtgui_font_refer("asc", 16); - RTGUI_WIDGET_FONT(RTGUI_WIDGET(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; + /* 鍒涘缓涓涓猙utton鎺т欢 */ + button = rtgui_button_create("16 font"); + /* 璁剧疆瀛椾綋涓16鐐归樀鐨刟sc瀛椾綋 */ + 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; + return container; } diff --git a/examples/gui/demo_view_checkbox.c b/examples/gui/demo_view_checkbox.c index fa67cf6f4c..8e4e118681 100644 --- a/examples/gui/demo_view_checkbox.c +++ b/examples/gui/demo_view_checkbox.c @@ -8,73 +8,73 @@ #include /* 鍒涘缓鐢ㄤ簬婕旂ずcheckbox鎺т欢鐨勮鍥 */ -rtgui_container_t* demo_view_checkbox(void) +rtgui_container_t *demo_view_checkbox(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_checkbox_t* checkbox; - rtgui_font_t* font; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_checkbox_t *checkbox; + rtgui_font_t *font; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("CheckBox View"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + 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; - /* 鍒涘缓涓涓猚heckbox鎺т欢 */ - checkbox = rtgui_checkbox_create("Red",RT_TRUE); - /* 璁剧疆鍓嶆櫙鑹蹭负绾㈣壊 */ - RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(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; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猚heckbox鎺т欢 */ + 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; - /* 鍒涘缓涓涓猚heckbox鎺т欢 */ - checkbox = rtgui_checkbox_create("Blue",RT_TRUE); - /* 璁剧疆鍓嶆櫙鑹蹭负钃濊壊 */ - RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(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; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猚heckbox鎺т欢 */ + 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; - /* 鍒涘缓涓涓猚heckbox鎺т欢 */ - checkbox = rtgui_checkbox_create("12 font",RT_TRUE); - /* 璁剧疆瀛椾綋涓12鐐归樀 */ - font = rtgui_font_refer("asc", 12); - RTGUI_WIDGET_FONT(RTGUI_WIDGET(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; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猚heckbox鎺т欢 */ + 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; - /* 鍒涘缓涓涓猚heckbox鎺т欢 */ - checkbox = rtgui_checkbox_create("16 font",RT_TRUE); - /* 璁剧疆瀛椾綋涓16鐐归樀 */ - font = rtgui_font_refer("asc", 16); - RTGUI_WIDGET_FONT(RTGUI_WIDGET(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; + /* 鍒涘缓涓涓猚heckbox鎺т欢 */ + 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; + return container; } diff --git a/examples/gui/demo_view_combobox.c b/examples/gui/demo_view_combobox.c index 36fb4d1375..7542131e7e 100644 --- a/examples/gui/demo_view_combobox.c +++ b/examples/gui/demo_view_combobox.c @@ -8,33 +8,33 @@ 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}, + {"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_container_t *demo_view_combobox(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_combobox_t* box; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_combobox_t *box; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("ComboBox View"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + 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; - /* 鍒涘缓涓涓猯abel鎺т欢 */ - box = rtgui_combobox_create(items, sizeof(items)/sizeof(items[0]), &rect); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜box鎺т欢 */ - rtgui_container_add_child(container, RTGUI_WIDGET(box)); + /* 鑾峰緱瑙嗗浘鐨勪綅缃俊鎭 */ + demo_view_get_rect(container, &rect); + rect.x1 += 5; + rect.x2 -= 5; + rect.y1 += 5; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猯abel鎺т欢 */ + box = rtgui_combobox_create(items, sizeof(items) / sizeof(items[0]), &rect); + /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜box鎺т欢 */ + rtgui_container_add_child(container, RTGUI_WIDGET(box)); - return container; + return container; } diff --git a/examples/gui/demo_view_dc.c b/examples/gui/demo_view_dc.c index f37d426e7b..695f3e6ab3 100644 --- a/examples/gui/demo_view_dc.c +++ b/examples/gui/demo_view_dc.c @@ -19,174 +19,176 @@ struct rtgui_image_hdcmm stop_image = RTGUI_IMAGE_HDC_DEF(2, 0x1c, 0x16, stop_hd /* * view的事件处理函数 */ -rt_bool_t dc_event_handler(struct rtgui_object* object, rtgui_event_t *event) +rt_bool_t dc_event_handler(struct rtgui_object *object, rtgui_event_t *event) { - struct rtgui_widget *widget = RTGUI_WIDGET(object); + 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}; + /* 仅对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); + /* + * 因为用的是demo view,上面本身有一部分控件,所以在绘图时先要让demo view + * 先绘图 + */ + rtgui_container_event_handler(RTGUI_OBJECT(widget), event); - /************************************************************************/ - /* 下面的是DC的操作 */ - /************************************************************************/ + /************************************************************************/ + /* 下面的是DC的操作 */ + /************************************************************************/ - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - if (dc == RT_NULL) - return RT_FALSE; + /* 获得控件所属的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); + /* 获得demo view允许绘图的区域 */ + demo_view_get_logic_rect(RTGUI_CONTAINER(widget), &rect); - RTGUI_DC_TEXTALIGN(dc) = RTGUI_ALIGN_BOTTOM | RTGUI_ALIGN_CENTER_HORIZONTAL; - /* 显示GUI的版本信息 */ + 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); + rtgui_dc_draw_text(dc, "RT-Thread/GUI小型版本", &rect); #else - rtgui_dc_draw_text(dc, "RT-Thread/GUI标准版本", &rect); + 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); + { + 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); + 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); + /* 填充一个圆形 */ + 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 = 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); + 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) = blue; - rtgui_dc_draw_polygon(dc, vx, vy, 6); + /* 画一个圆弧 */ + 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_DC_FC(dc) = blue; - /* 绘制不同的边框 */ - { - rtgui_rect_t rect = {0, 0, 16, 16}; - rtgui_rect_moveto(&rect, 30, 120); + /* 绘制不同的边框 */ + { + 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_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_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_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_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_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_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); - } + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); + } + else + { + /* 其他事件,调用默认的事件处理函数 */ + return rtgui_container_event_handler(object, event); + } - return RT_FALSE; + return RT_FALSE; } /* 创建用于DC操作演示用的视图 */ rtgui_container_t *demo_view_dc(void) { - rtgui_container_t *view; + rtgui_container_t *view; - view = demo_view("DC Demo"); - if (view != RT_NULL) - /* 设置成自己的事件处理函数 */ - rtgui_object_set_event_handler(RTGUI_OBJECT(view), dc_event_handler); + view = demo_view("DC Demo"); + if (view != RT_NULL) + /* 设置成自己的事件处理函数 */ + rtgui_object_set_event_handler(RTGUI_OBJECT(view), dc_event_handler); - return view; + return view; } diff --git a/examples/gui/demo_view_dc_buffer.c b/examples/gui/demo_view_dc_buffer.c index 11770dcedc..3bd9b13963 100644 --- a/examples/gui/demo_view_dc_buffer.c +++ b/examples/gui/demo_view_dc_buffer.c @@ -16,69 +16,69 @@ static struct rtgui_dc *dc_buffer; /* * view的事件处理函数 */ -static rt_bool_t dc_buffer_event_handler(struct rtgui_object* object, rtgui_event_t *event) +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_widget *widget = RTGUI_WIDGET(object); - /* 仅对PAINT事件进行处理 */ - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc* dc; - rtgui_rect_t rect; + /* 仅对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); + /* + * 因为用的是demo view,上面本身有一部分控件,所以在绘图时先要让demo view + * 先绘图 + */ + rtgui_container_event_handler(object, event); - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - if (dc == RT_NULL) - return RT_FALSE; + /* 获得控件所属的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); + /* 获得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); + 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); - } + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); + } + else + { + /* 其他事件,调用默认的事件处理函数 */ + return rtgui_container_event_handler(object, event); + } - return RT_FALSE; + return RT_FALSE; } /* 创建用于DC Buffer操作演示用的视图 */ rtgui_container_t *demo_view_dc_buffer() { - rtgui_container_t *view; + rtgui_container_t *view; - if (dc_buffer == RT_NULL) - { - rtgui_rect_t rect = {0, 0, 50, 50}; + 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_FC(dc_buffer) = blue; - rtgui_dc_fill_rect(dc_buffer, &rect); + /* 创建 DC Buffer,长 50,宽 50 */ + dc_buffer = rtgui_dc_buffer_create(50, 50); + RTGUI_DC_FC(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); - } + 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); + view = demo_view("缓冲DC演示"); + if (view != RT_NULL) + /* 设置成自己的事件处理函数 */ + rtgui_object_set_event_handler(RTGUI_OBJECT(view), dc_buffer_event_handler); - return view; + return view; } diff --git a/examples/gui/demo_view_edit.c b/examples/gui/demo_view_edit.c new file mode 100644 index 0000000000..07368eb8c9 --- /dev/null +++ b/examples/gui/demo_view_edit.c @@ -0,0 +1,120 @@ +/* + * 绋嬪簭娓呭崟锛歟dit鎺т欢婕旂ず + * + * 杩欎釜渚嬪瓙浼氬湪conatiner涓婅繘琛宔dit鎺т欢鐨勬紨绀 + */ + +#include "demo_view.h" +#include +#include +#include +#include + +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"; + int fd; + + RT_ASSERT(object != RT_NULL); + button = RTGUI_BUTTON(object); + /* 鍙栧緱edit鎸囬拡 */ + edit = RTGUI_EDIT(RTGUI_WIDGET(button)->user_data); + + /* 鍒ゆ柇鏂囦欢鏄惁瀛樺湪 */ + fd = open(filename, O_RDONLY, 0); + if (fd < 0) + { + /* 涓嶅瓨鍦ㄥ瓨鍦,鍒欏垱寤哄畠 */ + rt_kprintf("file:\"%s\" does not exist!\n", filename); + + return; + } + close(fd); + + 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"; + int fd; + + RT_ASSERT(object != RT_NULL); + button = RTGUI_BUTTON(object); + /* 鍙栧緱edit鎸囬拡 */ + edit = RTGUI_EDIT(RTGUI_WIDGET(button)->user_data); + + /* 鍒ゆ柇鏂囦欢鏄惁瀛樺湪, 濡傛灉瀛樺湪鍒欏垹闄や箣 */ + fd = open(filename, O_RDONLY, 0); + if (fd > 0) + { + close(fd); + /* 濡傛灉鏄湪win32涓皟璇, 璇锋墜宸ュ垹闄よ鏂囦欢鍚, NT涓枃浠舵槸鍙鐨,unlink鍒犻櫎涓嶆帀 */ + if (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); +} + +/* 鍒涘缓鐢ㄤ簬婕旂ずedit鎺т欢鐨勮鍥 */ +rtgui_container_t *demo_view_edit(void) +{ + rtgui_rect_t rect; + rtgui_container_t *container; + struct rtgui_edit *edit; + 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" + "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浼犻抏dit鎸囬拡 */ + 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浼犻抏dit鎸囬拡 */ + RTGUI_WIDGET(button)->user_data = (rt_uint32_t)edit; + + return container; +} diff --git a/examples/gui/demo_view_image.c b/examples/gui/demo_view_image.c index a846ce377f..b4dc923192 100644 --- a/examples/gui/demo_view_image.c +++ b/examples/gui/demo_view_image.c @@ -9,118 +9,120 @@ #include #include -static rtgui_image_t* image = RT_NULL; -static rtgui_container_t* _container = RT_NULL; +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) +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}; + rtgui_filelist_view_t *filelist; + struct rtgui_rect rect = {0, 100, 240, 280}; - /* WIN32平台上和真实设备上的初始路径处理 */ + /* WIN32平台上和真实设备上的初始路径处理 */ #ifdef _WIN32 - filelist = rtgui_filelist_view_create("e:\\", "*.*", &rect); + filelist = rtgui_filelist_view_create("e:\\", "*.*", &rect); #else - filelist = rtgui_filelist_view_create("/", "*.*", &rect); + 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]; + /* 模态显示一个文件列表视图,以提供给用户选择图像文件 */ + 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; - } + /* 设置文件路径的标签 */ + 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)); + 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"); + /* 获得图像的类型 */ + 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_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); + /* 删除 文件列表 视图 */ + 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) +static rt_bool_t demo_view_event_handler(rtgui_widget_t *widget, rtgui_event_t *event) { - rt_bool_t result; + rt_bool_t result; - /* 先调用默认的事件处理函数(这里只关心PAINT事件,但演示视图还有本身的一些控件) */ - result = rtgui_container_event_handler(widget, event); + /* 先调用默认的事件处理函数(这里只关心PAINT事件,但演示视图还有本身的一些控件) */ + result = rtgui_container_event_handler(widget, event); - if (event->type == RTGUI_EVENT_PAINT) - { - struct rtgui_dc* dc; - rtgui_rect_t rect; + 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; + /* 获得控件所属的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); + /* 获得demo container允许绘图的区域 */ + demo_view_get_rect(RTGUI_CONTAINER(widget), &rect); - /* 获得图像显示区域 */ - rect.x1 += 5; rect.x2 -= 5; - rect.y1 += 30; + /* 获得图像显示区域 */ + rect.x1 += 5; + rect.x2 -= 5; + rect.y1 += 30; - if (image != RT_NULL) - rtgui_image_blit(image, dc, &rect); + if (image != RT_NULL) + rtgui_image_blit(image, dc, &rect); - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); + } - return result; + return result; } /* 创建用于显示图像的演示视图 */ -rtgui_container_t* demo_view_image(void) +rtgui_container_t *demo_view_image(void) { - rtgui_rect_t rect; - rtgui_button_t* open_btn; + 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); + /* 先创建一个演示视图 */ + _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); + /* 添加一个按钮 */ + 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; + return _container; } #endif diff --git a/examples/gui/demo_view_instrument_panel.c b/examples/gui/demo_view_instrument_panel.c index d82ca28433..1efe3c85ec 100644 --- a/examples/gui/demo_view_instrument_panel.c +++ b/examples/gui/demo_view_instrument_panel.c @@ -17,133 +17,133 @@ */ 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}; + struct rtgui_widget *widget = RTGUI_WIDGET(object); + char ac[4]; + int i; + int x0 = 120; + int y0 = 170; + int x, y; + int default_color; - /* - * 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container - * 先绘图 - */ - rtgui_container_event_handler(RTGUI_OBJECT(widget), event); + /* 仅对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}; - /************************************************************************/ - /* 下面的是DC的操作 */ - /************************************************************************/ + /* + * 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container + * 先绘图 + */ + rtgui_container_event_handler(RTGUI_OBJECT(widget), event); - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - if (dc == RT_NULL) - return RT_FALSE; + /************************************************************************/ + /* 下面的是DC的操作 */ + /************************************************************************/ - /* 获得demo container允许绘图的区域 */ - demo_view_get_rect(RTGUI_CONTAINER(widget), &rect); + /* 获得控件所属的DC */ + dc = rtgui_dc_begin_drawing(widget); + /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ + if (dc == RT_NULL) + return RT_FALSE; - RTGUI_DC_TEXTALIGN(dc) = RTGUI_ALIGN_BOTTOM | RTGUI_ALIGN_CENTER_HORIZONTAL; - /* 显示GUI的版本信息 */ + /* 获得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); + rtgui_dc_draw_text(dc, "RT-Thread/GUI小型版本", &rect); #else - rtgui_dc_draw_text(dc, "RT-Thread/GUI标准版本", &rect); + 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); + 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); - } + for (i = 0; i < 6; i++) + { + rtgui_dc_draw_arc(dc, x0, y0, 117 - i, 150, 30); + } - RTGUI_DC_FC(dc) = black; + 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); + 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; - 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 + 105 * cos((160 + i * 10) * 3.1415926 / 180); + y = y0 + 105 * sin((160 + i * 10) * 3.1415926 / 180); - 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); + 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); + } - 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); + 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); - RTGUI_DC_BC(dc) = default_color; + 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_fill_polygon(dc, arrowx, arrowy, 3); + RTGUI_DC_BC(dc) = default_color; - /* 绘图完成 */ - rtgui_dc_end_drawing(dc); - } - else - { - /* 其他事件,调用默认的事件处理函数 */ - return rtgui_container_event_handler(RTGUI_OBJECT(widget), event); - } + rtgui_dc_fill_polygon(dc, arrowx, arrowy, 3); - return RT_FALSE; + /* 绘图完成 */ + 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; + 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); + container = demo_view("instrument panel Demo"); + if (container != RT_NULL) + /* 设置成自己的事件处理函数 */ + rtgui_object_set_event_handler(RTGUI_OBJECT(container), instrument_panel_event_handler); - return container; + return container; } diff --git a/examples/gui/demo_view_label.c b/examples/gui/demo_view_label.c index 348437dec0..a8e87142d6 100644 --- a/examples/gui/demo_view_label.c +++ b/examples/gui/demo_view_label.c @@ -7,98 +7,98 @@ #include /* 鍒涘缓鐢ㄤ簬婕旂ずlabel鎺т欢鐨勮鍥 */ -rtgui_container_t* demo_view_label(void) +rtgui_container_t *demo_view_label(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_label_t* label; - rtgui_font_t* font; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_label_t *label; + rtgui_font_t *font; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("Label View"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + 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; - /* 鍒涘缓涓涓猯abel鎺т欢 */ - label = rtgui_label_create("Red Left"); - /* 璁剧疆label鎺т欢涓婄殑鏂囨湰瀵归綈鏂瑰紡涓猴細宸﹀榻 */ - RTGUI_WIDGET_TEXTALIGN(RTGUI_WIDGET(label)) = RTGUI_ALIGN_LEFT; - /* 璁剧疆label鎺т欢鐨勫墠鏅壊涓虹孩鑹 */ - RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(label)) = red; - /* 璁剧疆label鐨勪綅缃 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猯abel鎺т欢 */ + 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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; - /* 鍒涘缓涓涓猯abel鎺т欢 */ - label = rtgui_label_create("Blue Right"); - /* 璁剧疆label鎺т欢涓婄殑鏂囨湰瀵归綈鏂瑰紡涓猴細鍙冲榻 */ - RTGUI_WIDGET_TEXTALIGN(RTGUI_WIDGET(label)) = RTGUI_ALIGN_RIGHT; - /* 璁剧疆label鎺т欢鐨勫墠鏅壊涓鸿摑鑹 */ - RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(label)) = blue; - /* 璁剧疆label鐨勪綅缃 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; + /* 鍒涘缓涓涓猯abel鎺т欢 */ + 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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; - /* 鍒涘缓涓涓猯abel鎺т欢 */ - label = rtgui_label_create("Green Center"); - /* 璁剧疆label鎺т欢鐨勫墠鏅壊涓虹豢鑹 */ - RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(label)) = green; - /* 璁剧疆label鎺т欢涓婄殑鏂囨湰瀵归綈鏂瑰紡涓猴細鍙冲榻 */ - RTGUI_WIDGET_TEXTALIGN(RTGUI_WIDGET(label)) = RTGUI_ALIGN_CENTER_HORIZONTAL; - /* 璁剧疆label鐨勪綅缃 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; + /* 鍒涘缓涓涓猯abel鎺т欢 */ + 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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; - /* 鍒涘缓涓涓猯abel鎺т欢 */ - label = rtgui_label_create("12 font"); - /* 璁剧疆瀛椾綋涓12鐐归樀鐨刟sc瀛椾綋 */ - font = rtgui_font_refer("asc", 12); - RTGUI_WIDGET_FONT(RTGUI_WIDGET(label)) = font; - /* 璁剧疆label鐨勪綅缃 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; + /* 鍒涘缓涓涓猯abel鎺т欢 */ + label = rtgui_label_create("12 font"); + /* 璁剧疆瀛椾綋涓12鐐归樀鐨刟sc瀛椾綋 */ + font = rtgui_font_refer("asc", 12); + RTGUI_WIDGET_FONT(label) = font; + /* 璁剧疆label鐨勪綅缃 */ + rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); + /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; - /* 鍒涘缓涓涓猯abel鎺т欢 */ - label = rtgui_label_create("16 font"); - /* 璁剧疆瀛椾綋涓16鐐归樀鐨刟sc瀛椾綋 */ - font = rtgui_font_refer("asc", 16); - RTGUI_WIDGET_FONT(RTGUI_WIDGET(label)) = font; - /* 璁剧疆label鐨勪綅缃 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; + /* 鍒涘缓涓涓猯abel鎺т欢 */ + label = rtgui_label_create("16 font"); + /* 璁剧疆瀛椾綋涓16鐐归樀鐨刟sc瀛椾綋 */ + font = rtgui_font_refer("asc", 16); + RTGUI_WIDGET_FONT(label) = font; + /* 璁剧疆label鐨勪綅缃 */ + rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); + /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜label鎺т欢 */ + rtgui_container_add_child(container, RTGUI_WIDGET(label)); - return container; + return container; } diff --git a/examples/gui/demo_view_listbox.c b/examples/gui/demo_view_listbox.c index 7ff049a32c..1829c81fb0 100644 --- a/examples/gui/demo_view_listbox.c +++ b/examples/gui/demo_view_listbox.c @@ -7,187 +7,189 @@ #include #include -static rtgui_image_t* item_icon = RT_NULL; -static const char * image_xpm[] = { - "16 16 106 2", - " c None", - ". c #D0C83F", - "+ c #D0C840", - "@ c #D0C030", - "# c #D0B820", - "$ c #D0B020", - "% c #D0B01F", - "& c #5F571F", - "* c #F0F0C0", - "= c #FFF8D0", - "- c #FFF8C0", - "; c #FFF8B0", - "> c #FFF8A0", - ", c #F0E870", - "' c #707030", - ") c #4F87EF", - "! c #4F78C0", - "~ c #5088E0", - "{ c #5078C0", - "] c #C0D0F0", - "^ c #FFF8E0", - "/ c #FFF090", - "( c #F0E070", - "_ c #6F97D0", - ": c #C0D8FE", - "< c #80A8F0", - "[ c #7088D0", - "} c #B0D0FF", - "| c #90B0F0", - "1 c #1040A0", - "2 c #F0F080", - "3 c #707040", - "4 c #7098F0", - "5 c #3068E0", - "6 c #A0B8F0", - "7 c #4070C0", - "8 c #002880", - "9 c #404040", - "0 c #505050", - "a c #F0F090", - "b c #F0E860", - "c c #F0D860", - "d c #807840", - "e c #2F5FC0", - "f c #1050D0", - "g c #1048B0", - "h c #002870", - "i c #C0C080", - "j c #C0C070", - "k c #F0F070", - "l c #F0E060", - "m c #E0D050", - "n c #00277F", - "o c #00287F", - "p c #1F3F6F", - "q c #1048C0", - "r c #0040B0", - "s c #204080", - "t c #FFF890", - "u c #F0D850", - "v c #E0C840", - "w c #807040", - "x c #A0B06F", - "y c #204880", - "z c #2048A0", - "A c #90A8C0", - "B c #FFF080", - "C c #F0D050", - "D c #C0A830", - "E c #6F682F", - "F c #F0F0A0", - "G c #E0D060", - "H c #B0A040", - "I c #D0B840", - "J c #E0C040", - "K c #D0B030", - "L c #706820", - "M c #5F581F", - "N c #CFBF3F", - "O c #FFF0A0", - "P c #A09830", - "Q c #A08820", - "R c #908030", - "S c #807830", - "T c #707020", - "U c #605820", - "V c #6F672F", - "W c #D0C040", - "X c #F0E880", - "Y c #907820", - "Z c #B09820", - "` c #B09010", - " . c #B08820", - ".. c #806820", - "+. c #5F5F1F", - "@. c #F0E080", - "#. c #B09020", - "$. c #C0B040", - "%. c #A09030", - "&. c #908020", - "*. c #606020", - "=. c #6F5F1F", - "-. c #9F982F", - ";. c #A0872F", - ">. c #6F681F", - ",. c #706020", - " ", - " . + + + @ @ # # $ % & ", - " + * = = = = - ; > , ' ", - " ) ! ~ { ] ^ = - - > / ( ' ", - "_ : < { [ } | 1 - ; > > / 2 ( 3 ", - "{ 4 5 1 6 7 5 8 9 0 a / , b c d ", - "e f g h 8 8 g h i j / k l c m d ", - " n o p q r s t 2 , l c u v w ", - " x y z A B , l u C v D E ", - " @ F > t k G H I J K L M ", - " N @ O / 2 l P Q R S T U V ", - " W m 2 X l I Y Z ` ...+. ", - " W @.l u I R #.Z Y U M ", - " $.G I $.%.R &.Y *.& =. ", - " -.;.>.,.L L ,.& M ", - " "}; +static 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}, + {"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) +static rt_bool_t on_items(struct rtgui_object *object, struct rtgui_event *event) { - rtgui_listbox_t* box; - /* get listbox */ - box = RTGUI_LISTBOX(object); + rtgui_listbox_t *box; + /* get listbox */ + box = RTGUI_LISTBOX(object); - /* 鎵撳嵃褰撳墠鐨勯」 */ - rt_kprintf("current item: %d\n", box->current_item); + /* 鎵撳嵃褰撳墠鐨勯」 */ + rt_kprintf("current item: %d\n", box->current_item); - return RT_TRUE; + return RT_TRUE; } /* 鍒涘缓鐢ㄤ簬婕旂ずlabel鎺т欢鐨勮鍥 */ -rtgui_container_t* demo_view_listbox(void) +rtgui_container_t *demo_view_listbox(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_label_t* label; - rtgui_listbox_t* box; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_label_t *label; + rtgui_listbox_t *box; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("ListBox Demo"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + 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; + 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; - /* 鍒涘缓涓涓猯abel鎺т欢 */ - label = rtgui_label_create("listbox: "); - /* 璁剧疆label鐨勪綅缃 */ - rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猯abel鎺т欢 */ + label = rtgui_label_create("listbox: "); + /* 璁剧疆label鐨勪綅缃 */ + rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect); + /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜listbox鎺т欢 */ - rtgui_container_add_child(container, RTGUI_WIDGET(box)); + 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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜listbox鎺т欢 */ + rtgui_container_add_child(container, RTGUI_WIDGET(box)); - return container; + return container; } diff --git a/examples/gui/demo_view_listctrl.c b/examples/gui/demo_view_listctrl.c index 2efe78b369..166e4412ae 100644 --- a/examples/gui/demo_view_listctrl.c +++ b/examples/gui/demo_view_listctrl.c @@ -7,251 +7,258 @@ #include #include -static rtgui_image_t* item_icon = RT_NULL; -static const char * image_xpm[] = { - "16 16 106 2", - " c None", - ". c #D0C83F", - "+ c #D0C840", - "@ c #D0C030", - "# c #D0B820", - "$ c #D0B020", - "% c #D0B01F", - "& c #5F571F", - "* c #F0F0C0", - "= c #FFF8D0", - "- c #FFF8C0", - "; c #FFF8B0", - "> c #FFF8A0", - ", c #F0E870", - "' c #707030", - ") c #4F87EF", - "! c #4F78C0", - "~ c #5088E0", - "{ c #5078C0", - "] c #C0D0F0", - "^ c #FFF8E0", - "/ c #FFF090", - "( c #F0E070", - "_ c #6F97D0", - ": c #C0D8FE", - "< c #80A8F0", - "[ c #7088D0", - "} c #B0D0FF", - "| c #90B0F0", - "1 c #1040A0", - "2 c #F0F080", - "3 c #707040", - "4 c #7098F0", - "5 c #3068E0", - "6 c #A0B8F0", - "7 c #4070C0", - "8 c #002880", - "9 c #404040", - "0 c #505050", - "a c #F0F090", - "b c #F0E860", - "c c #F0D860", - "d c #807840", - "e c #2F5FC0", - "f c #1050D0", - "g c #1048B0", - "h c #002870", - "i c #C0C080", - "j c #C0C070", - "k c #F0F070", - "l c #F0E060", - "m c #E0D050", - "n c #00277F", - "o c #00287F", - "p c #1F3F6F", - "q c #1048C0", - "r c #0040B0", - "s c #204080", - "t c #FFF890", - "u c #F0D850", - "v c #E0C840", - "w c #807040", - "x c #A0B06F", - "y c #204880", - "z c #2048A0", - "A c #90A8C0", - "B c #FFF080", - "C c #F0D050", - "D c #C0A830", - "E c #6F682F", - "F c #F0F0A0", - "G c #E0D060", - "H c #B0A040", - "I c #D0B840", - "J c #E0C040", - "K c #D0B030", - "L c #706820", - "M c #5F581F", - "N c #CFBF3F", - "O c #FFF0A0", - "P c #A09830", - "Q c #A08820", - "R c #908030", - "S c #807830", - "T c #707020", - "U c #605820", - "V c #6F672F", - "W c #D0C040", - "X c #F0E880", - "Y c #907820", - "Z c #B09820", - "` c #B09010", - " . c #B08820", - ".. c #806820", - "+. c #5F5F1F", - "@. c #F0E080", - "#. c #B09020", - "$. c #C0B040", - "%. c #A09030", - "&. c #908020", - "*. c #606020", - "=. c #6F5F1F", - "-. c #9F982F", - ";. c #A0872F", - ">. c #6F681F", - ",. c #706020", - " ", - " . + + + @ @ # # $ % & ", - " + * = = = = - ; > , ' ", - " ) ! ~ { ] ^ = - - > / ( ' ", - "_ : < { [ } | 1 - ; > > / 2 ( 3 ", - "{ 4 5 1 6 7 5 8 9 0 a / , b c d ", - "e f g h 8 8 g h i j / k l c m d ", - " n o p q r s t 2 , l c u v w ", - " x y z A B , l u C v D E ", - " @ F > t k G H I J K L M ", - " N @ O / 2 l P Q R S T U V ", - " W m 2 X l I Y Z ` ...+. ", - " W @.l u I R #.Z Y U M ", - " $.G I $.%.R &.Y *.& =. ", - " -.;.>.,.L L ,.& M ", - " "}; +static 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; + 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}, + {"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) + 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; + 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]; + 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); + /* 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; + 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; + 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; + item_rect.x1 += 5; - /* draw image */ - if (item->image != RT_NULL) - { - rtgui_rect_t image_rect; + /* 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); - } + 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) +static rt_bool_t on_items(struct rtgui_object *object, struct rtgui_event *event) { - rtgui_listctrl_t* ctrl; - /* get listctrl */ - ctrl = RTGUI_LISTCTRL(object); + rtgui_listctrl_t *ctrl; + /* get listctrl */ + ctrl = RTGUI_LISTCTRL(object); - /* 打印当前的项 */ - rt_kprintf("current item: %d\n", ctrl->current_item); + /* 打印当前的项 */ + rt_kprintf("current item: %d\n", ctrl->current_item); - return RT_TRUE; + return RT_TRUE; } /* 创建用于演示label控件的视图 */ -rtgui_container_t* demo_view_listctrl(void) +rtgui_container_t *demo_view_listctrl(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_label_t* label; - rtgui_listctrl_t* box; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_label_t *label; + rtgui_listctrl_t *box; - /* 先创建一个演示用的视图 */ - container = demo_view("List Control Demo"); + /* 先创建一个演示用的视图 */ + 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; + 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)); + /* 获得视图的位置信息 */ + 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)); + 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; + return container; } diff --git a/examples/gui/demo_view_menu.c b/examples/gui/demo_view_menu.c index 5e42d84c8c..45a170999f 100644 --- a/examples/gui/demo_view_menu.c +++ b/examples/gui/demo_view_menu.c @@ -7,68 +7,70 @@ #include #include -static rt_bool_t _onmenuitem(struct rtgui_object *object, struct rtgui_event* event) +static rt_bool_t _onmenuitem(struct rtgui_object *object, struct rtgui_event *event) { - rt_kprintf("menu action!!\n"); - return RT_TRUE; + rt_kprintf("menu action!!\n"); + return RT_TRUE; } -static const rtgui_menu_item_t sub_items[] = +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}, + {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}, + {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 rtgui_menu_t *menu; -static rt_bool_t _onmenu(struct rtgui_object* object, struct rtgui_event* event) +static rt_bool_t _onmenu(struct rtgui_object *object, struct rtgui_event *event) { - rtgui_rect_t rect; + rtgui_rect_t rect; - rtgui_widget_get_rect(RTGUI_WIDGET(object), &rect); - rtgui_widget_rect_to_device(RTGUI_WIDGET(object), &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); + if (menu != RT_NULL) + rtgui_menu_pop(menu, rect.x1, rect.y2 + 5); - return RT_TRUE; + return RT_TRUE; } /* 鍒涘缓鐢ㄤ簬婕旂ずmenu鎺т欢鐨勮鍥 */ -rtgui_container_t* demo_view_menu(void) +rtgui_container_t *demo_view_menu(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_button_t* button; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_button_t *button; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("MENU View"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + 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; - /* 鍒涘缓涓涓猙utton鎺т欢 */ - button = rtgui_button_create("Pop Menu"); - /* 璁剧疆button鐨勪綅缃 */ - rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜button鎺т欢 */ - rtgui_container_add_child(container, RTGUI_WIDGET(button)); - rtgui_button_set_onbutton(button, _onmenu); + /* 鑾峰緱瑙嗗浘鐨勪綅缃俊鎭 */ + demo_view_get_rect(container, &rect); + rect.x1 += 5; + rect.x2 = rect.x1 + 100; + rect.y1 += 5; + rect.y2 = rect.y1 + 20; + /* 鍒涘缓涓涓猙utton鎺т欢 */ + button = rtgui_button_create("Pop Menu"); + /* 璁剧疆button鐨勪綅缃 */ + rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect); + /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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])); + menu = rtgui_menu_create("Menu Test", RT_NULL, items, sizeof(items) / sizeof(items[0])); - return container; + return container; } diff --git a/examples/gui/demo_view_module.c b/examples/gui/demo_view_module.c index e98beff5d3..bdce8dae10 100644 --- a/examples/gui/demo_view_module.c +++ b/examples/gui/demo_view_module.c @@ -1,7 +1,7 @@ /* - * 程序清单:DC上显示图像演示 + * 3ìDò??μ¥£oDCé???ê?í????Yê? * - * 这个例子会在创建出的view上显示图像 + * ?a??ày×ó?á?ú′′?¨3?μ?viewé???ê?í??? */ #include "demo_view.h" @@ -11,66 +11,67 @@ #ifdef RT_USING_MODULE #if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW) -static rtgui_container_t* _view = RT_NULL; +static rtgui_container_t *_view = RT_NULL; -/* 打开按钮的回调函数 */ -static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event) +/* ′ò?a°′?¥μ???μ÷oˉêy */ +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; + 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); + /* ??μ??¥2?μ?workbench */ + workbench = RTGUI_WORKBENCH(rtgui_widget_get_toplevel(widget)); + rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); - /* WIN32平台上和真实设备上的初始路径处理 */ + /* WIN32??ì¨é?oí??êμéè±?é?μ?3?ê??·??′|àí */ #ifdef _WIN32 - view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); + view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); #else - view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect); + 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]; + /* ?£ì???ê?ò??????táD±íêóí?£?ò?ìá1???ó??§????í??????t */ + 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)); + /* éè?????t?·??μ?±ê?? */ + rtgui_filelist_view_get_fullpath(view, path, sizeof(path)); - rt_memset(name, 0, sizeof(name)); + rt_memset(name, 0, sizeof(name)); - /* 获得应用模块的类型 */ - if (rt_strstr(path, ".mo") != RT_NULL || rt_strstr(path, ".so") != RT_NULL) - { - rt_module_open(path); - } - } + /* ??μ?ó|ó??£?éμ?ààDí */ + 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); + /* é?3y ???táD±í êóí? */ + rtgui_container_destroy(RTGUI_CONTAINER(view)); + rtgui_container_show(_view, RT_FALSE); } -/* 创建用于显示应用模块的演示视图 */ -rtgui_container_t* demo_view_module(rtgui_workbench_t* workbench) +/* ′′?¨ó?óú??ê?ó|ó??£?éμ??Yê?êóí? */ +rtgui_container_t *demo_view_module(rtgui_workbench_t *workbench) { - rtgui_rect_t rect; - rtgui_button_t* open_btn; + rtgui_rect_t rect; + rtgui_button_t *open_btn; - /* 先创建一个演示视图 */ - _view = demo_view(workbench, "应用模块演示"); + /* ?è′′?¨ò????Yê?êóí? */ + _view = demo_view(workbench, "ó|ó??£?é?Yê?"); - /* 添加一个按钮 */ - 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); + /* ìí?óò???°′?¥ */ + demo_view_get_rect(_view, &rect); + rect.x1 += 5; + rect.x2 = rect.x1 + 120; + rect.y2 = rect.y1 + 20; + open_btn = rtgui_button_create("′ò?aó|ó??£?é"); + 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; + return _view; } #endif #endif diff --git a/examples/gui/demo_view_mywidget.c b/examples/gui/demo_view_mywidget.c index d9f917980f..effe4d3507 100644 --- a/examples/gui/demo_view_mywidget.c +++ b/examples/gui/demo_view_mywidget.c @@ -9,34 +9,34 @@ /* 鍒涘缓鐢ㄤ簬婕旂ず鑷畾涔夋帶浠剁殑瑙嗗浘 */ rtgui_container_t *demo_view_mywidget(void) { - rtgui_container_t *container; - rtgui_rect_t rect; - rtgui_mywidget_t *mywidget; + rtgui_container_t *container; + rtgui_rect_t rect; + rtgui_mywidget_t *mywidget; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("MyWidget View"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + 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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜鑷帶浠 */ - rtgui_container_add_child(container, RTGUI_WIDGET(mywidget)); + /* 鑾峰緱瑙嗗浘鐨勪綅缃俊鎭 */ + 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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜鑷帶浠 */ + rtgui_container_add_child(container, RTGUI_WIDGET(mywidget)); - return container; + return container; } diff --git a/examples/gui/demo_view_notebook.c b/examples/gui/demo_view_notebook.c index 97ad06321e..0573b3ac05 100644 --- a/examples/gui/demo_view_notebook.c +++ b/examples/gui/demo_view_notebook.c @@ -10,44 +10,44 @@ const static struct rtgui_listbox_item items[] = { - {"list #0", RT_NULL}, - {"list #1", RT_NULL}, - {"list #2", RT_NULL}, - {"list #3", RT_NULL}, + {"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}, + {"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_container_t *demo_view_notebook(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - struct rtgui_notebook *notebook; - rtgui_listbox_t* box; + rtgui_rect_t rect; + rtgui_container_t *container; + struct rtgui_notebook *notebook; + rtgui_listbox_t *box; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("Notebook View"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + container = demo_view("Notebook View"); - /* 鑾峰緱瑙嗗浘鐨勪綅缃俊鎭 */ - demo_view_get_rect(container, &rect); + /* 鑾峰緱瑙嗗浘鐨勪綅缃俊鎭 */ + demo_view_get_rect(container, &rect); - notebook = rtgui_notebook_create(&rect, RTGUI_NOTEBOOK_BOTTOM); - /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_child鏂规硶娣诲姞杩欎釜notebook鎺т欢 */ - rtgui_container_add_child(container, RTGUI_WIDGET(notebook)); + notebook = rtgui_notebook_create(&rect, RTGUI_NOTEBOOK_BOTTOM); + /* container鏄竴涓猚ontainer鎺т欢锛岃皟鐢╝dd_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(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)); + box = rtgui_listbox_create(items2, sizeof(items2) / sizeof(struct rtgui_listbox_item), &rect); + rtgui_notebook_add(notebook, "Tab 2", RTGUI_WIDGET(box)); - return container; + return container; } diff --git a/examples/gui/demo_view_progressbar.c b/examples/gui/demo_view_progressbar.c index 40eede7a89..1f890c41e2 100644 --- a/examples/gui/demo_view_progressbar.c +++ b/examples/gui/demo_view_progressbar.c @@ -3,74 +3,81 @@ #include #include -static rtgui_progressbar_t* hbar; -static rtgui_progressbar_t* vbar; +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) +void progressbar_timeout(struct rtgui_timer *timer, void *parameter) { - static rt_uint32_t value = 0; + static rt_uint32_t value = 0; - value++; - if (value == 100) - value = 0; + value++; + if (value == 100) + value = 0; - rtgui_progressbar_set_value(hbar, value); - rtgui_progressbar_set_value(vbar, value); + 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; + 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; + if (bar_timer != RT_NULL) + rtgui_timer_stop(bar_timer); + return RT_TRUE; } rtgui_container_t *demo_view_progressbar(void) { - rtgui_container_t *container; - rtgui_rect_t rect; - rtgui_label_t *label; + rtgui_container_t *container; + rtgui_rect_t rect; + rtgui_label_t *label; - /* create a demo container */ - container = demo_view("ProgressBar View"); + /* 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 += 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)); + /* 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); + bar_timer = rtgui_timer_create(50, RT_TIMER_FLAG_PERIODIC, + progressbar_timeout, RT_NULL); - rtgui_widget_set_onshow(RTGUI_WIDGET(container), start_timer); - rtgui_widget_set_onhide(RTGUI_WIDGET(container), stop_timer); + rtgui_widget_set_onshow(RTGUI_WIDGET(container), start_timer); + rtgui_widget_set_onhide(RTGUI_WIDGET(container), stop_timer); - return container; + return container; } diff --git a/examples/gui/demo_view_radiobox.c b/examples/gui/demo_view_radiobox.c index 1fa8b36f15..45fe343a5a 100644 --- a/examples/gui/demo_view_radiobox.c +++ b/examples/gui/demo_view_radiobox.c @@ -8,62 +8,62 @@ #include /* 鐢ㄤ簬鏄剧ず鍨傜洿鏂瑰悜鐨剅adio鏂囨湰椤规暟缁 */ -static char* radio_item_v[5] = - { - "one", - "two", - "three", - "item 1", - "item 2" - }; +static char *radio_item_v[5] = +{ + "one", + "two", + "three", + "item 1", + "item 2" +}; /* 鐢ㄤ簬鏄剧ず姘村钩鏂瑰悜鐨剅adio鏂囨湰椤规暟缁 */ -static char* radio_item_h[3] = - { - "one", "two", "three" - }; +static char *radio_item_h[3] = +{ + "one", "two", "three" +}; /* 鍒涘缓鐢ㄤ簬婕旂ずradiobox鎺т欢鐨勮鍥 */ -rtgui_container_t* demo_view_radiobox(void) +rtgui_container_t *demo_view_radiobox(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_radiobox_t* radiobox; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_radiobox_t *radiobox; - /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ - container = demo_view("RadioBox View"); + /* 鍏堝垱寤轰竴涓紨绀虹敤鐨勮鍥 */ + 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; + /* 鑾峰緱瑙嗗浘鐨勪綅缃俊鎭 */ + demo_view_get_rect(container, &rect); + rect.x1 += 5; + rect.x2 -= 5; + rect.y1 += 5; + rect.y2 = rect.y1 + 5 * 25; - /* 鍒涘缓涓涓瀭鐩存柟鍚戞樉绀虹殑radiobox鎺т欢锛屾枃鏈」鏄痳adio_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); + /* 鍒涘缓涓涓瀭鐩存柟鍚戞樉绀虹殑radiobox鎺т欢锛屾枃鏈」鏄痳adio_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; + /* 鑾峰緱瑙嗗浘鐨勪綅缃俊鎭 */ + demo_view_get_rect(container, &rect); + rect.x1 += 5; + rect.x2 -= 5; + rect.y1 += 5 + 5 * 25; + rect.y2 = rect.y1 + 60; - /* 鍒涘缓涓涓按骞虫柟鍚戞樉绀虹殑radiobox鎺т欢锛屾枃鏈」鏄痳adio_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); + /* 鍒涘缓涓涓按骞虫柟鍚戞樉绀虹殑radiobox鎺т欢锛屾枃鏈」鏄痳adio_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; + return container; } diff --git a/examples/gui/demo_view_scrollbar.c b/examples/gui/demo_view_scrollbar.c index db9b1a7e75..0835640714 100644 --- a/examples/gui/demo_view_scrollbar.c +++ b/examples/gui/demo_view_scrollbar.c @@ -5,39 +5,46 @@ 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; + 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"); + /* create a demo container */ + container = demo_view("ScrollBar View"); - /* get demo container rect */ - demo_view_get_rect(container, &rect); - label = rtgui_label_create("horizontal bar:"); - 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_scrollbar_create(RTGUI_HORIZONTAL, &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(hbar)); + /* get demo container rect */ + demo_view_get_rect(container, &rect); + label = rtgui_label_create("horizontal bar:"); + 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_scrollbar_create(RTGUI_HORIZONTAL, &rect); + rtgui_container_add_child(container, RTGUI_WIDGET(hbar)); - /* get demo container rect */ - demo_view_get_rect(container, &rect); - label = rtgui_label_create("vertical bar:"); - 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_scrollbar_create(RTGUI_VERTICAL, &rect); - rtgui_container_add_child(container, RTGUI_WIDGET(vbar)); - rtgui_scrollbar_set_line_step(vbar, 1); - // RTGUI_WIDGET_DISABLE(RTGUI_WIDGET(vbar)); + /* get demo container rect */ + demo_view_get_rect(container, &rect); + label = rtgui_label_create("vertical bar:"); + 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_scrollbar_create(RTGUI_VERTICAL, &rect); + rtgui_container_add_child(container, RTGUI_WIDGET(vbar)); + rtgui_scrollbar_set_line_step(vbar, 1); + // RTGUI_WIDGET_DISABLE(vbar); - return container; + return container; } diff --git a/examples/gui/demo_view_slider.c b/examples/gui/demo_view_slider.c index 62601989fc..32d98d9abc 100644 --- a/examples/gui/demo_view_slider.c +++ b/examples/gui/demo_view_slider.c @@ -5,38 +5,45 @@ rtgui_container_t *demo_view_slider(void) { - rtgui_container_t *container; - rtgui_rect_t rect; - rtgui_label_t *label; - rtgui_slider_t *slider; + 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"); + /* 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("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); + /* 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; + return container; } diff --git a/examples/gui/demo_view_textbox.c b/examples/gui/demo_view_textbox.c index 574915c1af..2a6047563c 100644 --- a/examples/gui/demo_view_textbox.c +++ b/examples/gui/demo_view_textbox.c @@ -8,95 +8,95 @@ #include /* 创建用于演示textbox控件的视图 */ -rtgui_container_t* demo_view_textbox(void) +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; + rtgui_rect_t rect, textbox_rect; + rtgui_container_t *container; + rtgui_label_t *label; + rtgui_textbox_t *text; - /* 先创建一个演示用的视图 */ - container = demo_view("TextBox View"); + /* 先创建一个演示用的视图 */ + 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)); + /* 获得视图的位置信息 */ + 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)); + /* 让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)); + /* 计算下一个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("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)); + 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; + return container; } diff --git a/examples/gui/demo_view_ttf.c b/examples/gui/demo_view_ttf.c index 87cc3095bd..09820ef889 100644 --- a/examples/gui/demo_view_ttf.c +++ b/examples/gui/demo_view_ttf.c @@ -15,84 +15,84 @@ 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) +rt_bool_t ttf_event_handler(struct rtgui_object *object, rtgui_event_t *event) { - struct rtgui_widget *widget = RTGUI_WIDGET(object); + 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; + /* 仅对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); + /* + * 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container + * 先绘图 + */ + rtgui_container_event_handler(widget, event); - /************************************************************************/ - /* 下面的是DC的操作 */ - /************************************************************************/ + /************************************************************************/ + /* 下面的是DC的操作 */ + /************************************************************************/ - /* 获得控件所属的DC */ - dc = rtgui_dc_begin_drawing(widget); - /* 如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的) */ - if (dc == RT_NULL) - return RT_FALSE; + /* 获得控件所属的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); + /* 获得demo container允许绘图的区域 */ + demo_view_get_rect(RTGUI_CONTAINER(widget), &rect); - saved = RTGUI_WIDGET_FONT(widget); + 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_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_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_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) = 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); - } + RTGUI_WIDGET_FONT(widget) = saved; + /* 绘图完成 */ + rtgui_dc_end_drawing(dc); + } + else + { + /* 其他事件,调用默认的事件处理函数 */ + return rtgui_container_event_handler(widget, event); + } - return RT_FALSE; + return RT_FALSE; } /* 创建用于TTF字体显示演示用的视图 */ rtgui_container_t *demo_view_ttf() { - rtgui_container_t *container; + 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); + 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(RTGUI_WIDGET(container)) = white; - /* 设置成自己的事件处理函数 */ - rtgui_object_set_event_handler(RTGUI_OBJECT(container), ttf_event_handler); - } + 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; + return container; } #endif diff --git a/examples/gui/demo_view_window.c b/examples/gui/demo_view_window.c index 46616ab52e..975882e37d 100644 --- a/examples/gui/demo_view_window.c +++ b/examples/gui/demo_view_window.c @@ -13,8 +13,8 @@ #include static struct rtgui_timer *timer; -static struct rtgui_label* label; -static struct rtgui_win* msgbox = RT_NULL; +static struct rtgui_label *label; +static struct rtgui_win *msgbox = RT_NULL; static char label_text[80]; static rt_uint8_t cnt = 5; @@ -25,7 +25,7 @@ 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) + struct rtgui_event *event) { normal_window_show_count++; @@ -34,261 +34,265 @@ static rt_bool_t normal_window_onclose(struct rtgui_object *win, static void create_normal_win(void) { - rtgui_rect_t rect = {30, 40, 150, 80}; + rtgui_rect_t rect = {30, 40, 150, 80}; - normal_window = rtgui_win_create(RT_NULL, "普通窗口", - &rect, RTGUI_WIN_STYLE_DEFAULT); + 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; + 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)); + "第 %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) +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); + "第 %d 次显示", normal_window_show_count); rtgui_label_set_text(normal_window_label, normal_window_label_text); - if (RTGUI_WIDGET_IS_HIDE(RTGUI_WIDGET(normal_window))) + 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 char *get_win_title() { - static rt_uint8_t win_no = 0; - static char win_title[16]; + static rt_uint8_t win_no = 0; + static char win_title[16]; - rt_sprintf(win_title, "窗口 %d", ++win_no); - return win_title; + rt_sprintf(win_title, "窗口 %d", ++win_no); + return win_title; } /* 关闭对话框时的回调函数 */ -void diag_close(struct rtgui_timer* timer, void* parameter) +void diag_close(struct rtgui_timer *timer, void *parameter) { - cnt --; - rt_sprintf(label_text, "closed then %d second!", cnt); + cnt --; + rt_sprintf(label_text, "closed then %d second!", cnt); - /* 设置标签文本并更新控件 */ - rtgui_label_set_text(label, label_text); - rtgui_widget_update(RTGUI_WIDGET(label)); + /* 设置标签文本并更新控件 */ + rtgui_label_set_text(label, label_text); + rtgui_widget_update(RTGUI_WIDGET(label)); - if (cnt == 0) - { - /* 超时,关闭对话框 */ - rtgui_win_destroy(msgbox); - } + if (cnt == 0) + { + /* 超时,关闭对话框 */ + rtgui_win_destroy(msgbox); + } } /* AUTO窗口关闭时的事件处理 */ -rt_bool_t auto_window_close(struct rtgui_object* object, struct rtgui_event* event) +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); + if (timer != RT_NULL) + { + /* 停止并删除定时器 */ + rtgui_timer_stop(timer); + rtgui_timer_destory(timer); - timer = RT_NULL; - } + timer = RT_NULL; + } - return RT_TRUE; + 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) +static void demo_autowin_onbutton(struct rtgui_object *object, rtgui_event_t *event) { - struct rtgui_rect rect ={50, 50, 200, 200}; + struct rtgui_rect rect = {50, 50, 200, 200}; - msgbox = rtgui_win_create(main_win, "Information", - &rect, RTGUI_WIN_STYLE_DEFAULT | RTGUI_WIN_STYLE_DESTROY_ON_CLOSE); - if (msgbox == RT_NULL) - return; + /* don't create the window twice */ + if (msgbox) + 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(msgbox), - RTGUI_WIDGET(label)); + msgbox = rtgui_win_create(main_win, "Information", + &rect, RTGUI_WIN_STYLE_DEFAULT | RTGUI_WIN_STYLE_DESTROY_ON_CLOSE); + if (msgbox == RT_NULL) + return; - /* 设置关闭窗口时的动作 */ - rtgui_win_set_onclose(msgbox, auto_window_close); + 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(msgbox), + RTGUI_WIDGET(label)); - rtgui_win_show(msgbox, RT_FALSE); - /* 创建一个定时器 */ - timer = rtgui_timer_create(100, RT_TIMER_FLAG_PERIODIC, diag_close, RT_NULL); - rtgui_timer_start(timer); + /* 设置关闭窗口时的动作 */ + rtgui_win_set_onclose(msgbox, auto_window_close); + + rtgui_win_show(msgbox, 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) +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_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; + 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); + /* 创建一个窗口 */ + 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; + 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)); + 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_show(win, RT_TRUE); /* 删除非自动删除窗口 */ - rtgui_win_destroy(win); + rtgui_win_destroy(win); } -static void demo_close_ntitle_window(struct rtgui_object* object, rtgui_event_t* event) +static void demo_close_ntitle_window(struct rtgui_object *object, rtgui_event_t *event) { - rtgui_win_t* win; + rtgui_win_t *win; - /* 获得最顶层控件 */ - win = RTGUI_WIN(rtgui_widget_get_toplevel(RTGUI_WIDGET(object))); + /* 获得最顶层控件 */ + win = RTGUI_WIN(rtgui_widget_get_toplevel(RTGUI_WIDGET(object))); - /* 销毁窗口 */ - rtgui_win_destroy(win); + /* 销毁窗口 */ + rtgui_win_destroy(win); } /* 触发无标题窗口显示 */ -static void demo_ntitlewin_onbutton(struct rtgui_object* object, rtgui_event_t* event) +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_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; + 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(RTGUI_WIDGET(win)) = white; + /* 创建一个窗口,风格为无标题及无边框 */ + 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(RTGUI_WIDGET(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(RTGUI_WIDGET(label)) = 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); + /* 创建一个关闭按钮 */ + 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_win_show(win, RT_FALSE); } -rtgui_container_t* demo_view_window(void) +rtgui_container_t *demo_view_window(void) { - rtgui_rect_t rect; - rtgui_container_t* container; - rtgui_button_t *button; + rtgui_rect_t rect; + rtgui_container_t *container; + rtgui_button_t *button; - /* 创建一个演示用的视图 */ - container = demo_view("Window Demo"); + /* 创建一个演示用的视图 */ + 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; + 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; + 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; + 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); + 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; + return container; } diff --git a/examples/gui/demo_xml.c b/examples/gui/demo_xml.c index 398161039d..fe4f5321a6 100644 --- a/examples/gui/demo_xml.c +++ b/examples/gui/demo_xml.c @@ -2,23 +2,23 @@ #include -static int xml_event_handler(rt_uint8_t event, const char* text, rt_size_t len, void* user) +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; + rt_kprintf("%s: %s\n", rtgui_xml_event_str(event), text); + return 1; } const char xml_str[] = "ToveJaniReminderDon't forget me this weekend!"; void demo_xml() { - rtgui_xml_t *xml; + 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); - } + 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 diff --git a/examples/gui/gui_init.c b/examples/gui/gui_init.c deleted file mode 100644 index 6522046179..0000000000 --- a/examples/gui/gui_init.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include -#include - -extern void workbench_init(void); -extern void panel_init(void); - -/* GUI相关演示入口,需放在线程中进行初始化 */ -void rtgui_startup() -{ - /* GUI系统初始化 */ - rtgui_system_server_init(); - - /* 各个面板初始化 */ - panel_init(); - - /* 启动workbench */ - workbench_init(); -} diff --git a/examples/gui/mywidget.c b/examples/gui/mywidget.c index 1fc94d66fe..961db9cbe5 100644 --- a/examples/gui/mywidget.c +++ b/examples/gui/mywidget.c @@ -2,135 +2,135 @@ #include "mywidget.h" /* 鎺т欢缁樺浘鍑芥暟 */ -static void rtgui_mywidget_ondraw(struct rtgui_mywidget* me) +static void rtgui_mywidget_ondraw(struct rtgui_mywidget *me) { - struct rtgui_dc* dc; - struct rtgui_rect rect; - rt_uint16_t x, y; + struct rtgui_dc *dc; + struct rtgui_rect rect; + rt_uint16_t x, y; - /* 鑾峰緱鐩爣DC锛屽紑濮嬬粯鍥?*/ - dc = rtgui_dc_begin_drawing(RTGUI_WIDGET(me)); - if (dc == RT_NULL) return; + /* 鑾峰緱鐩爣DC锛屽紑濮嬬粯鍥?*/ + 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); + /* 鑾峰緱绐楀彛鐨勫昂瀵?*/ + 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; + /* 璁$畻涓績鍘熺偣 */ + 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); + /* 缁樺埗鍗佸瓧鏋?*/ + 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); + /* 鏍规嵁鐘舵佺粯鍒跺渾鍦?*/ + 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; + /* 缁撴潫缁樺浘 */ + rtgui_dc_end_drawing(dc); + return; } /* 榧犳爣浜嬩欢澶勭悊鍑芥暟 */ -static void rtgui_mywidget_onmouse(struct rtgui_mywidget* me, struct rtgui_event_mouse* mouse) +static void rtgui_mywidget_onmouse(struct rtgui_mywidget *me, struct rtgui_event_mouse *mouse) { - struct rtgui_rect rect; - rt_uint16_t x, y; + struct rtgui_rect rect; + rt_uint16_t x, y; - /* 浠呭榧犳爣鎶捣鍔ㄤ綔杩涜澶勭悊 */ - if (!(mouse->button & RTGUI_MOUSE_BUTTON_UP)) return; + /* 浠呭榧犳爣鎶捣鍔ㄤ綔杩涜澶勭悊 */ + if (!(mouse->button & RTGUI_MOUSE_BUTTON_UP)) return; - /* 鑾峰緱鎺т欢鐨勪綅缃?*/ - rtgui_widget_get_rect(RTGUI_WIDGET(me), &rect); - /* get_rect鍑芥暟鑾峰緱鏄帶浠剁殑鐩稿浣嶇疆锛岃岄紶鏍囦簨浠剁粰鍑虹殑鍧愭爣鏄粷瀵瑰潗鏍囷紝闇瑕佸仛涓涓浆鎹?*/ - rtgui_widget_rect_to_device(RTGUI_WIDGET(me), &rect); + /* 鑾峰緱鎺т欢鐨勪綅缃?*/ + rtgui_widget_get_rect(RTGUI_WIDGET(me), &rect); + /* get_rect鍑芥暟鑾峰緱鏄帶浠剁殑鐩稿浣嶇疆锛岃岄紶鏍囦簨浠剁粰鍑虹殑鍧愭爣鏄粷瀵瑰潗鏍囷紝闇瑕佸仛涓涓浆鎹?*/ + rtgui_widget_rect_to_device(RTGUI_WIDGET(me), &rect); - /* 璁$畻涓績鍘熺偣 */ - x = (rect.x2 + rect.x1)/2; - y = (rect.y2 + rect.y1)/2; + /* 璁$畻涓績鍘熺偣 */ + 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; + /* 姣旇緝榧犳爣鍧愭爣鏄惁鍦ㄥ湀鍐?*/ + 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); - } + /* 鍒锋柊(閲嶆柊缁樺埗)鎺т欢 */ + rtgui_mywidget_ondraw(me); + } } /* mywidget鎺т欢鐨勪簨浠跺鐞嗗嚱鏁?*/ -rt_bool_t rtgui_mywidget_event_handler(struct rtgui_object* object, struct rtgui_event* event) +rt_bool_t rtgui_mywidget_event_handler(struct rtgui_object *object, struct rtgui_event *event) { - /* 璋冪敤浜嬩欢澶勭悊鍑芥暟鏃讹紝widget鎸囬拡鎸囧悜鎺т欢鏈韩锛屾墍浠ュ厛鑾峰緱鐩稿簲鎺т欢瀵硅薄鐨勬寚閽?*/ - struct rtgui_mywidget* me = RTGUI_MYWIDGET(object); + /* 璋冪敤浜嬩欢澶勭悊鍑芥暟鏃讹紝widget鎸囬拡鎸囧悜鎺т欢鏈韩锛屾墍浠ュ厛鑾峰緱鐩稿簲鎺т欢瀵硅薄鐨勬寚閽?*/ + struct rtgui_mywidget *me = RTGUI_MYWIDGET(object); - switch (event->type) - { - case RTGUI_EVENT_PAINT: - /* 缁樺埗浜嬩欢锛岃皟鐢ㄧ粯鍥惧嚱鏁扮粯鍒?*/ - rtgui_mywidget_ondraw(me); - break; + 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; + 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); - } + /* 鍏朵粬浜嬩欢璋冪敤鐖剁被鐨勪簨浠跺鐞嗗嚱鏁?*/ + default: + return rtgui_widget_event_handler(object, event); + } - return RT_FALSE; + 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); + /* 榛樿杩欎釜鎺т欢鎺ユ敹鑱氱劍 */ + RTGUI_WIDGET(mywidget)->flag |= RTGUI_WIDGET_FLAG_FOCUSABLE; + /* 鍒濆鍖栨帶浠跺苟璁剧疆浜嬩欢澶勭悊鍑芥暟 */ + rtgui_object_set_event_handler(RTGUI_OBJECT(mywidget), rtgui_mywidget_event_handler); - /* 鍒濆鐘舵佹椂OFF */ - mywidget->status = MYWIDGET_STATUS_OFF; + /* 鍒濆鐘舵佹椂OFF */ + mywidget->status = MYWIDGET_STATUS_OFF; } -DEFINE_CLASS_TYPE(mywidget, "mywidget", - RTGUI_WIDGET_TYPE, - _rtgui_mywidget_constructor, - RT_NULL, - sizeof(struct rtgui_mywidget)); +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 *rtgui_mywidget_create(rtgui_rect_t *r) { - struct rtgui_mywidget* me; + struct rtgui_mywidget *me; - /* 璁﹔tgui_widget鍒涘缓鍑轰竴涓寚瀹氱被鍨嬶細RTGUI_MYWIDGET_TYPE绫诲瀷鐨勬帶浠?*/ - me = (struct rtgui_mywidget*) rtgui_widget_create (RTGUI_MYWIDGET_TYPE); - if (me != RT_NULL) - { - rtgui_widget_set_rect(RTGUI_WIDGET(me), r); - } + /* 璁﹔tgui_widget鍒涘缓鍑轰竴涓寚瀹氱被鍨嬶細RTGUI_MYWIDGET_TYPE绫诲瀷鐨勬帶浠?*/ + me = (struct rtgui_mywidget *) rtgui_widget_create(RTGUI_MYWIDGET_TYPE); + if (me != RT_NULL) + { + rtgui_widget_set_rect(RTGUI_WIDGET(me), r); + } - return me; + return me; } /* 鍒犻櫎涓涓嚜瀹氫箟鎺т欢 */ -void rtgui_mywidget_destroy(struct rtgui_mywidget* me) +void rtgui_mywidget_destroy(struct rtgui_mywidget *me) { - rtgui_widget_destroy(RTGUI_WIDGET(me)); + rtgui_widget_destroy(RTGUI_WIDGET(me)); } diff --git a/examples/gui/mywidget.h b/examples/gui/mywidget.h index ac8d25ffe1..99f19c9416 100644 --- a/examples/gui/mywidget.h +++ b/examples/gui/mywidget.h @@ -15,8 +15,8 @@ #include /* 鑷畾涔夋帶浠剁殑鐘舵佸煎畾涔?*/ -#define MYWIDGET_STATUS_ON 1 -#define MYWIDGET_STATUS_OFF 0 +#define MYWIDGET_STATUS_ON 1 +#define MYWIDGET_STATUS_OFF 0 DECLARE_CLASS_TYPE(mywidget); /** 姣忎釜鎺т欢浼氭湁涓涓被鍨嬶紝閫氳繃濡備笅鐨勫畯鑾峰緱鎺т欢鐩稿簲鐨勭被鍨嬩俊鎭?*/ @@ -29,22 +29,22 @@ DECLARE_CLASS_TYPE(mywidget); /* 涓у寲鎺т欢绫诲畾涔?*/ struct rtgui_mywidget { - /* 杩欎釜鎺т欢鏄户鎵胯嚜rtgui_widget鎺т欢 */ - struct rtgui_widget parent; + /* 杩欎釜鎺т欢鏄户鎵胯嚜rtgui_widget鎺т欢 */ + struct rtgui_widget parent; - /* 鐘舵侊細ON銆丱FF */ - rt_uint8_t status; + /* 鐘舵侊細ON銆丱FF */ + rt_uint8_t status; }; typedef struct rtgui_mywidget rtgui_mywidget_t; /* 鎺т欢鐨勫垱寤哄拰鍒犻櫎 */ -struct rtgui_mywidget* rtgui_mywidget_create(rtgui_rect_t* r); -void rtgui_mywidget_destroy(struct rtgui_mywidget* me); +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); +rt_bool_t rtgui_mywidget_event_handler(struct rtgui_object *object, struct rtgui_event *event); #endif