@@ -23,87 +23,91 @@ export namespace CppUtils::Terminal::BackgroundColor
2323 White
2424 };
2525
26- #if defined(OS_WINDOWS)
2726 // see https://learn.microsoft.com/en-us/windows/console/char-info-str
28- namespace Attribute
27+ namespace WindowsNative
2928 {
30- [[maybe_unused]] inline constexpr std::uint8_t Black = 0;
31- [[maybe_unused]] inline constexpr std::uint8_t Red = 0x40;
32- [[maybe_unused]] inline constexpr std::uint8_t Green = 0x20;
33- [[maybe_unused]] inline constexpr std::uint8_t Intensity = 0x80;
34- [[maybe_unused]] inline constexpr std::uint8_t Yellow = Red | Green | Intensity;
35- [[maybe_unused]] inline constexpr std::uint8_t Blue = 0x10;
36- [[maybe_unused]] inline constexpr std::uint8_t Magenta = 13;
37- [[maybe_unused]] inline constexpr std::uint8_t Cyan = 11;
38- [[maybe_unused]] inline constexpr std::uint8_t White = 15;
39- [[maybe_unused]] inline constexpr std::uint8_t Default = 0;
40- }
29+ namespace Attribute
30+ {
31+ [[maybe_unused]] inline constexpr std::uint8_t Black = 0;
32+ [[maybe_unused]] inline constexpr std::uint8_t Red = 0x40;
33+ [[maybe_unused]] inline constexpr std::uint8_t Green = 0x20;
34+ [[maybe_unused]] inline constexpr std::uint8_t Intensity = 0x80;
35+ [[maybe_unused]] inline constexpr std::uint8_t Yellow = Red | Green | Intensity;
36+ [[maybe_unused]] inline constexpr std::uint8_t Blue = 0x10;
37+ [[maybe_unused]] inline constexpr std::uint8_t Magenta = 13;
38+ [[maybe_unused]] inline constexpr std::uint8_t Cyan = 11;
39+ [[maybe_unused]] inline constexpr std::uint8_t White = 15;
40+ [[maybe_unused]] inline constexpr std::uint8_t Default = 0;
41+ }
4142
42- [[nodiscard]] inline constexpr std::uint8_t getBackgroundColorCode(BackgroundColorEnum backgroundColor)
43- {
44- switch (backgroundColor)
43+ [[nodiscard]] inline constexpr std::uint8_t getBackgroundColorCode(BackgroundColorEnum backgroundColor)
4544 {
46- case BackgroundColorEnum::Default:
47- return Attribute::Default;
48- case BackgroundColorEnum::Black:
49- return Attribute::Black;
50- case BackgroundColorEnum::Red:
51- return Attribute::Red;
52- case BackgroundColorEnum::Green:
53- return Attribute::Green;
54- case BackgroundColorEnum::Yellow:
55- return Attribute::Yellow;
56- case BackgroundColorEnum::Blue:
57- return Attribute::Blue;
58- case BackgroundColorEnum::Magenta:
59- return Attribute::Magenta;
60- case BackgroundColorEnum::Cyan:
61- return Attribute::Cyan;
62- case BackgroundColorEnum::White:
63- return Attribute::White;
64- default:
65- return Attribute::Default;
45+ switch (backgroundColor)
46+ {
47+ case BackgroundColorEnum::Default:
48+ return Attribute::Default;
49+ case BackgroundColorEnum::Black:
50+ return Attribute::Black;
51+ case BackgroundColorEnum::Red:
52+ return Attribute::Red;
53+ case BackgroundColorEnum::Green:
54+ return Attribute::Green;
55+ case BackgroundColorEnum::Yellow:
56+ return Attribute::Yellow;
57+ case BackgroundColorEnum::Blue:
58+ return Attribute::Blue;
59+ case BackgroundColorEnum::Magenta:
60+ return Attribute::Magenta;
61+ case BackgroundColorEnum::Cyan:
62+ return Attribute::Cyan;
63+ case BackgroundColorEnum::White:
64+ return Attribute::White;
65+ default:
66+ return Attribute::Default;
67+ }
6668 }
6769 }
68- #elif defined(OS_LINUX) or defined(OS_MACOS)
69- namespace ANSIEscapeCode
70- {
71- [[maybe_unused]] inline constexpr auto Black = "\x1B[40m"sv;
72- [[maybe_unused]] inline constexpr auto Red = "\x1B[41m"sv;
73- [[maybe_unused]] inline constexpr auto Green = "\x1B[42m"sv;
74- [[maybe_unused]] inline constexpr auto Yellow = "\x1B[43m"sv;
75- [[maybe_unused]] inline constexpr auto Blue = "\x1B[44m"sv;
76- [[maybe_unused]] inline constexpr auto Magenta = "\x1B[45m"sv;
77- [[maybe_unused]] inline constexpr auto Cyan = "\x1B[46m"sv;
78- [[maybe_unused]] inline constexpr auto White = "\x1B[47m"sv;
79- [[maybe_unused]] inline constexpr auto Default = "\x1B[49m"sv;
80- }
8170
82- [[nodiscard]] inline constexpr std::string_view getBackgroundColorCode(BackgroundColorEnum backgroundColor)
71+ namespace Ansi
8372 {
84- switch (backgroundColor)
73+ namespace EscapeCode
74+ {
75+ [[maybe_unused]] inline constexpr auto Black = "\x1B[40m"sv;
76+ [[maybe_unused]] inline constexpr auto Red = "\x1B[41m"sv;
77+ [[maybe_unused]] inline constexpr auto Green = "\x1B[42m"sv;
78+ [[maybe_unused]] inline constexpr auto Yellow = "\x1B[43m"sv;
79+ [[maybe_unused]] inline constexpr auto Blue = "\x1B[44m"sv;
80+ [[maybe_unused]] inline constexpr auto Magenta = "\x1B[45m"sv;
81+ [[maybe_unused]] inline constexpr auto Cyan = "\x1B[46m"sv;
82+ [[maybe_unused]] inline constexpr auto White = "\x1B[47m"sv;
83+ [[maybe_unused]] inline constexpr auto Default = "\x1B[49m"sv;
84+ }
85+
86+ [[nodiscard]] inline constexpr std::string_view getBackgroundColorCode(BackgroundColorEnum backgroundColor)
8587 {
86- case BackgroundColorEnum::Default:
87- return ANSIEscapeCode::Default;
88- case BackgroundColorEnum::Black:
89- return ANSIEscapeCode::Black;
90- case BackgroundColorEnum::Red:
91- return ANSIEscapeCode::Red;
92- case BackgroundColorEnum::Green:
93- return ANSIEscapeCode::Green;
94- case BackgroundColorEnum::Yellow:
95- return ANSIEscapeCode::Yellow;
96- case BackgroundColorEnum::Blue:
97- return ANSIEscapeCode::Blue;
98- case BackgroundColorEnum::Magenta:
99- return ANSIEscapeCode::Magenta;
100- case BackgroundColorEnum::Cyan:
101- return ANSIEscapeCode::Cyan;
102- case BackgroundColorEnum::White:
103- return ANSIEscapeCode::White;
104- default:
105- return ANSIEscapeCode::Default;
88+ switch (backgroundColor)
89+ {
90+ case BackgroundColorEnum::Default:
91+ return EscapeCode::Default;
92+ case BackgroundColorEnum::Black:
93+ return EscapeCode::Black;
94+ case BackgroundColorEnum::Red:
95+ return EscapeCode::Red;
96+ case BackgroundColorEnum::Green:
97+ return EscapeCode::Green;
98+ case BackgroundColorEnum::Yellow:
99+ return EscapeCode::Yellow;
100+ case BackgroundColorEnum::Blue:
101+ return EscapeCode::Blue;
102+ case BackgroundColorEnum::Magenta:
103+ return EscapeCode::Magenta;
104+ case BackgroundColorEnum::Cyan:
105+ return EscapeCode::Cyan;
106+ case BackgroundColorEnum::White:
107+ return EscapeCode::White;
108+ default:
109+ return EscapeCode::Default;
110+ }
106111 }
107112 }
108- #endif
109113}
0 commit comments