Move some more classes
This commit is contained in:
75
openVulkanoCpp/Scene/Text/SubpixelLayout.hpp
Normal file
75
openVulkanoCpp/Scene/Text/SubpixelLayout.hpp
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Scene/DataFormat.hpp"
|
||||
#include <magic_enum.hpp>
|
||||
#include <cinttypes>
|
||||
#include <string_view>
|
||||
|
||||
namespace OpenVulkano
|
||||
{
|
||||
class SubpixelLayout
|
||||
{
|
||||
public:
|
||||
enum Layout : uint32_t
|
||||
{
|
||||
RGB,
|
||||
BGR,
|
||||
RGBV,
|
||||
BGRV,
|
||||
// unknown and auto must be last two
|
||||
UNKNOWN,
|
||||
NONE = UNKNOWN,
|
||||
AUTO = UNKNOWN
|
||||
};
|
||||
|
||||
constexpr SubpixelLayout() = default;
|
||||
|
||||
constexpr SubpixelLayout(Layout layout) : m_layout(layout) {}
|
||||
|
||||
[[nodiscard]] DataFormat GetTextureDataFormat() const
|
||||
{
|
||||
if (m_layout >= SubpixelLayout::UNKNOWN)
|
||||
{
|
||||
return DataFormat::R8_UINT;
|
||||
}
|
||||
if (m_layout == SubpixelLayout::BGR || m_layout == SubpixelLayout::BGRV)
|
||||
{
|
||||
return DataFormat::B8G8R8A8_UINT;
|
||||
}
|
||||
return DataFormat::R8G8B8A8_UINT;
|
||||
}
|
||||
|
||||
[[nodiscard]] std::string_view GetName() const { return magic_enum::enum_name(m_layout); }
|
||||
|
||||
[[nodiscard]] constexpr bool operator==(Layout rhs) const
|
||||
{
|
||||
return m_layout == rhs;
|
||||
}
|
||||
|
||||
[[nodiscard]] constexpr bool operator!=(Layout rhs) const
|
||||
{
|
||||
return m_layout != rhs;
|
||||
}
|
||||
|
||||
[[nodiscard]] constexpr operator uint32_t() const
|
||||
{
|
||||
return m_layout;
|
||||
}
|
||||
|
||||
[[nodiscard]] bool IsHorizontalSubpixelLayout() const
|
||||
{
|
||||
return m_layout == SubpixelLayout::RGB || m_layout == SubpixelLayout::BGR;
|
||||
}
|
||||
|
||||
explicit operator bool() const { return m_layout < Layout::UNKNOWN; }
|
||||
|
||||
private:
|
||||
Layout m_layout = Layout::UNKNOWN;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user