Subversion Repositories Kolibri OS

Rev

Rev 1958 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1958 Rev 2163
Line 47... Line 47...
47
	mov [image_file],eax
47
	mov	[image_file],eax
48
	mov  esi,[eax+28]
48
	mov	esi,[eax+28]
49
	add  esi,eax
49
	add	esi,eax
50
	mov  edi,esi
50
	mov	edi,esi
51
	mov  ecx,[eax+32]
51
	mov	ecx,[eax+32]
52
;	xor  ebx,ebx
-
 
53
;	mov  [raw_area],ebx
-
 
54
 
-
 
55
;	mov  ebx,[pointer]
-
 
56
;	movzx  eax,word [eax+18]
-
 
57
;	mov  [ebx+24],eax
-
 
58
;	jmp  .ret_ok
-
 
Line 59... Line 52...
59
	
52
	
60
	cmp [eax+16],word 16
53
	cmp	[eax+16],word 16
61
	je  .16b
54
	je	.16b
62
	cmp [eax+12],dword 1
55
	cmp	[eax+12],dword 1
Line 65... Line 58...
65
	je  .2b
58
	je	.2b
66
	cmp [eax+12],dword 4
59
	cmp	[eax+12],dword 4
67
	je  .4b
60
	je	.4b
68
;---------------------------------------------------------------------
61
;---------------------------------------------------------------------
69
.ret_ok:
62
.ret_ok:
70
;	mov ebx,[pointer]	
-
 
71
;	mov  eax,[raw_area]
-
 
72
;	mov  [ebx+20],eax  ; store RAW pointer
-
 
73
;	mov  [ebx+24],ecx
-
 
74
 
-
 
75
	mov  ebx,[image_file]
63
	mov	ebx,[image_file]
76
	cmp  [ebx+18],word 2
64
	cmp	[ebx+18],word 2
77
	jne  @f
65
	jne	@f
78
	mov  eax,[ebx+12]
66
	mov	eax,[ebx+12]
79
	shr  eax,1
67
	shr	eax,1
80
	mov  [ebx+12],eax
68
	mov	[ebx+12],eax
81
@@:
69
@@:
82
	
-
 
83
	popad
70
	popad
84
	ret	4
71
	ret	4
85
;---------------------------------------------------------------------	
72
;---------------------------------------------------------------------	
86
.less_8b:
73
.less_8b:
87
	mov edx,[image_file]
74
	mov	edx,[image_file]
88
	mov ecx,[area_size]
75
	mov	ecx,[area_size]
89
	add ecx,[edx+28]
76
	add	ecx,[edx+28]
90
	mcall 68,20
77
	mcall	68,20
91
	mov  [image_file],eax
78
	mov	[image_file],eax
Line 92... Line -...
92
 
-
 
93
	
79
 
94
	mov ecx,[area_size]
80
	mov	ecx,[area_size]
95
	mov  eax,ecx
81
	mov	eax,ecx
96
	shr  ecx,2
82
	shr	ecx,2
97
	test eax,3
83
	test	eax,3
Line 102... Line 88...
102
	mov  edi,[image_file]
88
	mov	edi,[image_file]
103
	add  edi,[edi+28]
89
	add	edi,[edi+28]
104
	cld  
90
	cld  
105
	rep movsd
91
	rep	movsd
Line 106... Line 92...
106
		
92
 
107
	mov  ecx,[raw_area]
-
 
108
	mcall 68,13
93
	mcall	68,13,[raw_area]
109
	mov eax,[image_file]
94
	mov	eax,[image_file]
110
	mov ebx,[pointer]
95
	mov	ebx,[pointer]
111
	mov [ebx+4],eax
96
	mov	[ebx+4],eax
112
	popad
97
	popad
113
	ret	4
98
	ret	4
114
;---------------------------------------------------------------------	
99
;---------------------------------------------------------------------	
-
 
100
.16b:
115
.16b:
101
; eax - RAW image_file
116
	cmp  [eax+18],word 3
102
	cmp	[eax+18],word 3
117
	je   @f   ;.convert_16_in_8
103
	je	@f
118
	cmp  [eax+18],word 4
104
	cmp	[eax+18],word 4
119
	jne  .16b_1
105
	jne	.16b_1
120
@@:
106
@@:
121
	xor  ebx,ebx
107
	xor	ebx,ebx
Line 132... Line 118...
132
	mov  ebx,[eax+12]
118
	mov	ebx,[eax+12]
133
	shr  ebx,1
