19 template<std::
unsigned_
integral T>
26 template<std::
integral U>
28 value_{static_cast<
T>(integral_value)}
35 template<std::
floating_po
int U>
42 explicit constexpr operator float()
const
47 explicit constexpr operator T()
const
59 return (1.0f/
static_cast<float>(std::numeric_limits<T>::max())) *
static_cast<float>(value_);
63 template<std::
floating_po
int U>
64 static constexpr T to_normalized_uint(
U v)
66 const U saturated = v >
U{0.0} ? (v <
U{1.0} ? v :
U{1.0}) :
U{0.0};
67 return static_cast<T>(
static_cast<U>(std::numeric_limits<T>::max()) * saturated);
75 template<std::
unsigned_
integral T>
77 static constexpr bool value =
true;
80 template<std::
unsigned_
integral T>
88 template<std::
unsigned_
integral T, std::
floating_po
int TInterpolant>
99 template<std::
unsigned_
integral T>
106template<std::
unsigned_
integral T>
107struct std::hash<
osc::Unorm<T>> final {
110 return std::hash<T>{}(unorm.
raw_value());
friend auto operator<=>(const Unorm &, const Unorm &)=default
constexpr float normalized_value() const
Definition unorm.h:57
T value_type
Definition unorm.h:22
constexpr Unorm(U normalized_value)
Definition unorm.h:36
constexpr Unorm(T raw_value)
Definition unorm.h:31
constexpr Unorm(U integral_value)
Definition unorm.h:27
constexpr T raw_value() const
Definition unorm.h:52
constexpr Unorm()=default
Definition custom_decoration_generator.h:5
std::ostream & operator<<(std::ostream &, const Object &)
constexpr auto lerp(const Rgba< T > &x, const Rgba< T > &y, TInterpolant t)
Definition rgba.h:230
constexpr Rgba< T > saturate(const Rgba< T > &x)
Definition rgba.h:237
static constexpr bool value
Definition scalar.h:12
size_t operator()(const osc::Unorm< T > &unorm) const
Definition unorm.h:108