44 lines
970 B
C++

#include <stdint.h>
#define PACKED __attribute__((packed))
namespace tga {
struct PACKED header {
uint8_t idLength;
uint8_t colorMapType;
uint8_t imageTypeCode;
struct PACKED {
uint16_t origin;
uint16_t length;
uint8_t depth;
} colorMap;
struct PACKED {
uint16_t xOrigin;
uint16_t yOrigin;
uint16_t width;
uint16_t height;
uint8_t bitsPerPixel;
} image;
uint8_t descriptor;
};
static_assert((sizeof (header)) == 18);
header const * validate(void const * data, uint32_t size, void ** outData, uint32_t * outSize);
static inline bool isTGAExtension(const char * filename, size_t length)
{
char a = filename[length - 4];
char b = filename[length - 3];
char c = filename[length - 2];
char d = filename[length - 1];
return
(a == '.') &&
(b == 't' || b == 'T') &&
(c == 'g' || c == 'G') &&
(d == 'a' || d == 'A');
}
}
#undef PACKED