1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #ifndef DEVIL1TEX_H
- #define DEVIL1TEX_H
- #include <stdint.h>
- #include <stdbool.h>
- // disable struct padding
- // to easily impose struct on plain data.
- #pragma pack(push, 1)
- struct TexturePack {
- char id[4];
- int32_t batchNumber;
- uint32_t firstBatchOffset; // <format=hex>
- uint32_t unknownA;
- };
- struct TextureBatchDescriptor{
- int32_t batchIdx;
- uint32_t hash; // <format=hex>
- uint32_t texNumber;
- uint32_t unknownA[8]; // <format=hex>
- uint32_t textureSize; // <format=hex>
- uint32_t unknownB[30];
- };
- struct Texture {
- // size of array is defined by descriptor
- // textureSize
- unsigned char *data;
- };
- struct TextureBatch {
- // quantity of textures are defined by descriptor
- // texNumber
- struct Texture *batch;
- };
- #pragma pack(pop)
- typedef struct {
- // input: pointer to struct
- void (* const printheader) (struct TexturePack*);
- // input: pointer to struct
- void (* const printbatchdesc)(struct TextureBatchDescriptor*);
- // input: pointer to struct, file data
- bool (* const getheader) (struct TexturePack**, const char*);
- // input: pointer of pointer to struct, order, file data, file size
- // ** = 'pass by reference' of a pointer to struct
- bool (* const getbatchdesc) (struct TextureBatchDescriptor**,
- unsigned int,
- const char *,
- unsigned int);
- // input: pointer of pointer to struct, order, file data, file size
- // ** = 'pass by reference' of a pointer to struct
- bool (* const getbatch) (struct TextureBatch**,
- unsigned int,
- const char*,
- unsigned int);
- // input: pointer to struct, order, file data, file size
- bool (* const gettextures) (struct Texture*,
- unsigned int,
- const char*,
- const unsigned int);
- } fn_devil1tex;
- extern fn_devil1tex const DEVIL1TEX;
- #endif
|