27 lines
741 B
C++
27 lines
741 B
C++
#include <assert.h>
|
|
#include <stddef.h>
|
|
|
|
#include "tga/tga.h"
|
|
|
|
namespace tga {
|
|
header const * validate(void const * data, uint32_t size, void ** outData, uint32_t * outSize)
|
|
{
|
|
header const * const tga = (tga::header const *)data;
|
|
|
|
assert(tga->colorMapType == 0);
|
|
assert(tga->imageTypeCode == 2);
|
|
assert(tga->image.xOrigin == 0);
|
|
assert(tga->image.yOrigin == 0);
|
|
assert(tga->image.bitsPerPixel == 32);
|
|
|
|
|
|
uint32_t bytesPerPixel = tga->image.bitsPerPixel / 8;
|
|
size_t imageOffset = (sizeof (header)) + tga->idLength;
|
|
*outData = (void *)(((size_t)data) + imageOffset);
|
|
*outSize = tga->image.width * tga->image.width * bytesPerPixel;
|
|
assert(*outSize <= (size - imageOffset));
|
|
|
|
return tga;
|
|
}
|
|
}
|