Color.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "Color.h"
  2. #include <AK/Assertions.h>
  3. Color::Color(NamedColor named)
  4. {
  5. struct {
  6. u8 r;
  7. u8 g;
  8. u8 b;
  9. } rgb;
  10. switch (named) {
  11. case Black:
  12. rgb = { 0, 0, 0 };
  13. break;
  14. case White:
  15. rgb = { 255, 255, 255 };
  16. break;
  17. case Red:
  18. rgb = { 255, 0, 0 };
  19. break;
  20. case Green:
  21. rgb = { 0, 255, 0 };
  22. break;
  23. case Cyan:
  24. rgb = { 0, 255, 255 };
  25. break;
  26. case Blue:
  27. rgb = { 0, 0, 255 };
  28. break;
  29. case Yellow:
  30. rgb = { 255, 255, 0 };
  31. break;
  32. case Magenta:
  33. rgb = { 255, 0, 255 };
  34. break;
  35. case DarkGray:
  36. rgb = { 64, 64, 64 };
  37. break;
  38. case MidGray:
  39. rgb = { 127, 127, 127 };
  40. break;
  41. case LightGray:
  42. rgb = { 192, 192, 192 };
  43. break;
  44. case MidGreen:
  45. rgb = { 0, 192, 0 };
  46. break;
  47. case MidBlue:
  48. rgb = { 0, 0, 192 };
  49. break;
  50. case MidRed:
  51. rgb = { 192, 0, 0 };
  52. break;
  53. case MidMagenta:
  54. rgb = { 192, 0, 192 };
  55. break;
  56. case DarkGreen:
  57. rgb = { 0, 128, 0 };
  58. break;
  59. case DarkBlue:
  60. rgb = { 0, 0, 128 };
  61. break;
  62. case DarkRed:
  63. rgb = { 128, 0, 0 };
  64. break;
  65. case WarmGray:
  66. rgb = { 212, 208, 200 };
  67. break;
  68. default:
  69. ASSERT_NOT_REACHED();
  70. break;
  71. }
  72. m_value = 0xff000000 | (rgb.r << 16) | (rgb.g << 8) | rgb.b;
  73. }
  74. String Color::to_string() const
  75. {
  76. return String::format("#%b%b%b%b", red(), green(), blue(), alpha());
  77. }