656 lines
9.8 KiB
C++
656 lines
9.8 KiB
C++
// Copyright (C) 2024 Jérôme "SirLynix" Leclercq (lynix680@gmail.com)
|
|
// This file is part of the "Nazara Engine - Core module"
|
|
// For conditions of distribution and use, see copyright notice in Export.hpp
|
|
|
|
#pragma once
|
|
|
|
#ifndef NAZARA_CORE_ENUMS_HPP
|
|
#define NAZARA_CORE_ENUMS_HPP
|
|
|
|
#include <NazaraUtils/Flags.hpp>
|
|
|
|
namespace Nz
|
|
{
|
|
enum class AnimationType
|
|
{
|
|
Skeletal,
|
|
Static,
|
|
|
|
Max = Static
|
|
};
|
|
|
|
enum class BlendEquation
|
|
{
|
|
Add,
|
|
Max,
|
|
Min,
|
|
ReverseSubtract,
|
|
Subtract,
|
|
};
|
|
|
|
enum class BlendFunc
|
|
{
|
|
ConstantColor,
|
|
ConstantAlpha,
|
|
DstAlpha,
|
|
DstColor,
|
|
SrcAlpha,
|
|
SrcColor,
|
|
InvConstantColor,
|
|
InvConstantAlpha,
|
|
InvDstAlpha,
|
|
InvDstColor,
|
|
InvSrcAlpha,
|
|
InvSrcColor,
|
|
One,
|
|
Zero
|
|
};
|
|
|
|
enum class BufferAccess
|
|
{
|
|
DiscardAndWrite,
|
|
ReadOnly,
|
|
ReadWrite,
|
|
WriteOnly,
|
|
|
|
Max = WriteOnly
|
|
};
|
|
|
|
enum class BufferType
|
|
{
|
|
Index,
|
|
Vertex,
|
|
Storage,
|
|
Uniform,
|
|
Upload,
|
|
|
|
Max = Upload
|
|
};
|
|
|
|
enum class BufferUsage
|
|
{
|
|
DeviceLocal,
|
|
DirectMapping,
|
|
Dynamic,
|
|
Read,
|
|
PersistentMapping,
|
|
Write,
|
|
|
|
Max = DirectMapping
|
|
};
|
|
|
|
template<>
|
|
struct EnumAsFlags<BufferUsage>
|
|
{
|
|
static constexpr BufferUsage max = BufferUsage::Max;
|
|
};
|
|
|
|
using BufferUsageFlags = Flags<BufferUsage>;
|
|
|
|
enum class ComponentType
|
|
{
|
|
Color,
|
|
Double1,
|
|
Double2,
|
|
Double3,
|
|
Double4,
|
|
Float1,
|
|
Float2,
|
|
Float3,
|
|
Float4,
|
|
Int1,
|
|
Int2,
|
|
Int3,
|
|
Int4,
|
|
|
|
Max = Int4
|
|
};
|
|
|
|
constexpr std::size_t ComponentTypeCount = static_cast<std::size_t>(ComponentType::Max) + 1;
|
|
|
|
enum class CoordSys
|
|
{
|
|
Global,
|
|
Local,
|
|
|
|
Max = Local
|
|
};
|
|
|
|
enum class CursorPosition
|
|
{
|
|
AtBegin, // beginning of the file
|
|
AtCurrent, // Position of the cursor
|
|
AtEnd, // End of the file
|
|
|
|
Max = AtEnd
|
|
};
|
|
|
|
enum class CubemapFace
|
|
{
|
|
// This enumeration is intended to replace the "z" argument of Image's methods containing cubemap
|
|
// The order is X, -X, Y, -Y, Z, -Z
|
|
PositiveX = 0,
|
|
PositiveY = 2,
|
|
PositiveZ = 4,
|
|
NegativeX = 1,
|
|
NegativeY = 3,
|
|
NegativeZ = 5,
|
|
|
|
Max = NegativeZ
|
|
};
|
|
|
|
enum class DataStorage
|
|
{
|
|
Hardware,
|
|
Software,
|
|
|
|
Max = Software
|
|
};
|
|
|
|
template<>
|
|
struct EnumAsFlags<DataStorage>
|
|
{
|
|
static constexpr DataStorage max = DataStorage::Max;
|
|
};
|
|
|
|
using DataStoreFlags = Flags<DataStorage>;
|
|
constexpr std::size_t DataStorageCount = static_cast<std::size_t>(DataStorage::Max) + 1;
|
|
|
|
enum class ErrorMode
|
|
{
|
|
Silent,
|
|
ThrowException,
|
|
|
|
Max = ThrowException
|
|
};
|
|
|
|
template<>
|
|
struct EnumAsFlags<ErrorMode>
|
|
{
|
|
static constexpr ErrorMode max = ErrorMode::Max;
|
|
};
|
|
|
|
using ErrorModeFlags = Flags<ErrorMode>;
|
|
|
|
constexpr ErrorModeFlags ErrorMode_Default = {};
|
|
|
|
enum class ErrorType
|
|
{
|
|
AssertFailed,
|
|
Internal,
|
|
Normal,
|
|
Warning,
|
|
|
|
Max = Warning
|
|
};
|
|
|
|
constexpr std::size_t ErrorTypeCount = static_cast<std::size_t>(ErrorType::Max) + 1;
|
|
|
|
enum class FaceFilling
|
|
{
|
|
Fill,
|
|
Line,
|
|
Point,
|
|
|
|
Max = Point
|
|
};
|
|
|
|
enum class FaceCulling
|
|
{
|
|
None,
|
|
|
|
Back,
|
|
Front,
|
|
FrontAndBack,
|
|
|
|
Max = FrontAndBack
|
|
};
|
|
|
|
enum class FrontFace
|
|
{
|
|
Clockwise,
|
|
CounterClockwise,
|
|
|
|
Max = CounterClockwise
|
|
};
|
|
|
|
enum class ImageType
|
|
{
|
|
E1D,
|
|
E1D_Array,
|
|
E2D,
|
|
E2D_Array,
|
|
E3D,
|
|
Cubemap,
|
|
|
|
Max = Cubemap
|
|
};
|
|
|
|
constexpr std::size_t ImageTypeCount = static_cast<std::size_t>(ImageType::Max) + 1;
|
|
|
|
enum class IndexType
|
|
{
|
|
U8,
|
|
U16,
|
|
U32,
|
|
|
|
Max = U32
|
|
};
|
|
|
|
enum class HashType
|
|
{
|
|
CRC32,
|
|
CRC64,
|
|
Fletcher16,
|
|
MD5,
|
|
SHA1,
|
|
SHA224,
|
|
SHA256,
|
|
SHA384,
|
|
SHA512,
|
|
Whirlpool,
|
|
|
|
Max = Whirlpool
|
|
};
|
|
|
|
constexpr std::size_t HashTypeCount = static_cast<std::size_t>(HashType::Max) + 1;
|
|
|
|
enum class OpenMode
|
|
{
|
|
NotOpen, //< File is not open
|
|
|
|
Append, //< Disables writing to existing content, all write operations are performed at the end
|
|
Defer, //< Defers file opening until a read/write operation is performed on it
|
|
Lock, //< Prevents file modification by other handles while it's open
|
|
MustExist, //< Fails if the file doesn't exists, even if opened in write mode
|
|
Read, //< Allows read operations
|
|
Text, //< Opens in text mode (converts system line endings from/to \n)
|
|
Truncate, //< Creates the file if it doesn't exist and empties it otherwise
|
|
Unbuffered, //< Each read/write operations are performed directly using system calls (very slow)
|
|
Write, //< Allows write operations, creates the file if it doesn't exist
|
|
|
|
Max = Write
|
|
};
|
|
|
|
template<>
|
|
struct EnumAsFlags<OpenMode>
|
|
{
|
|
static constexpr OpenMode max = OpenMode::Max;
|
|
};
|
|
|
|
using OpenModeFlags = Flags<OpenMode>;
|
|
|
|
constexpr OpenModeFlags OpenMode_ReadWrite = OpenMode::Read | OpenMode::Write;
|
|
|
|
enum class ParameterType
|
|
{
|
|
Boolean,
|
|
Color,
|
|
Double,
|
|
Integer,
|
|
None,
|
|
Pointer,
|
|
String,
|
|
Userdata,
|
|
|
|
Max = Userdata
|
|
};
|
|
|
|
enum class PixelFormatContent
|
|
{
|
|
Undefined = -1,
|
|
|
|
ColorRGBA,
|
|
Depth,
|
|
DepthStencil,
|
|
Stencil,
|
|
|
|
Max = Stencil
|
|
};
|
|
|
|
enum class PixelFormat
|
|
{
|
|
Undefined = -1,
|
|
|
|
A8, // 1*uint8
|
|
BGR8, // 3*uint8
|
|
BGR8_SRGB, // 3*uint8
|
|
BGRA8, // 4*uint8
|
|
BGRA8_SRGB, // 4*uint8
|
|
DXT1,
|
|
DXT3,
|
|
DXT5,
|
|
L8, // 1*uint8
|
|
LA8, // 2*uint8
|
|
R8, // 1*uint8
|
|
R8I, // 1*int8
|
|
R8UI, // 1*uint8
|
|
R16, // 1*uint16
|
|
R16F, // 1*half
|
|
R16I, // 1*int16
|
|
R16UI, // 1*uint16
|
|
R32F, // 1*float
|
|
R32I, // 1*uint16
|
|
R32UI, // 1*uint32
|
|
RG8, // 2*int8
|
|
RG8I, // 2*int8
|
|
RG8UI, // 2*uint8
|
|
RG16, // 2*uint16
|
|
RG16F, // 2*half
|
|
RG16I, // 2*int16
|
|
RG16UI, // 2*uint16
|
|
RG32F, // 2*float
|
|
RG32I, // 2*uint16
|
|
RG32UI, // 2*uint32
|
|
RGB5A1, // 3*uint5 + alpha bit
|
|
RGB8, // 3*uint8
|
|
RGB8_SRGB, // 3*uint8
|
|
RGB16F, // 3*half
|
|
RGB16I, // 4*int16
|
|
RGB16UI, // 4*uint16
|
|
RGB32F, // 3*float
|
|
RGB32I, // 4*int32
|
|
RGB32UI, // 4*uint32
|
|
RGBA4, // 4*uint4
|
|
RGBA8, // 4*uint8
|
|
RGBA8_SRGB, // 4*uint8
|
|
RGBA16F, // 4*half
|
|
RGBA16I, // 4*int16
|
|
RGBA16UI, // 4*uint16
|
|
RGBA32F, // 4*float
|
|
RGBA32I, // 4*int32
|
|
RGBA32UI, // 4*uint32
|
|
Depth16,
|
|
Depth16Stencil8,
|
|
Depth24,
|
|
Depth24Stencil8,
|
|
Depth32F,
|
|
Depth32FStencil8,
|
|
Stencil1,
|
|
Stencil4,
|
|
Stencil8,
|
|
Stencil16,
|
|
|
|
Max = Stencil16
|
|
};
|
|
|
|
constexpr std::size_t PixelFormatCount = static_cast<std::size_t>(PixelFormat::Max) + 1;
|
|
|
|
enum class PixelFormatSubType
|
|
{
|
|
Compressed, // Opaque
|
|
Double, // F64
|
|
Float, // F32
|
|
Half, // F16
|
|
Int, // Signed integer
|
|
Unsigned, // Unsigned integer
|
|
|
|
Max = Unsigned
|
|
};
|
|
|
|
enum class PixelFlipping
|
|
{
|
|
Horizontally,
|
|
Vertically,
|
|
|
|
Max = Vertically
|
|
};
|
|
|
|
constexpr std::size_t PixelFlippingCount = static_cast<std::size_t>(PixelFlipping::Max) + 1;
|
|
|
|
enum class PrimitiveMode
|
|
{
|
|
LineList,
|
|
LineStrip,
|
|
PointList,
|
|
TriangleList,
|
|
TriangleStrip,
|
|
TriangleFan,
|
|
|
|
Max = TriangleFan
|
|
};
|
|
|
|
enum class PrimitiveType
|
|
{
|
|
Box,
|
|
Cone,
|
|
Plane,
|
|
Sphere,
|
|
|
|
Max = Sphere
|
|
};
|
|
|
|
constexpr std::size_t PrimitiveTypeCount = static_cast<std::size_t>(PrimitiveType::Max) + 1;
|
|
|
|
enum class ProcessorCap
|
|
{
|
|
x64,
|
|
AES,
|
|
AVX,
|
|
FMA3,
|
|
FMA4,
|
|
MMX,
|
|
Popcnt,
|
|
RDRAND,
|
|
XOP,
|
|
SSE,
|
|
SSE2,
|
|
SSE3,
|
|
SSSE3,
|
|
SSE41,
|
|
SSE42,
|
|
SSE4a,
|
|
|
|
Max = SSE4a
|
|
};
|
|
|
|
constexpr std::size_t ProcessorCapCount = static_cast<std::size_t>(ProcessorCap::Max) + 1;
|
|
|
|
enum class ProcessorVendor
|
|
{
|
|
Unknown = -1,
|
|
|
|
ACRN,
|
|
AMD,
|
|
Ao486,
|
|
AppleRosetta2,
|
|
Bhyve,
|
|
Centaur,
|
|
Cyrix,
|
|
Elbrus,
|
|
Hygon,
|
|
HyperV,
|
|
Intel,
|
|
KVM,
|
|
MicrosoftXTA,
|
|
NSC,
|
|
NexGen,
|
|
Parallels,
|
|
QEMU,
|
|
QNX,
|
|
Rise,
|
|
SIS,
|
|
Transmeta,
|
|
UMC,
|
|
VIA,
|
|
VMware,
|
|
Vortex,
|
|
XenHVM,
|
|
Zhaoxin,
|
|
|
|
Max = Zhaoxin
|
|
};
|
|
|
|
constexpr std::size_t ProcessorVendorCount = static_cast<std::size_t>(ProcessorVendor::Max) + 1;
|
|
|
|
enum class RendererComparison
|
|
{
|
|
Always,
|
|
Equal,
|
|
Greater,
|
|
GreaterOrEqual,
|
|
Less,
|
|
LessOrEqual,
|
|
Never,
|
|
NotEqual,
|
|
|
|
Max = NotEqual
|
|
};
|
|
|
|
enum class ResourceLoadingError
|
|
{
|
|
DecodingError,
|
|
FailedToOpenFile,
|
|
Internal,
|
|
Unsupported,
|
|
Unrecognized
|
|
};
|
|
|
|
enum class SamplerFilter
|
|
{
|
|
Linear,
|
|
Nearest,
|
|
|
|
Max = Nearest
|
|
};
|
|
|
|
enum class SamplerMipmapMode
|
|
{
|
|
Linear,
|
|
Nearest,
|
|
|
|
Max = Nearest
|
|
};
|
|
|
|
enum class SamplerWrap
|
|
{
|
|
Clamp,
|
|
MirroredRepeat,
|
|
Repeat,
|
|
|
|
Max = Repeat
|
|
};
|
|
|
|
enum class SphereType
|
|
{
|
|
Cubic,
|
|
Ico,
|
|
UV,
|
|
|
|
Max = UV
|
|
};
|
|
|
|
enum class StencilOperation
|
|
{
|
|
Decrement,
|
|
DecrementNoClamp,
|
|
Increment,
|
|
IncrementNoClamp,
|
|
Invert,
|
|
Keep,
|
|
Replace,
|
|
Zero,
|
|
|
|
Max = Zero
|
|
};
|
|
|
|
enum class StreamOption
|
|
{
|
|
None,
|
|
|
|
MemoryMapped,
|
|
Sequential,
|
|
Text,
|
|
Unbuffered,
|
|
|
|
Max = Unbuffered
|
|
};
|
|
|
|
template<>
|
|
struct EnumAsFlags<StreamOption>
|
|
{
|
|
static constexpr StreamOption max = StreamOption::Max;
|
|
};
|
|
|
|
using StreamOptionFlags = Flags<StreamOption>;
|
|
|
|
enum class TextAlign
|
|
{
|
|
Left,
|
|
Middle,
|
|
Right,
|
|
|
|
Max = Right
|
|
};
|
|
|
|
enum class TextStyle
|
|
{
|
|
Bold,
|
|
Italic,
|
|
StrikeThrough,
|
|
Underlined,
|
|
|
|
Max = Underlined
|
|
};
|
|
|
|
template<>
|
|
struct EnumAsFlags<TextStyle>
|
|
{
|
|
static constexpr TextStyle max = TextStyle::Max;
|
|
};
|
|
|
|
using TextStyleFlags = Flags<TextStyle>;
|
|
|
|
constexpr TextStyleFlags TextStyle_Regular = TextStyleFlags{};
|
|
|
|
enum class VertexComponent
|
|
{
|
|
Unused = -1,
|
|
|
|
Color,
|
|
JointIndices,
|
|
JointWeights,
|
|
Normal,
|
|
Position,
|
|
SizeSinCos,
|
|
Tangent,
|
|
TexCoord,
|
|
Userdata,
|
|
|
|
Max = Userdata
|
|
};
|
|
|
|
enum class VertexInputRate
|
|
{
|
|
Instance,
|
|
Vertex
|
|
};
|
|
|
|
enum class VertexLayout
|
|
{
|
|
// Predefined declarations for rendering
|
|
UV_SizeSinCos,
|
|
XY,
|
|
XY_Color,
|
|
XY_UV,
|
|
XYZ,
|
|
XYZ_Color,
|
|
XYZ_Color_UV,
|
|
XYZ_Normal,
|
|
XYZ_Normal_UV,
|
|
XYZ_Normal_UV_Tangent,
|
|
XYZ_Normal_UV_Tangent_Skinning,
|
|
UV_SizeSinCos_Color,
|
|
XYZ_UV,
|
|
|
|
// Predefined declarations for instancing
|
|
Matrix4,
|
|
|
|
Max = Matrix4
|
|
};
|
|
|
|
constexpr std::size_t VertexLayoutCount = static_cast<std::size_t>(VertexLayout::Max) + 1;
|
|
}
|
|
|
|
#endif // NAZARA_CORE_ENUMS_HPP
|