This commit is contained in:
parent
8788076d39
commit
1c5c1b4011
59 changed files with 24871 additions and 56 deletions
131
Utils/Libs/GLib/IFF.CPP
Normal file
131
Utils/Libs/GLib/IFF.CPP
Normal file
|
@ -0,0 +1,131 @@
|
|||
/* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ ³
|
||||
³ FILE: IFF.CPP ³
|
||||
³ ³
|
||||
³ Written by Carl Muller 25 Sep 1990 ³
|
||||
³ Modified by Carl Muller 13 Sep 1991 ³
|
||||
³ ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ */
|
||||
|
||||
|
||||
|
||||
#include "iff.hpp"
|
||||
|
||||
|
||||
/* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ Start writing an IFF file ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ */
|
||||
FILE *IFF_FILE::write(char const *filename)
|
||||
{
|
||||
stackptr = 0;
|
||||
file = fopen(filename, "wb");
|
||||
return file;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ Close an IFF file ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ */
|
||||
void IFF_FILE::close()
|
||||
{
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ Start an IFF form ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ */
|
||||
void IFF_FILE::form(char name[5])
|
||||
{
|
||||
fputc('F', file);
|
||||
fputc('O', file);
|
||||
fputc('R', file);
|
||||
fputc('M', file);
|
||||
push(ftell(file));
|
||||
fputc(0, file);
|
||||
fputc(0, file);
|
||||
fputc(0, file);
|
||||
fputc(0, file);
|
||||
fputc(name[0], file);
|
||||
fputc(name[1], file);
|
||||
fputc(name[2], file);
|
||||
fputc(name[3], file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ Finish an IFF form ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ */
|
||||
void IFF_FILE::endform()
|
||||
{
|
||||
long pos1, pos2, len;
|
||||
|
||||
pos2 = ftell(file);
|
||||
if (pos2 & 1)
|
||||
{
|
||||
fputc(0, file);
|
||||
pos2++;
|
||||
}
|
||||
|
||||
pos1 = pop();
|
||||
len = pos2 - pos1 - 4L;
|
||||
|
||||
fseek(file, pos1, SEEK_SET);
|
||||
fputc((UCHAR)(len>>24), file);
|
||||
fputc((UCHAR)(len>>16) & 255, file);
|
||||
fputc((UCHAR)(len>>8) & 255, file);
|
||||
fputc((UCHAR)(len&0xff), file);
|
||||
|
||||
fseek(file,pos2,SEEK_SET);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ Start an IFF chunk ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ */
|
||||
void IFF_FILE::chunk(char name[5])
|
||||
{
|
||||
fputc(name[0], file);
|
||||
fputc(name[1], file);
|
||||
fputc(name[2], file);
|
||||
fputc(name[3], file);
|
||||
push(ftell(file));
|
||||
fputc(0, file);
|
||||
fputc(0, file);
|
||||
fputc(0, file);
|
||||
fputc(0, file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ Finish an IFF chunk ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ */
|
||||
void IFF_FILE::endchunk()
|
||||
{
|
||||
long pos1, pos2, len;
|
||||
|
||||
pos2 = ftell(file);
|
||||
if (pos2 & 1)
|
||||
{
|
||||
fputc(0, file);
|
||||
pos2++;
|
||||
}
|
||||
pos1 = pop();
|
||||
len = pos2 - pos1 - 4L;
|
||||
fseek(file, pos1, SEEK_SET);
|
||||
fputc((UCHAR)(len>>24), file);
|
||||
fputc((UCHAR)(len>>16) & 255, file);
|
||||
fputc((UCHAR)(len>>8) & 255, file);
|
||||
fputc((UCHAR)(len&255), file);
|
||||
fseek(file, pos2, SEEK_SET);
|
||||
}
|
||||
|
||||
long IFF_FILE::tell()
|
||||
{
|
||||
return ftell(file);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue