Lluvia
ImageTiling.h
Go to the documentation of this file.
1 
8 #ifndef LLUVIA_CORE_IMAGE_IMAGE_TILING_H_
9 #define LLUVIA_CORE_IMAGE_IMAGE_TILING_H_
10 
13 
14 namespace ll {
15 
16 enum class ImageTiling : ll::enum_t {
17  Optimal = static_cast<ll::enum_t>(vk::ImageTiling::eOptimal),
18  Linear = static_cast<ll::enum_t>(vk::ImageTiling::eLinear),
19 };
20 
21 namespace impl {
22 
23  constexpr ll::ImageTiling fromVkImageTiling(const vk::ImageTiling& flags) noexcept
24  {
25  return ll::ImageTiling {static_cast<ll::enum_t>(flags)};
26  }
27 
28  constexpr vk::ImageTiling toVkImageTiling(const ll::ImageTiling& flags) noexcept
29  {
30  // return vk::ImageTiling{static_cast<VkFlags>(flags)};
31  return static_cast<vk::ImageTiling>(flags);
32  }
33 
34  constexpr const std::array<std::tuple<const char*, ll::ImageTiling>, 2> ImageTilingStrings {{
35  std::make_tuple("Optimal", ll::ImageTiling::Optimal),
36  std::make_tuple("Linear", ll::ImageTiling::Linear),
37  }};
38 
39 } // namespace impl
40 
50 template <typename T = std::string>
51 inline T ImageTilingToString(ll::ImageTiling&& layout) noexcept
52 {
53  return impl::enumToString<ll::ImageTiling, ll::impl::ImageTilingStrings.size(), ll::impl::ImageTilingStrings>(std::forward<ll::ImageTiling>(layout));
54 }
55 
71 template <typename T>
72 inline ll::ImageTiling stringToImageTiling(T&& stringValue)
73 {
74  return impl::stringToEnum<ll::ImageTiling, T, ll::impl::ImageTilingStrings.size(), ll::impl::ImageTilingStrings>(std::forward<T>(stringValue));
75 }
76 
77 } // namespace ll
78 
79 #endif // LLUVIA_CORE_IMAGE_IMAGE_TILING_H_
Enums.
constexpr const std::array< std::tuple< const char *, ll::ImageTiling >, 2 > ImageTilingStrings
Definition: ImageTiling.h:34
E stringToEnum(T &&stringValue)
Definition: enums.h:172
constexpr vk::ImageTiling toVkImageTiling(const ll::ImageTiling &flags) noexcept
Definition: ImageTiling.h:28
std::string enumToString(E &&value) noexcept
Definition: enums.h:146
constexpr ll::ImageTiling fromVkImageTiling(const vk::ImageTiling &flags) noexcept
Definition: ImageTiling.h:23
Definition: Buffer.h:28
T ImageTilingToString(ll::ImageTiling &&layout) noexcept
Converts from ll::ImageTiling enum value to string.
Definition: ImageTiling.h:51
ll::ImageTiling stringToImageTiling(T &&stringValue)
Converts from a string-like object to ll::ImageTiling.
Definition: ImageTiling.h:72
ImageTiling
Definition: ImageTiling.h:16
uint32_t enum_t
Definition: enums.h:23