119
	shr	ebx,1
134
	mov  [eax+12],ebx
120
	mov	[eax+12],ebx
Line 135... Line 121...
135
 
121
 
136
	mov  ebx,eax
-
 
Line 137... Line 122...
137
;	jmp  .ret_ok
122
	mov	ebx,eax
138
	
123
	
139
.convert_16_in_8:   ; converting 16 bit sample to 8 bit
124
.convert_16_in_8:   ; converting 16 bit sample to 8 bit
140
	cld
125
	cld
Line 156... Line 141...
156
	mov al,ah
141
	mov	al,ah
157
	stosb
142
	stosb
158
@@:   
143
@@:   
159
	dec ecx
144
	dec	ecx
160
	jnz .convert_16_in_8 
145
	jnz	.convert_16_in_8
-
 
146
	
161
	jmp .16b_end
147
	jmp	.16b_end
162
;---------------------------------------------------------------------
148
;---------------------------------------------------------------------
163
.16b_1:
149
.16b_1:
-
 
150
; eax - RAW image_file
164
	cmp  [eax+18],word 1
151
	cmp	[eax+18],word 1
165
	je   @f  ;.convert_16_in_8_1
152
	je	@f
166
	cmp  [eax+18],word 2
153
	cmp	[eax+18],word 2
167
	jne  .16b_end
154
	jne	.16b_end
168
@@:
155
@@:
169
	shr  ecx,1
156
	shr	ecx,1
Line 174... Line 161...
174
	mov  [eax+12],ebx
161
	mov	[eax+12],ebx
Line 175... Line 162...
175
	
162
	
176
.convert_16_in_8_1:
163
.convert_16_in_8_1:
177
	cld
164
	cld
178
	lodsw
-
 
179
;	shr ax,8
-
 
180
;	mov al,ah
165
	lodsw
181
	stosb
166
	stosb
182
	dec ecx
167
	dec	ecx
183
	jnz .convert_16_in_8_1
168
	jnz	.convert_16_in_8_1
184
;---------------------------------------------------------------------
169
;---------------------------------------------------------------------
Line 208... Line 193...
208
	pop  edi ebx
193
	pop	edi ebx
209
	add  edi,edx
194
	add	edi,edx
210
	dec  ecx
195
	dec	ecx
211
	jnz  .4b_1
196
	jnz	.4b_1
Line 212... Line 197...
212
	
197
	
213
	jmp .less_8b  ;.ret_ok
198
	jmp	.less_8b
214
;---------------------------------------------------------------------
199
;---------------------------------------------------------------------
215
.2b:
200
.2b:
216
	call .get_memory
-
 
217
;	jmp .ret_ok
-
 
218
;	shr  ecx,1
201
	call	.get_memory
219
	mov  edx,ebx
202
	mov	edx,ebx
220
	mov  eax,ebx
203
	mov	eax,ebx
221
	shr  ebx,2
204
	shr	ebx,2
222
	test eax,3
205
	test	eax,3
Line 257... Line 240...
257
	
240
	
258
	add  edi,edx
241
	add	edi,edx
259
	dec  ecx
242
	dec	ecx
Line 260... Line 243...
260
	jnz  .2b_1
243
	jnz	.2b_1
261
	
244
	
262
	jmp .less_8b  ;.ret_ok
245
	jmp	.less_8b
263
;---------------------------------------------------------------------
246
;---------------------------------------------------------------------
264
.1b:
247
.1b:
265
	call .get_memory
248
	call	.get_memory
Line 292... Line 275...
292
	and  al,1b
275
	and	al,1b
293
	shl  eax,8
276
	shl	eax,8
Line 294... Line 277...
294
	
277
	
295
	mov  al,bl
278
	mov	al,bl
296
	shr  al,7
-
 
297
;	and  al,1b
-
 
Line 298... Line 279...
298
;	shl  eax,8
279
	shr	al,7
Line 299... Line 280...
299
	
280
	
300
	stosd
281
	stosd
Line 324... Line 305...
324
	pop  edi ebp
305
	pop	edi ebp
Line 325... Line 306...
325
	
306
	
326
	add  edi,edx
307
	add	edi,edx
327
	dec  ecx
308
	dec	ecx
-
 
309
	jnz	.1b_1
328
	jnz  .1b_1
310
 
329
	jmp .less_8b  ;.ret_ok	
311
	jmp	.less_8b
330
;---------------------------------------------------------------------
312
;---------------------------------------------------------------------
-
 
