summaryrefslogtreecommitdiff
path: root/components/rtgui_win/server/driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'components/rtgui_win/server/driver.c')
-rw-r--r--components/rtgui_win/server/driver.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/components/rtgui_win/server/driver.c b/components/rtgui_win/server/driver.c
new file mode 100644
index 0000000000..e93317dce9
--- /dev/null
+++ b/components/rtgui_win/server/driver.c
@@ -0,0 +1,84 @@
+/*
+ * File : driver.c
+ * This file is part of RTGUI in RT-Thread RTOS
+ * COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rt-thread.org/license/LICENSE
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2009-10-04 Bernard first version
+ */
+#include <rtgui/driver.h>
+
+#ifdef RTGUI_USING_GRAPHIC_DRIVER_LIST
+rtgui_list_t _rtgui_graphic_driver_list = {RT_NULL};
+
+void rtgui_graphic_driver_add(struct rtgui_graphic_driver* driver)
+{
+ rtgui_list_insert(&_rtgui_graphic_driver_list, &(driver->list));
+}
+
+void rtgui_graphic_driver_remove(struct rtgui_graphic_driver* driver)
+{
+ rtgui_list_remove(&_rtgui_graphic_driver_list, &(driver->list));
+}
+
+struct rtgui_graphic_driver* rtgui_graphic_driver_find(char* name)
+{
+ rtgui_list_t* node;
+ struct rtgui_graphic_driver* driver;
+
+ /* search in list */
+ rtgui_list_foreach(node, &(_rtgui_graphic_driver_list))
+ {
+ driver = rtgui_list_entry(node, struct rtgui_graphic_driver, list);
+
+ /* find it */
+ if (rt_strncmp(driver->name, name, RTGUI_NAME_MAX) == 0)
+ {
+ return driver;
+ }
+ }
+
+ return RT_NULL;
+}
+
+struct rtgui_graphic_driver* rtgui_graphic_driver_get_default()
+{
+ return rtgui_list_entry(_rtgui_graphic_driver_list.next,
+ struct rtgui_graphic_driver, list);
+}
+#else
+static const struct rtgui_graphic_driver* _default_graphic_driver = RT_NULL;
+
+void rtgui_graphic_driver_add(const struct rtgui_graphic_driver* driver)
+{
+ _default_graphic_driver = driver;
+}
+
+const struct rtgui_graphic_driver* rtgui_graphic_driver_get_default()
+{
+ return _default_graphic_driver;
+}
+#endif
+
+
+void rtgui_graphic_driver_get_rect(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect)
+{
+ RT_ASSERT(rect != RT_NULL);
+ RT_ASSERT(driver != RT_NULL);
+
+ rect->x1 = rect->y1 = 0;
+ rect->x2 = driver->width;
+ rect->y2 = driver->height;
+}
+
+void rtgui_graphic_driver_get_default_rect(rtgui_rect_t *rect)
+{
+ /* return default the extent of default driver */
+ rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), rect);
+}
+