Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1951 mario79 1
;---------------------------------------------------------------------
2
RAW1_processing:
3
;    mov  ebx,[raw_pointer]
4
;	mov  eax,[ebx+16]
5
;	mov  [raw_pointer],eax
6
;	jmp  convert.all_ok
7
	xor  eax,eax
8
	mov  [Repeat_N],eax
9
	inc  eax
10
	mov [RAW1_flag],al
11
 
12
    mov  ebx,[raw_pointer]
13
	mov  [RAW1_pointer],ebx
14
	mov  eax,[ebx+4]
15
	mov  [Total_Repeat_N],eax
16
	cmp  eax,1
17
	jne  @f
18
	xor  eax,eax
19
	mov [RAW1_flag],al
20
@@:
21
;	mov  [test1],eax
22
    mov  eax,[ebx+8]
23
    mov  [img_width],eax
24
    mov  [img_width_2],eax
25
;	mov  [test1],eax
26
	mov  ecx,[ebx+12]
27
    mov  [img_high],ecx
28
    mov  [img_high_2],ecx
29
;	mov  [test2],ecx
30
	imul ecx,eax
31
 
32
;	mov  eax,ecx
33
;	shl  ecx,1
34
;	add  ecx,eax
35
	shl  ecx,2
36
 
37
	add  ecx,256*4
38
	add  ecx,44
39
	push  ecx
40
 
41
	mcall 68,12
42
 
43
	mov  [raw_pointer],eax
44
	mov  ebx,[RAW1_pointer]
45
	mov  ecx,[ebx+8]
46
	mov  [eax+4],ecx ; x
47
	mov  ecx,[ebx+12]
48
	mov  [eax+8],ecx ; y
49
	mov  [eax+12],dword 32 ;8
50
	mov  [eax+20],dword 44
51
	mov  [eax+24],dword 1024
52
	mov  [eax+28],dword 44+1024
53
;	mov  [eax+32],
54
 
55
;    mov  [img_palette],eax
56
	add   eax,44+1024
57
    mov   [soi],eax
58
	pop  ecx
59
 
60
	cmp	[Total_Repeat_N],1
61
	je	@f
62
 
63
	sub  ecx,44+1024
64
	mov  [RAW1_size],ecx
65
	mov  edi,[soi]
66
	mov  eax,-1
67
	shr  ecx,2
68
	cld
69
	rep  stosd
70
 
71
	mov ecx,[RAW1_size]
72
	mcall 68,12
73
	mov  [previous_frame_pointer],eax
74
@@:
75
    mov  [img_resolution_2],8
76
    mov  [img_resolution],32
77
 
78
	call copy_next_frame
79
 
80
;	inc  [Repeat_N]
81
;	call copy_next_frame
82
;	inc  [Repeat_N]
83
;	call copy_next_frame
84
;	mov  [Repeat_N],0
85
 
86
	jmp  convert.img_resolution_ok
87
;---------------------------------------------------------------------
88
copy_next_frame:
89
	mov  eax,[RAW1_pointer]
90
	mov  ebx,[eax+8]
91
	mov  [RAW1_size_x],ebx
92
 
93
	mov  eax,[Repeat_N]
94
	shl  eax,4
95
	; eax = (start of current Repeat_N) - 16
96
	add  eax,[RAW1_pointer]
97
	mov  esi,[eax+16]
98
 
99
	; esi = pointer to current RAW
100
;	mov  ebx,[RAW1_pointer]
101
	mov  edi,[RAW1_size_x]  ;[ebx+8]
102
	mov  ebx,[eax+24]
103
	shl  ebx,2
104
	imul edi,ebx
105
	mov  ebx,[eax+20]
106
	shl  ebx,2
107
	add  edi,ebx
108
;	add edi,[raw_pointer]
109
;	add edi,44
110
	add edi,[soi]
111
	; edi = pointer to start for current frame
112
	mov ebx,[eax+28]
113
 
114
	test bx,bx
115
	jnz  @f
116
;	inc  ebx
117
	mov  bx,10
118
@@:
119
	mov [Frame_delay],bx
120
	shr ebx,16
121
	mov [Transp_index],bh
122
 
123
	mov al,bl
124
	shr al,2
125
	and al,111b
126
	mov [Disposal_Method],al
127
;	cmp al,2
128
;	jne  @f
129
;	call save_previous_frame
130
;@@:
131
	cmp al,3
132
	jne  @f
133
	call save_previous_frame
134
@@:
135
	and bl,1b
136
	mov [Transp_flag],bl
137
 
138
	mov ebx,[esi+4] ; X size og current frame
139
	mov ecx,[esi+8] ; Y size og current frame
140
 
141
	mov eax,[esi+20]
142
	add eax,esi
143
	mov [img_palette],eax
144
 
145
	pusha
146
	mov ebx,[raw_pointer]
147
	mov edi,[ebx+20]
148
	add edi,ebx
149
	mov esi,eax
150
	mov ecx,256
151
	xor  eax,eax
152
	cld
153
	rep movsd
154
	popa
155
 
156
	mov eax,[esi+28]
157
	add esi,eax
158
.y:
159
	push edi
160
	push ebx
161
.x:
162
	cld
163
	lodsb
164
	cmp [Transp_flag],0
165
	je @f
166
	cmp [Transp_index],al
167
	jne @f
