tgaFile(API)
提供: Eospedia
DataManip/tgaFileはtgaデータのためのAPI です。
定数
typedef enum tgaFileColorMap {
tgaFileColorMapNoColorMap=0,
tgaFileColorMapColorMap=1
} tgaFileColorMap;
typedef enum tgaFileImageType {
tgaFileImageTypeNoImage = 0,
tgaFileImageTypeColorMappedImage = 1,
tgaFileImageTypeTrueColorImage = 2,
tgaFileImageTypeBlackAndWhite = 3,
tgaFileImageTypeRLEColorMappedImage = 9,
tgaFileImageTypeRLETrueColorImage = 10,
tgaFileImageTypeRLEBlackAndWhite = 11
} tgaFileImageType;
typedef enum tgaFileImageOrigin {
tgaFileImageOriginBottomLeft = 0,
tgaFileImageOriginBottomRight = 1,
tgaFileImageOriginTopLeft = 2,
tgaFileImageOriginTopRight = 3
} tgaFileImageOrigin;
構造体
typedef struct tgaFileColorMapSpecification {
short FirstEntryIndex;
short ColorMapLength;
unsigned char ColorMapEntrySize;
} tgaFileColorMapSpecification;
typedef union tgaFileDescriptor {
unsigned char All;
struct {
unsigned char AlphaChannelBits:4;
unsigned char ImageOrigin:2;
unsigned char Unused:2;
} Bit;
} tgaFileDescriptor;
typedef struct tgaFileImageSpecification {
short Xorigin;
short Yorigin;
short Width;
short Height;
unsigned char Depth;
tgaFileDescriptor Descriptor;
} tgaFileImageSpecification;
typedef struct tgaFileHeader {
unsigned char IDLength; /* 1 Byte */
unsigned char ColorMapType; /* 1 Byte */
unsigned char ImageType; /* 1 Byte */
tgaFileColorMapSpecification ColorMapSpec; /* 5 Bytes */
tgaFileImageSpecification ImageSpec; /* 10 Bytes */
} tgaFileHeader; /* 18 Bytes */
typedef unsigned char tgaFileImageID; typedef unsigned char tgaFileColorMapData; typedef unsigned char tgaFileImageData; typedef unsigned char tgaFileDeveloperData;
typedef struct tgaFile {
tgaFileHeader Header; /* Field 1-5 : fixed: 18 Bytes */
tgaFileImageID* ImageID; /* Field 6: variable */
tgaFileColorMapData* ColorMapData; /* Field 7: variable */
tgaFileImageData* Image; /* Field 8: variable */
tgaFileDeveloperData* DeveloperData; /* Field 9: variable */
/* Additional Information */
int flagHeader;
int ImageDataOffset;
int ImageDataBytes;
} tgaFile;
API
初期化
tgaがNULLの場合はメモリを確保します。fptがNULLでない場合はtgaFileHeaderReadを使ってヘッダを読み出し、tgaへ格納します。
extern tgaFile* tgaFileInit(tgaFile* tga, FILE* fpt, int mode);
tga->Imageにメモリを確保して初期化します。ヘッダがない場合はtgaFileHeaderReadを使用してfptからヘッダを読み出します。
extern tgaFile* tgaFileImageInit(tgaFile* tga, FILE* fpt, int mode);
tgaファイル読み出し
fptからヘッダ情報を読み出し、tga->Headerへ格納します。このときtgaがNULLの場合はtgaFileInitを使って予めメモリを確保します。
extern tgaFile* tgaFileHeaderRead(tgaFile* tga, FILE* fpt, int mode);
fptからデータを読み出して、tga->Imageへ格納します。このときtgaFileImageInitによりヘッダも格納します。
extern tgaFile* tgaFileImageDataRead(tgaFile* tga, FILE* fpt, int mode);
tgaFileImageDataReadを呼び出します。
extern tgaFile* tgaFileRead(tgaFile* tga, FILE* fpt, int mode);
tgaファイル出力
tgaのヘッダをファイルoutへ出力します。(mode: tgaFileColorMapにより出力タイプを選択)
extern void tgaFileHeaderPrint(tgaFile* tga, FILE* out, int mode);