forked from KolibriOS/kolibrios
'buf2d.obj' functions 'buf_rect_by_size' and 'buf_filled_rect_by_size' work faster (optimize function 'buf_line_h')
git-svn-id: svn://kolibrios.org@2177 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e7b0ce1747
commit
edb11c7e8a
@ -1068,18 +1068,43 @@ proc buf_line_h, buf_struc:dword, coord_x0:dword, coord_y0:dword, coord_x1:dword
|
|||||||
cmp buf2d_bits,24
|
cmp buf2d_bits,24
|
||||||
jne .end24
|
jne .end24
|
||||||
|
|
||||||
mov ebx,dword[coord_x0]
|
|
||||||
mov ecx,dword[coord_y0]
|
mov ecx,dword[coord_y0]
|
||||||
mov edx,dword[color]
|
bt ecx,31
|
||||||
|
jc .end24 ;¥á«¨ ª®®à¤¨ â y0 ®âà¨æ ⥫ì ï
|
||||||
|
cmp ecx,buf2d_h
|
||||||
|
jge .end24 ;¥á«¨ ª®®à¤¨ â y0 ¡®«ìè¥ ¢ëá®âë ¡ãä¥à
|
||||||
|
|
||||||
|
mov ebx,dword[coord_x0]
|
||||||
mov esi,dword[coord_x1]
|
mov esi,dword[coord_x1]
|
||||||
cmp ebx,esi
|
cmp ebx,esi
|
||||||
jle @f
|
jle @f
|
||||||
xchg ebx,esi ;¥á«¨ x0 > x1 â® ¬¥ï¥¬ ¬¥áâ ¬¨ x0 ¨ x1
|
xchg ebx,esi ;¥á«¨ x0 > x1 â® ¬¥ï¥¬ ¬¥áâ ¬¨ x0 ¨ x1
|
||||||
|
@@:
|
||||||
|
cmp esi,buf2d_w
|
||||||
|
jl @f
|
||||||
|
mov esi,buf2d_w
|
||||||
|
;dec esi
|
||||||
|
@@:
|
||||||
|
|
||||||
|
;¢ eax ¢ëç¨á«ï¥¬ ç «® 1-© â®çª¨ «¨¨¨ ¢ ¡ãä¥à¥ ¨§®¡à ¦¥¨ï
|
||||||
|
mov eax,buf2d_w ;size x
|
||||||
|
imul eax,ecx ;size_x*y
|
||||||
|
add eax,ebx ;size_x*y+x
|
||||||
|
lea eax,[eax+eax*2] ;(size_x*y+x)*3
|
||||||
|
add eax,buf2d_data ;ptr+(size_x*y+x)*3
|
||||||
|
|
||||||
|
mov edx,dword[color]
|
||||||
@@: ;横« ¯® ®á¨ x ®â x0 ¤® x1
|
@@: ;横« ¯® ®á¨ x ®â x0 ¤® x1
|
||||||
cmp ebx,esi
|
cmp ebx,esi
|
||||||
jge @f
|
jge @f
|
||||||
call draw_pixel
|
bt ebx,31
|
||||||
|
jc .otr_x
|
||||||
|
mov word[eax],dx ;copy pixel color
|
||||||
|
ror edx,16
|
||||||
|
mov byte[eax+2],dl
|
||||||
|
ror edx,16
|
||||||
|
.otr_x:
|
||||||
|
add eax,3
|
||||||
inc ebx
|
inc ebx
|
||||||
jmp @b
|
jmp @b
|
||||||
@@:
|
@@:
|
||||||
|
Loading…
Reference in New Issue
Block a user