Load_IFF() move ANHD data to T_IFF_AnimHeader
This commit is contained in:
parent
28916b65cf
commit
5ff093feca
@ -244,6 +244,21 @@ typedef struct
|
||||
word Y_screen;
|
||||
} T_IFF_Header;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
byte operation; // 0=normal body, 1=XOR, 2=Long Delta, 3=Short Delta,
|
||||
// 4=Generalized Long/Short Delta, 5=Byte Vertical Delta,
|
||||
// 7=short/long vertical delta, 74=Eric Graham's compression
|
||||
byte mask; // for XOR mode only
|
||||
word w,h; // for XOR mode only
|
||||
word x,y; // for XOR mode only
|
||||
dword abstime;
|
||||
dword reltime;
|
||||
byte interleave;
|
||||
byte pad0;
|
||||
dword bits;
|
||||
} T_IFF_AnimHeader;
|
||||
|
||||
// -- Tester si un fichier est au format IFF --------------------------------
|
||||
|
||||
void Test_IFF(T_IO_Context * context, const char *sub_type)
|
||||
@ -607,6 +622,7 @@ void Load_IFF(T_IO_Context * context)
|
||||
FILE * IFF_file;
|
||||
char filename[MAX_PATH_CHARACTERS];
|
||||
T_IFF_Header header;
|
||||
T_IFF_AnimHeader aheader;
|
||||
char format[4];
|
||||
char section[4];
|
||||
byte temp_byte;
|
||||
@ -635,6 +651,8 @@ void Load_IFF(T_IO_Context * context)
|
||||
int current_frame = 0;
|
||||
byte * previous_frame = NULL; // For animations
|
||||
|
||||
memset(&aheader, 0, sizeof(aheader));
|
||||
|
||||
Get_full_filename(filename, context->File_name, context->File_directory);
|
||||
|
||||
File_error=0;
|
||||
@ -732,27 +750,17 @@ void Load_IFF(T_IO_Context * context)
|
||||
else if (memcmp(section, "ANHD", 4) == 0) // ANimation HeaDer
|
||||
{
|
||||
// http://www.textfiles.com/programming/FORMATS/anim7.txt
|
||||
byte operation;
|
||||
byte mask;
|
||||
word w,h;
|
||||
word x,y;
|
||||
dword abstime;
|
||||
dword reltime;
|
||||
byte interleave;
|
||||
byte pad0;
|
||||
dword bits;
|
||||
|
||||
Read_byte(IFF_file, &operation);
|
||||
Read_byte(IFF_file, &mask);
|
||||
Read_word_be(IFF_file, &w);
|
||||
Read_word_be(IFF_file, &h);
|
||||
Read_word_be(IFF_file, &x);
|
||||
Read_word_be(IFF_file, &y);
|
||||
Read_dword_be(IFF_file, &abstime);
|
||||
Read_dword_be(IFF_file, &reltime);
|
||||
Read_byte(IFF_file, &interleave);
|
||||
Read_byte(IFF_file, &pad0);
|
||||
Read_dword_be(IFF_file, &bits);
|
||||
Read_byte(IFF_file, &aheader.operation);
|
||||
Read_byte(IFF_file, &aheader.mask);
|
||||
Read_word_be(IFF_file, &aheader.w);
|
||||
Read_word_be(IFF_file, &aheader.h);
|
||||
Read_word_be(IFF_file, &aheader.x);
|
||||
Read_word_be(IFF_file, &aheader.y);
|
||||
Read_dword_be(IFF_file, &aheader.abstime);
|
||||
Read_dword_be(IFF_file, &aheader.reltime);
|
||||
Read_byte(IFF_file, &aheader.interleave);
|
||||
Read_byte(IFF_file, &aheader.pad0);
|
||||
Read_dword_be(IFF_file, &aheader.bits);
|
||||
section_size -= 24;
|
||||
|
||||
fseek(IFF_file, (section_size+1)&~1, SEEK_CUR); // Skip remaining bytes
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user