XPlor/libs/xassets/xgfximage.cpp
2025-09-10 21:58:26 -04:00

76 lines
1.9 KiB
C++

#include "xgfximage.h"
XGfxImage::XGfxImage()
: XAsset()
, mMapType()
, mTexture()
, mSemantic(0)
, mCardMemory()
, mWidth(0)
, mHeight(0)
, mDepth(0)
, mCategory(0)
, mDelayLoadPixels(false)
, mPixels()
, mBaseSize(0)
, mStreamSlot(0)
, mStreaming(false)
, mName()
{
SetType(ASSET_TYPE_IMAGE);
SetName("GFX Image");
}
XGfxImage::~XGfxImage()
{
}
void XGfxImage::ParseData(XDataStream *aStream)
{
if (GetPtr() == -1)
{
mMapType = (XMapType)aStream->ParseUInt32(QString("%1 map type").arg(GetName()));
mTexture.ParsePtr(aStream, false);
mSemantic = aStream->ParseUInt8(QString("%1 semantic").arg(GetName()));
aStream->skipRawData(3);
mCardMemory.ParseData(aStream);
qint32 pixelsPtr;
mWidth = aStream->ParseUInt16(QString("%1 width").arg(GetName()));
mHeight = aStream->ParseUInt16(QString("%1 height").arg(GetName()));
mDepth = aStream->ParseUInt16(QString("%1 depth").arg(GetName()));
mCategory = aStream->ParseUInt8(QString("%1 category").arg(GetName()));
mDelayLoadPixels = aStream->ParseUInt8(QString("%1 delay load pixels").arg(GetName()));
pixelsPtr = aStream->ParseInt32(QString("%1 pixels ptr").arg(GetName()));
mBaseSize = aStream->ParseUInt32(QString("%1 base size").arg(GetName()));
mStreamSlot = aStream->ParseUInt16(QString("%1 stream slot").arg(GetName()));
mStreaming = aStream->ParseUInt8(QString("%1 streaming").arg(GetName()));
aStream->skipRawData(1);
mName.ParsePtr(aStream);
//int variableSkip = mDelayLoadPixels ? 2 : 5;
//aStream->skipRawData(variableSkip);
if (pixelsPtr == -1)
{
mPixels.resize(mCardMemory.GetPlatform());
aStream->readRawData(mPixels.data(), mCardMemory.GetPlatform());
}
mTexture.ParseData(aStream);
}
}
void XGfxImage::Clear()
{
}