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);