rolmodl
C++ API for the Simple Directmedia Library 2 (SDL2)
PixelFmt.hpp
1 #pragma once
2 
3 #include <cstdint>
4 
5 #include <SDL.h>
6 
7 namespace rolmodl::pixelfmt {
8  enum class Id;
9 
10  // constexpr size_t unique_count = 48;
11  namespace id::unsafe {
12  constexpr Id fromSDLEnum(const uint32_t val) noexcept;
13  constexpr uint32_t toSDLEnum(const Id i) noexcept;
14  }
15 
16  namespace id {
17  constexpr const char* toString(const Id id) noexcept;
18  }
19  constexpr unsigned int bitSizeOf(const Id id) noexcept;
20  constexpr unsigned int byteSizeOf(const Id id) noexcept;
21  constexpr bool isIndexed(const Id id) noexcept;
22  constexpr bool hasAlpha(const Id id) noexcept;
23  constexpr bool isUnique(const Id id) noexcept;
24 
25  enum class Type;
26  namespace type::unsafe {
27  constexpr Type fromSDLEnum(const uint32_t val) noexcept;
28  constexpr uint32_t toSDLEnum(const Type t) noexcept;
29  }
30  constexpr Type typeOf(const Id id) noexcept;
31 
32  enum class Order;
33  namespace order::unsafe {
34  constexpr Order fromSDLEnum(const uint32_t val) noexcept;
35  constexpr uint32_t toSDLEnum(const Order o) noexcept;
36  }
37  constexpr Order orderOf(const Id id) noexcept;
38 
39  enum class Layout;
40  namespace layout::unsafe {
41  constexpr Layout fromSDLEnum(const uint32_t val) noexcept;
42  constexpr uint32_t toSDLEnum(const Layout l) noexcept;
43  }
44  constexpr Layout layoutOf(const Id id) noexcept;
45 
46  class PixelFmtStorage;
47  namespace id::unsafe {
48  constexpr Id fromSDLEnum(const uint32_t val) noexcept;
49  constexpr uint32_t toSDLEnum(const Id i) noexcept;
50  }
51 
52  namespace type::unsafe {
53  constexpr Type fromSDLEnum(const uint32_t val) noexcept;
54  constexpr uint32_t toSDLEnum(const Type t) noexcept;
55  }
56 
57  namespace order::unsafe {
58  constexpr Order fromSDLEnum(const uint32_t val) noexcept;
59  constexpr uint32_t toSDLEnum(const Order o) noexcept;
60  }
61 
62  namespace layout::unsafe {
63  constexpr Layout fromSDLEnum(const uint32_t val) noexcept;
64  constexpr uint32_t toSDLEnum(const Layout l) noexcept;
65  }
66 }
67 
rolmodl::pixelfmt::PixelFmtStorage
PixelFormat storage to avoid allocating a new instance for every use.
Definition: PixelFmt.hpp:218
cstdint
rolmodl::pixelfmt
Pixel format management members.
Definition: PixelFmt.hpp:7