fix selection rectangle
git-svn-id: svn://kolibrios.org@6379 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -269,19 +269,25 @@ Picture_SizeX rd 1
|
|||||||
Picture_SizeY rd 1
|
Picture_SizeY rd 1
|
||||||
ScreenX rd 1 ;<3B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>⮬ <20><><EFBFBD><EFBFBD>⠡<EFBFBD>
|
ScreenX rd 1 ;<3B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> x <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>⮬ <20><><EFBFBD><EFBFBD>⠡<EFBFBD>
|
||||||
ScreenY rd 1 ;<3B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>⮬ <20><><EFBFBD><EFBFBD>⠡<EFBFBD>
|
ScreenY rd 1 ;<3B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>⮬ <20><><EFBFBD><EFBFBD>⠡<EFBFBD>
|
||||||
WorkScreen_SizeX rd 1
|
WorkScreen_SizeX rd 1 ;<3B><>ਭ<EFBFBD> ࠡ<>祣<EFBFBD> <20><>࠭<EFBFBD>
|
||||||
WorkScreen_SizeY rd 1
|
WorkScreen_SizeY rd 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠡ<>祣<EFBFBD> <20><>࠭<EFBFBD>
|
||||||
MaxWorkScreen_SizeX rd 1
|
MaxWorkScreen_SizeX rd 1
|
||||||
MaxWorkScreen_SizeY rd 1
|
MaxWorkScreen_SizeY rd 1
|
||||||
k rd 1 ;<3B><><EFBFBD><EFBFBD>⠡
|
k rd 1 ;<3B><><EFBFBD><EFBFBD>⠡
|
||||||
|
|
||||||
ReserveArray rd 1
|
ReserveArray rd 1 ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> 䨣<><E4A8A3>
|
||||||
register rd 1
|
;<3B><><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⪮<EFBFBD> 䮭<> <20><><EFBFBD> 䨣<>ࠬ<EFBFBD>, <20> ⠪<><E2A0AA> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
CounterX rd 1
|
CounterX rd 1 ;<3B><> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><> <20><>ਭ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
;<3B> <20><>࠭ ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD>⮬ ⥪<>饣<EFBFBD> <20><><EFBFBD><EFBFBD>⠡<EFBFBD>
|
||||||
CounterY rd 1
|
CounterY rd 1
|
||||||
OffsetYPicture rd 1
|
OffsetYPicture rd 1 ;ᤢ<><E1A4A2> <20><> <20><><EFBFBD> y <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD>
|
||||||
OffsetYWorkScreen rd 1
|
;<><E1ABA5><EFBFBD>饩 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
||||||
OffsetYBigPixel rd 1
|
OffsetYWorkScreen rd 1 ;ᤢ<><E1A4A2> <20><> <20><><EFBFBD> y <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||||
|
;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <><E1ABA5><EFBFBD>饩 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⠡, ⥬ <20><><EFBFBD><EFBFBD>
|
||||||
|
;<3B>㦭<EFBFBD> <20><><EFBFBD>᪠<EFBFBD><E1AAA0><EFBFBD><EFBFBD> <20><> ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
OffsetYBigPixel rd 1 ;ᤢ<><E1A4A2> <20><> <20><><EFBFBD> y <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB> <20><> <20><><EFBFBD><EFBFBD>讬
|
||||||
|
;<3B><><EFBFBD><EFBFBD>⠡<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᥫ<EFBFBD>, <20> <20><>⮬ <20>㦭<EFBFBD> <20><>३<EFBFBD><E0A5A9> <20><><EFBFBD><EFBFBD> <20>
|
||||||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <><E1ABA5><EFBFBD>饩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
|
||||||
Icon_X rd 1
|
Icon_X rd 1
|
||||||
Icon_Y rd 1
|
Icon_Y rd 1
|
||||||
|
@@ -1164,24 +1164,24 @@ TakeButtonInstruments:
|
|||||||
mov edi,[rectangular_shade_y]
|
mov edi,[rectangular_shade_y]
|
||||||
|
|
||||||
sub esi,eax
|
sub esi,eax
|
||||||
jns no_sign_sprite_size_x
|
jns @f
|
||||||
neg esi
|
neg esi ;sign sprite size x
|
||||||
no_sign_sprite_size_x:
|
@@:
|
||||||
|
|
||||||
sub edi,ebx
|
sub edi,ebx
|
||||||
jns no_sign_sprite_size_y
|
jns @f
|
||||||
neg edi
|
neg edi ;sign sprite size y
|
||||||
no_sign_sprite_size_y:
|
@@:
|
||||||
|
|
||||||
test esi,esi
|
test esi,esi
|
||||||
jnz no_null_sprite_x
|
jnz @f
|
||||||
mov esi,1
|
mov esi,1 ;null sprite x
|
||||||
no_null_sprite_x:
|
@@:
|
||||||
|
|
||||||
test edi,edi
|
test edi,edi
|
||||||
jnz no_null_sprite_y
|
jnz @f
|
||||||
mov edi,1
|
mov edi,1 ;null sprite y
|
||||||
no_null_sprite_y:
|
@@:
|
||||||
|
|
||||||
mov [SpriteSizeX],esi
|
mov [SpriteSizeX],esi
|
||||||
mov [SpriteSizeY],edi
|
mov [SpriteSizeY],edi
|
||||||
@@ -1213,7 +1213,6 @@ TakeButtonInstruments:
|
|||||||
test eax,eax
|
test eax,eax
|
||||||
jnz crossing_with_work_area
|
jnz crossing_with_work_area
|
||||||
mov [finishing_crossing],1
|
mov [finishing_crossing],1
|
||||||
mov [register],1
|
|
||||||
crossing_with_work_area:
|
crossing_with_work_area:
|
||||||
|
|
||||||
pop [ScreenY]
|
pop [ScreenY]
|
||||||
@@ -1245,68 +1244,66 @@ TakeButtonInstruments:
|
|||||||
mov [SpriteCoordinatY],ebx
|
mov [SpriteCoordinatY],ebx
|
||||||
|
|
||||||
cmp [SpriteCoordinatX],0
|
cmp [SpriteCoordinatX],0
|
||||||
jns no_null_sprite_coordinat_x
|
jns @f
|
||||||
mov [SpriteCoordinatX],1
|
mov [SpriteCoordinatX],1 ;null sprite coordinat x
|
||||||
no_null_sprite_coordinat_x:
|
@@:
|
||||||
|
|
||||||
cmp [SpriteCoordinatY],0
|
cmp [SpriteCoordinatY],0
|
||||||
jns no_null_sprite_coordinat_y
|
jns @f
|
||||||
mov [SpriteCoordinatY],1
|
mov [SpriteCoordinatY],1 ;null sprite coordinat y
|
||||||
no_null_sprite_coordinat_y:
|
@@:
|
||||||
|
|
||||||
mov esi,[rectangular_shade_x]
|
mov esi,[rectangular_shade_x]
|
||||||
mov edi,[rectangular_shade_y]
|
mov edi,[rectangular_shade_y]
|
||||||
|
|
||||||
sub esi,[OldX]
|
sub esi,[OldX]
|
||||||
jns no_znak_size_of_rectangulare_crossing_x
|
jns @f
|
||||||
neg esi
|
neg esi
|
||||||
no_znak_size_of_rectangulare_crossing_x:
|
@@:
|
||||||
|
|
||||||
sub edi,[OldY]
|
sub edi,[OldY]
|
||||||
jns no_znak_size_of_rectangulare_crossing_y
|
jns @f
|
||||||
neg edi
|
neg edi
|
||||||
no_znak_size_of_rectangulare_crossing_y:
|
@@:
|
||||||
|
|
||||||
mov ecx,[OldX]
|
mov ecx,[OldX]
|
||||||
mov edx,[OldY]
|
mov edx,[OldY]
|
||||||
|
|
||||||
sub ecx,[PosX]
|
sub ecx,[PosX]
|
||||||
jns no_minimum_x_crossing
|
jns @f
|
||||||
mov ecx,0
|
xor ecx,ecx
|
||||||
add ecx,[PosX]
|
add ecx,[PosX]
|
||||||
mov [OldX],ecx
|
mov [OldX],ecx
|
||||||
add ecx,esi
|
add ecx,esi
|
||||||
mov [rectangular_shade_x],ecx
|
mov [rectangular_shade_x],ecx
|
||||||
no_minimum_x_crossing:
|
@@:
|
||||||
|
|
||||||
sub edx,[PosY]
|
sub edx,[PosY]
|
||||||
jns no_minimum_y_crossing
|
jns @f
|
||||||
mov edx,0
|
xor edx,edx
|
||||||
add edx,[PosY]
|
add edx,[PosY]
|
||||||
mov [OldY],edx
|
mov [OldY],edx
|
||||||
add edx,edi
|
add edx,edi
|
||||||
mov [rectangular_shade_y],edx
|
mov [rectangular_shade_y],edx
|
||||||
no_minimum_y_crossing:
|
@@:
|
||||||
|
|
||||||
mov ecx,[Picture_SizeX]
|
mov ecx,[Picture_SizeX]
|
||||||
sub ecx,esi
|
sub ecx,esi
|
||||||
cmp [OldX],ecx
|
cmp [OldX],ecx
|
||||||
jl no_maximum_x_crossing
|
jl @f
|
||||||
dec ecx
|
dec ecx
|
||||||
mov [OldX],ecx
|
mov [OldX],ecx
|
||||||
add ecx,esi
|
add ecx,esi
|
||||||
mov [rectangular_shade_x],ecx
|
mov [rectangular_shade_x],ecx
|
||||||
no_maximum_x_crossing:
|
@@:
|
||||||
|
|
||||||
mov edx,[Picture_SizeY]
|
mov edx,[Picture_SizeY]
|
||||||
sub edx,edi
|
sub edx,edi
|
||||||
cmp [OldY],edx
|
cmp [OldY],edx
|
||||||
jl no_maximum_y_crossing
|
jl @f
|
||||||
dec edx
|
dec edx
|
||||||
mov [OldY],edx
|
mov [OldY],edx
|
||||||
add edx,edi
|
add edx,edi
|
||||||
mov [rectangular_shade_y],edx
|
mov [rectangular_shade_y],edx
|
||||||
no_maximum_y_crossing:
|
@@:
|
||||||
|
|
||||||
mov eax,[rectangular_shade_x]
|
mov eax,[rectangular_shade_x]
|
||||||
mov ebx,[rectangular_shade_y]
|
mov ebx,[rectangular_shade_y]
|
||||||
@@ -1323,9 +1320,9 @@ TakeButtonInstruments:
|
|||||||
jne no_activate_put_fon_
|
jne no_activate_put_fon_
|
||||||
|
|
||||||
cmp [Paste_flag],1
|
cmp [Paste_flag],1
|
||||||
je no_put_fon___
|
je @f
|
||||||
call PutFonForSprite
|
call PutFonForSprite
|
||||||
no_put_fon___:
|
@@:
|
||||||
and [Paste_flag],0
|
and [Paste_flag],0
|
||||||
no_activate_put_fon_:
|
no_activate_put_fon_:
|
||||||
|
|
||||||
@@ -1355,16 +1352,16 @@ TakeButtonInstruments:
|
|||||||
mov ebp,[Picture_SizeX]
|
mov ebp,[Picture_SizeX]
|
||||||
dec ebp
|
dec ebp
|
||||||
cmp esi,ebp
|
cmp esi,ebp
|
||||||
jl no_minimum_x_allocation
|
jl @f
|
||||||
mov esi,ebp
|
mov esi,ebp ;minimum x allocation
|
||||||
no_minimum_x_allocation:
|
@@:
|
||||||
|
|
||||||
mov ebp,[Picture_SizeY]
|
mov ebp,[Picture_SizeY]
|
||||||
dec ebp
|
dec ebp
|
||||||
cmp edi,ebp
|
cmp edi,ebp
|
||||||
jl no_minimum_y_allocation
|
jl @f
|
||||||
mov edi,ebp
|
mov edi,ebp ;minimum y allocation
|
||||||
no_minimum_y_allocation:
|
@@:
|
||||||
|
|
||||||
call calculate_rectangle
|
call calculate_rectangle
|
||||||
|
|
||||||
@@ -1372,7 +1369,7 @@ TakeButtonInstruments:
|
|||||||
square_width_save
|
square_width_save
|
||||||
|
|
||||||
cmp [DrawSprite_flag],1
|
cmp [DrawSprite_flag],1
|
||||||
jne no_save_fon_for_sprite_
|
jne @f
|
||||||
;save current coordinats as old
|
;save current coordinats as old
|
||||||
mov eax,[SpriteCoordinatX]
|
mov eax,[SpriteCoordinatX]
|
||||||
mov ebx,[SpriteCoordinatY]
|
mov ebx,[SpriteCoordinatY]
|
||||||
@@ -1381,40 +1378,12 @@ TakeButtonInstruments:
|
|||||||
|
|
||||||
call SaveFonForSprite
|
call SaveFonForSprite
|
||||||
|
|
||||||
no_save_fon_for_sprite_:
|
@@:
|
||||||
|
|
||||||
;draw calculated pixels on work arrea
|
|
||||||
mov ebx,[ReserveArray]
|
|
||||||
mov ecx,[ebx]
|
|
||||||
add ebx,4
|
|
||||||
next_pixel_put_allocation:
|
|
||||||
|
|
||||||
mov edx,0x1f3fff
|
|
||||||
mov esi,edx
|
|
||||||
shr edx,16
|
|
||||||
|
|
||||||
mov ebp,ecx
|
|
||||||
and ebp,8
|
|
||||||
cmp ebp,8
|
|
||||||
jne black_color
|
|
||||||
mov si,0xffff
|
|
||||||
mov dl,0xff
|
|
||||||
black_color:
|
|
||||||
|
|
||||||
mov eax,[ebx]
|
|
||||||
mov [eax],si
|
|
||||||
mov [eax+2],dl
|
|
||||||
|
|
||||||
add ebx,4
|
|
||||||
dec ecx
|
|
||||||
jnz next_pixel_put_allocation
|
|
||||||
|
|
||||||
cmp [DrawSprite_flag],1
|
cmp [DrawSprite_flag],1
|
||||||
jne no_activate_draw_sprite_
|
jne @f
|
||||||
|
|
||||||
call DrawSprite
|
call DrawSprite
|
||||||
|
@@:
|
||||||
no_activate_draw_sprite_:
|
|
||||||
|
|
||||||
mov al,[instrument_used]
|
mov al,[instrument_used]
|
||||||
test al,al
|
test al,al
|
||||||
|
@@ -90,12 +90,11 @@ screen_y_1:
|
|||||||
|
|
||||||
screen_x_1:
|
screen_x_1:
|
||||||
mov ecx,[eax]
|
mov ecx,[eax]
|
||||||
and ecx,0xffffff
|
|
||||||
mov ebp,ecx
|
mov ebp,ecx
|
||||||
shr ecx,16
|
shr ecx,16
|
||||||
mov [ebx],bp
|
mov [ebx],bp
|
||||||
mov [ebx+2],cl
|
mov [ebx+2],cl
|
||||||
add ebx,3;
|
add ebx,3
|
||||||
add eax,3
|
add eax,3
|
||||||
dec esi
|
dec esi
|
||||||
jnz screen_x_1
|
jnz screen_x_1
|
||||||
@@ -114,7 +113,6 @@ screen_y_2:
|
|||||||
|
|
||||||
screen_x_2:
|
screen_x_2:
|
||||||
mov ecx,[eax]
|
mov ecx,[eax]
|
||||||
and ecx,0xffffff
|
|
||||||
mov ebp,ecx
|
mov ebp,ecx
|
||||||
shr ecx,16
|
shr ecx,16
|
||||||
mov edx,ebx
|
mov edx,ebx
|
||||||
@@ -128,8 +126,6 @@ screen_x_2:
|
|||||||
mov [edx+2],cl
|
mov [edx+2],cl
|
||||||
mov [edx+3],bp
|
mov [edx+3],bp
|
||||||
mov [edx+3+2],cl
|
mov [edx+3+2],cl
|
||||||
add edx,3*2
|
|
||||||
add edx,[OffsetYBigPixel]
|
|
||||||
add ebx,3*2
|
add ebx,3*2
|
||||||
add eax,3
|
add eax,3
|
||||||
dec esi
|
dec esi
|
||||||
@@ -149,7 +145,6 @@ screen_y_4:
|
|||||||
|
|
||||||
screen_x_4:
|
screen_x_4:
|
||||||
mov ecx,[eax]
|
mov ecx,[eax]
|
||||||
and ecx,0xffffff
|
|
||||||
mov ebp,ecx
|
mov ebp,ecx
|
||||||
shr ecx,16
|
shr ecx,16
|
||||||
mov edx,ebx
|
mov edx,ebx
|
||||||
@@ -191,8 +186,6 @@ screen_x_4:
|
|||||||
mov [edx+6+2],cl
|
mov [edx+6+2],cl
|
||||||
mov [edx+9],bp
|
mov [edx+9],bp
|
||||||
mov [edx+9+2],cl
|
mov [edx+9+2],cl
|
||||||
add edx,3*4
|
|
||||||
add edx,[OffsetYBigPixel]
|
|
||||||
add ebx,4*3
|
add ebx,4*3
|
||||||
add eax,3
|
add eax,3
|
||||||
dec esi
|
dec esi
|
||||||
@@ -210,7 +203,6 @@ screen_y:
|
|||||||
|
|
||||||
screen_x:
|
screen_x:
|
||||||
mov ecx,[eax]
|
mov ecx,[eax]
|
||||||
and ecx,0xffffff
|
|
||||||
mov ebp,ecx
|
mov ebp,ecx
|
||||||
shr ecx,16
|
shr ecx,16
|
||||||
;---------------------------------------------------------
|
;---------------------------------------------------------
|
||||||
@@ -243,17 +235,183 @@ big_pixel_x:
|
|||||||
jnz screen_y
|
jnz screen_y
|
||||||
|
|
||||||
fps:
|
fps:
|
||||||
mov ebx,[ScreenPointer]
|
;calculate selection rect
|
||||||
|
cmp [instrument_used],1
|
||||||
|
jne .no_selection_rect
|
||||||
|
mov edx,[rectangular_shade_y]
|
||||||
|
sub edx,[PosY]
|
||||||
|
mov ecx,[rectangular_shade_x]
|
||||||
|
sub ecx,[PosX]
|
||||||
|
mov ebx,[OldY]
|
||||||
|
sub ebx,[PosY]
|
||||||
|
mov eax,[OldX]
|
||||||
|
sub eax,[PosX]
|
||||||
|
cmp [k],1
|
||||||
|
je .zo_1
|
||||||
|
cmp eax,ecx
|
||||||
|
jle @f
|
||||||
|
xchg eax,ecx
|
||||||
|
@@:
|
||||||
|
cmp ebx,edx
|
||||||
|
jle @f
|
||||||
|
xchg ebx,edx
|
||||||
|
@@:
|
||||||
|
inc eax
|
||||||
|
inc ebx
|
||||||
|
imul eax,[k]
|
||||||
|
imul ebx,[k]
|
||||||
|
imul ecx,[k]
|
||||||
|
imul edx,[k]
|
||||||
|
dec eax
|
||||||
|
dec ebx
|
||||||
|
.zo_1:
|
||||||
|
stdcall draw_selection_rect, eax,ebx,ecx,edx
|
||||||
|
.no_selection_rect:
|
||||||
|
|
||||||
mov ecx,[WorkScreen_SizeX]
|
mov ecx,[WorkScreen_SizeX]
|
||||||
shl ecx,16
|
shl ecx,16
|
||||||
add ecx,[WorkScreen_SizeY]
|
add ecx,[WorkScreen_SizeY]
|
||||||
mov edx,((ci_edit_wnd_x_pos+ci_edit_wnd_border) shl 16)\
|
mov edx,((ci_edit_wnd_x_pos+ci_edit_wnd_border) shl 16)\
|
||||||
+ (ci_edit_wnd_y_pos+ci_edit_wnd_border)
|
+ (ci_edit_wnd_y_pos+ci_edit_wnd_border)
|
||||||
mcall SF_PUT_IMAGE
|
mcall SF_PUT_IMAGE, [ScreenPointer]
|
||||||
|
ret
|
||||||
|
;----------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
proc draw_selection_rect, x0:dword, y0:dword, x1:dword, y1:dword
|
||||||
|
mov eax,0xffff3fff ;2:2
|
||||||
|
mov edx,0xff1f ;1:1
|
||||||
|
|
||||||
|
mov edi,[x0]
|
||||||
|
mov ebx,[y0]
|
||||||
|
mov ecx,[x1]
|
||||||
|
cmp edi,ecx
|
||||||
|
jle @f
|
||||||
|
xchg edi,ecx
|
||||||
|
@@:
|
||||||
|
call draw_line_h
|
||||||
|
mov ebx,[y1]
|
||||||
|
call draw_line_h
|
||||||
|
|
||||||
|
mov edi,[x0]
|
||||||
|
mov ecx,[y0]
|
||||||
|
cmp ebx,ecx
|
||||||
|
jle @f
|
||||||
|
xchg ebx,ecx
|
||||||
|
@@:
|
||||||
|
call draw_line_w
|
||||||
|
mov edi,[x1]
|
||||||
|
call draw_line_w
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
;input:
|
||||||
|
; eax - color1(g,r):color2(g,r)
|
||||||
|
; dx - color1(b):color2(b)
|
||||||
|
; edi - x0
|
||||||
|
; ebx - y0
|
||||||
|
; ecx - x1 (x1 >= x0)
|
||||||
|
align 4
|
||||||
|
draw_line_h:
|
||||||
|
cmp edi,ecx
|
||||||
|
je .end_f
|
||||||
|
cmp ecx,1
|
||||||
|
jl .end_f
|
||||||
|
cmp edi,[WorkScreen_SizeX]
|
||||||
|
jge .end_f
|
||||||
|
cmp ebx,0
|
||||||
|
jl .end_f
|
||||||
|
cmp ebx,[WorkScreen_SizeY]
|
||||||
|
jge .end_f
|
||||||
|
push ebx ecx edi
|
||||||
|
cmp ecx,[WorkScreen_SizeX]
|
||||||
|
jl @f
|
||||||
|
mov ecx,[WorkScreen_SizeX]
|
||||||
|
@@:
|
||||||
|
cmp edi,0
|
||||||
|
jge @f
|
||||||
|
xor edi,edi
|
||||||
|
@@:
|
||||||
|
sub ecx,edi
|
||||||
|
imul ebx,[WorkScreen_SizeX]
|
||||||
|
add edi,ebx
|
||||||
|
lea edi,[edi+edi*2]
|
||||||
|
add edi,[ScreenPointer]
|
||||||
|
cld
|
||||||
|
.line_t:
|
||||||
|
stosw
|
||||||
|
mov byte[edi],dl
|
||||||
|
inc edi
|
||||||
|
bt ecx,1
|
||||||
|
jc @f
|
||||||
|
bt ecx,0
|
||||||
|
jc @f
|
||||||
|
ror eax,16
|
||||||
|
ror dx,8
|
||||||
|
@@:
|
||||||
|
dec ecx
|
||||||
|
jnz .line_t
|
||||||
|
pop edi ecx ebx
|
||||||
|
.end_f:
|
||||||
|
ret
|
||||||
|
|
||||||
|
;input:
|
||||||
|
; eax - color1(g,r):color2(g,r)
|
||||||
|
; dx - color1(b):color2(b)
|
||||||
|
; edi - x0
|
||||||
|
; ebx - y0
|
||||||
|
; ecx - y1 (y1 >= y0)
|
||||||
|
align 4
|
||||||
|
draw_line_w:
|
||||||
|
cmp edi,0
|
||||||
|
jl .end_f
|
||||||
|
cmp edi,[WorkScreen_SizeX]
|
||||||
|
jge .end_f
|
||||||
|
cmp ebx,ecx
|
||||||
|
je .end_f
|
||||||
|
cmp ebx,[WorkScreen_SizeY]
|
||||||
|
jge .end_f
|
||||||
|
cmp ecx,1
|
||||||
|
jl .end_f
|
||||||
|
push ebx ecx edi
|
||||||
|
cmp ecx,[WorkScreen_SizeY]
|
||||||
|
jl @f
|
||||||
|
mov ecx,[WorkScreen_SizeY]
|
||||||
|
@@:
|
||||||
|
cmp ebx,0
|
||||||
|
jge @f
|
||||||
|
xor ebx,ebx
|
||||||
|
@@:
|
||||||
|
sub ecx,ebx
|
||||||
|
cmp ecx,1
|
||||||
|
jl .end_f
|
||||||
|
imul ebx,[WorkScreen_SizeX]
|
||||||
|
add edi,ebx
|
||||||
|
lea edi,[edi+edi*2]
|
||||||
|
add edi,[ScreenPointer]
|
||||||
|
mov ebx,[WorkScreen_SizeX]
|
||||||
|
lea ebx,[ebx+ebx*2]
|
||||||
|
sub ebx,2
|
||||||
|
cld
|
||||||
|
.line_r:
|
||||||
|
stosw
|
||||||
|
mov byte[edi],dl
|
||||||
|
add edi,ebx
|
||||||
|
bt ecx,1
|
||||||
|
jc @f
|
||||||
|
bt ecx,0
|
||||||
|
jc @f
|
||||||
|
ror eax,16
|
||||||
|
ror dx,8
|
||||||
|
@@:
|
||||||
|
dec ecx
|
||||||
|
jnz .line_r
|
||||||
|
pop edi ecx ebx
|
||||||
|
.end_f:
|
||||||
ret
|
ret
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
;--------------------clear screen--------------------------
|
;--------------------clear screen--------------------------
|
||||||
;----------------------------------------------------------
|
;----------------------------------------------------------
|
||||||
|
align 4
|
||||||
cleare_screen:
|
cleare_screen:
|
||||||
mov edi,[ScreenPointer]
|
mov edi,[ScreenPointer]
|
||||||
mov ebx,[WorkScreen_SizeX]
|
mov ebx,[WorkScreen_SizeX]
|
||||||
|
Reference in New Issue
Block a user