Subversion Repositories Kolibri OS

Rev

Rev 4994 | Rev 5002 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4994 Rev 4995
Line 15... Line 15...
15
;ä®à¬ âë ¤ ­­ëå
15
;ä®à¬ âë ¤ ­­ëå
16
tag_format_ui1b  equ  1 ;unsigned integer 1 byte
16
tag_format_ui1b  equ  1 ;unsigned integer 1 byte
17
tag_format_text  equ  2 ;ascii string
17
tag_format_text  equ  2 ;ascii string
18
tag_format_ui2b  equ  3 ;unsigned integer 2 byte
18
tag_format_ui2b  equ  3 ;unsigned integer 2 byte
19
tag_format_ui4b  equ  4 ;unsigned integer 4 byte
19
tag_format_ui4b  equ  4 ;unsigned integer 4 byte
20
tag_format_ui8b  equ  5 ;unsigned integer 8 byte
20
tag_format_urb   equ  5 ;unsigned integer 4/4 byte
21
tag_format_si1b  equ  6 ;signed integer 1 byte
21
tag_format_si1b  equ  6 ;signed integer 1 byte
22
tag_format_undef equ  7 ;undefined
22
tag_format_undef equ  7 ;undefined
23
tag_format_si2b  equ  8 ;signed integer 2 byte
23
tag_format_si2b  equ  8 ;signed integer 2 byte
24
tag_format_si4b  equ  9 ;signed integer 4 byte
24
tag_format_si4b  equ  9 ;signed integer 4 byte
25
tag_format_si8b  equ 10 ;signed integer 8 byte
25
tag_format_srb   equ 10 ;signed integer 4/4 byte
26
tag_format_f4b	 equ 11 ;float 4 byte
26
tag_format_f4b	 equ 11 ;float 4 byte
27
tag_format_f8b	 equ 12 ;float 8 byte
27
tag_format_f8b	 equ 12 ;float 8 byte
Line 28... Line 28...
28
 
28
 
29
align 4
29
align 4
-
 
30
txt_dp db ': ',0
Line 30... Line 31...
30
txt_dp db ': ',0
31
txt_div db '/',0
31
 
32
 
32
;
33
;
Line 50... Line 51...
50
db 0x82,0x98,'Copyright',0
51
db 0x82,0x98,'Copyright',0
51
db 0x87,0x69,'Exif offset',0
52
db 0x87,0x69,'Exif offset',0
Line 52... Line 53...
52
 
53
 
Line -... Line 54...
-
 
54
db 0x88,0x25,'GPS Info',0
-
 
55
 
-
 
56
db 0xa4,0x01,'Custom rendered',0
-
 
57
db 0xa4,0x02,'Exposure mode',0
-
 
58
db 0xa4,0x03,'White balance',0
-
 
59
db 0xa4,0x04,'Digital zoom ratio',0
-
 
60
db 0xa4,0x05,'Focal length in 35mm format',0
-
 
61
db 0xa4,0x06,'Scene capture type',0
-
 
62
db 0xa4,0x07,'Gain control',0
-
 
63
db 0xa4,0x08,'Contrast',0
-
 
64
db 0xa4,0x09,'Saturation',0
-
 
65
db 0xa4,0x0a,'Sharpness',0
-
 
66
db 0xa4,0x0b,'Device setting description',0
-
 
67
db 0xa4,0x0c,'Subject distance range',0
-
 
68
db 0xa4,0x20,'Image unique ID',0
-
 
69
db 0xa4,0x30,'Owner name',0
-
 
70
db 0xa4,0x31,'Serial number',0
-
 
71
db 0xa4,0x32,'Lens info',0
-
 
72
db 0xa4,0x33,'Lens make',0
-
 
73
db 0xa4,0x34,'Lens model',0
-
 
74
db 0xa4,0x35,'Lens serial number',0
-
 
75
db 0xa4,0x80,'GDAL metadata',0
-
 
76
db 0xa4,0x81,'GDAL no data',0
-
 
77
db 0xa5,0x00,'Gamma',0
-
 
78
db 0xaf,0xc0,'Expand software',0
-
 
79
db 0xaf,0xc1,'Expand lens',0
-
 
80
db 0xaf,0xc2,'Expand film',0
-
 
81
db 0xaf,0xc3,'Expand filterLens',0
-
 
82
db 0xaf,0xc4,'Expand scanner',0
-
 
83
db 0xaf,0xc5,'Expand flash lamp',0
53
db 0x88,0x25,'GPS Info',0
84
 
Line 54... Line 85...
54
 
85
db 0xea,0x1c,'Padding',0
55
dw 0
86
dw 0
Line 156... Line 187...
156
 
187
 
157
	;ª®¯¨à㥬 áâபã
188
	;ª®¯¨à㥬 áâபã
158
	add esi,2
189
	add esi,2
Line -... Line 190...
-
 
