opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
anti_aliasing_level.h
Go to the documentation of this file.
1#pragma once
2
3#include <bit>
4#include <compare>
5#include <concepts>
6#include <cstdint>
7#include <iosfwd>
8
9namespace osc
10{
12 public:
13 static constexpr AntiAliasingLevel min()
14 {
15 return AntiAliasingLevel{1};
16 }
17
18 static constexpr AntiAliasingLevel none()
19 {
20 return AntiAliasingLevel{1};
21 }
22
23 constexpr AntiAliasingLevel() = default;
24
25 explicit constexpr AntiAliasingLevel(int value) :
26 value_{value > 1 ? uint32_t{1} << (std::bit_width(static_cast<unsigned>(value))-1) : 1}
27 {}
28
29 template<std::integral T>
30 constexpr T get_as() const
31 {
32 return static_cast<int32_t>(value_);
33 }
34
36 {
37 value_ <<= 1;
38 return *this;
39 }
40
41 friend auto operator<=>(const AntiAliasingLevel&, const AntiAliasingLevel&) = default;
42 private:
43 uint32_t value_ = 1;
44 };
45
46 std::ostream& operator<<(std::ostream&, AntiAliasingLevel);
47}
Definition anti_aliasing_level.h:11
constexpr AntiAliasingLevel()=default
friend auto operator<=>(const AntiAliasingLevel &, const AntiAliasingLevel &)=default
constexpr T get_as() const
Definition anti_aliasing_level.h:30
static constexpr AntiAliasingLevel none()
Definition anti_aliasing_level.h:18
constexpr AntiAliasingLevel(int value)
Definition anti_aliasing_level.h:25
constexpr AntiAliasingLevel & operator++()
Definition anti_aliasing_level.h:35
static constexpr AntiAliasingLevel min()
Definition anti_aliasing_level.h:13
Definition custom_decoration_generator.h:5
std::ostream & operator<<(std::ostream &, const Object &)
constexpr U to(T &&value)
Definition conversion.h:56