Add unity build support

This commit is contained in:
Jérôme Leclercq
2022-03-15 08:26:57 +01:00
parent 0a4fd8f56d
commit 6bd9f1a9e4
109 changed files with 964 additions and 680 deletions

View File

@@ -36,7 +36,7 @@
namespace Nz
{
namespace
namespace NAZARA_ANONYMOUS_NAMESPACE
{
class IcoSphereBuilder
{
@@ -667,6 +667,8 @@ namespace Nz
UInt64 ComputeCacheMissCount(IndexIterator indices, UInt32 indexCount)
{
NAZARA_USE_ANONYMOUS_NAMESPACE
VertexCache cache(indices, indexCount);
return cache.GetMissCount();
}
@@ -731,6 +733,8 @@ namespace Nz
void GenerateBox(const Vector3f& lengths, const Vector3ui& subdivision, const Matrix4f& matrix, const Rectf& textureCoords, VertexPointers vertexPointers, IndexIterator indices, Boxf* aabb, unsigned int indexOffset)
{
NAZARA_USE_ANONYMOUS_NAMESPACE
std::size_t xIndexCount, yIndexCount, zIndexCount;
std::size_t xVertexCount, yVertexCount, zVertexCount;
@@ -926,6 +930,8 @@ namespace Nz
void GenerateIcoSphere(float size, unsigned int recursionLevel, const Matrix4f& matrix, const Rectf& textureCoords, VertexPointers vertexPointers, IndexIterator indices, Boxf* aabb, unsigned int indexOffset)
{
NAZARA_USE_ANONYMOUS_NAMESPACE
IcoSphereBuilder builder(matrix);
builder.Generate(size, recursionLevel, textureCoords, vertexPointers, indices, aabb, indexOffset);
}
@@ -1043,6 +1049,8 @@ namespace Nz
void OptimizeIndices(IndexIterator indices, unsigned int indexCount)
{
NAZARA_USE_ANONYMOUS_NAMESPACE
VertexCacheOptimizer optimizer;
if (optimizer.Optimize(indices, indexCount) != VertexCacheOptimizer::Success)
NazaraWarning("Indices optimizer failed");

View File

@@ -26,14 +26,13 @@ namespace Nz
{
class FreeTypeLibrary;
FT_Library s_library = nullptr;
FT_Stroker s_stroker = nullptr;
std::shared_ptr<FreeTypeLibrary> s_libraryOwner;
constexpr float s_scaleFactor = 1 << 6;
constexpr float s_invScaleFactor = 1.f / s_scaleFactor;
FT_Library s_freetypeLibrary = nullptr;
FT_Stroker s_freetypeStroker = nullptr;
std::shared_ptr<FreeTypeLibrary> s_freetypeLibraryOwner;
constexpr float s_freetypeScaleFactor = 1 << 6;
constexpr float s_freetypeInvScaleFactor = 1.f / s_freetypeScaleFactor;
extern "C"
unsigned long FT_StreamRead(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count)
extern "C" unsigned long FT_StreamRead(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count)
{
// http://www.freetype.org/freetype2/docs/reference/ft2-system_interface.html#FT_Stream_IoFunc
Stream& inputStream = *static_cast<Stream*>(stream->descriptor.pointer);
@@ -73,23 +72,23 @@ namespace Nz
public:
FreeTypeLibrary()
{
if (FT_Stroker_New(s_library, &s_stroker) != 0)
if (FT_Stroker_New(s_freetypeLibrary, &s_freetypeStroker) != 0)
{
NazaraWarning("Failed to load FreeType stroker, outline will not be possible");
s_stroker = nullptr; //< Just in case
s_freetypeStroker = nullptr; //< Just in case
}
}
~FreeTypeLibrary()
{
if (s_stroker)
if (s_freetypeStroker)
{
FT_Stroker_Done(s_stroker);
s_stroker = nullptr;
FT_Stroker_Done(s_freetypeStroker);
s_freetypeStroker = nullptr;
}
FT_Done_FreeType(s_library);
s_library = nullptr;
FT_Done_FreeType(s_freetypeLibrary);
s_freetypeLibrary = nullptr;
}
};
@@ -98,7 +97,7 @@ namespace Nz
public:
FreeTypeStream() :
m_face(nullptr),
m_library(s_libraryOwner),
m_library(s_freetypeLibraryOwner),
m_characterSize(0)
{
}
@@ -112,7 +111,7 @@ namespace Nz
bool Check()
{
// Test d'ouverture (http://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Open_Face)
return FT_Open_Face(s_library, &m_args, -1, nullptr) == 0;
return FT_Open_Face(s_freetypeLibrary, &m_args, -1, nullptr) == 0;
}
bool ExtractGlyph(unsigned int characterSize, char32_t character, TextStyleFlags style, float outlineThickness, FontGlyph* dst) override
@@ -165,8 +164,8 @@ namespace Nz
if (outlineThickness > 0.f)
{
FT_Stroker_Set(s_stroker, static_cast<FT_Fixed>(s_scaleFactor * outlineThickness), FT_STROKER_LINECAP_ROUND, FT_STROKER_LINEJOIN_ROUND, 0);
if (FT_Glyph_Stroke(&glyph, s_stroker, 1) != 0)
FT_Stroker_Set(s_freetypeStroker, static_cast<FT_Fixed>(s_freetypeScaleFactor * outlineThickness), FT_STROKER_LINECAP_ROUND, FT_STROKER_LINEJOIN_ROUND, 0);
if (FT_Glyph_Stroke(&glyph, s_freetypeStroker, 1) != 0)
{
NazaraError("Failed to outline glyph");
return false;
@@ -187,7 +186,7 @@ namespace Nz
if (embolden)
{
// http://www.freetype.org/freetype2/docs/reference/ft2-bitmap_handling.html#FT_Bitmap_Embolden
FT_Bitmap_Embolden(s_library, &bitmap, boldStrength, boldStrength);
FT_Bitmap_Embolden(s_freetypeLibrary, &bitmap, boldStrength, boldStrength);
}
int outlineThicknessInt = static_cast<int>(outlineThickness * 2.f + 0.5f); //< round it
@@ -266,7 +265,7 @@ namespace Nz
bool Open()
{
return FT_Open_Face(s_library, &m_args, 0, &m_face) == 0;
return FT_Open_Face(s_freetypeLibrary, &m_args, 0, &m_face) == 0;
}
int QueryKerning(unsigned int characterSize, char32_t first, char32_t second) const override
@@ -302,7 +301,7 @@ namespace Nz
SetCharacterSize(characterSize);
// http://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_FaceRec
return static_cast<float>(FT_MulFix(m_face->underline_position, m_face->size->metrics.y_scale)) * s_invScaleFactor;
return static_cast<float>(FT_MulFix(m_face->underline_position, m_face->size->metrics.y_scale)) * s_freetypeInvScaleFactor;
}
else
return characterSize / 10.f; // Joker ?
@@ -315,7 +314,7 @@ namespace Nz
SetCharacterSize(characterSize);
// http://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_FaceRec
return static_cast<float>(FT_MulFix(m_face->underline_thickness, m_face->size->metrics.y_scale)) * s_invScaleFactor;
return static_cast<float>(FT_MulFix(m_face->underline_thickness, m_face->size->metrics.y_scale)) * s_freetypeInvScaleFactor;
}
else
return characterSize/15.f; // Joker ?
@@ -357,7 +356,7 @@ namespace Nz
bool SupportsOutline(float /*outlineThickness*/) const override
{
return s_stroker != nullptr;
return s_freetypeStroker != nullptr;
}
bool SupportsStyle(TextStyleFlags style) const override
@@ -384,7 +383,7 @@ namespace Nz
mutable unsigned int m_characterSize;
};
bool IsSupported(const std::string_view& extension)
bool IsFreetypeSupported(const std::string_view& extension)
{
///FIXME: Je suppose qu'il en manque quelques unes..
static std::set<std::string_view> supportedExtensions = {
@@ -394,7 +393,7 @@ namespace Nz
return supportedExtensions.find(extension) != supportedExtensions.end();
}
Ternary Check(Stream& stream, const FontParams& parameters)
Ternary CheckFreetype(Stream& stream, const FontParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipNativeFreeTypeLoader", &skip) && skip)
@@ -409,7 +408,7 @@ namespace Nz
return Ternary::False;
}
std::shared_ptr<Font> LoadFile(const std::filesystem::path& filePath, const FontParams& parameters)
std::shared_ptr<Font> LoadFreetypeFile(const std::filesystem::path& filePath, const FontParams& parameters)
{
NazaraUnused(parameters);
@@ -433,7 +432,7 @@ namespace Nz
return font;
}
std::shared_ptr<Font> LoadMemory(const void* data, std::size_t size, const FontParams& parameters)
std::shared_ptr<Font> LoadFreetypeMemory(const void* data, std::size_t size, const FontParams& parameters)
{
NazaraUnused(parameters);
@@ -453,7 +452,7 @@ namespace Nz
return font;
}
std::shared_ptr<Font> LoadStream(Stream& stream, const FontParams& parameters)
std::shared_ptr<Font> LoadFreetypeStream(Stream& stream, const FontParams& parameters)
{
NazaraUnused(parameters);
@@ -478,34 +477,34 @@ namespace Nz
{
bool InitializeFreeType()
{
NazaraAssert(!s_libraryOwner, "double initialization for FreeType");
if (FT_Init_FreeType(&s_library) != 0)
NazaraAssert(!s_freetypeLibraryOwner, "double initialization for FreeType");
if (FT_Init_FreeType(&s_freetypeLibrary) != 0)
{
NazaraWarning("failed to initialize FreeType library");
return false;
}
s_libraryOwner = std::make_shared<FreeTypeLibrary>();
s_freetypeLibraryOwner = std::make_shared<FreeTypeLibrary>();
return true;
}
FontLoader::Entry GetFontLoader_FreeType()
{
NazaraAssert(s_libraryOwner, "FreeType has not been initialized");
NazaraAssert(s_freetypeLibraryOwner, "FreeType has not been initialized");
FontLoader::Entry entry;
entry.extensionSupport = IsSupported;
entry.fileLoader = LoadFile;
entry.memoryLoader = LoadMemory;
entry.streamChecker = Check;
entry.streamLoader = LoadStream;
entry.extensionSupport = IsFreetypeSupported;
entry.fileLoader = LoadFreetypeFile;
entry.memoryLoader = LoadFreetypeMemory;
entry.streamChecker = CheckFreetype;
entry.streamLoader = LoadFreetypeStream;
return entry;
}
void UninitializeFreeType()
{
s_libraryOwner.reset();
s_freetypeLibraryOwner.reset();
}
}
}

View File

@@ -21,12 +21,12 @@ namespace Nz
{
namespace
{
bool IsSupported(const std::string_view& extension)
bool IsMD2Supported(const std::string_view& extension)
{
return (extension == "md2");
}
Ternary Check(Stream& stream, const MeshParams& parameters)
Ternary CheckMD2(Stream& stream, const MeshParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipNativeMD2Loader", &skip) && skip)
@@ -47,7 +47,7 @@ namespace Nz
return Ternary::False;
}
std::shared_ptr<Mesh> Load(Stream& stream, const MeshParams& parameters)
std::shared_ptr<Mesh> LoadMD2(Stream& stream, const MeshParams& parameters)
{
MD2_Header header;
if (stream.Read(&header, sizeof(MD2_Header)) != sizeof(MD2_Header))
@@ -269,9 +269,9 @@ namespace Nz
MeshLoader::Entry GetMeshLoader_MD2()
{
MeshLoader::Entry loader;
loader.extensionSupport = IsSupported;
loader.streamChecker = Check;
loader.streamLoader = Load;
loader.extensionSupport = IsMD2Supported;
loader.streamChecker = CheckMD2;
loader.streamLoader = LoadMD2;
return loader;
}

View File

@@ -12,12 +12,12 @@ namespace Nz
{
namespace
{
bool IsSupported(const std::string_view& extension)
bool IsMD5AnimSupported(const std::string_view& extension)
{
return (extension == "md5anim");
}
Ternary Check(Stream& stream, const AnimationParams& parameters)
Ternary CheckMD5Anim(Stream& stream, const AnimationParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipNativeMD5AnimLoader", &skip) && skip)
@@ -27,7 +27,7 @@ namespace Nz
return parser.Check();
}
std::shared_ptr<Animation> Load(Stream& stream, const AnimationParams& /*parameters*/)
std::shared_ptr<Animation> LoadMD5Anim(Stream& stream, const AnimationParams& /*parameters*/)
{
///TODO: Utiliser les paramètres
MD5AnimParser parser(stream);
@@ -93,9 +93,9 @@ namespace Nz
AnimationLoader::Entry GetAnimationLoader_MD5Anim()
{
AnimationLoader::Entry loader;
loader.extensionSupport = IsSupported;
loader.streamChecker = Check;
loader.streamLoader = Load;
loader.extensionSupport = IsMD5AnimSupported;
loader.streamChecker = CheckMD5Anim;
loader.streamLoader = LoadMD5Anim;
return loader;
}

View File

@@ -20,12 +20,12 @@ namespace Nz
{
namespace
{
bool IsSupported(const std::string_view& extension)
bool IsMD5MeshSupported(const std::string_view& extension)
{
return (extension == "md5mesh");
}
Ternary Check(Stream& stream, const MeshParams& parameters)
Ternary CheckMD5Mesh(Stream& stream, const MeshParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipNativeMD5MeshLoader", &skip) && skip)
@@ -35,7 +35,7 @@ namespace Nz
return parser.Check();
}
std::shared_ptr<Mesh> Load(Stream& stream, const MeshParams& parameters)
std::shared_ptr<Mesh> LoadMD5Mesh(Stream& stream, const MeshParams& parameters)
{
MD5MeshParser parser(stream);
if (!parser.Parse())
@@ -334,9 +334,9 @@ namespace Nz
MeshLoader::Entry GetMeshLoader_MD5Mesh()
{
MeshLoader::Entry loader;
loader.extensionSupport = IsSupported;
loader.streamChecker = Check;
loader.streamLoader = Load;
loader.extensionSupport = IsMD5MeshSupported;
loader.streamChecker = CheckMD5Mesh;
loader.streamLoader = LoadMD5Mesh;
return loader;
}

View File

@@ -22,12 +22,12 @@ namespace Nz
{
namespace
{
bool IsSupported(const std::string_view& extension)
bool IsOBJSupported(const std::string_view& extension)
{
return (extension == "obj");
}
Ternary Check(Stream& stream, const MeshParams& parameters)
Ternary CheckOBJ(Stream& stream, const MeshParams& parameters)
{
NazaraUnused(stream);
@@ -157,7 +157,7 @@ namespace Nz
return true;
}
std::shared_ptr<Mesh> Load(Stream& stream, const MeshParams& parameters)
std::shared_ptr<Mesh> LoadOBJ(Stream& stream, const MeshParams& parameters)
{
long long reservedVertexCount;
if (!parameters.custom.GetIntegerParameter("NativeOBJLoader_VertexCount", &reservedVertexCount))
@@ -367,9 +367,9 @@ namespace Nz
MeshLoader::Entry GetMeshLoader_OBJ()
{
MeshLoader::Entry loader;
loader.extensionSupport = IsSupported;
loader.streamChecker = Check;
loader.streamLoader = Load;
loader.extensionSupport = IsOBJSupported;
loader.streamChecker = CheckOBJ;
loader.streamLoader = LoadOBJ;
return loader;
}

View File

@@ -52,12 +52,12 @@ namespace Nz
T* m_buffer;
};
bool IsSupported(const std::string_view& extension)
bool IsOBJSupportedSave(const std::string_view& extension)
{
return (extension == "obj");
}
bool SaveToStream(const Mesh& mesh, const std::string& format, Stream& stream, const MeshParams& parameters)
bool SaveOBJToStream(const Mesh& mesh, const std::string& format, Stream& stream, const MeshParams& parameters)
{
NazaraUnused(parameters);
@@ -213,8 +213,8 @@ namespace Nz
MeshSaver::Entry GetMeshSaver_OBJ()
{
MeshSaver::Entry entry;
entry.formatSupport = IsSupported;
entry.streamSaver = SaveToStream;
entry.formatSupport = IsOBJSupportedSave;
entry.streamSaver = SaveOBJToStream;
return entry;
}

View File

@@ -16,7 +16,7 @@ namespace Nz
{
namespace
{
struct pcx_header
struct PCXHeader
{
UInt8 manufacturer;
UInt8 version;
@@ -38,14 +38,14 @@ namespace Nz
UInt8 padding[54];
};
static_assert(sizeof(pcx_header) == (6+48+54)*sizeof(UInt8) + 10*sizeof(UInt16), "pcx_header struct must be packed");
static_assert(sizeof(PCXHeader) == (6+48+54)*sizeof(UInt8) + 10*sizeof(UInt16), "pcx_header struct must be packed");
bool IsSupported(const std::string_view& extension)
bool IsPCXSupported(const std::string_view& extension)
{
return (extension == "pcx");
}
Ternary Check(Stream& stream, const ImageParams& parameters)
Ternary CheckPCX(Stream& stream, const ImageParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipNativePCXLoader", &skip) && skip)
@@ -61,12 +61,12 @@ namespace Nz
return Ternary::False;
}
std::shared_ptr<Image> Load(Stream& stream, const ImageParams& parameters)
std::shared_ptr<Image> LoadPCX(Stream& stream, const ImageParams& parameters)
{
NazaraUnused(parameters);
pcx_header header;
if (stream.Read(&header, sizeof(pcx_header)) != sizeof(pcx_header))
PCXHeader header;
if (stream.Read(&header, sizeof(PCXHeader)) != sizeof(PCXHeader))
{
NazaraError("Failed to read header");
return nullptr;
@@ -345,9 +345,9 @@ namespace Nz
ImageLoader::Entry GetImageLoader_PCX()
{
ImageLoader::Entry loaderEntry;
loaderEntry.extensionSupport = IsSupported;
loaderEntry.streamChecker = Check;
loaderEntry.streamLoader = Load;
loaderEntry.extensionSupport = IsPCXSupported;
loaderEntry.streamChecker = CheckPCX;
loaderEntry.streamLoader = LoadPCX;
return loaderEntry;
}

View File

@@ -17,52 +17,52 @@ namespace Nz
{
namespace
{
int Eof(void* userdata)
int StbiEof(void* userdata)
{
Stream* stream = static_cast<Stream*>(userdata);
return stream->GetCursorPos() >= stream->GetSize();
}
int Read(void* userdata, char* data, int size)
int StbiRead(void* userdata, char* data, int size)
{
Stream* stream = static_cast<Stream*>(userdata);
return static_cast<int>(stream->Read(data, size));
}
void Skip(void* userdata, int size)
void StbiSkip(void* userdata, int size)
{
Stream* stream = static_cast<Stream*>(userdata);
stream->SetCursorPos(static_cast<Int64>(stream->GetCursorPos()) + static_cast<Int64>(size));
}
static stbi_io_callbacks callbacks = {Read, Skip, Eof};
static stbi_io_callbacks s_stbiCallbacks = { StbiRead, StbiSkip, StbiEof };
bool IsSupported(const std::string_view& extension)
bool IsSTBSupported(const std::string_view& extension)
{
static std::unordered_set<std::string_view> supportedExtensions = {"bmp", "gif", "hdr", "jpg", "jpeg", "pic", "png", "ppm", "pgm", "psd", "tga"};
return supportedExtensions.find(extension) != supportedExtensions.end();
}
Ternary Check(Stream& stream, const ImageParams& parameters)
Ternary CheckSTB(Stream& stream, const ImageParams& parameters)
{
bool skip;
if (parameters.custom.GetBooleanParameter("SkipNativeSTBLoader", &skip) && skip)
return Ternary::False;
int width, height, bpp;
if (stbi_info_from_callbacks(&callbacks, &stream, &width, &height, &bpp))
if (stbi_info_from_callbacks(&s_stbiCallbacks, &stream, &width, &height, &bpp))
return Ternary::True;
else
return Ternary::False;
}
std::shared_ptr<Image> Load(Stream& stream, const ImageParams& parameters)
std::shared_ptr<Image> LoadSTB(Stream& stream, const ImageParams& parameters)
{
// Je charge tout en RGBA8 et je converti ensuite via la méthode Convert
// Ceci à cause d'un bug de STB lorsqu'il s'agit de charger certaines images (ex: JPG) en "default"
int width, height, bpp;
UInt8* ptr = stbi_load_from_callbacks(&callbacks, &stream, &width, &height, &bpp, STBI_rgb_alpha);
UInt8* ptr = stbi_load_from_callbacks(&s_stbiCallbacks, &stream, &width, &height, &bpp, STBI_rgb_alpha);
if (!ptr)
{
NazaraError("Failed to load image: " + std::string(stbi_failure_reason()));
@@ -103,9 +103,9 @@ namespace Nz
ImageLoader::Entry GetImageLoader_STB()
{
ImageLoader::Entry loaderEntry;
loaderEntry.extensionSupport = IsSupported;
loaderEntry.streamChecker = Check;
loaderEntry.streamLoader = Load;
loaderEntry.extensionSupport = IsSTBSupported;
loaderEntry.streamChecker = CheckSTB;
loaderEntry.streamLoader = LoadSTB;
return loaderEntry;
}

View File

@@ -10,7 +10,7 @@ namespace Nz
{
namespace
{
const unsigned int s_atlasStartSize = 512;
const unsigned int s_guillotineAtlasStartSize = 512;
}
GuillotineImageAtlas::GuillotineImageAtlas() :
@@ -119,7 +119,7 @@ namespace Nz
// Dernière couche, et le glyphe ne rentre pas, peut-on agrandir la taille de l'image ?
Vector2ui newSize = layer.binPack.GetSize()*2;
if (newSize == Vector2ui::Zero())
newSize.Set(s_atlasStartSize);
newSize.Set(s_guillotineAtlasStartSize);
// Limit image atlas size to prevent allocating too much contiguous memory blocks
if (newSize.x <= m_maxLayerSize && newSize.y <= m_maxLayerSize && ResizeLayer(layer, newSize))
@@ -133,7 +133,7 @@ namespace Nz
else
{
// On ne peut plus agrandir la dernière couche, il est temps d'en créer une nouvelle
newSize.Set(s_atlasStartSize);
newSize.Set(s_guillotineAtlasStartSize);
Layer newLayer;
if (!ResizeLayer(newLayer, newSize))

View File

@@ -20,7 +20,7 @@ namespace Nz
{
namespace
{
inline unsigned int GetLevelSize(unsigned int size, UInt8 level)
inline unsigned int GetImageLevelSize(unsigned int size, UInt8 level)
{
if (size == 0) // Possible dans le cas d'une image invalide
return 0;
@@ -576,7 +576,7 @@ namespace Nz
}
#endif
unsigned int width = GetLevelSize(m_sharedImage->width, level);
unsigned int width = GetImageLevelSize(m_sharedImage->width, level);
#if NAZARA_UTILITY_SAFE
if (x >= width)
{
@@ -585,7 +585,7 @@ namespace Nz
}
#endif
unsigned int height = GetLevelSize(m_sharedImage->height, level);
unsigned int height = GetImageLevelSize(m_sharedImage->height, level);
#if NAZARA_UTILITY_SAFE
if (y >= height)
{
@@ -593,7 +593,7 @@ namespace Nz
return nullptr;
}
unsigned int depth = (m_sharedImage->type == ImageType::Cubemap) ? 6 : GetLevelSize(m_sharedImage->depth, level);
unsigned int depth = (m_sharedImage->type == ImageType::Cubemap) ? 6 : GetImageLevelSize(m_sharedImage->depth, level);
if (z >= depth)
{
NazaraError("Z value exceeds depth (" + NumberToString(z) + " >= " + NumberToString(depth) + ')');
@@ -614,7 +614,7 @@ namespace Nz
}
#endif
return GetLevelSize(m_sharedImage->depth, level);
return GetImageLevelSize(m_sharedImage->depth, level);
}
PixelFormat Image::GetFormat() const
@@ -632,7 +632,7 @@ namespace Nz
}
#endif
return GetLevelSize(m_sharedImage->height, level);
return GetImageLevelSize(m_sharedImage->height, level);
}
UInt8 Image::GetLevelCount() const
@@ -674,7 +674,7 @@ namespace Nz
std::size_t Image::GetMemoryUsage(UInt8 level) const
{
return PixelFormatInfo::ComputeSize(m_sharedImage->format, GetLevelSize(m_sharedImage->width, level), GetLevelSize(m_sharedImage->height, level), ((m_sharedImage->type == ImageType::Cubemap) ? 6 : GetLevelSize(m_sharedImage->depth, level)));
return PixelFormatInfo::ComputeSize(m_sharedImage->format, GetImageLevelSize(m_sharedImage->width, level), GetImageLevelSize(m_sharedImage->height, level), ((m_sharedImage->type == ImageType::Cubemap) ? 6 : GetImageLevelSize(m_sharedImage->depth, level)));
}
Color Image::GetPixelColor(unsigned int x, unsigned int y, unsigned int z) const
@@ -737,7 +737,7 @@ namespace Nz
}
#endif
unsigned int width = GetLevelSize(m_sharedImage->width, level);
unsigned int width = GetImageLevelSize(m_sharedImage->width, level);
#if NAZARA_UTILITY_SAFE
if (x >= width)
{
@@ -746,7 +746,7 @@ namespace Nz
}
#endif
unsigned int height = GetLevelSize(m_sharedImage->height, level);
unsigned int height = GetImageLevelSize(m_sharedImage->height, level);
#if NAZARA_UTILITY_SAFE
if (y >= height)
{
@@ -754,7 +754,7 @@ namespace Nz
return nullptr;
}
unsigned int depth = (m_sharedImage->type == ImageType::Cubemap) ? 6 : GetLevelSize(m_sharedImage->depth, level);
unsigned int depth = (m_sharedImage->type == ImageType::Cubemap) ? 6 : GetImageLevelSize(m_sharedImage->depth, level);
if (z >= depth)
{
NazaraError("Z value exceeds depth (" + NumberToString(z) + " >= " + NumberToString(depth) + ')');
@@ -783,7 +783,7 @@ namespace Nz
}
#endif
return Vector3ui(GetLevelSize(m_sharedImage->width, level), GetLevelSize(m_sharedImage->height, level), GetLevelSize(m_sharedImage->depth, level));
return Vector3ui(GetImageLevelSize(m_sharedImage->width, level), GetImageLevelSize(m_sharedImage->height, level), GetImageLevelSize(m_sharedImage->depth, level));
}
ImageType Image::GetType() const
@@ -801,7 +801,7 @@ namespace Nz
}
#endif
return GetLevelSize(m_sharedImage->width, level);
return GetImageLevelSize(m_sharedImage->width, level);
}
bool Image::HasAlpha() const
@@ -1270,8 +1270,8 @@ namespace Nz
}
#endif
unsigned int width = GetLevelSize(m_sharedImage->width, level);
unsigned int height = GetLevelSize(m_sharedImage->height, level);
unsigned int width = GetImageLevelSize(m_sharedImage->width, level);
unsigned int height = GetImageLevelSize(m_sharedImage->height, level);
#if NAZARA_UTILITY_SAFE
if (!box.IsValid())
@@ -1280,7 +1280,7 @@ namespace Nz
return false;
}
unsigned int depth = (m_sharedImage->type == ImageType::Cubemap) ? 6 : GetLevelSize(m_sharedImage->depth, level);
unsigned int depth = (m_sharedImage->type == ImageType::Cubemap) ? 6 : GetImageLevelSize(m_sharedImage->depth, level);
if (box.x+box.width > width || box.y+box.height > height || box.z+box.depth > depth ||
(m_sharedImage->type == ImageType::Cubemap && box.depth > 1)) // Nous n'autorisons pas de modifier plus d'une face du cubemap à la fois
{

View File

@@ -10,7 +10,7 @@
namespace Nz
{
namespace
namespace NAZARA_ANONYMOUS_NAMESPACE
{
UInt32 GetterSequential(const void* buffer, std::size_t i)
{
@@ -58,6 +58,8 @@ namespace Nz
IndexMapper::IndexMapper(IndexBuffer& indexBuffer, std::size_t indexCount) :
m_indexCount((indexCount != 0) ? indexCount : indexBuffer.GetIndexCount())
{
NAZARA_USE_ANONYMOUS_NAMESPACE
if (!m_mapper.Map(indexBuffer, 0, m_indexCount))
NazaraError("Failed to map buffer"); ///TODO: Unexcepted

View File

@@ -10,7 +10,7 @@
namespace Nz
{
namespace
namespace NAZARA_ANONYMOUS_NAMESPACE
{
inline UInt8 c4to5(UInt8 c)
{
@@ -1412,6 +1412,8 @@ namespace Nz
bool PixelFormatInfo::Initialize()
{
NAZARA_USE_ANONYMOUS_NAMESPACE
auto SetupPixelFormat = [](PixelFormat format, PixelFormatDescription&& desc)
{
s_pixelFormatInfos[UnderlyingCast(format)] = std::move(desc);

View File

@@ -14,7 +14,7 @@
namespace Nz
{
namespace
namespace NAZARA_ANONYMOUS_NAMESPACE
{
std::size_t s_componentStride[ComponentTypeCount] =
{
@@ -37,6 +37,8 @@ namespace Nz
VertexDeclaration::VertexDeclaration(VertexInputRate inputRate, std::initializer_list<ComponentEntry> components) :
m_inputRate(inputRate)
{
NAZARA_USE_ANONYMOUS_NAMESPACE
ErrorFlags errFlags(ErrorMode::ThrowException);
std::size_t offset = 0;