Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5008 → Rev 5009

/programs/develop/libraries/exif/examples/viev_exif.asm
16,7 → 16,7
include '../../../../dll.inc'
 
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'à®á¬®âà ¨­ä®à¬ æ¨¨ Exif 18.07.14',0 ;¯®¤¯¨áì ®ª­ 
caption db 'à®á¬®âà ¨­ä®à¬ æ¨¨ Exif 23.07.14',0 ;¯®¤¯¨áì ®ª­ 
 
struct FileInfoBlock
Function dd ?
421,13 → 421,9
jne .cycle_0
 
;áç¨â뢠¥¬ ¤®ç¥à­¨¥ ⥣¨ ¤«ï 0x8769
stdcall [exif_get_app1_child], h_app1,h_child,0x8769
stdcall [exif_get_app2], h_app1,h_child
cmp dword[h_child],0
je .no_found_child
;áç¨â뢠¥¬ ¤®ç¥à­¨¥ ⥣¨ ¤«ï 0xa005
stdcall [exif_get_app1_child], h_child,h_child,0xa005
cmp dword[h_child],0
je .no_found_child
 
mov eax,1
sub ebx,5
652,10 → 648,12
exif_get_app1 dd sz_exif_get_app1
exif_get_app1_tag dd sz_exif_get_app1_tag
exif_get_app1_child dd sz_exif_get_app1_child
exif_get_app2 dd sz_exif_get_app2
dd 0,0
sz_exif_get_app1 db 'exif_get_app1',0
sz_exif_get_app1_tag db 'exif_get_app1_tag',0
sz_exif_get_app1_child db 'exif_get_app1_child',0
sz_exif_get_app2 db 'exif_get_app2',0
;exif_get_image_160_120
 
sc system_colors
/programs/develop/libraries/exif/trunk/about.htm
54,7 → 54,7
<li><a href="#f_1">exif_get_app1</a></li>
<li><a href="#f_2">exif_get_app1_tag</a></li>
<li><a href="#f_3">exif_get_app1_child</a></li>
 
<li><a href="#f_4">exif_get_app2</a></li>
</ul>
</li>
<li><a href="#const">Êîíñòàíòû äëÿ ôóíêöèè exif_get_app1_child</a></li>
66,7 → 66,7
<p>Äîêóìåíòàöèÿ ê ñâîáîäíîé áèáëèîòåêå <b>exif.obj</b>, äëÿ <b>ÎÑ Êîëèáðè</b>.
Ýòà áèáëèîòåêà ñîçäàíà äëÿ ïðîñìîòðà èíôîðìàöèè íàõîäÿùåéñÿ â èçîáðàæåíèÿõ â ôîðìàòå Exif. Èíôîðìàöèÿ ýòà ñîçäàåòñÿ öèôðîâûìè ôîòîêàìåðàìè è ñîäåðæèò ðàçíûå ïàðàìåòðû íàïðèìåð òàêèå êàê: íàçâàíèå ôèðìû ïðîèçâîäèòåëÿ, ìîäåëü êàìåðû, è ò.ä.</p>
 
<p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 22.07.14.</p>
<p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 23.07.14.</p>
 
<h1><a name="fun">Ôóíêöèè</a></h1>
 
108,6 → 108,15
<p>0x8769 - êîä òåãà (íàõîäÿùåãîñÿ â ñïèñêå òåãîâ h_app1), êîòîðûé ÿâëÿåòñÿ óêàçàòåëåì íà ñïèñîê äðóãèõ äî÷åðíèõ òåãîâ.</p>
<p> äàíîì ïðèìåðå ôóíêöèÿ áåðåò òåã 0x8769 è ïûòàåòñÿ íàéòè åãî â ñïèñêå h_app1, åñëè íàõîäèò òî çàïîëíÿåò ïî íåìó çíà÷åíèÿ â ñòðóêòóðå h_child. Äàëåå ê ñïèñêó h_child ìîæíî ïðèìåíÿòü ôóíêöèþ exif_get_app1_tag äëÿ âçÿòèÿ çíà÷åíèÿ ýòèõ òåãîâ. Ñ ïîìîùüþ ýòîé ôóíêöèè ìû êàê áû ïåðåõîäèì âíóòðü íåêîé &quot;ïàïêè&quot; ñ òåãàìè, êîòîðûå ñðàçó äîñòàòü íå ìîæåì.</p>
 
<h4><a name="f_4">exif_get_app2</a></h4>
<p>Ýòà ôóíêöèÿ èùåò íà÷àëî äàííûõ Exif.app2. Åñëè îíè íàéäåíû òî çàïîëíÿåòñÿ ñòðóêòóðà app2. Åñëè íå íàéäåíû, òî ïåðâûé ïàðàìåòð â ñòðóêòóðå äåëàåòñÿ ðàâíûì 0. Ïðèìåð:</p>
<pre>stdcall [exif_get_app2], h_app1,h_app2
...
h_app1 dd 0,0,0
h_app2 dd 0,0,0</pre>
<p>ãäå h_app1 - ñòðóêòóðà c äàííûìè Exif.app1, ïðåäâàðèòåëüíî çàïîëíåííàÿ ôóíêöèåé exif_get_app1.</p>
<p>h_app2 - ñòðóêòóðà äëÿ çàïîìèíàíèÿ íà÷àëà äàííûõ Exif.app2.</p>
 