168
;	cmp [Disposal_Method],2
169
;	jne  .not_disposal_backgr
170
;	mov [edi],dword -1 ; 0xff
171
;	inc edi
172
;.not_disposal_backgr:
173
	add edi,4
174
	jmp .no_store
175
@@:
176
	push ebx edi
177
	mov ebx,[raw_pointer]
178
	mov edi,[ebx+20]
179
	add edi,ebx
180
	and eax,0xff
181
	shl eax,2
182
	add edi,eax
183
	mov eax,[edi]
184
	pop edi ebx
185
	stosd
186
.no_store:
187
	dec  ebx
188
	jnz  .x
189
 
190
	pop  ebx
191
	pop  edi
192
	mov  eax,[RAW1_size_x]
193
	shl  eax,2
194
	add  edi,eax
195
	dec  ecx
196
	jnz .y
197
	inc  [Repeat_N]
198
	mov  eax,[Repeat_N]
199
;	mov  [test2],eax
200
	cmp  [Total_Repeat_N],eax
201
	ja   @f
202
	xor  eax,eax
203
	mov  [Repeat_N],eax
204
@@:
205
    mcall 26,9
206
	movzx ebx,word [Frame_delay]
207
	add eax,ebx
208
	mov [Animation_timer],eax
209
	ret
210
;---------------------------------------------------------------------
211
animation_handler:
212
	mcall 23,1
213
;	pusha
214
;    mcall 26,9
215
;	cmp   [Animation_timer],eax
216
;	ja   @f
217
;	call   .draw_image
218
;@@:
219
;	popa
220
    cmp  [open_file_flag],1
221
	je   kopen_1
222
	cmp  [sort_directory_flag],byte 1
223
	je   red_sort_directory
224
	cmp  [redraw_flag],byte 1
225
	je   redraw_window
226
    cmp  eax,1	; перерисовать окно ?
227
    je     red	; если да - на метку red
228
    cmp  eax,2	; нажата клавиша ?
229
    je     key	; если да - на key
230
    cmp  eax,3	; нажата кнопка ?
231
    je     button     ; если да - на button
232
    cmp   eax,6
233
    je    mouse
234
    mcall 26,9
235
	cmp   [Animation_timer],eax
236
	ja   animation_handler  ;@f
237
.1:
238
	call    .draw_image
239
;	mov  eax,[scaling_mode]
240
;	jmp   zoom_plus.2
241
	jmp  still
242
;@@:
243
;	mcall 23,1
244
;	jmp  still.1
245
;---------------------------------------------------------------------
246
.draw_image:
247
;	mov eax,[Repeat_N]
248
;	test eax,eax
249
;	jz  .first_frame
250
	mov al,[Disposal_Method]
251
	cmp al,2
252
	jne  @f
253
	call restore_background
254
	jmp  .first_frame
255
@@:
256
	cmp al,3
257
	jne  @f
258
	call restore_previous_frame
259
@@:
260
.first_frame:
261
	call copy_next_frame
262
	mov  [no_fill],1
263
	call drawimage
264
	mov  [no_fill],0
265
	ret
266
;---------------------------------------------------------------------
267
restore_background:
268
;	cmp [Transp_flag],0
269
;	je @f
270
;	pusha
271
;	mov  edi,[soi]
272
;	mov  eax,[fill_color] ;  -1
273
;	mov  ecx,[RAW1_size]
274
;	shr ecx,2
275
;	cld
276
;	rep  stosd
277
;	popa
278
;	ret
279
;@@:
280
	pusha
281
	mov  eax,[Repeat_N]
282
	test eax,eax
283
	jz  @f
284
	dec  eax
285
@@:
286
	shl  eax,4
287
	; eax = (start of current Repeat_N) - 16
288
	add  eax,[RAW1_pointer]
289
	mov  esi,[eax+16]
290
	; esi = pointer to current RAW
291
	mov  edi,[RAW1_size_x]  ;[ebx+8]
292
	mov  ebx,[eax+24]
293
	shl  ebx,2
294
	imul edi,ebx
295
	mov  ebx,[eax+20]
296
	shl  ebx,2
297
	add  edi,ebx
298
	add edi,[soi]
299
	; edi = pointer to start for current frame
300
	mov ebx,[esi+4] ; X size og current frame
301
	mov ecx,[esi+8] ; Y size og current frame
302
.y:
303
	push edi
304
	push ebx
305
	mov  eax,[fill_color]
306
.x:
307
	cld
308
	stosd
309
 
310
	dec  ebx
311
	jnz  .x
312
 
313
	pop  ebx
314
	pop  edi
315
	mov  eax,[RAW1_size_x]
316
	shl  eax,2
317
	add  edi,eax
318
	dec  ecx
319
	jnz .y
320
 
321
	popa
322
	ret
323
;---------------------------------------------------------------------
324
restore_previous_frame:
325
	pusha
326
	mov esi,[previous_frame_pointer]
327
	mov edi,[soi]
328
	mov ecx,[RAW1_size]
329
	shr ecx,2
330
	cld
331
	rep movsd
332
	popa
333
	ret
334
;---------------------------------------------------------------------
335
save_previous_frame:
336
	pusha
337
	mov esi,[soi]
338
	mov edi,[previous_frame_pointer]
339
	mov ecx,[RAW1_size]
340
	shr ecx,2
341
	cld
342
	rep movsd
343
	popa
344
	ret
345
;---------------------------------------------------------------------