190
	stdcall str_n_cat,edi,esi,[t_max]
-
 
191
 
-
 
192
	jmp @f
-
 
193
	.tag_unknown:
-
 
194
		mov dword[edi],'???'
-
 
195
		mov byte[edi+3],0
159
	stdcall str_n_cat,edi,esi,[t_max]
196
	@@:
160
 
197
 
161
	;ç¨â ¥¬ ¨­ä®à¬ æ¨î ¢ ⥣¥
198
	;ç¨â ¥¬ ¨­ä®à¬ æ¨î ¢ ⥣¥
162
	mov bx,tag_format_text
199
	mov bx,tag_format_text
163
	bt edx,0
200
	bt edx,0
164
	jnc @f
201
	jnc @f
165
		ror bx,8
202
		ror bx,8
166
	@@:
203
	@@:
167
	cmp word[eax+2],bx
204
	cmp word[eax+2],bx
168
	jne .tag_02
205
	jne .tag_02
169
		stdcall str_n_cat,edi,txt_dp,[t_max]
-
 
170
		;¯à®¢¥à塞 ¤«¨­­ã áâப¨
-
 
171
		mov ebx,dword[eax+4]
-
 
172
		bt edx,0
-
 
173
		jnc @f
-
 
174
			ror bx,8
-
 
175
			ror ebx,16
-
 
176
			ror bx,8
206
		stdcall str_n_cat,edi,txt_dp,[t_max]
177
		@@:
207
		call get_tag_data_size ;¯à®¢¥à塞 ¤«¨­­ã áâப¨
178
		cmp ebx,4
208
		cmp ebx,4
179
		jg @f
209
		jg @f
180
			;¥á«¨ áâப  ¯®¬¥é ¥âáï ¢ 4 ᨬ¢®« 
210
			;¥á«¨ áâப  ¯®¬¥é ¥âáï ¢ 4 ᨬ¢®« 
Line 192... Line 222...
192
			ror si,8
222
			ror si,8
193
		@@:
223
		@@:
194
		add esi,offs_m_or_i
224
		add esi,offs_m_or_i
195
		add esi,[app1]
225
		add esi,[app1]
196
		stdcall str_n_cat,edi,esi,[t_max]
226
		stdcall str_n_cat,edi,esi,[t_max]
197
		;;;jmp .end_f
227
		jmp .end_f
198
	.tag_02:
228
	.tag_02:
Line -... Line 229...
-
 
229
 
-
 
230
	mov bx,tag_format_ui2b
-
 
231
	bt edx,0
-
 
232
	jnc @f
-
 
233
		ror bx,8
-
 
234
	@@:
-
 
235
	cmp word[eax+2],bx
-
 
236
	jne .tag_03
-
 
237
		stdcall str_n_cat,edi,txt_dp,[t_max]
-
 
238
		call get_tag_data_size
-
 
239
		cmp ebx,1
-
 
240
		jg .over4b_03
-
 
241
			;¥á«¨ ®¤­® 2 ¡ ©â®¢®¥ ç¨á«®
-
 
242
			movzx ebx,word[eax+8]
-
 
243
			bt edx,0
-
 
244
			jnc @f
-
 
245
				ror bx,8
-
 
246
			@@:
-
 
247
			stdcall str_len,edi
-
 
248
			add edi,eax
-
 
249
			mov eax,ebx
-
 
250
			call convert_int_to_str ;[t_max]
-
 
251
		.over4b_03:
199
 
252
			;...
200
	jmp .end_f
253
		jmp .end_f
-
 
254
	.tag_03:
-
 
255
 
-
 
256
	mov bx,tag_format_ui4b
-
 
257
	bt edx,0
-
 
258
	jnc @f
-
 
259
		ror bx,8
-
 
260
	@@:
-
 
261
	cmp word[eax+2],bx
-
 
262
	jne .tag_04
-
 
263
		stdcall str_n_cat,edi,txt_dp,[t_max]
-
 
264
		call get_tag_data_size
-
 
265
		cmp ebx,1
-
 
266
		jg .over4b_04
-
 
267
			;¥á«¨ ®¤­® 4 ¡ ©â®¢®¥ ç¨á«®
-
 
268
			mov ebx,dword[eax+8]
-
 
269
			bt edx,0
-
 
270
			jnc @f
-
 
271
				ror bx,8
-
 
272
				ror ebx,16
-
 
273
				ror bx,8
-
 
274
			@@:
-
 
275
			stdcall str_len,edi
-
 
276
			add edi,eax
-
 
277
			mov eax,ebx
-
 
278
			call convert_int_to_str ;[t_max]
-
 
279
		.over4b_04:
-
 
280
			;...
-
 
281
		jmp .end_f
-
 
282
	.tag_04:
-
 
283
 
-
 
284
	mov bx,tag_format_urb
-
 
285
	bt edx,0
-
 
286
	jnc @f
-
 
287
		ror bx,8
-
 
