home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Kyūkyoku!! X68000 Emulator
/
X68000Book.dat
/
mac
/
OLS
/
X68000
/
Ko-Window
/
kow142s.lzh
/
corlib
/
SheetLoad.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-01-16
|
4KB
|
116 lines
/*/ /////////////////////////////////////////////////////////////////// /*/
/*/ /*/
/*/ éoéàéäâtâHü[â}âbâgâtâ@âCâïé╠ô╟é▌/Åæé½âëâCâuâëâè /*/
/*/ 1991 3/25 żè}î┤öÄöV SPS-NET: SPS0783 COR. /*/
/*/ /*/
/*/ /////////////////////////////////////////////////////////////////// /*/
#include <stdio.h>
#include <wlib.h>
#define BUFMAX 200
/**************************************************************************/
/** âtâ@âCâïé⌐éτòKùvé╚éréêéàéàéöâTâCâYé≡ô╛éΘ
/** int SheetGetSize( FILE *fp; Sheet *sp );
/** fp âtâ@âCâïâ|âCâôâ^
/** sp Ælé≡ò╘é╖âoâbâtâ@ sp->h, sp->v, sp->hword é╔Ælé≡ò╘é╖
/** û▀éΦÆlé═ sp->h * sp->hword
/**************************************************************************/
int
SheetGetSize( fp, sp )
FILE *fp;
Sheet *sp;
{
unsigned char *ptr,
sbuf[ BUFMAX ];
while( fgets( sbuf, BUFMAX, fp ) ){
if( strncmp( sbuf, "Sheet", 5 ) == 0 ||
strncmp( sbuf, "CLASS\tSheet", 11 ) == 0 ||
strncmp( sbuf, "static\tSheet", 12 ) == 0 )
break;
}
for( ptr=sbuf ; *ptr != '{' && *ptr != '\0' ; ptr++ ); /*}*/
sscanf( ptr+1, "%d, %d, %d", &sp->h, &sp->v, &sp->hword );
return sp->hword*sp->v;
}
/**************************************************************************/
/** âoâbâtâ@é╔éréêéàéàéöâfü[â^é≡ô╛éΘ
/** void SheetLoad( FILE *fp, Sheet *sp );
/** fp âtâ@âCâïâ|âCâôâ^
/** sp Ælé≡ò╘é╖âoâbâtâ@ sp->buf1, sp->buf2 é╔âoâbâtâ@é≡ò╘é╖
/**************************************************************************/
void
SheetLoad( fp, sp )
FILE *fp;
Sheet *sp;
{
unsigned char *ptr,
sbuf[ BUFMAX ];
unsigned int j= 1;
unsigned short *data= (unsigned short*)sp->buf1;
fseek( fp, 0, 0 );
do{
unsigned int i;
unsigned int size= sp->v*sp->hword;
while( fgets( sbuf, BUFMAX, fp ) )
if( strncmp( sbuf, "static\tshort", 12 ) == 0 )
break;
for( i= 0 ; i< size ; i++ ){
unsigned int a;
fscanf( fp, "0x%X, ", &a );
*data++= a;
}
data= (unsigned short*)sp->buf2;
}while( j-- );
}
/*/ ///////////////////////////////////////////////////////////////////
[LOAD]
Sheet sp;
int size;
size= SizeGet( fp, &sp );
sp.buf2= ( sp.buf1= MALLOC( size*2 ) )+size;
SheetLoad( fp, &sp );
[SAVE]
SheetSave( fp, &sp, mode );
/////////////////////////////////////////////////////////////////// /*/
/**************************************************************************/
/** âoâbâtâ@é╠éréêéàéàéöâfü[â^é≡Åæé½Åoé╖
/** void SheetSave( FILE *fp, Sheet *sp, int mode, char *name );
/** fp âtâ@âCâïâ|âCâôâ^
/** sp âtâ@âCâïé╔Åæé½Åoé╖âfü[â^
/** mode mode=0:Source mode=1:Include
/** name Åæé½ì₧é▐âfü[â^é╠û╝æO
/**************************************************************************/
void
SheetSave( fp, sp, mode, name )
FILE *fp;
Sheet *sp;
unsigned int mode;
unsigned char *name;
{
unsigned int i;
unsigned short *data= (unsigned short*)sp->buf1;
unsigned int size= sp->v*sp->hword;
fputs( mode ? "#ifndef CLASS\n#define CLASS static\n#endif\n" : "#include \"wlib.h\"\n\n", fp );
fprintf( fp, "static\tshort\t%s1[] = {\n\t", name );
for( i= 0 ; i< size-1 ; i++ )
fprintf( fp, "0x%04X, ", *data++ );
fprintf( fp, "0x%04X\n};\nstatic\tshort\t%s2[] = {\n\t", *data, name );
data= (unsigned short*)sp->buf2;
for( i= 0 ; i< size-1 ; i++ )
fprintf( fp, "0x%04X, ", *data++ );
fprintf( fp, "0x%04X\n};\n", *data );
fprintf( fp, mode ? "CLASS\tSheet\t%sPattern = { %d, %d, %d, %s1, %s2 };\n" : "Sheet\t%sPattern = { %d, %d, %d, %s1, %s2 };\n", name, sp->h, sp->v, sp->hword, name, name );
}