color.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * File : color.h
  3. * This file is part of 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-16 Bernard first version
  13. */
  14. #ifndef __RTGUI_COLOR_H__
  15. #define __RTGUI_COLOR_H__
  16. #include <rtgui/rtgui.h>
  17. typedef unsigned long rtgui_color_t;
  18. #define RTGUI_ARGB(a, r, g, b) \
  19. ((rtgui_color_t)(((rt_uint8_t)(r)|\
  20. (((unsigned)(rt_uint8_t)(g))<<8))|\
  21. (((unsigned long)(rt_uint8_t)(b))<<16)|\
  22. (((unsigned long)(rt_uint8_t)(a))<<24)))
  23. #define RTGUI_RGB(r, g, b) RTGUI_ARGB(255, (r), (g), (b))
  24. #define RTGUI_RGB_R(c) ((c) & 0xff)
  25. #define RTGUI_RGB_G(c) (((c) >> 8) & 0xff)
  26. #define RTGUI_RGB_B(c) (((c) >> 16) & 0xff)
  27. #define RTGUI_RGB_A(c) (((c) >> 24) & 0xff)
  28. extern const rtgui_color_t default_foreground;
  29. extern const rtgui_color_t default_background;
  30. extern const rtgui_color_t red;
  31. extern const rtgui_color_t green;
  32. extern const rtgui_color_t blue;
  33. extern const rtgui_color_t black;
  34. extern const rtgui_color_t white;
  35. extern const rtgui_color_t high_light;
  36. extern const rtgui_color_t dark_grey;
  37. extern const rtgui_color_t light_grey;
  38. /*
  39. * RTGUI default color format
  40. * BBBB BBBB GGGG GGGG RRRR RRRR
  41. */
  42. /* convert rtgui color to BBBBBGGGGGGRRRRR */
  43. rt_inline rt_uint16_t rtgui_color_to_565(rtgui_color_t c)
  44. {
  45. rt_uint16_t pixel;
  46. pixel = (rt_uint16_t)(((RTGUI_RGB_B(c)>> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_R(c) >> 3));
  47. return pixel;
  48. }
  49. rt_inline rtgui_color_t rtgui_color_from_565(rt_uint16_t pixel)
  50. {
  51. rt_uint16_t r, g, b;
  52. rtgui_color_t color;
  53. r = pixel & 0x1f;
  54. g = (pixel >> 5) & 0x3f;
  55. b = (pixel >> 11) & 0x1f;
  56. color = r * 8225 / 1024 + ((g * 4047 / 1024) << 8) + ((b * 8225 / 1024) << 16);
  57. return color;
  58. }
  59. /* convert rtgui color to RRRRRGGGGGGBBBBB */
  60. rt_inline rt_uint16_t rtgui_color_to_565p(rtgui_color_t c)
  61. {
  62. rt_uint16_t pixel;
  63. pixel = (rt_uint16_t)(((RTGUI_RGB_R(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_B(c)>> 3));
  64. return pixel;
  65. }
  66. rt_inline rtgui_color_t rtgui_color_from_565p(rt_uint16_t pixel)
  67. {
  68. rt_uint8_t r, g, b;
  69. rtgui_color_t color;
  70. r = (pixel >> 11) & 0x1f;
  71. g = (pixel >> 5) & 0x3f;
  72. b = pixel & 0x1f;
  73. color = r * 8225 / 1024 + ((g * 4047 / 1024) << 8) + ((b * 8225 / 1024) << 16);
  74. return color;
  75. }
  76. #endif