FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
color.hpp
Aller à la documentation de ce fichier.
1// Copyright 2020 Arthur Sonzogni. Tous droits réservés.
2// L'utilisation de ce code source est régie par la licence MIT qui peut être trouvée dans
3// le fichier LICENSE.
4#ifndef FTXUI_SCREEN_COLOR_HPP
5#define FTXUI_SCREEN_COLOR_HPP
6
7#include <cstdint> // for uint8_t
8#include <string> // for string
9
10#ifdef RGB
11// Solution de contournement pour wingdi.h (via Windows.h) définissant des macros qui posent problème.
12// https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-rgb
13#undef RGB
14#endif
15
16namespace ftxui {
17
18/// @brief Color est une classe qui représente une couleur dans l'interface utilisateur du terminal.
19///
20/// @ingroup screen
21class Color {
22 public:
23 enum Palette1 : uint8_t;
24 enum Palette16 : uint8_t;
25 enum Palette256 : uint8_t;
26
27 // NOLINTBEGIN
28 Color(); // Transparent.
29 Color(Palette1 index); // Transparent.
30 Color(Palette16 index); // Conversion implicite de l'index à la couleur.
31 Color(Palette256 index); // Conversion implicite de l'index à la couleur.
32 // NOLINTEND
33 Color(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha = 255);
34 static Color RGB(uint8_t red, uint8_t green, uint8_t blue);
35 static Color HSV(uint8_t hue, uint8_t saturation, uint8_t value);
36 static Color RGBA(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha);
37 static Color HSVA(uint8_t hue,
38 uint8_t saturation,
39 uint8_t value,
40 uint8_t alpha);
41 static Color Interpolate(float t, const Color& a, const Color& b);
42 static Color Blend(const Color& lhs, const Color& rhs);
43
44 //---------------------------
45 // Liste des couleurs:
46 //---------------------------
47 // clang-format off
48 enum Palette1 : uint8_t{
49 Default, // Transparent
50 };
51
52 enum Palette16 : uint8_t {
53 Black = 0,
54 Red = 1,
55 Green = 2,
56 Yellow = 3,
57 Blue = 4,
59 Cyan = 6,
68 White = 15,
69 };
70
71 enum Palette256 : uint8_t {
75 Blue1 = 21,
76 Blue3 = 19,
88 Cornsilk1 = 230,
89 Cyan1 = 51,
90 Cyan2 = 50,
91 Cyan3 = 43,
96 DarkKhaki = 143,
143 Gold1 = 220,
144 Gold3 = 142,
145 Gold3Bis = 178,
146 Green1 = 46,
147 Green3 = 34,
149 Green4 = 28,
151 Grey0 = 16,
152 Grey100 = 231,
153 Grey11 = 234,
154 Grey15 = 235,
155 Grey19 = 236,
156 Grey23 = 237,
157 Grey27 = 238,
158 Grey3 = 232,
159 Grey30 = 239,
160 Grey35 = 240,
161 Grey37 = 59,
162 Grey39 = 241,
163 Grey42 = 242,
164 Grey46 = 243,
165 Grey50 = 244,
166 Grey53 = 102,
167 Grey54 = 245,
168 Grey58 = 246,
169 Grey62 = 247,
170 Grey63 = 139,
171 Grey66 = 248,
172 Grey69 = 145,
173 Grey7 = 233,
174 Grey70 = 249,
175 Grey74 = 250,
176 Grey78 = 251,
177 Grey82 = 252,
178 Grey84 = 188,
179 Grey85 = 253,
180 Grey89 = 254,
181 Grey93 = 255,
183 HotPink = 205,
184 HotPink2 = 169,
185 HotPink3 = 132,
192 Khaki1 = 228,
193 Khaki3 = 185,
220 Magenta1 = 201,
221 Magenta2 = 165,
223 Magenta3 = 127,
245 Orange1 = 214,
246 Orange3 = 172,
250 Orchid = 170,
251 Orchid1 = 213,
252 Orchid2 = 212,
260 Pink1 = 218,
261 Pink3 = 175,
262 Plum1 = 219,
263 Plum2 = 183,
264 Plum3 = 176,
265 Plum4 = 96,
266 Purple = 129,
271 Red1 = 196,
272 Red3 = 124,
273 Red3Bis = 160,
276 Salmon1 = 209,
282 SkyBlue1 = 117,
283 SkyBlue2 = 111,
298 Tan = 180,
299 Thistle1 = 225,
300 Thistle3 = 182,
303 Violet = 177,
304 Wheat1 = 229,
305 Wheat4 = 101,
306 Yellow1 = 226,
307 Yellow2 = 190,
308 Yellow3 = 148,
310 Yellow4 = 100,
312 };
313 // clang-format on
314
315 // --- Opérateurs ------
316 bool operator==(const Color& rhs) const;
317 bool operator!=(const Color& rhs) const;
318
319 std::string Print(bool is_background_color) const;
320 bool IsOpaque() const { return alpha_ == 255; }
321
322 private:
323 enum class ColorType : uint8_t {
324 Palette1,
325 Palette16,
327 TrueColor,
328 };
329 ColorType type_ = ColorType::Palette1;
330 uint8_t red_ = 0;
331 uint8_t green_ = 0;
332 uint8_t blue_ = 0;
333 uint8_t alpha_ = 0;
334};
335
336inline namespace literals {
337
338/// @brief Crée une couleur à partir d'une représentation RGB hexadécimale combinée,
339/// par exemple 0x808000_rgb
340Color operator""_rgb(unsigned long long int combined);
341
342} // namespace literals
343
344} // namespace ftxui
345
346#endif // FTXUI_SCREEN_COLOR_HPP
Color()
Construit une couleur transparente.
static Color HSV(uint8_t hue, uint8_t saturation, uint8_t value)
Construit une couleur à partir de sa représentation HSV. https://en.wikipedia.org/wiki/HSL_and_HSV.
static Color RGB(uint8_t red, uint8_t green, uint8_t blue)
Construit une couleur à partir de sa représentation RGB. https://en.wikipedia.org/wiki/RGB_color_mode...
static Color RGBA(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha)
Construit une couleur à partir de sa représentation RGBA. https://en.wikipedia.org/wiki/RGB_color_mod...
static Color Blend(const Color &lhs, const Color &rhs)
Mélange deux couleurs en utilisant le canal alpha.
bool operator!=(const Color &rhs) const
bool operator==(const Color &rhs) const
bool IsOpaque() const
Definition color.hpp:320
@ LightGoldenrod2
Definition color.hpp:198
@ MediumOrchid1Bis
Definition color.hpp:228
@ DarkMagentaBis
Definition color.hpp:98
@ Chartreuse3Bis
Definition color.hpp:85
@ LightGoldenrod1
Definition color.hpp:197
@ MediumPurple3Bis
Definition color.hpp:235
@ LightGoldenrod3
Definition color.hpp:201
@ DarkSeaGreen4Bis
Definition color.hpp:118
@ LightSkyBlue3Bis
Definition color.hpp:213
@ DarkOliveGreen1
Definition color.hpp:99
@ Aquamarine1Bis
Definition color.hpp:73
@ DarkOliveGreen1Bis
Definition color.hpp:100
@ MediumPurple2Bis
Definition color.hpp:233
@ Chartreuse2Bis
Definition color.hpp:83
@ DarkSeaGreen1Bis
Definition color.hpp:112
@ MediumTurquoise
Definition color.hpp:238
@ DarkOliveGreen3Ter
Definition color.hpp:104
@ DarkSeaGreen3Bis
Definition color.hpp:116
@ LightSteelBlue1
Definition color.hpp:217
@ DeepSkyBlue3Bis
Definition color.hpp:136
@ MediumVioletRed
Definition color.hpp:239
@ LightGoldenrod2Ter
Definition color.hpp:200
@ DeepSkyBlue4Ter
Definition color.hpp:139
@ DarkOliveGreen2
Definition color.hpp:101
@ CornflowerBlue
Definition color.hpp:87
@ DarkGoldenrod
Definition color.hpp:94
@ LightGoldenrod2Bis
Definition color.hpp:199
@ DarkSeaGreen2Bis
Definition color.hpp:114
@ LightSalmon3Bis
Definition color.hpp:209
@ SpringGreen2Bis
Definition color.hpp:290
@ DeepSkyBlue4Bis
Definition color.hpp:138
@ DarkOliveGreen3Bis
Definition color.hpp:103
@ MediumSpringGreen
Definition color.hpp:237
@ DarkOliveGreen3
Definition color.hpp:102
@ SpringGreen3Bis
Definition color.hpp:292
@ LightSteelBlue3
Definition color.hpp:218
std::string Print(bool is_background_color) const
static Color Interpolate(float t, const Color &a, const Color &b)
static Color HSVA(uint8_t hue, uint8_t saturation, uint8_t value, uint8_t alpha)
Construit une couleur à partir de sa représentation HSV. https://en.wikipedia.org/wiki/HSL_and_HSV.
Color est une classe qui représente une couleur dans l'interface utilisateur du terminal.
Definition color.hpp:21
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10
L'espace de noms FTXUI ftxui::literals::