<h1><a name="const">Êîíñòàíòû äëÿ ôóíêöèè exif_get_app1_child</a></h1>
<p>Çäåñü ïðèâåäåíû íåêîòîðûå êîíñòàíòû, êîòîðûå ìîãóò èñïîëüçîâàòñÿ êàê 3-é ïàðàìåòð äëÿ ôóíêöèè exif_get_app1_child. Ýòè êîíñòàíòû îáîçíà÷àþò ñïåöèàëüíûå òåãè, êîòîðûå ñîäåðæàò ñìåùåíèå íà äî÷åðíèå ïàðàìåòðû, êîòîðûå íàõîäÿòñÿ â Exif.</p>
<h4>0x8769</h4>
122,12 → 131,15
exif_get_app1 dd sz_exif_get_app1
exif_get_app1_tag dd sz_exif_get_app1_tag
exif_get_app1_child dd sz_exif_get_app1_child
exif_get_app2 dd sz_exif_get_app2
dd 0,0
sz_exif_get_app1 db 'exif_get_app1',0
sz_exif_get_app1_tag db 'exif_get_app1_tag',0
sz_exif_get_app1_child db 'exif_get_app1_child',0</pre>
sz_exif_get_app1_child db 'exif_get_app1_child',0
sz_exif_get_app2 db 'exif_get_app2',0</pre>
 
<h1><a name="hist">Èñòîðèÿ</a></h1>
<p>15.07.14 - ïåðâàÿ âåðñèÿ áèáëèîòåêè, ïðèìåð èñïîëüçîâàíèÿ.</p>
<p>23.07.14 - äîáàâëåíà ôóíêöèÿ exif_get_app2.</p>
</body>
</html>
/programs/develop/libraries/exif/trunk/exif.asm
28,6 → 28,7
 
align 4
txt_dp db ': ',0
txt_zap db ', ',0
txt_div db '/',0
 
;
212,6 → 213,7
db 0x87,0xaf,'Geo tiff directory',0
db 0x87,0xb0,'Geo tiff double params',0
db 0x87,0xb1,'Geo tiff ascii params',0
db 0x88,0x25,'GPS info',0
db 0x88,0x28,'Opto-Electric conv factor',0
db 0x88,0x29,'Interlace',0
db 0x88,0x5c,'Fax recv params',0
385,7 → 387,6
db 0x82,0x9d,'F number',0
db 0x88,0x22,'Exposure program',0
db 0x88,0x24,'Spectral sensitivity',0
db 0x88,0x25,'GPS info',0
db 0x88,0x27,'ISO',0
db 0x88,0x2a,'Time zone offset',0
db 0x88,0x2b,'Self timer mode',0
681,6 → 682,102
ret
endp
 
;output:
; app2 - 㪠§ â¥«ì ­  ­ ç «® exif.app2 (¨«¨ 0 ¥á«¨ ­¥ ­ ©¤¥­® ¨«¨ ä®à¬ â ä ©«  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï)
align 4
proc exif_get_app2, app1:dword, app2:dword
pushad
mov eax,[app1]
cmp [eax],edx
je .no_suport ;¥á«¨ ­¥ ­ ©¤¥­ 㪠§ â¥«ì ­  ­ ç «® exif.app1
 
mov edi,[app2]
movzx edx,word[eax+offs_m_or_i] ;if 'MM' edx=1
 
;­ ç «® ¯®¨áª  ¯à®¨§¢®¤¨â¥«ï ª ¬¥àë
mov ebx,0x010f
bt edx,0
jnc @f
ror bx,8
@@:
 
;¯à®¢¥à塞 ç¨á«® ⥣®¢
mov eax,[eax]
movzx ecx,word[eax]
bt edx,0
jnc @f
ror cx,8
@@:
cmp ecx,1
jl .no_suport ;¥á«¨ ç¨á«® ⥣®¢ <1
 
;¯¥à¥å®¤¨¬ ­  1-© ⥣
add eax,offs_tag_0
@@:
cmp word[eax],bx
je @f
add eax,tag_size
loop @b
jmp .no_suport ;¥á«¨ ­¥ ­ ©¤¥­®
@@: ;¥á«¨ ­ ©¤¥­®
mov ebx,dword[eax+4]
bt edx,0
jnc @f
ror bx,8
ror ebx,16
ror bx,8
@@:
cmp ebx,4
jle .no_suport ;­ §¢ ­¨¥ ¯à®¨§¢®¤¨â¥«ï ¬¥­ìè¥ 4 ᨬ¢®«®¢, ­¥ ¯®¤¤¥à¦¨ ¢ ¥âáï
 
