/src/backend/rt-thread/ftk_display_rtthread.c

http://ftk.googlecode.com/ · C · 48 lines · 38 code · 8 blank · 2 comment · 12 complexity · 7ffad468858f9a90899f6a0d89ae9c90 MD5 · raw file

  1. #include <stdlib.h>
  2. #include "ftk_log.h"
  3. #include "ftk_display_mem.h"
  4. #include "ftk_display_rtthread.h"
  5. FtkDisplay* ftk_display_lcd_create(const char* filename)
  6. {
  7. rt_device_t device;
  8. rt_err_t result;
  9. struct rt_device_graphic_info info;
  10. FtkDisplay* thiz = NULL;
  11. FtkPixelFormat format = 0;
  12. device = rt_device_find(filename);
  13. if(device == RT_NULL) return NULL;
  14. /* get framebuffer address */
  15. result = rt_device_control(device, RTGRAPHIC_CTRL_GET_INFO, &info);
  16. if(result != RT_EOK)
  17. {
  18. /* get device information failed */
  19. return NULL;
  20. }
  21. if(info.bits_per_pixel == 16)
  22. {
  23. format = FTK_PIXEL_RGB565;
  24. }
  25. else if(info.bits_per_pixel == 24)
  26. {
  27. format = FTK_PIXEL_BGR24;
  28. }
  29. else if(info.bits_per_pixel == 32)
  30. {
  31. format = FTK_PIXEL_BGRA32;
  32. }
  33. else
  34. {
  35. assert(!"not supported framebuffer format.");
  36. }
  37. thiz = ftk_display_mem_create(format, info.width, info.height,
  38. info.framebuffer, NULL, NULL);
  39. return thiz;
  40. }