driver.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * File : driver.c
  3. * This file is part of RTGUI in RT-Thread RTOS
  4. * COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
  5. *
  6. * The license and distribution terms for this file may be
  7. * found in the file LICENSE in this distribution or at
  8. * http://www.rt-thread.org/license/LICENSE
  9. *
  10. * Change Logs:
  11. * Date Author Notes
  12. * 2009-10-04 Bernard first version
  13. */
  14. #include <rtgui/driver.h>
  15. #ifdef RTGUI_USING_GRAPHIC_DRIVER_LIST
  16. struct rtgui_list_node _rtgui_graphic_driver_list = {RT_NULL};
  17. void rtgui_graphic_driver_add(struct rtgui_graphic_driver* driver)
  18. {
  19. rtgui_list_insert(&_rtgui_graphic_driver_list, &(driver->list));
  20. }
  21. void rtgui_graphic_driver_remove(struct rtgui_graphic_driver* driver)
  22. {
  23. rtgui_list_remove(&_rtgui_graphic_driver_list, &(driver->list));
  24. }
  25. struct rtgui_graphic_driver* rtgui_graphic_driver_find(char* name)
  26. {
  27. struct rtgui_list_node* node;
  28. struct rtgui_graphic_driver* driver;
  29. /* search in list */
  30. rtgui_list_foreach(node, &(_rtgui_graphic_driver_list))
  31. {
  32. driver = rtgui_list_entry(node, struct rtgui_graphic_driver, list);
  33. /* find it */
  34. if (rt_strncmp(driver->name, name, RTGUI_NAME_MAX) == 0)
  35. {
  36. return driver;
  37. }
  38. }
  39. return RT_NULL;
  40. }
  41. struct rtgui_graphic_driver* rtgui_graphic_driver_get_default()
  42. {
  43. return rtgui_list_entry(_rtgui_graphic_driver_list.next,
  44. struct rtgui_graphic_driver, list);
  45. }
  46. #else
  47. static const struct rtgui_graphic_driver* _default_graphic_driver = RT_NULL;
  48. void rtgui_graphic_driver_add(const struct rtgui_graphic_driver* driver)
  49. {
  50. _default_graphic_driver = driver;
  51. }
  52. const struct rtgui_graphic_driver* rtgui_graphic_driver_get_default()
  53. {
  54. return _default_graphic_driver;
  55. }
  56. #endif
  57. void rtgui_graphic_driver_get_rect(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect)
  58. {
  59. RT_ASSERT(rect != RT_NULL);
  60. RT_ASSERT(driver != RT_NULL);
  61. rect->x1 = rect->y1 = 0;
  62. rect->x2 = driver->width;
  63. rect->y2 = driver->height;
  64. }
  65. void rtgui_graphic_driver_get_default_rect(rtgui_rect_t *rect)
  66. {
  67. /* return default the extent of default driver */
  68. rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), rect);
  69. }