mov ebx,dword[eax+8]
bt edx,0
jnc @f
ror bx,8
ror ebx,16
ror bx,8
@@:
;¯à®¢¥àª  ¯®¤¤¥à¦¨¢ ¥¬ëå ¯à®¨§¢®¤¨â¥«¥©
mov eax,[app1]
add ebx,[eax+4]
cmp dword[ebx],'Cano'
je .suport
cmp dword[ebx],'NIKO'
je .suport
cmp dword[ebx],'Pana'
je .suport
 
;¢á¥ ®áâ «ì­ë¥ ­¥ ¯®¤¤¥à¦¨¢ îâáï
jmp .no_suport
 
.suport:
;­ å®¤¨¬ ⥣ 0x8769 (à áè¨à¥­­ë¥ ¤ ­­ë¥ ¯® Exif)
stdcall exif_get_app1_child, eax,edi,0x8769
cmp dword[edi],0
je .no_suport
;­ å®¤¨¬ ⥣ 0xa005 (¤ ­­ë¥ Maker ¯® ª ¬¥à¥)
stdcall exif_get_app1_child, edi,edi, 0x927c
cmp dword[edi],0
je .no_suport
 
cmp dword[ebx],'NIKO'
jne @f
add dword[edi],18 ;for Nikon
@@:
cmp dword[ebx],'Pana'
jne @f
add dword[edi],12 ;for Panasonic
@@:
 
jmp @f
.no_suport:
mov dword[edi],0
@@:
popad
ret
endp
 
;description:
; ¢á¯®¬®£ â¥«ì­ ï äã­ªæ¨ï ¤«ï ç⥭¨ï ­ §­ ç¥­¨© ⥣®¢
;input:
732,13 → 829,17
add esi,2
stdcall str_n_cat,edi,esi,[t_max]
 
jmp @f
jmp .start_read
.tag_unknown:
;¥á«¨ ⥣ ­¥ ­ ©¤¥­ áâ ¢¨¬ ¥£® ª®¤ ¢¬¥áâ® ­ §¢ ­¨ï
movzx ebx,word[eax]
bt edx,0
jnc @f
ror bx,8
@@:
stdcall hex_in_str, edi, ebx,4
mov byte[edi+4],0
@@:
.start_read:
 
;ç¨â ¥¬ ¨­ä®à¬ æ¨î ¢ ⥣¥
mov bx,tag_format_ui1b
750,18 → 851,34
jne .tag_01
stdcall str_n_cat,edi,txt_dp,[t_max]
call get_tag_data_size
cmp ebx,4
jg .over4b_01
cmp ebx,1
jg .over4b_01
;¥á«¨ ®¤­® 1 ¡ ©â®¢®¥ ç¨á«®
je @f
or edx,2 ;array data
mov ecx,dword[eax+8]
mov dh,bl
@@:
;¥á«¨ 1 ®¤­® ¡ ©â®¢®¥ ç¨á«®
movzx ebx,byte[eax+8]
;bt edx,0
;jnc @f
; ror bx,8
;@@:
stdcall str_len,edi
add edi,eax
mov eax,ebx
call convert_int_to_str ;[t_max]
bt edx,1
jnc .end_f
@@:
;¥á«¨ ®â 2 ¤® 4 ®¤­® ¡ ©â®¢ëå ç¨á¥«
dec dh
cmp dh,0
je .end_f
shr ecx,8
stdcall str_n_cat,edi,txt_zap,[t_max]
stdcall str_len,edi
add edi,eax
movzx eax,cl
call convert_int_to_str ;[t_max]
jmp @b
.over4b_01:
;...
jmp .end_f
808,8 → 925,16
jne .tag_03
stdcall str_n_cat,edi,txt_dp,[t_max]
call get_tag_data_size
cmp ebx,1
cmp ebx,2
jg .over4b_03
jne @f
;¥á«¨ ¤¢  2 ¡ ©â®¢ëå ç¨á« 
or edx,2 ;array data
movzx ecx,word[eax+10]
bt edx,0
jnc @f
ror cx,8
@@:
;¥á«¨ ®¤­® 2 ¡ ©â®¢®¥ ç¨á«®
movzx ebx,word[eax+8]
bt edx,0
820,6 → 945,14
add edi,eax
mov eax,ebx
call convert_int_to_str ;[t_max]
bt edx,1 ;array ?
jnc .end_f
;¤®¡ ¢«ï¥¬ 2-¥ ç¨á«®
stdcall str_n_cat,edi,txt_zap,[t_max]
stdcall str_len,edi
add edi,eax
mov eax,ecx
call convert_int_to_str ;[t_max]
.over4b_03:
;...
jmp .end_f
1079,7 → 1212,9
dd sz_exif_get_app1, exif_get_app1
dd sz_exif_get_app1_tag, exif_get_app1_tag
dd sz_exif_get_app1_child, exif_get_app1_child
dd sz_exif_get_app2, exif_get_app2
dd 0,0
sz_exif_get_app1 db 'exif_get_app1',0
sz_exif_get_app1_tag db 'exif_get_app1_tag',0
sz_exif_get_app1_child db 'exif_get_app1_child',0
sz_exif_get_app2 db 'exif_get_app2',0