forked from KolibriOS/kolibrios
add image height change in 'buf2d_resize'
git-svn-id: svn://kolibrios.org@6178 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
eba5156860
commit
64709b0b3e
@ -823,7 +823,7 @@ proc buf_resize, buf_struc:dword, new_w:dword, new_h:dword, options:dword
|
|||||||
cmp ebx,buf2d_h
|
cmp ebx,buf2d_h
|
||||||
jge @f
|
jge @f
|
||||||
;ᦠ⨥ ¯® ¢ëá®â¥
|
;ᦠ⨥ ¯® ¢ëá®â¥
|
||||||
;... ¥é¥ ¥ ¯®¤¤¥à¦¨¢ ¥âáï ...
|
stdcall img_rgb24_hresize, buf2d_data,eax,buf2d_h,ebx
|
||||||
@@:
|
@@:
|
||||||
.24_end_r:
|
.24_end_r:
|
||||||
bt dword[options],0 ;¨§¬¥. ¡ãä¥à
|
bt dword[options],0 ;¨§¬¥. ¡ãä¥à
|
||||||
@ -1830,6 +1830,118 @@ popad
|
|||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
;description:
|
||||||
|
; ᦠ⨥ ¨§®¡à ¦¥¨ï ¯® ¢ëá®â¥ (à §¬¥àë ¡ãä¥à ¥ ¬¥ïîâáï)
|
||||||
|
;input:
|
||||||
|
; data_rgb - pointer to rgb data
|
||||||
|
; size_w - width img in pixels
|
||||||
|
; size_h - height img in pixels
|
||||||
|
; size_h_new - new height img in pixels
|
||||||
|
align 16
|
||||||
|
proc img_rgb24_hresize, data_rgb:dword, size_w:dword, size_h:dword, size_h_new:dword
|
||||||
|
locals
|
||||||
|
pr dd 0
|
||||||
|
pg dd 0
|
||||||
|
pb dd 0
|
||||||
|
img_n dd ? ;㪠§ â¥«ì ¤ ë¥ ®¢®£® ¨§®¡à ¦¥¨ï
|
||||||
|
cols dd ?
|
||||||
|
lin_b dd ? ;à §¬¥à «¨¨¨ ¨§®¡à ¦¥¨ï ¢ ¡ ©â å
|
||||||
|
data_n dd ? ;㪠§ â¥«ì ¤ ë¥ ¤«ï ®¢®£® á⮫¡æ ¯¨ªá¥«¥©
|
||||||
|
endl
|
||||||
|
pushad
|
||||||
|
;eax - delta for inp. img
|
||||||
|
;ebx - delta for outp. img
|
||||||
|
;esi - pointer to data_rgb
|
||||||
|
mov esi,[data_rgb]
|
||||||
|
mov [data_n],esi
|
||||||
|
mov eax,[size_w]
|
||||||
|
mov [cols],eax
|
||||||
|
lea eax,[eax+eax*2]
|
||||||
|
mov [lin_b],eax
|
||||||
|
align 4
|
||||||
|
.cycyle_0:
|
||||||
|
mov eax,[size_h_new]
|
||||||
|
mov ecx,[size_h]
|
||||||
|
mov ebx,ecx
|
||||||
|
mov esi,[data_n]
|
||||||
|
mov [img_n],esi
|
||||||
|
add dword[data_n],3 ;¯¥à¥å®¤ á«¥¤ãî騩 á⮫¡¥æ ¯¨ªá¥«¥©
|
||||||
|
align 4
|
||||||
|
.cycyle_1:
|
||||||
|
cmp eax,ebx
|
||||||
|
jg .else_0
|
||||||
|
;ª®¯¨àã¥¬ë© ¯¨ªá¥«ì ¬ ªá¨¬ «ì® ¢«¨ï¥â १ã«ìâ â
|
||||||
|
; ª ¯«¨¢ ¥¬ rgb ¤«ï ¨â¥à¯®«ï樨 ¯¨ªá¥«¥©
|
||||||
|
mov edx,[size_h_new]
|
||||||
|
movzx edi,byte[esi]
|
||||||
|
imul edi,edx
|
||||||
|
add [pb],edi
|
||||||
|
movzx edi,byte[esi+1]
|
||||||
|
imul edi,edx
|
||||||
|
add [pg],edi
|
||||||
|
movzx edi,byte[esi+2]
|
||||||
|
imul edi,edx
|
||||||
|
add [pr],edi
|
||||||
|
cmp eax,ebx
|
||||||
|
je .d2_add
|
||||||
|
jmp .if_0_end
|
||||||
|
.else_0:
|
||||||
|
;ª®¯¨àã¥¬ë© ¯¨ªá¥«ì ¯®¯ ¤¥â £à ¨æã ¯¨ªá¥«¥©
|
||||||
|
mov edx,ebx
|
||||||
|
sub edx,eax
|
||||||
|
add edx,[size_h_new]
|
||||||
|
movzx edi,byte[esi]
|
||||||
|
imul edi,edx
|
||||||
|
add [pb],edi
|
||||||
|
movzx edi,byte[esi+1]
|
||||||
|
imul edi,edx
|
||||||
|
add [pg],edi
|
||||||
|
movzx edi,byte[esi+2]
|
||||||
|
imul edi,edx
|
||||||
|
add [pr],edi
|
||||||
|
;á®åà 塞 £®â®¢®¥ rgb
|
||||||
|
.d2_add:
|
||||||
|
push eax
|
||||||
|
mov edi,[img_n]
|
||||||
|
mov eax,[pb]
|
||||||
|
xor edx,edx
|
||||||
|
div dword[size_h] ;eax /= [size_h]
|
||||||
|
stosb
|
||||||
|
mov eax,[pg]
|
||||||
|
xor edx,edx
|
||||||
|
div dword[size_h] ;eax /= [size_h]
|
||||||
|
stosb
|
||||||
|
mov eax,[pr]
|
||||||
|
xor edx,edx
|
||||||
|
div dword[size_h] ;eax /= [size_h]
|
||||||
|
stosb
|
||||||
|
pop eax
|
||||||
|
mov edx,[lin_b]
|
||||||
|
add dword[img_n],edx ;next pixel
|
||||||
|
;®¡®¢«ï¥¬ rgb ¤«ï ®¢®£® ¯¨ªá¥«ï
|
||||||
|
mov edx,eax
|
||||||
|
sub edx,ebx
|
||||||
|
movzx edi,byte[esi]
|
||||||
|
imul edi,edx
|
||||||
|
mov [pb],edi
|
||||||
|
movzx edi,byte[esi+1]
|
||||||
|
imul edi,edx
|
||||||
|
mov [pg],edi
|
||||||
|
movzx edi,byte[esi+2]
|
||||||
|
imul edi,edx
|
||||||
|
mov [pr],edi
|
||||||
|
add ebx,[size_h]
|
||||||
|
.if_0_end:
|
||||||
|
add eax,[size_h_new]
|
||||||
|
add esi,[lin_b] ;next pixel
|
||||||
|
dec ecx
|
||||||
|
jnz .cycyle_1
|
||||||
|
dec dword[cols]
|
||||||
|
jnz .cycyle_0
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
;¯à¥®¡à §®¢ ¨¥ ¡ãä¥à ¨§ 24-¡¨â®£® ¢ 8-¡¨âë©
|
;¯à¥®¡à §®¢ ¨¥ ¡ãä¥à ¨§ 24-¡¨â®£® ¢ 8-¡¨âë©
|
||||||
; spectr - ®¯à¥¤¥«ï¥â ª ª®© ᯥªâà ¡à âì ¯à¨ ¯à¥®¡à §®¢ ¨¨ 0-ᨨ©, 1-§¥«¥ë©, 2-ªà áë©
|
; spectr - ®¯à¥¤¥«ï¥â ª ª®© ᯥªâà ¡à âì ¯à¨ ¯à¥®¡à §®¢ ¨¨ 0-ᨨ©, 1-§¥«¥ë©, 2-ªà áë©
|
||||||
align 4
|
align 4
|
||||||
|
Loading…
Reference in New Issue
Block a user