galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
Colour.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_GRAPHICS_COLOUR_HPP_
9#define GALAXY_GRAPHICS_COLOUR_HPP_
10
11#include <array>
12
13#include <glm/vec4.hpp>
14
15#undef OPAQUE
16#undef TRANSPARENT
17
18namespace galaxy
19{
23 class Colour final
24 {
25 public:
29 inline static const constexpr std::uint8_t OPAQUE = 255;
30
34 inline static const constexpr std::uint8_t TRANSPARENT = 0;
35
39 inline static const constexpr std::uint8_t OFFSET = 0xFF;
40
44 inline static const constexpr std::uint8_t LOWER = 0;
45
49 inline static const constexpr std::uint8_t UPPER = 255;
50
51 public:
55 Colour() noexcept;
56
65 Colour(const std::uint8_t r, const std::uint8_t g, const std::uint8_t b, const std::uint8_t a = OPAQUE) noexcept;
66
70 Colour(Colour&&) noexcept;
71
75 Colour(const Colour&) noexcept;
76
80 Colour& operator=(Colour&&) noexcept;
81
85 Colour& operator=(const Colour& w) noexcept;
86
90 ~Colour() noexcept;
91
97 void r(const std::uint8_t r) noexcept;
98
104 void g(const std::uint8_t g) noexcept;
105
111 void b(const std::uint8_t b) noexcept;
112
118 void a(const std::uint8_t a) noexcept;
119
125 std::uint8_t r() const noexcept;
126
132 std::uint8_t g() const noexcept;
133
139 std::uint8_t b() const noexcept;
140
146 std::uint8_t a() const noexcept;
147
153 void set_from_norm(const glm::vec4& rgba) noexcept;
154
160 [[nodiscard]]
161 glm::vec4 normalize() noexcept;
162
168 [[nodiscard]]
169 std::array<std::uint8_t, 4> array() noexcept;
170
174 auto operator<=>(const Colour&) const = default;
175
179 bool operator==(const Colour&) const = default;
180
184 bool operator!=(const Colour&) const = default;
185
189 bool operator<(const Colour&) const = default;
190
194 bool operator>(const Colour&) const = default;
195
199 bool operator<=(const Colour&) const = default;
200
204 bool operator>=(const Colour&) const = default;
205
206 private:
210 std::uint8_t m_red;
211
215 std::uint8_t m_green;
216
220 std::uint8_t m_blue;
221
225 std::uint8_t m_alpha;
226 };
227} // namespace galaxy
228
229#endif
Represents an RGBA colour.
Definition Colour.hpp:24
std::array< std::uint8_t, 4 > array() noexcept
Get as array.
Definition Colour.cpp:138
std::uint8_t m_blue
Blue channel.
Definition Colour.hpp:220
std::uint8_t m_alpha
Alpha channel.
Definition Colour.hpp:225
std::uint8_t a() const noexcept
Get alpha.
Definition Colour.cpp:113
static const constexpr std::uint8_t TRANSPARENT
Transparent colour.
Definition Colour.hpp:34
static const constexpr std::uint8_t UPPER
Colour upper bounds.
Definition Colour.hpp:49
std::uint8_t m_red
Red channel.
Definition Colour.hpp:210
glm::vec4 normalize() noexcept
Get normalized rgba vec4.
Definition Colour.cpp:126
static const constexpr std::uint8_t OPAQUE
Opaque colour.
Definition Colour.hpp:29
void set_from_norm(const glm::vec4 &rgba) noexcept
Set RGBA from normalizaed values.
Definition Colour.cpp:118
static const constexpr std::uint8_t LOWER
Colour lower bounds.
Definition Colour.hpp:44
Colour() noexcept
Constructor.
Definition Colour.cpp:16
std::uint8_t b() const noexcept
Get blue.
Definition Colour.cpp:108
std::uint8_t r() const noexcept
Get red.
Definition Colour.cpp:98
std::uint8_t g() const noexcept
Get green.
Definition Colour.cpp:103
std::uint8_t m_green
Green channel.
Definition Colour.hpp:215
static const constexpr std::uint8_t OFFSET
Colour offsets for normalization.
Definition Colour.hpp:39
Animated.cpp galaxy.
Definition Animated.cpp:16
STL namespace.