313
.get_memory:
331
.get_memory:
314
; eax - RAW image_file
332
	mov  ebx,dword 8
315
	mov	ebx,dword 8
333
	mov  [eax+16],bx
316
	mov	[eax+16],bx
334
	mov  [eax+12],ebx
-
 
335
;	mov  esi,[eax+28]
-
 
336
;	add  esi,eax
-
 
337
;	push ecx
317
	mov	[eax+12],ebx
338
	mov  ecx,[eax+4]
318
	mov	ecx,[eax+4]
339
	imul ecx,[eax+8]
319
	imul	ecx,[eax+8]
340
	push eax
320
	push	eax
341
	mov  [area_size],ecx
321
	mov	[area_size],ecx
342
	mcall 68,12
-
 
343
;	pop  ecx
322
	mcall	68,12
344
	mov  [raw_area],eax
323
	mov	[raw_area],eax
345
	mov  edi,eax
324
	mov	edi,eax
346
	pop  eax
325
	pop	eax
347
	mov  ebx,[eax+4]
326
	mov	ebx,[eax+4]
Line 363... Line 342...
363
	
342
	
364
	mov  ecx,[eax+4]
343
	mov	ecx,[eax+4]
365
	imul ecx,[eax+8]
344
	imul	ecx,[eax+8]
366
	push eax ecx
345
	push	eax ecx
367
	lea  ecx,[ecx*3]
346
	lea	ecx,[ecx*3]
-
 
347
	mov	edx,ecx
-
 
348
	add	ecx,44		; header
368
	mcall 68,12
349
	mcall	68,12		;get new RAW area
369
	mov  [raw_area],eax
350
	mov	[raw_area],eax
-
 
351
	mov	edi,eax
-
 
352
	
-
 
353
	push	esi
-
 
354
	mov	esi,[image_file]
-
 
355
	mov	ecx,3
-
 
356
	cld
-
 
357
	rep	movsd			;copy the 3 first dword for the structure of RAW
-
 
358
	pop	esi
-
 
359
	
-
 
360
	sub	edi,12
-
 
361
	mov	[edi+12],dword 24	;overall depth of the pixel
-
 
362
	mov	[edi+16],word 8		;channel depth of the pixel
-
 
363
	xor	eax,eax
-
 
364
	mov	[edi+20],eax		;palette area pointer
-
 
365
	mov	[edi+24],eax		;palette area size
-
 
366
	mov	[edi+28],dword 44	;rgb area pointer
-
 
367
	mov	[edi+32],edx		;rgb area size
-
 
368
	mov	[edi+36],eax		;transparency area pointer
370
	mov  edi,eax
369
	mov	[edi+40],eax		;transparency area size
Line -... Line 370...
-
 
370
	pop	ecx eax
-
 
371
	
371
	pop  ecx eax
372
	add	edi,44
372
 
373
 
373
	cmp [eax+12],dword 32
374
	cmp	[eax+12],dword 32
374
	je  .32b
375
	je	.32b
375
	cmp [eax+12],dword 16
376
	cmp	[eax+12],dword 16
Line 383... Line 384...
383
	mov ebx,[pointer]
384
	mov	ebx,[pointer]
384
	mov  eax,[raw_area]
385
	mov	eax,[raw_area]
385
	mov  [ebx+20],eax  ; store RAW pointer
386
	mov	[ebx+20],eax  ; store RAW pointer
386
	popad
387
	popad
387
	ret	4
388
	ret	4
388
 
-
 
389
;---------------------------------------------------------------------
389
;---------------------------------------------------------------------
390
.32b:
390
.32b:
391
	cld
391
	cld
392
	lodsd
392
	lodsd
393
	
-
 
394
	stosw
393
	stosw
395
	shr eax,16
394
	shr	eax,16
396
	stosb
395
	stosb
Line 397... Line 396...
397
	
396
	
Line 480... Line 479...
480
	jmp  .ret_ok
479
	jmp	.ret_ok
481
;---------------------------------------------------------------------
480
;---------------------------------------------------------------------
482
align 16
481
align 16
483
EXPORTS:
482
EXPORTS:
484
	dd      szStart,	START
483
	dd szStart,	START
485
	dd      szVersion,	0x00010002
484
	dd szVersion,	0x00010003
486
	dd	szConv_24b,	Convert24b
485
	dd szConv_24b,	Convert24b
487
	dd      0
486
	dd 0
Line 488... Line 487...
488
 
487
 
489
szStart		db 'START',0
488
szStart		db 'START',0