288
	@@:
-
 
289
	cmp word[eax+2],bx
-
 
290
	jne .tag_05
-
 
291
		stdcall str_n_cat,edi,txt_dp,[t_max]
-
 
292
		;call get_tag_data_size
-
 
293
		;cmp ebx,1
201
	.tag_unknown:
294
		;jg .over4b_05
-
 
295
			mov ebx,dword[eax+8]
-
 
296
			bt edx,0
-
 
297
			jnc @f
-
 
298
				ror bx,8
-
 
299
				ror ebx,16
-
 
300
				ror bx,8
-
 
301
			@@:
-
 
302
			stdcall str_len,edi
-
 
303
			add edi,eax
-
 
304
			add ebx,offs_m_or_i
-
 
305
			add ebx,[app1]
-
 
306
			mov eax,[ebx]
-
 
307
			bt edx,0
-
 
308
			jnc @f
-
 
309
				ror ax,8
-
 
310
				ror eax,16
-
 
311
				ror ax,8
-
 
312
			@@:
-
 
313
			call convert_int_to_str ;áâ ¢¨¬ 1-¥ ç¨á«®
-
 
314
			stdcall str_n_cat,edi,txt_div,[t_max] ;áâ ¢¨¬ §­ ª ¤¥«¥­¨ï
-
 
315
			stdcall str_len,edi
202
		mov dword[edi],'???'
316
			add edi,eax
-
 
317
			mov eax,[ebx+4]
-
 
318
			bt edx,0
-
 
319
			jnc @f
-
 
320
				ror ax,8
-
 
321
				ror eax,16
-
 
322
				ror ax,8
-
 
323
			@@:
-
 
324
			call convert_int_to_str ;áâ ¢¨¬ 2-¥ ç¨á«®
-
 
325
		;.over4b_05:
-
 
326
			;...
-
 
327
		;jmp .end_f
-
 
328
	.tag_05:
203
		mov byte[edi+3],0
329
 
204
	.end_f:
330
	.end_f:
205
popad
331
popad
206
	ret
332
	ret
Line -... Line 333...
-
 
333
endp
-
 
334
 
-
 
335
;input:
-
 
336
; eax - tag pointer
-
 
337
; edx - 1 if 'MM', 0 if 'II'
207
endp
338
;output:
208
 
339
; ebx - data size
209
align 4
340
align 4
-
 
341
get_tag_data_size:
-
 
342
	mov ebx,dword[eax+4]
-
 
343
	bt edx,0
-
 
344
	jnc @f
-
 
345
		ror bx,8
210
proc exif_get_image_160_120 uses edi, app1:dword
346
		ror ebx,16
211
	mov edi,[app1]
347
		ror bx,8
212
 
-
 
Line 213... Line 348...
213
	ret
348
	@@:
214
endp
349
	ret
215
 
350
 
216
align 4
351
align 4
Line 239... Line 374...
239
	@@:
374
	@@:
240
	sub eax,[str1]
375
	sub eax,[str1]
241
	ret
376
	ret
242
endp
377
endp
Line -... Line 378...
-
 
378
 
-
 
379
;input:
-
 
380
; eax = value
-
 
381
; edi = string buffer
-
 
382
;output:
-
 
383
align 4
-
 
384
convert_int_to_str:
-
 
385
	pushad
-
 
386
		mov dword[edi+1],0
-
 
387
		mov dword[edi+5],0
-
 
388
		call .str
-
 
389
	popad
-
 
390
	ret
-
 
391
 
-
 
392
align 4
-
 
393
.str:
-
 
394
	mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
-
 
395
    ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
-
 
396
	cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
-
 
397
	jb @f
-
 
398
		xor edx,edx  ;®ç¨áâ¨âì edx
-
 
399
		div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
-
 
400
		push edx     ;¯®«®¦¨âì ¢ á⥪
-
 
401
		;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
-
 
402
		call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
-
 
403
		pop eax
-
 
404
	@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
-
 
405
	or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥
-
 
406
	stosb	    ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
-
 
407
	ret	      ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
-
 
408
 
-
 
409
 
243
 
410
 
244
align 16
411
align 16
245
EXPORTS:
412
EXPORTS:
246
	dd sz_exif_get_app1, exif_get_app1
413
	dd sz_exif_get_app1, exif_get_app1
247
	dd sz_exif_get_app1_tag, exif_get_app1_tag
-
 
248
	;dd sz_exif_get_image_160_120, exif_get_image_160_120
414
	dd sz_exif_get_app1_tag, exif_get_app1_tag
249
	dd 0,0
415
	dd 0,0
250
	sz_exif_get_app1 db 'exif_get_app1',0
416
	sz_exif_get_app1 db 'exif_get_app1',0
251
	sz_exif_get_app1_tag db 'exif_get_app1_tag',0
-
 
252
	;sz_exif_get_image_160_120 db 'exif_get_image_160_120',0
-