提交 9a995731 编写于 作者: D dzzxzz@gmail.com

sync gui examples with github 6cf0a8bc19c292ca810c917574895c8defa3922e

As always, full log is in GitHub.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2254 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 e6a9dd19
......@@ -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
""")
......
......@@ -7,9 +7,9 @@
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)
{
......@@ -28,7 +28,7 @@ static rt_bool_t demo_handle_key(struct rtgui_object* object, struct rtgui_event
}
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;
......@@ -61,7 +61,7 @@ static void application_entry(void* parameter)
rtgui_container_add_child(RTGUI_CONTAINER(main_win), RTGUI_WIDGET(the_notebook));
demo_view_box();
//demo_view_box();
/* 初始化各个例子的视图 */
demo_view_benchmark();
......@@ -94,6 +94,7 @@ static void application_entry(void* parameter)
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();
......
......@@ -11,9 +11,9 @@
#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;
......@@ -47,12 +47,12 @@ static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event)
}
/* 创建用于演示文件列表视图的视图 */
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_container_t *view;
rtgui_button_t *open_btn;
rtgui_font_t *font;
/* 默认采用12字体的显示 */
font = rtgui_font_refer("asc", 12);
......
......@@ -10,12 +10,12 @@
#include <rtgui/widgets/window.h>
#include <rtgui/widgets/list_view.h>
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;
......@@ -46,7 +46,7 @@ static void listitem_action(rtgui_widget_t *widget, void* parameter)
}
/* 返回功能的动作函数 */
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);
}
......@@ -54,16 +54,16 @@ static void return_action(rtgui_widget_t* widget, void* parameter)
/* 各个列表项定义 */
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},
{"列表项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;
......@@ -72,7 +72,7 @@ static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event)
rtgui_widget_get_rect(RTGUI_WIDGET(application), &rect);
/* 创建一个列表视图, 项指定为items */
_view = rtgui_list_view_create(items, sizeof(items)/sizeof(struct rtgui_list_item),
_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));
......@@ -84,11 +84,11 @@ static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event)
}
/* 创建用于演示列表视图的视图 */
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_button_t *open_btn;
container = demo_view("列表视图演示");
......
......@@ -10,11 +10,11 @@
#include <rtgui/widgets/window.h>
#include <rtgui/widgets/list_view.h>
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;
......@@ -45,7 +45,7 @@ static void listitem_action(rtgui_widget_t* widget, void* parameter)
}
/* 返回功能的动作函数 */
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);
......@@ -54,10 +54,11 @@ static void return_action(rtgui_widget_t* widget, void* parameter)
/* 列表项 */
#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[] = {
static const char *image_xpm[] =
{
"16 16 106 2",
" c None",
". c #D0C83F",
......@@ -180,9 +181,11 @@ static const char * image_xpm[] = {
" W @.l u I R #.Z Y U M ",
" $.G I $.%.R &.Y *.& =. ",
" -.;.>.,.L L ,.& M ",
" "};
" "
};
static const char * exit_xpm[] = {
static const char *exit_xpm[] =
{
"16 16 71 1",
" c None",
". c #CF673F",
......@@ -270,10 +273,11 @@ static const char * exit_xpm[] = {
" /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;
......@@ -294,7 +298,7 @@ static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event)
items[index].action = listitem_action;
items[index].image = item_icon;
items[index].name = rt_strdup(item_name);
items[index].parameter = (void*) index;
items[index].parameter = (void *) index;
}
items[ITEM_MAX].action = return_action;
......@@ -316,20 +320,20 @@ static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event)
}
/* 创建用于演示列表视图的视图 */
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_button_t *open_btn;
view = demo_view(app, "图标视图演示");
if (item_icon == RT_NULL)
item_icon = rtgui_image_create_from_mem("xpm",
(const rt_uint8_t*)image_xpm, sizeof(image_xpm), RT_TRUE);
(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);
(const rt_uint8_t *)exit_xpm, sizeof(exit_xpm), RT_TRUE);
/* 添加动作按钮 */
demo_view_get_rect(view, &rect);
......
......@@ -7,12 +7,12 @@
#include <rtgui/widgets/label.h>
#include <rtgui/widgets/workbench.h>
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_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);
......@@ -29,8 +29,10 @@ static void workbench_entry(void* parameter)
/* 添加一个label */
label = rtgui_label_create("你好!RT-Thread!");
rect.x1 = 10; rect.y1 = 10;
rect.x2 = 210; rect.y2 = 30;
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));
......
......@@ -28,7 +28,7 @@ void demo_view_prev(struct rtgui_object *object, struct rtgui_event *event)
--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;
......@@ -106,7 +106,7 @@ rtgui_container_t* demo_view(const char *title)
}
/* 这个函数用于返回演示视图的对外可用区域 */
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);
......@@ -118,7 +118,7 @@ void demo_view_get_rect(rtgui_container_t* container, rtgui_rect_t *rect)
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);
......@@ -128,24 +128,3 @@ void demo_view_get_logic_rect(rtgui_container_t* container, rtgui_rect_t *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
......@@ -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
......@@ -13,9 +13,9 @@ 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_dc *dc;
struct rtgui_rect rect;
struct rtgui_widget *widget;
......@@ -49,8 +49,10 @@ void timeout(struct rtgui_timer* timer, void* parameter)
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);
......@@ -59,13 +61,13 @@ void timeout(struct rtgui_timer* timer, void* parameter)
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;
struct rtgui_dc *dc;
rtgui_rect_t rect;
/* 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container先绘图 */
......@@ -121,9 +123,9 @@ rtgui_container_t *demo_view_animation()
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_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);
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);
......
......@@ -28,7 +28,7 @@ void _onidle(struct rtgui_object *object, rtgui_event_t *event)
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;
RTGUI_WIDGET_BACKGROUND(container) = color;
rtgui_dc_fill_rect(dc, &draw_rect);
......@@ -36,10 +36,10 @@ void _onidle(struct rtgui_object *object, rtgui_event_t *event)
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;
struct rtgui_dc *dc;
rtgui_rect_t rect;
/* 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container先绘图 */
......@@ -72,7 +72,7 @@ rt_bool_t benchmark_event_handler(struct rtgui_object *object, rtgui_event_t *ev
}
else if (event->type == RTGUI_EVENT_KBD)
{
struct rtgui_event_kbd *kbd = (struct rtgui_event_kbd*)event;
struct rtgui_event_kbd *kbd = (struct rtgui_event_kbd *)event;
if (kbd->key == RTGUIK_LEFT || kbd->key == RTGUIK_RIGHT)
return RT_FALSE;
......@@ -104,7 +104,7 @@ rt_bool_t benchmark_event_handler(struct rtgui_object *object, rtgui_event_t *ev
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;
......
......@@ -4,10 +4,10 @@
#include <rtgui/widgets/label.h>
#include <rtgui/widgets/button.h>
rtgui_container_t* demo_view_box(void)
rtgui_container_t *demo_view_box(void)
{
rtgui_rect_t rect;
rtgui_container_t* view;
rtgui_container_t *view;
struct rtgui_panel *panel;
struct rtgui_box *box;
......
......@@ -13,14 +13,14 @@ 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;
struct rtgui_dc *dc;
rtgui_rect_t rect;
rtgui_widget_t *widget;
/* 控件(view)通过parameter参数传递给定时器 */
widget = (rtgui_widget_t*)parameter;
widget = (rtgui_widget_t *)parameter;
/* 获得控件所属的DC */
dc = rtgui_dc_begin_drawing(widget);
......@@ -44,12 +44,15 @@ static void timeout(struct rtgui_timer* timer, void* parameter)
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;
rect.x2 += 2;
rect.y2 += 2;
rtgui_dc_blit(dc_buffer, NULL, dc, &rect);
/* 绘图完成 */
......@@ -62,7 +65,7 @@ static rt_bool_t animation_event_handler(struct rtgui_object *object, rtgui_even
if (event->type == RTGUI_EVENT_PAINT)
{
struct rtgui_dc* dc;
struct rtgui_dc *dc;
rtgui_rect_t rect;
/* 因为用的是demo view,上面本身有一部分控件,所以在绘图时先要让demo view先绘图 */
......@@ -113,29 +116,32 @@ struct rtgui_container *demo_view_buffer_animation(void)
{
struct rtgui_container *container;
container= demo_view("DC 缓冲区动画");
if (container!= RT_NULL)
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_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_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;
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);
......
......@@ -8,12 +8,12 @@
#include <rtgui/widgets/button.h>
/* 创建用于演示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_container_t *container;
rtgui_button_t *button;
rtgui_font_t *font;
/* 先创建一个演示用的视图 */
container = demo_view("Button View");
......@@ -27,7 +27,7 @@ rtgui_container_t* demo_view_button(void)
/* 创建一个button控件 */
button = rtgui_button_create("Red");
/* 设置label控件的前景色为红色 */
RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(button)) = red;
RTGUI_WIDGET_FOREGROUND(button) = red;
/* 设置button的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(button));
......@@ -41,7 +41,7 @@ rtgui_container_t* demo_view_button(void)
/* 创建一个button控件 */
button = rtgui_button_create("Blue");
/* 设置label控件的前景色为蓝色 */
RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(button)) = blue;
RTGUI_WIDGET_FOREGROUND(button) = blue;
/* 设置button的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(button));
......@@ -56,7 +56,7 @@ rtgui_container_t* demo_view_button(void)
button = rtgui_button_create("12 font");
/* 设置字体为12点阵的asc字体 */
font = rtgui_font_refer("asc", 12);
RTGUI_WIDGET_FONT(RTGUI_WIDGET(button)) = font;
RTGUI_WIDGET_FONT(button) = font;
/* 设置button的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(button));
......@@ -71,7 +71,7 @@ rtgui_container_t* demo_view_button(void)
button = rtgui_button_create("16 font");
/* 设置字体为16点阵的asc字体 */
font = rtgui_font_refer("asc", 16);
RTGUI_WIDGET_FONT(RTGUI_WIDGET(button)) = font;
RTGUI_WIDGET_FONT(button) = font;
/* 设置button的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(button));
......
......@@ -8,12 +8,12 @@
#include <rtgui/widgets/checkbox.h>
/* 创建用于演示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_container_t *container;
rtgui_checkbox_t *checkbox;
rtgui_font_t *font;
/* 先创建一个演示用的视图 */
container = demo_view("CheckBox View");
......@@ -25,9 +25,9 @@ rtgui_container_t* demo_view_checkbox(void)
rect.y1 += 5;
rect.y2 = rect.y1 + 20;
/* 创建一个checkbox控件 */
checkbox = rtgui_checkbox_create("Red",RT_TRUE);
checkbox = rtgui_checkbox_create("Red", RT_TRUE);
/* 设置前景色为红色 */
RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(checkbox)) = red;
RTGUI_WIDGET_FOREGROUND(checkbox) = red;
/* 设置checkbox的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(checkbox), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(checkbox));
......@@ -39,9 +39,9 @@ rtgui_container_t* demo_view_checkbox(void)
rect.y1 += 5 + 25;
rect.y2 = rect.y1 + 20;
/* 创建一个checkbox控件 */
checkbox = rtgui_checkbox_create("Blue",RT_TRUE);
checkbox = rtgui_checkbox_create("Blue", RT_TRUE);
/* 设置前景色为蓝色 */
RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(checkbox)) = blue;
RTGUI_WIDGET_FOREGROUND(checkbox) = blue;
/* 设置checkbox的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(checkbox), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(checkbox));
......@@ -53,10 +53,10 @@ rtgui_container_t* demo_view_checkbox(void)
rect.y1 += 5 + 25 + 25;
rect.y2 = rect.y1 + 20;
/* 创建一个checkbox控件 */
checkbox = rtgui_checkbox_create("12 font",RT_TRUE);
checkbox = rtgui_checkbox_create("12 font", RT_TRUE);
/* 设置字体为12点阵 */
font = rtgui_font_refer("asc", 12);
RTGUI_WIDGET_FONT(RTGUI_WIDGET(checkbox)) = font;
RTGUI_WIDGET_FONT(checkbox) = font;
/* 设置checkbox的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(checkbox), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(checkbox));
......@@ -68,10 +68,10 @@ rtgui_container_t* demo_view_checkbox(void)
rect.y1 += 5 + 25 + 25 + 25;
rect.y2 = rect.y1 + 20;
/* 创建一个checkbox控件 */
checkbox = rtgui_checkbox_create("16 font",RT_TRUE);
checkbox = rtgui_checkbox_create("16 font", RT_TRUE);
/* 设置字体为16点阵 */
font = rtgui_font_refer("asc", 16);
RTGUI_WIDGET_FONT(RTGUI_WIDGET(checkbox)) = font;
RTGUI_WIDGET_FONT(checkbox) = font;
/* 设置checkbox的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(checkbox), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(checkbox));
......
......@@ -16,11 +16,11 @@ struct rtgui_listbox_item items[] =
};
/* 创建用于演示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_container_t *container;
rtgui_combobox_t *box;
/* 先创建一个演示用的视图 */
container = demo_view("ComboBox View");
......@@ -32,7 +32,7 @@ rtgui_container_t* demo_view_combobox(void)
rect.y1 += 5;
rect.y2 = rect.y1 + 20;
/* 创建一个label控件 */
box = rtgui_combobox_create(items, sizeof(items)/sizeof(items[0]), &rect);
box = rtgui_combobox_create(items, sizeof(items) / sizeof(items[0]), &rect);
/* container是一个container控件,调用add_child方法添加这个box控件 */
rtgui_container_add_child(container, RTGUI_WIDGET(box));
......
......@@ -19,14 +19,14 @@ 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);
/* 仅对PAINT事件进行处理 */
if (event->type == RTGUI_EVENT_PAINT)
{
struct rtgui_dc* dc;
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};
......@@ -61,12 +61,14 @@ rt_bool_t dc_event_handler(struct rtgui_object* object, rtgui_event_t *event)
{
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_image_blit((rtgui_image_t *)&play_image, dc, &rect);
rect.x1 = 0; rect.y1 = 0;
rect.x2 = 0x1c; rect.y2 = 0x16;
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_image_blit((rtgui_image_t *)&stop_image, dc, &rect);
}
/* 绘制一个圆形 */
RTGUI_DC_FC(dc) = red;
......
......@@ -16,14 +16,14 @@ 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);
/* 仅对PAINT事件进行处理 */
if (event->type == RTGUI_EVENT_PAINT)
{
struct rtgui_dc* dc;
struct rtgui_dc *dc;
rtgui_rect_t rect;
/*
......
/*
* 程序清单:edit控件演示
*
* 这个例子会在conatiner上进行edit控件的演示
*/
#include "demo_view.h"
#include <rtgui/dc.h>
#include <rtgui/rtgui_system.h>
#include <rtgui/widgets/edit.h>
#include <rtgui/widgets/button.h>
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传递edit指针 */
RTGUI_WIDGET(button)->user_data = (rt_uint32_t)edit;
/* 创建一个按钮, 保存为某个文件 */
demo_view_get_rect(container, &rect);
rect.x1 += 130;
rect.x2 = rect.x1 + 100;
rect.y1 += 200;
rect.y2 = rect.y1 + 22;
button = rtgui_button_create("SaveAs File");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(button));
rtgui_button_set_onbutton(button, demo_edit_saveas_file);
/* 使用user_data传递edit指针 */
RTGUI_WIDGET(button)->user_data = (rt_uint32_t)edit;
return container;
}
......@@ -9,12 +9,12 @@
#include <rtgui/widgets/filelist_view.h>
#include <string.h>
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};
......@@ -65,7 +65,7 @@ static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event)
}
/* 演示视图的事件处理函数 */
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;
......@@ -74,7 +74,7 @@ static rt_bool_t demo_view_event_handler(rtgui_widget_t* widget, rtgui_event_t *
if (event->type == RTGUI_EVENT_PAINT)
{
struct rtgui_dc* dc;
struct rtgui_dc *dc;
rtgui_rect_t rect;
/* 获得控件所属的DC */
......@@ -87,7 +87,8 @@ static rt_bool_t demo_view_event_handler(rtgui_widget_t* widget, rtgui_event_t *
demo_view_get_rect(RTGUI_CONTAINER(widget), &rect);
/* 获得图像显示区域 */
rect.x1 += 5; rect.x2 -= 5;
rect.x1 += 5;
rect.x2 -= 5;
rect.y1 += 30;
if (image != RT_NULL)
......@@ -101,10 +102,10 @@ static rt_bool_t demo_view_event_handler(rtgui_widget_t* widget, rtgui_event_t *
}
/* 创建用于显示图像的演示视图 */
rtgui_container_t* demo_view_image(void)
rtgui_container_t *demo_view_image(void)
{
rtgui_rect_t rect;
rtgui_button_t* open_btn;
rtgui_button_t *open_btn;
/* 先创建一个演示视图 */
_container = demo_view("图像演示");
......@@ -114,7 +115,8 @@ rtgui_container_t* demo_view_image(void)
/* 添加一个按钮 */
demo_view_get_rect(_container, &rect);
rect.x1 += 5; rect.x2 = rect.x1 + 120;
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));
......
......@@ -28,10 +28,10 @@ rt_bool_t instrument_panel_event_handler(struct rtgui_object *object, rtgui_even
/* 仅对PAINT事件进行处理 */
if (event->type == RTGUI_EVENT_PAINT)
{
struct rtgui_dc* dc;
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};
const int arrowx[] = {120 + 75, 120 + 75, 120 + 85};
const int arrowy[] = {170 - 5, 170 + 5, 170};
/*
* 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container
......@@ -66,17 +66,17 @@ rt_bool_t instrument_panel_event_handler(struct rtgui_object *object, rtgui_even
rect.y2 = 270;
rtgui_dc_draw_text(dc, "rtgui-panel", &rect);
for(i = 0; i < 6; i++)
for (i = 0; i < 6; i++)
{
rtgui_dc_draw_arc(dc, x0, y0, 117-i, 150, 30);
rtgui_dc_draw_arc(dc, x0, y0, 117 - i, 150, 30);
}
RTGUI_DC_FC(dc) = black;
RTGUI_DC_TEXTALIGN(dc) = RTGUI_ALIGN_LEFT;
for(i = 0; i <= 23; i++)
for (i = 0; i <= 23; i++)
{
if(i < 12)
if (i < 12)
{
x = x0 + 105 * cos((150 + i * 10) * 3.1415926 / 180);
y = y0 + 105 * sin((150 + i * 10) * 3.1415926 / 180);
......
......@@ -7,12 +7,12 @@
#include <rtgui/widgets/label.h>
/* 创建用于演示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_container_t *container;
rtgui_label_t *label;
rtgui_font_t *font;
/* 先创建一个演示用的视图 */
container = demo_view("Label View");
......@@ -26,9 +26,9 @@ rtgui_container_t* demo_view_label(void)
/* 创建一个label控件 */
label = rtgui_label_create("Red Left");
/* 设置label控件上的文本对齐方式为:左对齐 */
RTGUI_WIDGET_TEXTALIGN(RTGUI_WIDGET(label)) = RTGUI_ALIGN_LEFT;
RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_LEFT;
/* 设置label控件的前景色为红色 */
RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(label)) = red;
RTGUI_WIDGET_FOREGROUND(label) = red;
/* 设置label的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
/* container是一个container控件,调用add_child方法添加这个label控件 */
......@@ -43,9 +43,9 @@ rtgui_container_t* demo_view_label(void)
/* 创建一个label控件 */
label = rtgui_label_create("Blue Right");
/* 设置label控件上的文本对齐方式为:右对齐 */
RTGUI_WIDGET_TEXTALIGN(RTGUI_WIDGET(label)) = RTGUI_ALIGN_RIGHT;
RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_RIGHT;
/* 设置label控件的前景色为蓝色 */
RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(label)) = blue;
RTGUI_WIDGET_FOREGROUND(label) = blue;
/* 设置label的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
/* container是一个container控件,调用add_child方法添加这个label控件 */
......@@ -60,9 +60,9 @@ rtgui_container_t* demo_view_label(void)
/* 创建一个label控件 */
label = rtgui_label_create("Green Center");
/* 设置label控件的前景色为绿色 */
RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(label)) = green;
RTGUI_WIDGET_FOREGROUND(label) = green;
/* 设置label控件上的文本对齐方式为:右对齐 */
RTGUI_WIDGET_TEXTALIGN(RTGUI_WIDGET(label)) = RTGUI_ALIGN_CENTER_HORIZONTAL;
RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_CENTER_HORIZONTAL;
/* 设置label的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
/* container是一个container控件,调用add_child方法添加这个label控件 */
......@@ -78,7 +78,7 @@ rtgui_container_t* demo_view_label(void)
label = rtgui_label_create("12 font");
/* 设置字体为12点阵的asc字体 */
font = rtgui_font_refer("asc", 12);
RTGUI_WIDGET_FONT(RTGUI_WIDGET(label)) = font;
RTGUI_WIDGET_FONT(label) = font;
/* 设置label的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
/* container是一个container控件,调用add_child方法添加这个label控件 */
......@@ -93,7 +93,7 @@ rtgui_container_t* demo_view_label(void)
label = rtgui_label_create("16 font");
/* 设置字体为16点阵的asc字体 */
font = rtgui_font_refer("asc", 16);
RTGUI_WIDGET_FONT(RTGUI_WIDGET(label)) = font;
RTGUI_WIDGET_FONT(label) = font;
/* 设置label的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
/* container是一个container控件,调用add_child方法添加这个label控件 */
......
......@@ -7,8 +7,9 @@
#include <rtgui/widgets/label.h>
#include <rtgui/widgets/listbox.h>
static rtgui_image_t* item_icon = RT_NULL;
static const char * image_xpm[] = {
static rtgui_image_t *item_icon = RT_NULL;
static const char *image_xpm[] =
{
"16 16 106 2",
" c None",
". c #D0C83F",
......@@ -131,7 +132,8 @@ static const char * image_xpm[] = {
" W @.l u I R #.Z Y U M ",
" $.G I $.%.R &.Y *.& =. ",
" -.;.>.,.L L ,.& M ",
" "};
" "
};
static struct rtgui_listbox_item items[] =
{
......@@ -141,9 +143,9 @@ static struct rtgui_listbox_item items[] =
{"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;
rtgui_listbox_t *box;
/* get listbox */
box = RTGUI_LISTBOX(object);
......@@ -154,19 +156,19 @@ static rt_bool_t on_items(struct rtgui_object* object, struct rtgui_event* event
}
/* 创建用于演示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_container_t *container;
rtgui_label_t *label;
rtgui_listbox_t *box;
/* 先创建一个演示用的视图 */
container = demo_view("ListBox Demo");
if (item_icon == RT_NULL)
item_icon = rtgui_image_create_from_mem("xpm",
(const rt_uint8_t*)image_xpm, sizeof(image_xpm), RT_TRUE);
(const rt_uint8_t *)image_xpm, sizeof(image_xpm), RT_TRUE);
items[1].image = item_icon;
/* 获得视图的位置信息 */
......@@ -184,7 +186,7 @@ rtgui_container_t* demo_view_listbox(void)
rect.y1 = rect.y2 + 3;
rect.y2 = 250;
box = rtgui_listbox_create(items, sizeof(items)/sizeof(struct rtgui_listbox_item), &rect);
box = rtgui_listbox_create(items, sizeof(items) / sizeof(struct rtgui_listbox_item), &rect);
rtgui_listbox_set_onitem(box, on_items);
/* container是一个container控件,调用add_child方法添加这个listbox控件 */
rtgui_container_add_child(container, RTGUI_WIDGET(box));
......
......@@ -7,8 +7,9 @@
#include <rtgui/widgets/label.h>
#include <rtgui/widgets/listctrl.h>
static rtgui_image_t* item_icon = RT_NULL;
static const char * image_xpm[] = {
static rtgui_image_t *item_icon = RT_NULL;
static const char *image_xpm[] =
{
"16 16 106 2",
" c None",
". c #D0C83F",
......@@ -131,14 +132,15 @@ static const char * image_xpm[] = {
" 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;
const char *name;
const char *gender;
int age;
rtgui_image_t* image;
rtgui_image_t *image;
} items[] =
{
{"index0", "00", 30, RT_NULL},
......@@ -164,8 +166,8 @@ static struct list_item
};
void _rtgui_listctrl_item_draw(struct rtgui_listctrl *list,
struct rtgui_dc* dc,
rtgui_rect_t* rect,
struct rtgui_dc *dc,
rtgui_rect_t *rect,
rt_uint16_t index)
{
char age_str[8];
......@@ -174,20 +176,23 @@ void _rtgui_listctrl_item_draw(struct rtgui_listctrl *list,
item_rect = *rect;
item_rect.x1 += 5;
items = (struct list_item*)list->items;
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_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_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_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;
......@@ -197,16 +202,18 @@ void _rtgui_listctrl_item_draw(struct rtgui_listctrl *list,
{
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;
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;
rtgui_listctrl_t *ctrl;
/* get listctrl */
ctrl = RTGUI_LISTCTRL(object);
......@@ -217,19 +224,19 @@ static rt_bool_t on_items(struct rtgui_object* object, struct rtgui_event* event
}
/* 创建用于演示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_container_t *container;
rtgui_label_t *label;
rtgui_listctrl_t *box;
/* 先创建一个演示用的视图 */
container = demo_view("List Control Demo");
if (item_icon == RT_NULL)
item_icon = rtgui_image_create_from_mem("xpm",
(const rt_uint8_t*)image_xpm, sizeof(image_xpm), RT_TRUE);
(const rt_uint8_t *)image_xpm, sizeof(image_xpm), RT_TRUE);
items[1].image = item_icon;
/* 获得视图的位置信息 */
......@@ -247,7 +254,7 @@ rtgui_container_t* demo_view_listctrl(void)
rect.y1 = rect.y2 + 3;
rect.y2 = 250;
box = rtgui_listctrl_create((rt_uint32_t)items, sizeof(items)/sizeof(items[0]), &rect,
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控件 */
......
......@@ -7,7 +7,7 @@
#include <rtgui/widgets/menu.h>
#include <rtgui/widgets/button.h>
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;
......@@ -25,13 +25,15 @@ 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,
{
RTGUI_ITEM_SUBMENU, "item #3", RT_NULL,
(struct rtgui_menu_item_t *)sub_items,
sizeof(sub_items)/sizeof(sub_items[0]), RT_NULL},
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;
......@@ -45,11 +47,11 @@ static rt_bool_t _onmenu(struct rtgui_object* object, struct rtgui_event* event)
}
/* 创建用于演示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_container_t *container;
rtgui_button_t *button;
/* 先创建一个演示用的视图 */
container = demo_view("MENU View");
......@@ -68,7 +70,7 @@ rtgui_container_t* demo_view_menu(void)
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;
}
/*
* 程序清单:DC上显示图像演示
* 3D??̣oDC????????Y?
*
* 这个例子会在创建出的view上显示图像
* ?a??y???3??view???????
*/
#include "demo_view.h"
......@@ -11,61 +11,62 @@
#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????̡oy */
static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event)
{
rtgui_filelist_view_t *view;
rtgui_workbench_t *workbench;
rtgui_rect_t rect;
/* 获得顶层的workbench */
/* ????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);
#else
view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect);
#endif
/* 模态显示一个文件列表视图,以提供给用户选择图像文件 */
/* ?ꨬ??????????tD???1???????????????t */
if (rtgui_container_show(RTGUI_CONTAINER(view), RT_TRUE) == RTGUI_MODAL_OK)
{
char path[32], name[8];
/* 设置文件路径的标签 */
/* ?????t?????? */
rtgui_filelist_view_get_fullpath(view, path, sizeof(path));
rt_memset(name, 0, sizeof(name));
/* 获得应用模块的类型 */
/* ???|????D */
if (rt_strstr(path, ".mo") != RT_NULL || rt_strstr(path, ".so") != RT_NULL)
{
rt_module_open(path);
}
}
/* 删除 文件列表 视图 */
/* ?3y ???tD ? */
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_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.x1 += 5;
rect.x2 = rect.x1 + 120;
rect.y2 = rect.y1 + 20;
open_btn = rtgui_button_create("打开应用模块");
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);
......
......@@ -26,12 +26,12 @@ const static struct rtgui_listbox_item items2[] =
};
/* 创建用于演示notebook控件的视图 */
rtgui_container_t* demo_view_notebook(void)
rtgui_container_t *demo_view_notebook(void)
{
rtgui_rect_t rect;
rtgui_container_t* container;
rtgui_container_t *container;
struct rtgui_notebook *notebook;
rtgui_listbox_t* box;
rtgui_listbox_t *box;
/* 先创建一个演示用的视图 */
container = demo_view("Notebook View");
......@@ -43,10 +43,10 @@ rtgui_container_t* demo_view_notebook(void)
/* container是一个container控件,调用add_child方法添加这个notebook控件 */
rtgui_container_add_child(container, RTGUI_WIDGET(notebook));
box = rtgui_listbox_create(items, sizeof(items)/sizeof(struct rtgui_listbox_item), &rect);
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);
box = rtgui_listbox_create(items2, sizeof(items2) / sizeof(struct rtgui_listbox_item), &rect);
rtgui_notebook_add(notebook, "Tab 2", RTGUI_WIDGET(box));
return container;
......
......@@ -3,11 +3,11 @@
#include <rtgui/widgets/label.h>
#include <rtgui/widgets/progressbar.h>
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;
......@@ -46,10 +46,13 @@ rtgui_container_t *demo_view_progressbar(void)
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;
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;
rect.y1 += 20;
rect.y2 = rect.y1 + 18;
hbar = rtgui_progressbar_create(RTGUI_HORIZONTAL, 100, &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(hbar));
......@@ -57,11 +60,15 @@ rtgui_container_t *demo_view_progressbar(void)
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;
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;
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));
......
......@@ -8,27 +8,27 @@
#include <rtgui/widgets/radiobox.h>
/* 用于显示垂直方向的radio文本项数组 */
static char* radio_item_v[5] =
{
static char *radio_item_v[5] =
{
"one",
"two",
"three",
"item 1",
"item 2"
};
};
/* 用于显示水平方向的radio文本项数组 */
static char* radio_item_h[3] =
{
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_container_t *container;
rtgui_radiobox_t *radiobox;
/* 先创建一个演示用的视图 */
container = demo_view("RadioBox View");
......
......@@ -8,8 +8,8 @@ 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_scrollbar_t *hbar;
rtgui_scrollbar_t *vbar;
/* create a demo container */
container = demo_view("ScrollBar View");
......@@ -18,10 +18,13 @@ rtgui_container_t *demo_view_scrollbar(void)
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;
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;
rect.y1 += 20;
rect.y2 = rect.y1 + 18;
hbar = rtgui_scrollbar_create(RTGUI_HORIZONTAL, &rect);
rtgui_container_add_child(container, RTGUI_WIDGET(hbar));
......@@ -29,15 +32,19 @@ rtgui_container_t *demo_view_scrollbar(void)
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;
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;
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));
// RTGUI_WIDGET_DISABLE(vbar);
return container;
}
......@@ -17,10 +17,13 @@ rtgui_container_t *demo_view_slider(void)
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;
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;
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);
......@@ -29,11 +32,15 @@ rtgui_container_t *demo_view_slider(void)
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;
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;
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);
......
......@@ -8,12 +8,12 @@
#include <rtgui/widgets/textbox.h>
/* 创建用于演示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_container_t *container;
rtgui_label_t *label;
rtgui_textbox_t *text;
/* 先创建一个演示用的视图 */
container = demo_view("TextBox View");
......@@ -35,7 +35,7 @@ rtgui_container_t* demo_view_textbox(void)
textbox_rect.x1 = textbox_rect.x2 + 5;
textbox_rect.x2 = textbox_rect.x1 + 160;
/* 创建一个textbox控件 */
text = rtgui_textbox_create("bernard",RTGUI_TEXTBOX_SINGLE);
text = rtgui_textbox_create("bernard", RTGUI_TEXTBOX_SINGLE);
/* 设置textbox控件的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect);
/* 添加textbox控件到视图中 */
......@@ -54,7 +54,7 @@ rtgui_container_t* demo_view_textbox(void)
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);
text = rtgui_textbox_create("bernard.xiong@gmail.com", RTGUI_TEXTBOX_SINGLE);
/* 设置textbox控件的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect);
/* 添加textbox控件到视图中 */
......@@ -72,7 +72,7 @@ rtgui_container_t* demo_view_textbox(void)
textbox_rect.x1 = textbox_rect.x2 + 5;
textbox_rect.x2 = textbox_rect.x1 + 160;
/* 创建一个textbox控件 */
text = rtgui_textbox_create("rt-thread",RTGUI_TEXTBOX_SINGLE);
text = rtgui_textbox_create("rt-thread", RTGUI_TEXTBOX_SINGLE);
/* 设置textbox显示文本为掩码形式(即显示为*号,适合于显示密码的情况) */
text->flag |= RTGUI_TEXTBOX_MASK;
/* 设置textbox控件的位置 */
......@@ -92,7 +92,7 @@ rtgui_container_t* demo_view_textbox(void)
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);
text = rtgui_textbox_create("http://www.rt-thread.org", RTGUI_TEXTBOX_SINGLE);
/* 设置textbox控件的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect);
/* 添加textbox控件到视图中 */
......
......@@ -15,16 +15,16 @@ 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);
/* 仅对PAINT事件进行处理 */
if (event->type == RTGUI_EVENT_PAINT)
{
struct rtgui_dc* dc;
struct rtgui_dc *dc;
rtgui_rect_t rect;
rtgui_font_t* saved;
rtgui_font_t *saved;
/*
* 因为用的是demo container,上面本身有一部分控件,所以在绘图时先要让demo container
......@@ -88,7 +88,7 @@ rtgui_container_t *demo_view_ttf()
container = demo_view("TTF 演示");
if (container != RT_NULL)
{
RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(container)) = white;
RTGUI_WIDGET_BACKGROUND(container) = white;
/* 设置成自己的事件处理函数 */
rtgui_object_set_event_handler(RTGUI_OBJECT(container), ttf_event_handler);
}
......
......@@ -13,8 +13,8 @@
#include <string.h>
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;
......@@ -57,20 +57,20 @@ static void create_normal_win(void)
}
/* 触发正常窗口显示 */
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);
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];
......@@ -80,7 +80,7 @@ static char* get_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);
......@@ -97,7 +97,7 @@ void diag_close(struct rtgui_timer* timer, void* parameter)
}
/* 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)
{
......@@ -115,9 +115,13 @@ 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};
/* don't create the window twice */
if (msgbox)
return;
msgbox = rtgui_win_create(main_win, "Information",
&rect, RTGUI_WIN_STYLE_DEFAULT | RTGUI_WIN_STYLE_DESTROY_ON_CLOSE);
......@@ -145,7 +149,7 @@ static void demo_autowin_onbutton(struct rtgui_object* object, rtgui_event_t* ev
}
/* 触发模态窗口显示 */
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;
......@@ -175,9 +179,9 @@ static void demo_modalwin_onbutton(struct rtgui_object* object, rtgui_event_t* e
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)));
......@@ -187,7 +191,7 @@ static void demo_close_ntitle_window(struct rtgui_object* object, rtgui_event_t*
}
/* 触发无标题窗口显示 */
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;
......@@ -203,17 +207,17 @@ static void demo_ntitlewin_onbutton(struct rtgui_object* object, rtgui_event_t*
"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;
RTGUI_WIDGET_BACKGROUND(win) = white;
/* 创建一个文本标签 */
label = rtgui_label_create("无边框窗口");
rtgui_font_get_metrics(RTGUI_WIDGET_FONT(RTGUI_WIDGET(label)), "无边框窗口", &widget_rect);
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(RTGUI_WIDGET(label)) = white;
RTGUI_WIDGET_BACKGROUND(label) = white;
/* 创建一个关闭按钮 */
widget_rect.x1 = 0;
......@@ -231,10 +235,10 @@ static void demo_ntitlewin_onbutton(struct rtgui_object* object, rtgui_event_t*
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_container_t *container;
rtgui_button_t *button;
/* 创建一个演示用的视图 */
......
......@@ -2,7 +2,7 @@
#include <rtgui/rtgui_xml.h>
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;
......
#include <rtgui/rtgui.h>
#include <rtgui/rtgui_server.h>
#include <rtgui/rtgui_system.h>
extern void workbench_init(void);
extern void panel_init(void);
/* GUI相关演示入口,需放在线程中进行初始化 */
void rtgui_startup()
{
/* GUI系统初始化 */
rtgui_system_server_init();
/* 各个面板初始化 */
panel_init();
/* 启动workbench */
workbench_init();
}
......@@ -2,9 +2,9 @@
#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_dc *dc;
struct rtgui_rect rect;
rt_uint16_t x, y;
......@@ -19,8 +19,8 @@ static void rtgui_mywidget_ondraw(struct rtgui_mywidget* me)
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;
......@@ -40,7 +40,7 @@ static void rtgui_mywidget_ondraw(struct rtgui_mywidget* me)
}
/* 鼠标事件处理函数 */
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;
......@@ -54,8 +54,8 @@ static void rtgui_mywidget_onmouse(struct rtgui_mywidget* me, struct rtgui_event
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) &&
......@@ -71,10 +71,10 @@ static void rtgui_mywidget_onmouse(struct rtgui_mywidget* me, struct rtgui_event
}
/* 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);
struct rtgui_mywidget *me = RTGUI_MYWIDGET(object);
switch (event->type)
{
......@@ -85,7 +85,7 @@ rt_bool_t rtgui_mywidget_event_handler(struct rtgui_object* object, struct rtgui
case RTGUI_EVENT_MOUSE_BUTTON:
/* 鼠标事件 */
rtgui_mywidget_onmouse(RTGUI_MYWIDGET(me), (struct rtgui_event_mouse*) event);
rtgui_mywidget_onmouse(RTGUI_MYWIDGET(me), (struct rtgui_event_mouse *) event);
break;
/* 其他事件调用父类的事件处理函?*/
......@@ -115,12 +115,12 @@ DEFINE_CLASS_TYPE(mywidget, "mywidget",
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;
/* 让rtgui_widget创建出一个指定类型:RTGUI_MYWIDGET_TYPE类型的控?*/
me = (struct rtgui_mywidget*) rtgui_widget_create (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);
......@@ -130,7 +130,7 @@ struct rtgui_mywidget* rtgui_mywidget_create(rtgui_rect_t* r)
}
/* 删除一个自定义控件 */
void rtgui_mywidget_destroy(struct rtgui_mywidget* me)
void rtgui_mywidget_destroy(struct rtgui_mywidget *me)
{
rtgui_widget_destroy(RTGUI_WIDGET(me));
}
......@@ -38,13 +38,13 @@ struct rtgui_mywidget
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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册