-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGIF.CPP
83 lines (62 loc) · 1.88 KB
/
GIF.CPP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#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(" � \3%-12s\7 �",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;
}