84 lines
1.8 KiB
C++
84 lines
1.8 KiB
C++
#include <string.h>
|
||
#include "proboard.hpp"
|
||
|
||
struct gif_header
|
||
{
|
||
char sign[6];
|
||
word xres;
|
||
word yres;
|
||
word colorbits : 3;
|
||
sword dummy : 5;
|
||
};
|
||
|
||
void
|
||
view_gif(char *data)
|
||
{
|
||
char gifname[13];
|
||
|
||
io << "\f\n" << S_SHOW_GIF_INFO_TITLE_AND_PROMPT;
|
||
|
||
io.read(gifname,12,READMODE_UPALL);
|
||
if(!gifname[0]) return;
|
||
|
||
String param[40];
|
||
BitArray arealist(MAX_FILE_AREAS,1);
|
||
|
||
int npara = parse_data(data,param);
|
||
|
||
create_arealist(param,npara,arealist);
|
||
|
||
FileArea fa;
|
||
|
||
io << form("\n\n\7 矬闡闡闡闡闡闡鐃闡闡闡闡闡闡薩闡闡闡醴\n"
|
||
" 許3 %-13.13s\7許3 %-11.11s\7許3 %-7.7s\7許n"
|
||
" ⼳迋迋迋迋迋迋阹迋迋迋迋迋迋媏迋迋迋芚\n",
|
||
S_SHOW_GIF_FILENAME ,
|
||
S_SHOW_GIF_RESOLUTION ,
|
||
S_SHOW_GIF_COLORS );
|
||
|
||
linecounter(2);
|
||
stopped=0;
|
||
io.enablestop();
|
||
|
||
for(int i=1;i<=FileArea::highAreaNum();i++)
|
||
{
|
||
if(!arealist[i] || !fa.read(i) || !check_access(fa.level,fa.flags,fa.flagsNot)) continue;
|
||
|
||
String fname(fa.filepath);
|
||
fname << gifname;
|
||
|
||
DirScan f(fname);
|
||
|
||
while(int(f))
|
||
{
|
||
File fil;
|
||
|
||
if(fil.open(FileName(fa.filepath,f.name())))
|
||
{
|
||
gif_header gif;
|
||
fil.read(&gif,sizeof(gif));
|
||
|
||
if(!strncmp(gif.sign,"GIF",3))
|
||
{
|
||
io << form(" <20> \3%-12s\7 <20>",f.name());
|
||
io << form("\6 %4d x %3d \7許2 %3d \7許n",gif.xres,gif.yres,1 << (gif.colorbits+1));
|
||
|
||
if(stopped || linecounter())
|
||
{
|
||
i = FileArea::highAreaNum();
|
||
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
++f;
|
||
}
|
||
}
|
||
|
||
if(!stopped)
|
||
io << " 奜迋迋迋迋迋迋迍迋迋迋迋迋迋玵迋迋迋芴\n\n"
|
||
<< S_PRESS_ENTER_TO_CONTINUE;
|
||
}
|
||
|