93 lines
2.5 KiB
C++
93 lines
2.5 KiB
C++
// Copyright (C) 2023 Jérôme "Lynix" Leclercq (lynix680@gmail.com)
|
|
// This file is part of the "Nazara Engine - Utility module"
|
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
|
|
|
#include <Nazara/Utility/Formats/DDSConstants.hpp>
|
|
#include <Nazara/Core/Algorithm.hpp>
|
|
#include <Nazara/Utility/Debug.hpp>
|
|
|
|
namespace Nz
|
|
{
|
|
bool Unserialize(SerializationContext& context, DDSHeader* header)
|
|
{
|
|
if (!Unserialize(context, &header->size))
|
|
return false;
|
|
if (!Unserialize(context, &header->flags))
|
|
return false;
|
|
if (!Unserialize(context, &header->height))
|
|
return false;
|
|
if (!Unserialize(context, &header->width))
|
|
return false;
|
|
if (!Unserialize(context, &header->pitch))
|
|
return false;
|
|
if (!Unserialize(context, &header->depth))
|
|
return false;
|
|
if (!Unserialize(context, &header->levelCount))
|
|
return false;
|
|
|
|
for (unsigned int i = 0; i < CountOf(header->reserved1); ++i)
|
|
{
|
|
if (!Unserialize(context, &header->reserved1[i]))
|
|
return false;
|
|
}
|
|
|
|
if (!Unserialize(context, &header->format))
|
|
return false;
|
|
|
|
for (unsigned int i = 0; i < CountOf(header->ddsCaps); ++i)
|
|
{
|
|
if (!Unserialize(context, &header->ddsCaps[i]))
|
|
return false;
|
|
}
|
|
|
|
if (!Unserialize(context, &header->reserved2))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool Unserialize(SerializationContext& context, DDSHeaderDX10Ext* header)
|
|
{
|
|
UInt32 enumValue;
|
|
|
|
if (!Unserialize(context, &enumValue))
|
|
return false;
|
|
header->dxgiFormat = static_cast<DXGI_FORMAT>(enumValue);
|
|
|
|
if (!Unserialize(context, &enumValue))
|
|
return false;
|
|
header->resourceDimension = static_cast<D3D10_RESOURCE_DIMENSION>(enumValue);
|
|
|
|
if (!Unserialize(context, &header->miscFlag))
|
|
return false;
|
|
if (!Unserialize(context, &header->arraySize))
|
|
return false;
|
|
if (!Unserialize(context, &header->reserved))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool Unserialize(SerializationContext& context, DDSPixelFormat* pixelFormat)
|
|
{
|
|
if (!Unserialize(context, &pixelFormat->size))
|
|
return false;
|
|
if (!Unserialize(context, &pixelFormat->flags))
|
|
return false;
|
|
if (!Unserialize(context, &pixelFormat->fourCC))
|
|
return false;
|
|
if (!Unserialize(context, &pixelFormat->bpp))
|
|
return false;
|
|
if (!Unserialize(context, &pixelFormat->redMask))
|
|
return false;
|
|
if (!Unserialize(context, &pixelFormat->greenMask))
|
|
return false;
|
|
if (!Unserialize(context, &pixelFormat->blueMask))
|
|
return false;
|
|
if (!Unserialize(context, &pixelFormat->alphaMask))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
}
|