/core/color.h

https://github.com/dirkhh/subsurface · C Header · 154 lines · 125 code · 16 blank · 13 comment · 0 complexity · e6550c48dc530d471bec393c701f0906 MD5 · raw file

  1. // SPDX-License-Identifier: GPL-2.0
  2. #ifndef COLOR_H
  3. #define COLOR_H
  4. /* The colors are named by picking the closest match
  5. from http://chir.ag/projects/name-that-color */
  6. #include <QColor>
  7. static inline QColor makeColor(double r, double g, double b, double a = 1.0)
  8. {
  9. #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) // they are just trolling us with these changes
  10. return QColor::fromRgbF((float)r, (float)g, (float)b, (float)a);
  11. #else
  12. return QColor::fromRgbF(r, g, b, a);
  13. #endif
  14. }
  15. // Greens
  16. #define CAMARONE1 makeColor(0.0, 0.4, 0.0)
  17. #define FUNGREEN1 makeColor(0.0, 0.4, 0.2)
  18. #define FUNGREEN1_HIGH_TRANS makeColor(0.0, 0.4, 0.2, 0.25)
  19. #define KILLARNEY1 makeColor(0.2, 0.4, 0.2)
  20. #define APPLE1 makeColor(0.2, 0.6, 0.2)
  21. #define APPLE1_MED_TRANS makeColor(0.2, 0.6, 0.2, 0.5)
  22. #define APPLE1_HIGH_TRANS makeColor(0.2, 0.6, 0.2, 0.25)
  23. #define LIMENADE1 makeColor(0.4, 0.8, 0.0)
  24. #define ATLANTIS1 makeColor(0.4, 0.8, 0.2)
  25. #define ATLANTIS2 makeColor(0.6, 0.8, 0.2)
  26. #define RIOGRANDE1 makeColor(0.8, 0.8, 0.0)
  27. #define EARLSGREEN1 makeColor(0.8, 0.8, 0.2)
  28. #define FORESTGREEN1 makeColor(0.1, 0.5, 0.1)
  29. #define NITROX_GREEN makeColor(0, 0.54, 0.375)
  30. // Reds
  31. #define PERSIANRED1 makeColor(0.8, 0.2, 0.2)
  32. #define TUSCANY1 makeColor(0.8, 0.4, 0.2)
  33. #define PIRATEGOLD1 makeColor(0.8, 0.5, 0.0)
  34. #define PIRATEGOLD1_MED_TRANS makeColor(0.8, 0.5, 0.0, 0.75)
  35. #define HOKEYPOKEY1 makeColor(0.8, 0.6, 0.2)
  36. #define CINNABAR1 makeColor(0.9, 0.3, 0.2)
  37. #define REDORANGE1 makeColor(1.0, 0.2, 0.2)
  38. #define REDORANGE1_HIGH_TRANS makeColor(1.0, 0.2, 0.2, 0.25)
  39. #define REDORANGE1_MED_TRANS makeColor(1.0, 0.2, 0.2, 0.5)
  40. #define RED1_MED_TRANS makeColor(1.0, 0.0, 0.0, 0.5)
  41. #define RED1 makeColor(1.0, 0.0, 0.0)
  42. // Monochromes
  43. #define BLACK1 makeColor(0.0, 0.0, 0.0)
  44. #define BLACK1_LOW_TRANS makeColor(0.0, 0.0, 0.0, 0.75)
  45. #define BLACK1_HIGH_TRANS makeColor(0.0, 0.0, 0.0, 0.25)
  46. #define TUNDORA1_MED_TRANS makeColor(0.3, 0.3, 0.3, 0.5)
  47. #define MED_GRAY_HIGH_TRANS makeColor(0.5, 0.5, 0.5, 0.25)
  48. #define MERCURY1_MED_TRANS makeColor(0.9, 0.9, 0.9, 0.5)
  49. #define CONCRETE1_LOWER_TRANS makeColor(0.95, 0.95, 0.95, 0.9)
  50. #define WHITE1_MED_TRANS makeColor(1.0, 1.0, 1.0, 0.5)
  51. #define WHITE1 makeColor(1.0, 1.0, 1.0)
  52. // Blues
  53. #define GOVERNORBAY2 makeColor(0.2, 0.2, 0.7)
  54. #define GOVERNORBAY1_MED_TRANS makeColor(0.2, 0.2, 0.8, 0.5)
  55. #define ROYALBLUE2 makeColor(0.2, 0.2, 0.9)
  56. #define ROYALBLUE2_LOW_TRANS makeColor(0.2, 0.2, 0.9, 0.75)
  57. #define AIR_BLUE makeColor(0.25, 0.75, 1.0)
  58. #define AIR_BLUE_TRANS makeColor(0.25, 0.75, 1.0, 0.5)
  59. // Yellows / BROWNS
  60. #define SPRINGWOOD1 makeColor(0.95, 0.95, 0.9)
  61. #define SPRINGWOOD1_MED_TRANS makeColor(0.95, 0.95, 0.9, 0.5)
  62. #define BROOM1_LOWER_TRANS makeColor(1.0, 1.0, 0.1, 0.9)
  63. #define PEANUT makeColor(0.5, 0.2, 0.1)
  64. #define PEANUT_MED_TRANS makeColor(0.5, 0.2, 0.1, 0.5)
  65. #define NITROX_YELLOW makeColor(0.98, 0.89, 0.07)
  66. // Magentas
  67. #define MEDIUMREDVIOLET1_HIGHER_TRANS makeColor(0.7, 0.2, 0.7, 0.1)
  68. #define MAGENTA makeColor(1.0, 0.0, 1.0)
  69. #define SAC_COLORS_START_IDX SAC_1
  70. #define SAC_COLORS 9
  71. #define VELOCITY_COLORS_START_IDX VELO_STABLE
  72. #define VELOCITY_COLORS 5
  73. typedef enum {
  74. /* SAC colors. Order is important, the SAC_COLORS_START_IDX define above. */
  75. SAC_1,
  76. SAC_2,
  77. SAC_3,
  78. SAC_4,
  79. SAC_5,
  80. SAC_6,
  81. SAC_7,
  82. SAC_8,
  83. SAC_9,
  84. /* Velocity colors. Order is still important, ref VELOCITY_COLORS_START_IDX. */
  85. VELO_STABLE,
  86. VELO_SLOW,
  87. VELO_MODERATE,
  88. VELO_FAST,
  89. VELO_CRAZY,
  90. /* gas colors */
  91. PO2,
  92. PO2_ALERT,
  93. PN2,
  94. PN2_ALERT,
  95. PHE,
  96. PHE_ALERT,
  97. O2SETPOINT,
  98. CCRSENSOR1,
  99. CCRSENSOR2,
  100. CCRSENSOR3,
  101. SCR_OCPO2,
  102. PP_LINES,
  103. /* Other colors */
  104. TEXT_BACKGROUND,
  105. ALERT_BG,
  106. ALERT_FG,
  107. EVENTS,
  108. SAMPLE_DEEP,
  109. SAMPLE_SHALLOW,
  110. SMOOTHED,
  111. MINUTE,
  112. TIME_GRID,
  113. TIME_TEXT,
  114. DEPTH_GRID,
  115. MEAN_DEPTH,
  116. HR_TEXT,
  117. HR_PLOT,
  118. HR_AXIS,
  119. DEPTH_TOP,
  120. DEPTH_BOTTOM,
  121. TEMP_TEXT,
  122. TEMP_PLOT,
  123. SAC_DEFAULT,
  124. BOUNDING_BOX,
  125. PRESSURE_TEXT,
  126. BACKGROUND,
  127. BACKGROUND_TRANS,
  128. CEILING_SHALLOW,
  129. CEILING_DEEP,
  130. CALC_CEILING_SHALLOW,
  131. CALC_CEILING_DEEP,
  132. TISSUE_PERCENTAGE,
  133. DURATION_LINE
  134. } color_index_t;
  135. QColor getColor(const color_index_t i, bool isGrayscale = false);
  136. QColor getSacColor(int sac, int diveSac);
  137. QColor getPressureColor(double density);
  138. #endif // COLOR_H