glTFAsset: Use std:unique_ptr for Image data
parent
d308cfcb43
commit
7ebd8e7543
|
@ -649,7 +649,7 @@ namespace glTF
|
|||
int width, height;
|
||||
|
||||
private:
|
||||
uint8_t* mData;
|
||||
std::unique_ptr<uint8_t[]> mData;
|
||||
size_t mDataLength;
|
||||
|
||||
public:
|
||||
|
@ -664,7 +664,7 @@ namespace glTF
|
|||
{ return mDataLength; }
|
||||
|
||||
inline const uint8_t* GetData() const
|
||||
{ return mData; }
|
||||
{ return mData.get(); }
|
||||
|
||||
inline uint8_t* StealData();
|
||||
|
||||
|
|
|
@ -601,7 +601,6 @@ T Accessor::Indexer::GetValue(int i)
|
|||
inline Image::Image()
|
||||
: width(0)
|
||||
, height(0)
|
||||
, mData(0)
|
||||
, mDataLength(0)
|
||||
{
|
||||
|
||||
|
@ -624,8 +623,8 @@ inline void Image::Read(Value& obj, Asset& r)
|
|||
Ref<BufferView> bv = r.bufferViews.Get(bufferViewId);
|
||||
if (bv) {
|
||||
mDataLength = bv->byteLength;
|
||||
mData = new uint8_t[mDataLength];
|
||||
memcpy(mData, bv->buffer->GetPointer() + bv->byteOffset, mDataLength);
|
||||
mData.reset(new uint8_t[mDataLength]);
|
||||
memcpy(mData.get(), bv->buffer->GetPointer() + bv->byteOffset, mDataLength);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -640,7 +639,9 @@ inline void Image::Read(Value& obj, Asset& r)
|
|||
if (ParseDataURI(uristr, uri->GetStringLength(), dataURI)) {
|
||||
mimeType = dataURI.mediaType;
|
||||
if (dataURI.base64) {
|
||||
mDataLength = Util::DecodeBase64(dataURI.data, dataURI.dataLength, mData);
|
||||
uint8_t *ptr = nullptr;
|
||||
mDataLength = Util::DecodeBase64(dataURI.data, dataURI.dataLength, ptr);
|
||||
mData.reset(ptr);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -652,10 +653,8 @@ inline void Image::Read(Value& obj, Asset& r)
|
|||
|
||||
inline uint8_t* Image::StealData()
|
||||
{
|
||||
uint8_t* data = mData;
|
||||
mDataLength = 0;
|
||||
mData = 0;
|
||||
return data;
|
||||
return mData.release();
|
||||
}
|
||||
|
||||
inline void Image::SetData(uint8_t* data, size_t length, Asset& r)
|
||||
|
@ -670,7 +669,7 @@ inline void Image::SetData(uint8_t* data, size_t length, Asset& r)
|
|||
bufferView->byteOffset = b->AppendData(data, length);
|
||||
}
|
||||
else { // text file: will be stored as a data uri
|
||||
this->mData = data;
|
||||
this->mData.reset(data);
|
||||
this->mDataLength = length;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -616,7 +616,7 @@ void glTFImporter::ImportEmbeddedTextures(glTF::Asset& r)
|
|||
|
||||
// Add the embedded textures
|
||||
for (size_t i = 0; i < r.images.Size(); ++i) {
|
||||
Image img = r.images[i];
|
||||
Image &img = r.images[i];
|
||||
if (!img.HasData()) continue;
|
||||
|
||||
int idx = mScene->mNumTextures++;
|
||||
|
|
Loading…
Reference in New Issue