1 |
UNIT Unit5_preview; |
2 |
INTERFACE |
3 |
USES |
4 |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
5 |
Dialogs, Math, ExtCtrls, Unit2_functions, Unit3_data, Unit4_exporters, Unit6_imgfuncs, |
6 |
StdCtrls; |
7 |
|
8 |
TYPE |
9 |
TForm5 = Class(TForm) |
10 |
img: TImage; |
11 |
timer: TTimer; |
12 |
panel_buttons: TPanel; |
13 |
btn_dec: TButton; |
14 |
btn_startstop: TButton; |
15 |
btn_inc: TButton; |
16 |
PROCEDURE btn_incClick(Sender: TObject); |
17 |
PROCEDURE btn_decClick(Sender: TObject); |
18 |
PROCEDURE FormResize(Sender: TObject); |
19 |
PROCEDURE btn_startstopClick(Sender: TObject); |
20 |
PROCEDURE panel_buttonsResize(Sender: TObject); |
21 |
PROCEDURE timerTimer(Sender: TObject); |
22 |
PROCEDURE FormCreate(Sender: TObject); |
23 |
PROCEDURE FormCloseQuery(Sender: TObject; var CanClose: Boolean); |
24 |
PROCEDURE ShowPreview(fileid:LongWord); |
25 |
PRIVATE |
26 |
PUBLIC |
27 |
END; |
28 |
|
29 |
VAR |
30 |
Form5: TForm5; |
31 |
|
32 |
IMPLEMENTATION |
33 |
{$R *.dfm} |
34 |
USES Unit1_main; |
35 |
VAR |
36 |
memstreams:Array OF TMemoryStream; |
37 |
actualimg:Byte; |
38 |
_fileid:LongWord; |
39 |
|
40 |
PROCEDURE PreviewTXMB; |
41 |
VAR |
42 |
data:Tdata; |
43 |
img:TImgPackage; |
44 |
BEGIN |
45 |
SetLength(memstreams,1); |
46 |
img:=LoadTXMBconnected(_fileid); |
47 |
data:=ImgdataToBmp(img.imgx,img.imgy,img.imgdepth,img.storetype,img.imgdata); |
48 |
|
49 |
memstreams[0].Clear; |
50 |
memstreams[0].Write(data[0],Length(data)); |
51 |
memstreams[0].Seek(0,soFromBeginning); |
52 |
|
53 |
Form5.img.Picture.Bitmap.LoadFromStream(memstreams[0]); |
54 |
END; |
55 |
|
56 |
PROCEDURE PreviewTXMP; |
57 |
VAR |
58 |
data:Tdata; |
59 |
img:TImgPackage; |
60 |
BEGIN |
61 |
SetLength(memstreams,1); |
62 |
img:=LoadImgData(_fileid); |
63 |
data:=ImgdataToBmp(img.imgx,img.imgy,img.imgdepth,img.storetype,img.imgdata); |
64 |
|
65 |
memstreams[0].Clear; |
66 |
memstreams[0].Write(data[0],Length(data)); |
67 |
memstreams[0].Seek(0,soFromBeginning); |
68 |
|
69 |
Form5.img.Picture.Bitmap.LoadFromStream(memstreams[0]); |
70 |
END; |
71 |
|
72 |
PROCEDURE PreviewTXAN; |
73 |
VAR |
74 |
loop_speed:Word; |
75 |
linkcount:LongWord; |
76 |
link:LongWord; |
77 |
i:Byte; |
78 |
data:Tdata; |
79 |
img:TImgPackage; |
80 |
BEGIN |
81 |
LoadDatFilePart(_fileid,$14,SizeOf(loop_speed),@loop_speed); |
82 |
LoadDatFilePart(_fileid,$1C,SizeOf(linkcount),@linkcount); |
83 |
SetLength(memstreams,linkcount); |
84 |
FOR i:=0 TO linkcount-1 DO BEGIN |
85 |
LoadDatFilePart(_fileid,$20+i*4,SizeOf(link),@link); |
86 |
link:=link DIV 256; |
87 |
IF link=0 THEN link:=_fileid-1; |
88 |
memstreams[i]:=TMemoryStream.Create; |
89 |
img:=LoadImgData(link); |
90 |
data:=ImgdataToBmp(img.imgx,img.imgy,img.imgdepth,img.storetype,img.imgdata); |
91 |
memstreams[i].Clear; |
92 |
memstreams[i].Write(data[0],Length(data)); |
93 |
memstreams[i].Seek(0,soFromBeginning); |
94 |
END; |
95 |
actualimg:=254; |
96 |
Form5.timer.Interval:=Floor(loop_speed*(1/60)*1000); |
97 |
Form5.timer.Enabled:=False; |
98 |
Form5.btn_startstopClick(Form5); |
99 |
Form5.panel_buttons.Visible:=True; |
100 |
END; |
101 |
|
102 |
PROCEDURE TForm5.ShowPreview(fileid:LongWord); |
103 |
BEGIN |
104 |
_fileid:=fileid; |
105 |
Form5.timer.Enabled:=False; |
106 |
Form5.panel_buttons.Visible:=False; |
107 |
Form5.Caption:='Preview '+dat_files[_fileid].FileName; |
108 |
IF dat_files[fileid].Extension='TXAN' THEN PreviewTXAN; |
109 |
IF dat_files[fileid].Extension='TXMB' THEN PreviewTXMB; |
110 |
IF dat_files[fileid].Extension='TXMP' THEN PreviewTXMP; |
111 |
END; |
112 |
|
113 |
PROCEDURE TForm5.FormCloseQuery(Sender: TObject; var CanClose: Boolean); |
114 |
BEGIN |
115 |
CanClose:=False; |
116 |
Form5.Visible:=False; |
117 |
END; |
118 |
|
119 |
PROCEDURE TForm5.FormCreate(Sender: TObject); |
120 |
BEGIN |
121 |
SetLength(memstreams,1); |
122 |
memstreams[0]:=TMemoryStream.Create; |
123 |
Form5.Width:=260; |
124 |
Form5.Height:=300; |
125 |
END; |
126 |
|
127 |
PROCEDURE TForm5.timerTimer(Sender: TObject); |
128 |
BEGIN |
129 |
Inc(actualimg); |
130 |
IF actualimg>=Length(memstreams) THEN actualimg:=0; |
131 |
Form5.img.Picture.Bitmap.LoadFromStream(memstreams[actualimg]); |
132 |
memstreams[actualimg].Seek(0,soFromBeginning); |
133 |
Form5.Caption:='Preview '+dat_files[_fileid].FileName+' ('+IntToStr(actualimg+1)+'/'+IntToStr(Length(memstreams))+')'; |
134 |
END; |
135 |
|
136 |
PROCEDURE TForm5.panel_buttonsResize(Sender: TObject); |
137 |
BEGIN |
138 |
btn_startstop.Width:=panel_buttons.Width-45; |
139 |
btn_inc.Left:=panel_buttons.Width-23; |
140 |
END; |
141 |
|
142 |
PROCEDURE TForm5.btn_startstopClick(Sender: TObject); |
143 |
BEGIN |
144 |
Form5.timer.Enabled:=NOT Form5.timer.Enabled; |
145 |
Form5.btn_dec.Enabled:=NOT Form5.timer.Enabled; |
146 |
Form5.btn_inc.Enabled:=NOT Form5.timer.Enabled; |
147 |
IF Form5.timer.Enabled THEN |
148 |
Form5.btn_startstop.Caption:='Stop automatic' |
149 |
ELSE |
150 |
Form5.btn_startstop.Caption:='Start automatic'; |
151 |
END; |
152 |
|
153 |
PROCEDURE TForm5.FormResize(Sender: TObject); |
154 |
BEGIN |
155 |
IF Form5.Width>=150 THEN BEGIN |
156 |
END ELSE Form5.Width:=150; |
157 |
IF Form5.Height>=150 THEN BEGIN |
158 |
END ELSE Form5.Height:=150; |
159 |
END; |
160 |
|
161 |
PROCEDURE TForm5.btn_decClick(Sender: TObject); |
162 |
BEGIN |
163 |
IF actualimg>0 THEN |
164 |
Dec(actualimg) |
165 |
ELSE |
166 |
actualimg:=High(memstreams); |
167 |
Form5.Caption:='Preview '+dat_files[_fileid].FileName+' ('+IntToStr(actualimg+1)+'/'+IntToStr(Length(memstreams))+')'; |
168 |
Form5.img.Picture.Bitmap.LoadFromStream(memstreams[actualimg]); |
169 |
memstreams[actualimg].Seek(0,soFromBeginning); |
170 |
END; |
171 |
|
172 |
PROCEDURE TForm5.btn_incClick(Sender: TObject); |
173 |
BEGIN |
174 |
IF actualimg<High(memstreams) THEN |
175 |
Inc(actualimg) |
176 |
ELSE |
177 |
actualimg:=0; |
178 |
Form5.Caption:='Preview '+dat_files[_fileid].FileName+' ('+IntToStr(actualimg+1)+'/'+IntToStr(Length(memstreams))+')'; |
179 |
Form5.img.Picture.Bitmap.LoadFromStream(memstreams[actualimg]); |
180 |
memstreams[actualimg].Seek(0,soFromBeginning); |
181 |
END; |
182 |
|
183 |
END. |