rename 2 functions,

add new function 'exif_get_tag_id'


git-svn-id: svn://kolibrios.org@6322 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA
2016-03-11 16:14:13 +00:00
parent 46c3e64a46
commit 174e0e1523
3 changed files with 140 additions and 51 deletions

View File

@@ -928,8 +928,10 @@ endp
; num - <20><><EFBFBD><EFBFBD><EFA4AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><> (<28><><EFBFBD><E7A8AD><EFBFBD><EFBFBD><EFBFBD> <20> 1)
; txt - 㪠<><E3AAA0><EFBFBD> <20><><><E2A5AA>, <20><20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>
; t_max - <20><><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A7><EFBFBD><><E2A5AA><EFBFBD>
;output:
; txt - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><20> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><E0A0AC><EFBFBD>: <20><><EFBFBD><EFBFBD><E7A5AD>", <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
align 4
proc exif_get_app1_tag, app1:dword, num:dword, txt:dword, t_max:dword
proc exif_get_tag, app1:dword, num:dword, txt:dword, t_max:dword
pushad
mov eax,[app1]
mov edi,[txt]
@@ -967,6 +969,55 @@ popad
ret
endp
;input:
; app1 - 㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD> exif.app1
; id - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4A8AA><EFBFBD><EFBFBD><> <20><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
; txt - 㪠<><E3AAA0><EFBFBD> <20><><><E2A5AA>, <20><20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>
; t_max - <20><><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A7><EFBFBD><><E2A5AA><EFBFBD>
;output:
; txt - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><20> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><E0A0AC><EFBFBD>: <20><><EFBFBD><EFBFBD><E7A5AD>", <20><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
align 4
proc exif_get_tag_id, app1:dword, id:dword, txt:dword, t_max:dword
pushad
mov eax,[app1]
mov edi,[txt]
xor edx,edx
mov byte[edi],dl
cmp [eax],edx
je .end_f ;<3B><20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E3AAA0><EFBFBD> <20><> <20><><EFBFBD> exif.app1
mov ebx,[id]
movzx edx,word[eax+offs_m_or_i] ;if 'MM' edx=1
bt edx,0
jnc @f
ror bx,8
@@:
;<3B><><20><>᫮ ⥣<><E2A5A3>
mov eax,[eax]
movzx ecx,word[eax]
bt edx,0
jnc @f
ror cx,8
@@:
;<3B> ecx - <20><>᫮ ⥣<><E2A5A3>
;<3B><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
add eax,offs_tag_0
.cycle_0:
cmp word[eax],bx ;word[eax+0] - <20><><EFBFBD><>
je @f
add eax,tag_size
loop .cycle_0
jmp .end_f
@@:
stdcall read_tag_value,[app1],[t_max]
.end_f:
popad
ret
endp
;input:
; app1 - 㪠<><E3AAA0><EFBFBD> <20><> exif.app1 <20><><EFBFBD> <20><> exif.app1.child
; child - 㪠<><E3AAA0><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><><E2A5A3> exif.app1.child
@@ -974,7 +1025,7 @@ endp
;output:
; child - 㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><><E2A5A3>
align 4
proc exif_get_app1_child, app1:dword, child:dword , c_tag:dword
proc exif_get_child, app1:dword, child:dword , c_tag:dword
pushad
mov eax,[app1]
mov edi,[child]
@@ -1106,11 +1157,11 @@ pushad
.suport:
;<3B><><EFBFBD><E5AEA4> ⥣ 0x8769 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Exif)
stdcall exif_get_app1_child, eax,edi,0x8769
stdcall exif_get_child, eax,edi,0x8769
cmp dword[edi],0
je .no_suport
;<3B><><EFBFBD><E5AEA4> ⥣ 0x927c (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Maker <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
stdcall exif_get_app1_child, edi,edi, 0x927c
stdcall exif_get_child, edi,edi, 0x927c
cmp dword[edi],0
je .no_suport
@@ -1673,11 +1724,14 @@ align 4
align 16
EXPORTS:
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 sz_exif_get_tag, exif_get_tag
dd sz_exif_get_tag_id, exif_get_tag_id
dd sz_exif_get_child, exif_get_child
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
sz_exif_get_tag db 'exif_get_tag',0
sz_exif_get_tag_id db 'exif_get_tag_id',0
sz_exif_get_child db 'exif_get_child',0