binana/profile/3.3.5a-windows-386/include/texture/tga.h

67 lines
1.1 KiB
C
Raw Normal View History

#ifndef TEXTURE_TGA_H
#define TEXTURE_TGA_H
#include "system/types.h"
#include "storm/file.h"
DECLARE_STRUCT(TGAFooter);
DECLARE_STRUCT(TGAHeader);
DECLARE_STRUCT(TGA32Pixel);
DECLARE_STRUCT(TGAImageDesc);
DECLARE_STRUCT(CTgaFile);
struct TGAFooter {
uint32_t dwExtensionOffset;
uint32_t dwDeveloperOffset;
uint8_t szSigniture[18];
};
#pragma pack(push, 1)
struct TGAImageDesc {
uint8_t bAlphaChannelBits : 4;
uint8_t bLeftRightOrder : 1;
uint8_t bTopBottomOrder : 1;
uint8_t bReserved : 2;
};
struct TGAHeader {
uint8_t bIDLength;
uint8_t bColorMapType;
uint8_t bImageType;
// byte packed
uint16_t wColorMapStartIndex;
uint16_t wColorMapEntries;
uint8_t bColorMapEntrySize;
uint16_t wXOrigin;
uint16_t wYOrigin;
uint16_t wWidth;
uint16_t wHeight;
uint8_t bPixelDepth;
union {
uint8_t bImageDescriptor;
TGAImageDesc desc;
};
};
#pragma pack(pop)
struct TGA32Pixel {
uint8_t b;
uint8_t g;
uint8_t r;
uint8_t a;
};
struct CTgaFile {
SFile* m_file;
uint8_t* m_image;
TGAHeader m_header;
uint8_t* m_addlHeaderData;
TGAFooter m_footer;
uint32_t m_imageBytes;
uint8_t* m_colorMap;
};
#endif