color.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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. * 2012-01-24 onelife add mono color support
  14. */
  15. #ifndef __RTGUI_COLOR_H__
  16. #define __RTGUI_COLOR_H__
  17. #include <rtgui/rtgui.h>
  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 mono */
  43. rt_inline rt_uint8_t rtgui_color_to_mono(rtgui_color_t c)
  44. {
  45. rt_uint8_t pixel;
  46. pixel = (RTGUI_RGB_R(c) | RTGUI_RGB_G(c) | RTGUI_RGB_B(c)) ? 0x01 : 0x00;
  47. return pixel;
  48. }
  49. rt_inline rtgui_color_t rtgui_color_from_mono(rt_uint8_t pixel)
  50. {
  51. rtgui_color_t color;
  52. if (pixel)
  53. {
  54. color = white;
  55. }
  56. else
  57. {
  58. color = black;
  59. }
  60. return color;
  61. }
  62. /* convert rtgui color to BBBBBGGGGGGRRRRR */
  63. rt_inline rt_uint16_t rtgui_color_to_565(rtgui_color_t c)
  64. {
  65. rt_uint16_t pixel;
  66. pixel = (rt_uint16_t)(((RTGUI_RGB_B(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_R(c) >> 3));
  67. return pixel;
  68. }
  69. rt_inline rtgui_color_t rtgui_color_from_565(rt_uint16_t pixel)
  70. {
  71. rt_uint16_t r, g, b;
  72. rtgui_color_t color;
  73. r = pixel & 0x1f;
  74. g = (pixel >> 5) & 0x3f;
  75. b = (pixel >> 11) & 0x1f;
  76. color = r * 255 / 31 + ((g * 255 / 63) << 8) + ((b * 255 / 31) << 16);
  77. return color;
  78. }
  79. /* convert rtgui color to RRRRRGGGGGGBBBBB */
  80. rt_inline rt_uint16_t rtgui_color_to_565p(rtgui_color_t c)
  81. {
  82. rt_uint16_t pixel;
  83. pixel = (rt_uint16_t)(((RTGUI_RGB_R(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_B(c) >> 3));
  84. return pixel;
  85. }
  86. rt_inline rtgui_color_t rtgui_color_from_565p(rt_uint16_t pixel)
  87. {
  88. rt_uint8_t r, g, b;
  89. rtgui_color_t color;
  90. r = (pixel >> 11) & 0x1f;
  91. g = (pixel >> 5) & 0x3f;
  92. b = pixel & 0x1f;
  93. color = r * 255 / 31 + ((g * 255 / 63) << 8) + ((b * 255 / 31) << 16);
  94. return color;
  95. }
  96. /* convert rtgui color to RGB */
  97. rt_inline rt_uint32_t rtgui_color_to_888(rtgui_color_t c)
  98. {
  99. rt_uint32_t pixel;
  100. pixel = RTGUI_RGB_R(c) << 16 | RTGUI_RGB_G(c) << 8 | RTGUI_RGB_B(c);
  101. return pixel;
  102. }
  103. rt_inline rtgui_color_t rtgui_color_from_888(rt_uint32_t pixel)
  104. {
  105. rtgui_color_t color;
  106. color = RTGUI_RGB(((pixel >> 16) & 0xff), ((pixel >> 8) & 0xff), pixel & 0xff);
  107. return color;
  108. }
  109. #endif