41 constexpr color(
color const &)
noexcept =
default;
43 constexpr color &operator=(
color const &)
noexcept =
default;
44 constexpr color &operator=(
color &&)
noexcept =
default;
50 [[nodiscard]]
constexpr explicit operator f32x4()
const noexcept
55 [[nodiscard]]
constexpr color() noexcept : _v(0.0, 0.0, 0.0, 1.0) {}
56 [[nodiscard]]
constexpr color(
float r,
float g,
float b,
float a = 1.0) noexcept : _v(r, g, b, a) {}
58 [[nodiscard]]
static constexpr color transparent()
noexcept
60 return {0.0f, 0.0f, 0.0f, 0.0f};
63 [[nodiscard]]
constexpr float &r()
noexcept
68 [[nodiscard]]
constexpr float &g()
noexcept
73 [[nodiscard]]
constexpr float &b()
noexcept
78 [[nodiscard]]
constexpr float &a()
noexcept
83 [[nodiscard]]
constexpr float const &r()
const noexcept
88 [[nodiscard]]
constexpr float const &g()
const noexcept
93 [[nodiscard]]
constexpr float const &b()
const noexcept
98 [[nodiscard]]
constexpr float const &a()
const noexcept
103 [[nodiscard]]
constexpr bool is_valid()
const noexcept
105 return _v.w() >= 0.0 && _v.w() <= 1.0;
108 [[nodiscard]]
constexpr friend bool operator==(
color const &lhs,
color const &rhs)
noexcept
110 return lhs._v == rhs._v;
113 [[nodiscard]]
constexpr friend color operator*(
color const &lhs,
color const &rhs)
noexcept
115 return color{lhs._v * rhs._v};
118 [[nodiscard]]
constexpr friend color composit(
color const &lhs,
color const &rhs)
noexcept
120 return color{composit(lhs._v, rhs._v)};