function 'buf2d_line_sm' - fix error when the line is 45 degrees

git-svn-id: svn://kolibrios.org@9520 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA
2021-12-28 21:57:16 +00:00
parent 130b0311ad
commit c5dc86cc2c
4 changed files with 74 additions and 77 deletions
@@ -13,6 +13,8 @@ include '../../../../../dll.inc'
buf2d_l equ word[edi+4] ;®âáâ㯠᫥¢ 
buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
buf2d_w equ dword[edi+8]
buf2d_h equ dword[edi+12]
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
align 4
@@ -21,7 +23,7 @@ start:
cmp eax,-1
jz button.exit
mcall 40,0x27
mcall SF_SET_EVENTS_MASK,0xC0000027
stdcall [buf2d_create], buf_0 ;á®§¤ ¥¬ ¡ãä¥à
;à¨á㥬 ¯¥à¢®­ ç «ì­ë© ª ¤à
stdcall [buf2d_filled_rect_by_size], buf_0, 100-50,70-25, 100,50, 0xffffff ;à¨á㥬 ¯àאַ㣮«ì­¨ª
@@ -34,7 +36,7 @@ red_win:
align 4
still:
mcall 10
mcall SF_WAIT_EVENT
cmp al,1 ;¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
jz red_win
cmp al,2
@@ -48,21 +50,21 @@ still:
align 4
draw_window:
pushad
mcall 12,1
mcall SF_REDRAW,SSF_BEGIN_DRAW
;mov edx,0x32000000
mov edx,0x33000000
mcall 0,(50 shl 16)+330,(30 shl 16)+275,,,caption
mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+275,,,caption
stdcall [buf2d_draw], buf_0
mcall 12,2
mcall SF_REDRAW,SSF_END_DRAW
popad
ret
align 4
key:
mcall 2
mcall SF_GET_KEY
cmp ah,27 ;Esc
je button.exit
@@ -71,26 +73,30 @@ key:
align 4
button:
mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
mcall SF_GET_BUTTON
cmp ah,1
jne still
.exit:
stdcall [buf2d_delete],buf_0 ;㤠«ï¥¬ ¡ãä¥à
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
mcall SF_TERMINATE_PROCESS
align 4
mouse:
;®¡à ¡ â뢠¥¬ ®ª­® । ªâ®à 
mcall 37,2 ;get mouse buttons
mcall SF_MOUSE_GET,SSF_BUTTON
cmp al,1
jne @f
mcall 37,1 ;get mouse coords
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
mov ebx,eax
shr ebx,16 ;¢ eax ª®®à¤¨­ â  ¬¨è¨ ¯® ®á¨ 'x'
and eax,0xffff ;¢ eax ª®®à¤¨­ â  ¬¨è¨ ¯® ®á¨ 'y'
mov edi,buf_0
sub ax,buf2d_t ;ᤢ¨£ ¥¬ ª®®à¤¨­ âë ãç¨â뢠ï ᬥ饭¨¥ ¡ãä¥à 
cmp eax,buf2d_h
jge @f
sub bx,buf2d_l
cmp ebx,buf2d_w
jge @f
;à¨á®¢ ­¨¥ ¯à¨ ­ ¦ â¨¨
stdcall [buf2d_clear], edi, buf2d_color ;®ç¨é ¥¬ íªà ­ ®â ¯à¥¤ë¤ãé¨å à¨á®¢ ­¨©
@@ -164,6 +170,7 @@ system_path db '/sys/lib/'
lib0_name db 'buf2d.obj',0
;--------------------------------------------------
align 16
i_end: ;ª®­¥æ ª®¤ 
rb 1024
stacktop: