summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorbernard.xiong <[email protected]>2010-06-01 07:54:34 +0000
committerbernard.xiong <[email protected]>2010-06-01 07:54:34 +0000
commitd4150036b84ff3977533c17349f2873a5a10eff3 (patch)
tree59537a8894622f8fc11b9cada7603efffb01a5c0 /examples
parent3a13964efa13c2d28936cb341da672c48d5658f6 (diff)
add ttf and xml example.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@757 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'examples')
-rw-r--r--examples/gui/demo_view_ttf.c98
-rw-r--r--examples/gui/demo_workbench.c3
-rw-r--r--examples/gui/demo_xml.c26
3 files changed, 127 insertions, 0 deletions
diff --git a/examples/gui/demo_view_ttf.c b/examples/gui/demo_view_ttf.c
new file mode 100644
index 0000000000..23d74447d1
--- /dev/null
+++ b/examples/gui/demo_view_ttf.c
@@ -0,0 +1,98 @@
+/*
+ * �����嵥��TTF������ʾ��ʾ
+ *
+ * ������ӻ��ڴ�������view�Ͻ���TTF������ʾ����ʾ
+ */
+
+#include "demo_view.h"
+#include <rtgui/dc.h>
+#include <rtgui/font.h>
+#include <rtgui/rtgui_system.h>
+
+#ifdef RTGUI_USING_TTF
+static rtgui_font_t *font_16, *font_24, *font_36, *font_48;
+
+/*
+ * view���¼���������
+ */
+rt_bool_t ttf_event_handler(rtgui_widget_t* widget, rtgui_event_t *event)
+{
+ /* ����PAINT�¼����д��� */
+ if (event->type == RTGUI_EVENT_PAINT)
+ {
+ struct rtgui_dc* dc;
+ rtgui_rect_t rect;
+ rtgui_font_t* saved;
+
+ /*
+ * ��Ϊ�õ���demo view�����汾����һ���ֿؼ��������ڻ�ͼʱ��Ҫ��demo view
+ * �Ȼ�ͼ
+ */
+ rtgui_view_event_handler(widget, event);
+
+ /************************************************************************/
+ /* �������DC�IJ��� */
+ /************************************************************************/
+
+ /* ��ÿؼ�������DC */
+ dc = rtgui_dc_begin_drawing(widget);
+ /* ��������������DC�����أ�����ؼ��򸸿ؼ�������״̬��DC�ǻ�ȡ���ɹ��ģ� */
+ if (dc == RT_NULL)
+ return RT_FALSE;
+
+ /* ���demo view������ͼ������ */
+ demo_view_get_rect(RTGUI_VIEW(widget), &rect);
+
+ saved = RTGUI_WIDGET_FONT(widget);
+
+ RTGUI_WIDGET_FONT(widget) = font_16;
+ rtgui_dc_draw_text(dc, "ABCD", &rect);
+ rect.y1 += 18;
+
+ RTGUI_WIDGET_FONT(widget) = font_24;
+ rtgui_dc_draw_text(dc, "ABCD", &rect);
+ rect.y1 += 26;
+
+ RTGUI_WIDGET_FONT(widget) = font_36;
+ rtgui_dc_draw_text(dc, "ABCD", &rect);
+ rect.y1 += 38;
+
+ RTGUI_WIDGET_FONT(widget) = font_48;
+ rtgui_dc_draw_text(dc, "ABCD", &rect);
+
+ RTGUI_WIDGET_FONT(widget) = saved;
+ /* ��ͼ��� */
+ rtgui_dc_end_drawing(dc);
+ }
+ else
+ {
+ /* �����¼�������Ĭ�ϵ��¼��������� */
+ return rtgui_view_event_handler(widget, event);
+ }
+
+ return RT_FALSE;
+}
+
+extern rtgui_font_t* rtgui_freetype_font_create(const char* filename, int bold, int italic, rt_size_t size);
+
+/* ��������TTF������ʾ��ʾ�õ���ͼ */
+rtgui_view_t *demo_view_ttf(rtgui_workbench_t* workbench)
+{
+ rtgui_view_t *view;
+
+ font_16 = rtgui_freetype_font_create("d:/arial.ttf", 0, 0, 16);
+ font_24 = rtgui_freetype_font_create("d:/arial.ttf", 0, 0, 24);
+ font_36 = rtgui_freetype_font_create("d:/arial.ttf", 0, 0, 36);
+ font_48 = rtgui_freetype_font_create("d:/HARNGTON.TTF", 0, 0, 72);
+
+ view = demo_view(workbench, "TTF ��ʾ");
+ if (view != RT_NULL)
+ {
+ // RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(view)) = white;
+ /* ���ó��Լ����¼��������� */
+ rtgui_widget_set_event_handler(RTGUI_WIDGET(view), ttf_event_handler);
+ }
+
+ return view;
+}
+#endif
diff --git a/examples/gui/demo_workbench.c b/examples/gui/demo_workbench.c
index 98da276719..9782efb987 100644
--- a/examples/gui/demo_workbench.c
+++ b/examples/gui/demo_workbench.c
@@ -52,6 +52,9 @@ static void workbench_entry(void* parameter)
/* 初始化各个例子的视图 */
demo_view_dc(workbench);
+#ifdef RTGUI_USING_TTF
+ demo_view_ttf(workbench);
+#endif
demo_view_dc_buffer(workbench);
demo_view_animation(workbench);
demo_view_buffer_animation(workbench);
diff --git a/examples/gui/demo_xml.c b/examples/gui/demo_xml.c
new file mode 100644
index 0000000000..11a448103b
--- /dev/null
+++ b/examples/gui/demo_xml.c
@@ -0,0 +1,26 @@
+#include <rtthread.h>
+
+#include <rtgui/rtgui_xml.h>
+
+static int xml_event_handler(rt_uint8_t event, const char* text, rt_size_t len, void* user)
+{
+ rt_kprintf("%s: %s\n", rtgui_xml_event_str(event), text);
+ return 1;
+}
+
+const char xml_str[] = "<?xml version=\"1.0\"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>";
+void demo_xml()
+{
+ rtgui_xml_t *xml;
+
+ xml = rtgui_xml_create(512, xml_event_handler, RT_NULL);
+ if (xml != RT_NULL)
+ {
+ rtgui_xml_parse(xml, xml_str, sizeof(xml_str));
+ rtgui_xml_destroy(xml);
+ }
+}
+#ifdef RT_USING_FINSH
+#include <finsh.h>
+FINSH_FUNCTION_EXPORT(demo_xml, show the demo of xml parser);
+#endif