summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorbernard.xiong <[email protected]>2010-08-17 11:33:36 +0000
committerbernard.xiong <[email protected]>2010-08-17 11:33:36 +0000
commit9a3f67746fe5fa43af9414a5b302b6606915a96c (patch)
tree13be9d2853802da10889b3022ab90560bca58676 /examples
parentcf6882f35b453773ae86738c51c455768531b365 (diff)
update benchmark example.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@859 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'examples')
-rw-r--r--examples/gui/demo_view_benchmark.c71
1 files changed, 50 insertions, 21 deletions
diff --git a/examples/gui/demo_view_benchmark.c b/examples/gui/demo_view_benchmark.c
index e86046d142..ebeb718d57 100644
--- a/examples/gui/demo_view_benchmark.c
+++ b/examples/gui/demo_view_benchmark.c
@@ -7,6 +7,8 @@
#define RAND(x1, x2) ((rand() % (x2 - x1)) + x1)
static rtgui_view_t* view = RT_NULL;
+static int running = 0;
+
void _onidle(rtgui_widget_t* widget, rtgui_event_t *event)
{
rtgui_color_t color;
@@ -33,29 +35,60 @@ void _onidle(rtgui_widget_t* widget, rtgui_event_t *event)
rtgui_dc_end_drawing(dc);
}
-rt_bool_t benchmark_event_handler(rtgui_widget_t* widget, rtgui_event_t *event)
+void _draw_default(rtgui_widget_t* widget, rtgui_event_t* event)
{
- if (event->type == RTGUI_EVENT_PAINT)
- {
- struct rtgui_dc* dc;
- rtgui_rect_t rect;
+ struct rtgui_dc* dc;
+ rtgui_rect_t rect;
+
+ /* ��Ϊ�õ���demo view�����汾����һ���ֿؼ��������ڻ�ͼʱ��Ҫ��demo view�Ȼ�ͼ */
+ rtgui_view_event_handler(widget, event);
- /* ��Ϊ�õ���demo view�����汾����һ���ֿؼ��������ڻ�ͼʱ��Ҫ��demo view�Ȼ�ͼ */
- rtgui_view_event_handler(widget, event);
+ /* ��ÿؼ�������DC */
+ dc = rtgui_dc_begin_drawing(widget);
+ if (dc == RT_NULL) /* ��������������DC�����أ�����ؼ��򸸿ؼ�������״̬��DC�ǻ�ȡ���ɹ��ģ� */
+ return ;
+
+ /* ���demo view������ͼ������ */
+ demo_view_get_rect(RTGUI_VIEW(widget), &rect);
+
+ /* �������� */
+ RTGUI_WIDGET_BACKGROUND(widget) = default_background;
+ rtgui_dc_fill_rect(dc, &rect);
- /* ��ÿؼ�������DC */
- dc = rtgui_dc_begin_drawing(widget);
- if (dc == RT_NULL) /* ��������������DC�����أ�����ؼ��򸸿ؼ�������״̬��DC�ǻ�ȡ���ɹ��ģ� */
- return RT_FALSE;
+ /* ��ʾ��ʾ */
+ rtgui_dc_draw_text(dc, "���������ʼ/ֹͣ����...", &rect);
+
+ /* ��ͼ��� */
+ rtgui_dc_end_drawing(dc);
+}
- /* ���demo view������ͼ������ */
- demo_view_get_rect(RTGUI_VIEW(widget), &rect);
+rt_bool_t benchmark_event_handler(rtgui_widget_t* widget, rtgui_event_t *event)
+{
+ if (event->type == RTGUI_EVENT_PAINT)
+ {
+ _draw_default(widget, event);
+ }
+ else if (event->type == RTGUI_EVENT_KBD)
+ {
+ struct rtgui_event_kbd *kbd = (struct rtgui_event_kbd*)event;
- /* �������� */
- rtgui_dc_fill_rect(dc, &rect);
+ if (RTGUI_KBD_IS_UP(kbd))
+ {
+ if (running)
+ {
+ /* stop */
+ rtgui_thread_set_onidle(RT_NULL);
+ _draw_default(widget, event);
+ }
+ else
+ {
+ /* run */
+ rtgui_thread_set_onidle(_onidle);
+ }
- /* ��ͼ��� */
- rtgui_dc_end_drawing(dc);
+ running = !running;
+ }
+ return RT_TRUE;
}
else
{
@@ -68,13 +101,9 @@ rt_bool_t benchmark_event_handler(rtgui_widget_t* widget, rtgui_event_t *event)
rtgui_view_t *demo_view_benchmark(rtgui_workbench_t* workbench)
{
- // rtgui_view_t *view;
-
srand(100);
view = demo_view(workbench, "��ͼ����");
rtgui_widget_set_event_handler(RTGUI_WIDGET(view), benchmark_event_handler);
- rtgui_thread_set_onidle(_onidle);
-
return view;
}