forked from KolibriOS/kolibrios
some fixes in mouse selection
git-svn-id: svn://kolibrios.org@6385 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
7ec2b06ca1
commit
410b1a3707
@ -43,6 +43,7 @@ include '../../../develop/libraries/box_lib/load_lib.mac'
|
|||||||
include '../../../dll.inc'
|
include '../../../dll.inc'
|
||||||
include '../../../libio.inc'
|
include '../../../libio.inc'
|
||||||
;include '../../../develop/libraries/libs-dev/libimg/libimg.inc'
|
;include '../../../develop/libraries/libs-dev/libimg/libimg.inc'
|
||||||
|
;include '../../../debug.inc'
|
||||||
|
|
||||||
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||||
|
|
||||||
@ -261,6 +262,7 @@ OldY rd 1
|
|||||||
|
|
||||||
MouseX rd 1
|
MouseX rd 1
|
||||||
MouseY rd 1
|
MouseY rd 1
|
||||||
|
MouseBut rd 1 ;ᮡëâ¨ï ®â ª®¯®ª ¬ëè¨
|
||||||
Window_SizeX rd 1
|
Window_SizeX rd 1
|
||||||
Window_SizeY rd 1
|
Window_SizeY rd 1
|
||||||
Window_CordinatX rd 1
|
Window_CordinatX rd 1
|
||||||
@ -322,17 +324,17 @@ b_ellips rd 1
|
|||||||
|
|
||||||
used_OldX rd 1 ;for draw hard contour
|
used_OldX rd 1 ;for draw hard contour
|
||||||
used_OldY rd 1
|
used_OldY rd 1
|
||||||
rectangular_shade_x rd 1 ;ª®®à¤¨ â x ®¡« á⨠¤«ï ª®¯¨à®¢ ¨ï
|
|
||||||
rectangular_shade_y rd 1
|
|
||||||
paste_img_w rd 1 ;è¨à¨ ¢áâ ¢«ï¥¬®£® ¨§®¡à ¦¥¨ï
|
paste_img_w rd 1 ;è¨à¨ ¢áâ ¢«ï¥¬®£® ¨§®¡à ¦¥¨ï
|
||||||
paste_img_h rd 1 ;¢ëá®â ¢áâ ¢«ï¥¬®£® ¨§®¡à ¦¥¨ï
|
paste_img_h rd 1 ;¢ëá®â ¢áâ ¢«ï¥¬®£® ¨§®¡à ¦¥¨ï
|
||||||
crossing_old_x rd 1
|
crossing_old_x rd 1 ; ç «ì ï ª®®à¤. x ®¡« á⨠ª®¯¨à®¢ ¨ï
|
||||||
crossing_old_y rd 1
|
crossing_old_y rd 1 ; ç «ì ï ª®®à¤. y ®¡« á⨠ª®¯¨à®¢ ¨ï
|
||||||
crossing rd 1
|
rectangular_shade_x rd 1 ;ª®¥ç ï ª®®à¤. x ®¡« á⨠ª®¯¨à®¢ ¨ï
|
||||||
finishing_crossing rd 1
|
rectangular_shade_y rd 1 ;ª®¥ç ï ª®®à¤. y ®¡« á⨠ª®¯¨à®¢ ¨ï
|
||||||
|
crossing rd 1 ;0 - ¢ë¤¥«¥¨ï ¥â, 1 - ¨¤¥â ¯à®æ¥á ¢ë¤¥«¥¨ï,
|
||||||
|
;2 - ¢ë¤¥«¥¨¥ § ¢¥à襮, 3 - ®¡« áâì ¢ë¤¥«¥¨ï ¯¥à¥¬¥é ¥âáï
|
||||||
number_undo rd 1
|
number_undo rd 1
|
||||||
SpriteSizeX rd 1
|
SpriteSizeX rd 1 ;???
|
||||||
SpriteSizeY rd 1
|
SpriteSizeY rd 1 ;???
|
||||||
SpriteCoordinatX rd 1
|
SpriteCoordinatX rd 1
|
||||||
SpriteCoordinatY rd 1
|
SpriteCoordinatY rd 1
|
||||||
SpriteOldCoordinatX rd 1
|
SpriteOldCoordinatX rd 1
|
||||||
@ -340,7 +342,8 @@ SpriteOldCoordinatY rd 1
|
|||||||
|
|
||||||
CursorsID rd 10
|
CursorsID rd 10
|
||||||
|
|
||||||
Activate_instrument rb 1
|
Activate_instrument rb 1 ;¥á«¨ à ¢® 0 - â® ª®¯¨à®¢ ¨¥ ⥪ã饣® ¡ãä¥à
|
||||||
|
;¤«ï ¥£® । ªâ¨à®¢ ¨ï, ¥á«¨ 1 - ⥪ã騩 ¡ãä¥à ¥ ª®¯¨àã¥âáï
|
||||||
save_flag rb 1
|
save_flag rb 1
|
||||||
exit_from_work_arrea rb 1
|
exit_from_work_arrea rb 1
|
||||||
lastik_is_active rb 1
|
lastik_is_active rb 1
|
||||||
|
@ -9,9 +9,7 @@ buttons:
|
|||||||
jne @f
|
jne @f
|
||||||
cmp [Activate_instrument],0
|
cmp [Activate_instrument],0
|
||||||
jne @f
|
jne @f
|
||||||
cmp [crossing],1
|
;mov [crossing],2
|
||||||
jne @f
|
|
||||||
mov [finishing_crossing],1
|
|
||||||
call TakeButtonInstruments
|
call TakeButtonInstruments
|
||||||
jmp still
|
jmp still
|
||||||
@@:
|
@@:
|
||||||
@ -35,11 +33,9 @@ buttons:
|
|||||||
|
|
||||||
;save instrumnets 10-40
|
;save instrumnets 10-40
|
||||||
cmp eax,40
|
cmp eax,40
|
||||||
jae no_save_last_instrument
|
jae @f
|
||||||
|
mov [Last_instrument],eax
|
||||||
mov [Last_instrument],eax
|
@@:
|
||||||
|
|
||||||
no_save_last_instrument:
|
|
||||||
|
|
||||||
cmp eax,10
|
cmp eax,10
|
||||||
je still
|
je still
|
||||||
@ -57,31 +53,22 @@ buttons:
|
|||||||
je still
|
je still
|
||||||
|
|
||||||
cmp eax,51
|
cmp eax,51
|
||||||
jne no_palette_
|
jne @f
|
||||||
|
call TakeButtonInstruments
|
||||||
call TakeButtonInstruments
|
jmp still
|
||||||
jmp still
|
@@:
|
||||||
|
|
||||||
no_palette_:
|
|
||||||
|
|
||||||
cmp eax,17
|
cmp eax,17
|
||||||
je still
|
je still
|
||||||
|
|
||||||
cmp eax,21
|
cmp eax,21
|
||||||
jne no_allocation__
|
je still
|
||||||
|
|
||||||
and [Activate_instrument],0
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
no_allocation__:
|
|
||||||
|
|
||||||
cmp eax,20
|
cmp eax,20
|
||||||
jne no_kontur__
|
jne @f
|
||||||
|
and [instrument_used],0
|
||||||
and [instrument_used],0
|
jmp still
|
||||||
jmp still
|
@@:
|
||||||
|
|
||||||
no_kontur__:
|
|
||||||
|
|
||||||
call TakeButtonInstruments
|
call TakeButtonInstruments
|
||||||
jmp still
|
jmp still
|
@ -11,6 +11,8 @@ mouse:
|
|||||||
test eax,100b
|
test eax,100b
|
||||||
jne still
|
jne still
|
||||||
|
|
||||||
|
call GetMouseClick
|
||||||
|
|
||||||
call GetMouseCoordinats
|
call GetMouseCoordinats
|
||||||
mov eax,[MouseX]
|
mov eax,[MouseX]
|
||||||
mov ebx,[MouseY]
|
mov ebx,[MouseY]
|
||||||
@ -29,11 +31,10 @@ mouse:
|
|||||||
mouse_scroll:
|
mouse_scroll:
|
||||||
mov [exit_from_work_arrea],1 ;mouse situated after work arrea
|
mov [exit_from_work_arrea],1 ;mouse situated after work arrea
|
||||||
;scrollers
|
;scrollers
|
||||||
call GetMouseClick
|
cmp [MouseBut],0
|
||||||
cmp eax,1
|
je still
|
||||||
jne still
|
|
||||||
|
|
||||||
call GetMouseCoordinats
|
;call GetMouseCoordinats
|
||||||
;interraction with horizontal scroller
|
;interraction with horizontal scroller
|
||||||
mov eax,[Scroll1CoordinatX]
|
mov eax,[Scroll1CoordinatX]
|
||||||
mov ebx,[Scroll1CoordinatY]
|
mov ebx,[Scroll1CoordinatY]
|
||||||
@ -179,12 +180,11 @@ mouse_in_work_arrea:
|
|||||||
mov ebx,[Current_instrument]
|
mov ebx,[Current_instrument]
|
||||||
call set_cursor
|
call set_cursor
|
||||||
|
|
||||||
call GetMouseClick
|
cmp [MouseBut],0
|
||||||
test eax,eax
|
je no_use_instruments
|
||||||
jz no_use_instruments
|
|
||||||
|
|
||||||
cmp [Activate_instrument],0
|
cmp [Activate_instrument],0
|
||||||
jnz no_undo___
|
jne no_undo___
|
||||||
;------------begin copy for undo-------------
|
;------------begin copy for undo-------------
|
||||||
;copy bufer_0 -> bufer_2
|
;copy bufer_0 -> bufer_2
|
||||||
mov edi,[PointerToCopyPicture2]
|
mov edi,[PointerToCopyPicture2]
|
||||||
@ -210,11 +210,9 @@ mouse_in_work_arrea:
|
|||||||
;--------------end copy for undo-------------
|
;--------------end copy for undo-------------
|
||||||
no_undo___:
|
no_undo___:
|
||||||
call TakeButtonInstruments
|
call TakeButtonInstruments
|
||||||
|
|
||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
no_use_instruments:
|
no_use_instruments:
|
||||||
mov eax,[Current_instrument]
|
|
||||||
and [Activate_instrument],0
|
and [Activate_instrument],0
|
||||||
jmp still
|
jmp still
|
||||||
;-----------------------------------------------
|
;-----------------------------------------------
|
||||||
@ -232,5 +230,6 @@ GetMouseCoordinats:
|
|||||||
;-------get mouse attributs----------------------
|
;-------get mouse attributs----------------------
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
GetMouseClick:
|
GetMouseClick:
|
||||||
mcall SF_MOUSE_GET,SSF_BUTTON
|
mcall SF_MOUSE_GET,SSF_BUTTON_EXT
|
||||||
|
mov [MouseBut],eax
|
||||||
ret
|
ret
|
@ -1027,7 +1027,7 @@ TakeButtonInstruments:
|
|||||||
jne no_1_
|
jne no_1_
|
||||||
mov [k],1
|
mov [k],1
|
||||||
call scrollbar_move_00
|
call scrollbar_move_00
|
||||||
and [Current_instrument],0
|
and [Current_instrument],0 ;???
|
||||||
call drawwin
|
call drawwin
|
||||||
ret
|
ret
|
||||||
no_1_:
|
no_1_:
|
||||||
@ -1086,318 +1086,131 @@ TakeButtonInstruments:
|
|||||||
cmp eax,21
|
cmp eax,21
|
||||||
jne no_allocation
|
jne no_allocation
|
||||||
|
|
||||||
cmp [instrument_used],0
|
|
||||||
jnz instrument_not_finished_work
|
|
||||||
|
|
||||||
mov al,[Activate_instrument]
|
|
||||||
test al,al
|
|
||||||
jnz no_new_allocation_xy
|
|
||||||
mov eax,[ScreenX]
|
|
||||||
mov ebx,[ScreenY]
|
|
||||||
add eax,[PosX]
|
|
||||||
add ebx,[PosY]
|
|
||||||
mov [OldX],eax
|
|
||||||
mov [OldY],ebx
|
|
||||||
inc eax
|
|
||||||
inc ebx
|
|
||||||
mov [rectangular_shade_x],eax
|
|
||||||
mov [rectangular_shade_y],ebx
|
|
||||||
mov [Activate_instrument],1
|
mov [Activate_instrument],1
|
||||||
mov [instrument_used],1
|
|
||||||
and [crossing],0
|
|
||||||
and [finishing_crossing],0
|
|
||||||
xor eax,eax
|
|
||||||
mov ecx,mem_flood_f/4
|
|
||||||
mov edi,[ReserveArray]
|
|
||||||
cld
|
|
||||||
rep stosd
|
|
||||||
ret
|
|
||||||
no_new_allocation_xy:
|
|
||||||
instrument_not_finished_work:
|
|
||||||
|
|
||||||
mov al,[instrument_used]
|
|
||||||
test al,al
|
|
||||||
jz no_change_coordinats
|
|
||||||
|
|
||||||
cmp [Activate_instrument],0
|
|
||||||
jnz no_change_coordinats
|
|
||||||
|
|
||||||
;save coordinates as old if crossing=0
|
|
||||||
cmp [crossing],0
|
|
||||||
jnz no_save_coordinate_of_crossing
|
|
||||||
|
|
||||||
mov eax,[OldX]
|
|
||||||
mov ebx,[OldY]
|
|
||||||
|
|
||||||
cmp eax,[rectangular_shade_x]
|
|
||||||
jl no_remove_x
|
|
||||||
mov ecx,[rectangular_shade_x]
|
|
||||||
mov [OldX],ecx ; OldX <-----> rectangulare_shade_x
|
|
||||||
mov [rectangular_shade_x],eax
|
|
||||||
no_remove_x:
|
|
||||||
|
|
||||||
cmp ebx,[rectangular_shade_y]
|
|
||||||
jl no_remove_y
|
|
||||||
mov ecx,[rectangular_shade_y]
|
|
||||||
mov [OldY],ecx ; OldY <-----> rectangulare_shade_y
|
|
||||||
mov [rectangular_shade_y],ebx
|
|
||||||
no_remove_y:
|
|
||||||
|
|
||||||
mov eax,[ScreenX]
|
|
||||||
mov ebx,[ScreenY]
|
|
||||||
add eax,[PosX]
|
|
||||||
add ebx,[PosY]
|
|
||||||
mov [crossing_old_x],eax
|
|
||||||
mov [crossing_old_y],ebx
|
|
||||||
mov [crossing],1
|
|
||||||
|
|
||||||
|
|
||||||
mov eax,[OldX]
|
|
||||||
mov ebx,[OldY]
|
|
||||||
inc eax
|
|
||||||
inc ebx
|
|
||||||
mov [SpriteCoordinatX],eax
|
|
||||||
mov [SpriteCoordinatY],ebx
|
|
||||||
mov [SpriteOldCoordinatX],eax
|
|
||||||
mov [SpriteOldCoordinatY],ebx
|
|
||||||
mov esi,[rectangular_shade_x]
|
|
||||||
mov edi,[rectangular_shade_y]
|
|
||||||
|
|
||||||
sub esi,eax
|
|
||||||
jns @f
|
|
||||||
neg esi ;sign sprite size x
|
|
||||||
@@:
|
|
||||||
|
|
||||||
sub edi,ebx
|
|
||||||
jns @f
|
|
||||||
neg edi ;sign sprite size y
|
|
||||||
@@:
|
|
||||||
|
|
||||||
test esi,esi
|
|
||||||
jnz @f
|
|
||||||
mov esi,1 ;null sprite x
|
|
||||||
@@:
|
|
||||||
|
|
||||||
test edi,edi
|
|
||||||
jnz @f
|
|
||||||
mov edi,1 ;null sprite y
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov [SpriteSizeX],esi
|
|
||||||
mov [SpriteSizeY],edi
|
|
||||||
|
|
||||||
call SaveFonForSprite
|
|
||||||
|
|
||||||
no_save_coordinate_of_crossing:
|
|
||||||
|
|
||||||
cmp [crossing],0
|
|
||||||
je no_test_crossing_with_work_arrea
|
|
||||||
;if mouse situatad after allocation than exit
|
|
||||||
push [ScreenX]
|
|
||||||
push [ScreenY]
|
|
||||||
|
|
||||||
call GetScreenCordinats
|
call GetScreenCordinats
|
||||||
|
|
||||||
mov eax,[OldX]
|
bt [MouseBut],8 ;left button down
|
||||||
mov ebx,[OldY]
|
jnc .left_but_down
|
||||||
mov ecx,[ScreenX]
|
cmp [crossing],2
|
||||||
mov edx,[ScreenY]
|
jne @f
|
||||||
mov esi,[SpriteSizeX]
|
;move old selection
|
||||||
mov edi,[SpriteSizeY]
|
mov eax,[crossing_old_x]
|
||||||
add ecx,[PosX]
|
mov ebx,[crossing_old_y]
|
||||||
add edx,[PosY]
|
mov ecx,[ScreenX]
|
||||||
inc esi
|
mov edx,[ScreenY]
|
||||||
inc edi
|
add ecx,[PosX]
|
||||||
call columnus
|
add edx,[PosY]
|
||||||
|
mov esi,[rectangular_shade_x]
|
||||||
|
mov edi,[rectangular_shade_y]
|
||||||
|
sub esi,eax
|
||||||
|
sub edi,ebx
|
||||||
|
call columnus
|
||||||
|
|
||||||
test eax,eax
|
test eax,eax
|
||||||
jnz crossing_with_work_area
|
jz @f
|
||||||
mov [finishing_crossing],1
|
mov [crossing],3
|
||||||
crossing_with_work_area:
|
mov [OldX],ecx
|
||||||
|
mov [OldY],edx
|
||||||
|
jmp selection_update
|
||||||
|
@@:
|
||||||
|
;start new selection
|
||||||
|
mov eax,[ScreenX]
|
||||||
|
add eax,[PosX]
|
||||||
|
mov [crossing_old_x],eax
|
||||||
|
mov [rectangular_shade_x],eax
|
||||||
|
mov eax,[ScreenY]
|
||||||
|
add eax,[PosY]
|
||||||
|
mov [crossing_old_y],eax
|
||||||
|
mov [rectangular_shade_y],eax
|
||||||
|
mov [crossing],1
|
||||||
|
jmp selection_update
|
||||||
|
.left_but_down:
|
||||||
|
|
||||||
pop [ScreenY]
|
bt [MouseBut],0 ;left button press
|
||||||
pop [ScreenX]
|
jnc .no_mouse_move
|
||||||
|
cmp [crossing],3
|
||||||
|
jne .no_sel_move
|
||||||
|
;move selection
|
||||||
|
mov eax,[ScreenX]
|
||||||
|
add eax,[PosX]
|
||||||
|
sub eax,[OldX]
|
||||||
|
add [OldX],eax
|
||||||
|
mov ebx,[crossing_old_x]
|
||||||
|
add ebx,eax
|
||||||
|
cmp ebx,0
|
||||||
|
jge @f
|
||||||
|
;exit from left border
|
||||||
|
sub eax,ebx
|
||||||
|
@@:
|
||||||
|
add [crossing_old_x],eax
|
||||||
|
add [rectangular_shade_x],eax
|
||||||
|
mov eax,[ScreenY]
|
||||||
|
add eax,[PosY]
|
||||||
|
sub eax,[OldY]
|
||||||
|
add [OldY],eax
|
||||||
|
mov ebx,[crossing_old_y]
|
||||||
|
add ebx,eax
|
||||||
|
cmp ebx,0
|
||||||
|
jge @f
|
||||||
|
;exit from top border
|
||||||
|
sub eax,ebx
|
||||||
|
@@:
|
||||||
|
add [crossing_old_y],eax
|
||||||
|
add [rectangular_shade_y],eax
|
||||||
|
jmp selection_update
|
||||||
|
.no_sel_move:
|
||||||
|
;resize selection
|
||||||
|
mov eax,[ScreenX]
|
||||||
|
add eax,[PosX]
|
||||||
|
mov [rectangular_shade_x],eax
|
||||||
|
mov eax,[ScreenY]
|
||||||
|
add eax,[PosY]
|
||||||
|
mov [rectangular_shade_y],eax
|
||||||
|
jmp selection_update
|
||||||
|
.no_mouse_move:
|
||||||
|
|
||||||
no_test_crossing_with_work_arrea:
|
bt [MouseBut],16 ;left button up
|
||||||
|
jnc .left_but_up
|
||||||
|
;finish selection
|
||||||
|
mov eax,[crossing_old_x]
|
||||||
|
mov ebx,[rectangular_shade_x]
|
||||||
|
cmp eax,ebx
|
||||||
|
jle @f
|
||||||
|
mov [crossing_old_x],ebx
|
||||||
|
mov [rectangular_shade_x],eax
|
||||||
|
@@:
|
||||||
|
mov eax,[crossing_old_y]
|
||||||
|
mov ebx,[rectangular_shade_y]
|
||||||
|
cmp eax,ebx
|
||||||
|
jle @f
|
||||||
|
mov [crossing_old_y],ebx
|
||||||
|
mov [rectangular_shade_y],eax
|
||||||
|
@@:
|
||||||
|
mov [crossing],2
|
||||||
|
ret
|
||||||
|
.left_but_up:
|
||||||
|
|
||||||
mov eax,[ScreenX]
|
bt [MouseBut],9 ;right button down
|
||||||
mov ebx,[ScreenY]
|
jnc .right_but_down
|
||||||
add eax,[PosX]
|
;delete select
|
||||||
add ebx,[PosY]
|
mov [crossing],0
|
||||||
mov ecx,eax
|
jmp selection_update
|
||||||
mov edx,ebx
|
.right_but_down:
|
||||||
sub eax,[crossing_old_x] ;dx=(x-oldx)
|
|
||||||
sub ebx,[crossing_old_y] ;dy=(y-oldy)
|
|
||||||
mov [crossing_old_x],ecx
|
|
||||||
mov [crossing_old_y],edx
|
|
||||||
|
|
||||||
add [OldX],eax ;x1=x1+dx
|
|
||||||
add [OldY],ebx ;y1=y1+dy
|
|
||||||
add [rectangular_shade_x],eax ;x2=x2+dx
|
|
||||||
add [rectangular_shade_y],ebx ;y2+y2+dy
|
|
||||||
|
|
||||||
mov eax,[OldX]
|
|
||||||
mov ebx,[OldY]
|
|
||||||
inc eax
|
|
||||||
inc ebx
|
|
||||||
mov [SpriteCoordinatX],eax
|
|
||||||
mov [SpriteCoordinatY],ebx
|
|
||||||
|
|
||||||
cmp [SpriteCoordinatX],0
|
|
||||||
jns @f
|
|
||||||
mov [SpriteCoordinatX],1 ;null sprite coordinat x
|
|
||||||
@@:
|
|
||||||
cmp [SpriteCoordinatY],0
|
|
||||||
jns @f
|
|
||||||
mov [SpriteCoordinatY],1 ;null sprite coordinat y
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov esi,[rectangular_shade_x]
|
|
||||||
mov edi,[rectangular_shade_y]
|
|
||||||
|
|
||||||
sub esi,[OldX]
|
|
||||||
jns @f
|
|
||||||
neg esi
|
|
||||||
@@:
|
|
||||||
sub edi,[OldY]
|
|
||||||
jns @f
|
|
||||||
neg edi
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov ecx,[OldX]
|
|
||||||
mov edx,[OldY]
|
|
||||||
|
|
||||||
sub ecx,[PosX]
|
|
||||||
jns @f
|
|
||||||
xor ecx,ecx
|
|
||||||
add ecx,[PosX]
|
|
||||||
mov [OldX],ecx
|
|
||||||
add ecx,esi
|
|
||||||
mov [rectangular_shade_x],ecx
|
|
||||||
@@:
|
|
||||||
|
|
||||||
sub edx,[PosY]
|
|
||||||
jns @f
|
|
||||||
xor edx,edx
|
|
||||||
add edx,[PosY]
|
|
||||||
mov [OldY],edx
|
|
||||||
add edx,edi
|
|
||||||
mov [rectangular_shade_y],edx
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov ecx,[Picture_SizeX]
|
|
||||||
sub ecx,esi
|
|
||||||
cmp [OldX],ecx
|
|
||||||
jl @f
|
|
||||||
dec ecx
|
|
||||||
mov [OldX],ecx
|
|
||||||
add ecx,esi
|
|
||||||
mov [rectangular_shade_x],ecx
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov edx,[Picture_SizeY]
|
|
||||||
sub edx,edi
|
|
||||||
cmp [OldY],edx
|
|
||||||
jl @f
|
|
||||||
dec edx
|
|
||||||
mov [OldY],edx
|
|
||||||
add edx,edi
|
|
||||||
mov [rectangular_shade_y],edx
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov eax,[rectangular_shade_x]
|
|
||||||
mov ebx,[rectangular_shade_y]
|
|
||||||
sub eax,[PosX]
|
|
||||||
sub ebx,[PosY]
|
|
||||||
mov [ScreenX],eax
|
|
||||||
mov [ScreenY],ebx
|
|
||||||
no_change_coordinats:
|
|
||||||
|
|
||||||
;put saved pixels
|
|
||||||
square_width_put
|
|
||||||
|
|
||||||
cmp [DrawSprite_flag],1
|
|
||||||
jne no_activate_put_fon_
|
|
||||||
|
|
||||||
|
if 0
|
||||||
cmp [Paste_flag],1
|
cmp [Paste_flag],1
|
||||||
je @f
|
je @f
|
||||||
call PutFonForSprite
|
call PutFonForSprite
|
||||||
@@:
|
@@:
|
||||||
and [Paste_flag],0
|
|
||||||
no_activate_put_fon_:
|
|
||||||
|
|
||||||
cmp [finishing_crossing],0
|
|
||||||
jz not_finish_from_instrument_crossing
|
|
||||||
and [Activate_instrument],0
|
|
||||||
and [crossing],0
|
|
||||||
and [instrument_used],0
|
|
||||||
and [DrawSprite_flag],0
|
|
||||||
call MovePictureToWorkScreen
|
|
||||||
ret
|
|
||||||
not_finish_from_instrument_crossing:
|
|
||||||
|
|
||||||
;calculate line
|
|
||||||
mov ebx,[ReserveArray]
|
|
||||||
add ebx,4
|
|
||||||
mov eax,[PointerToPicture]
|
|
||||||
mov ecx,[Picture_SizeX]
|
|
||||||
mov edx,[OldX]
|
|
||||||
shl edx,16
|
|
||||||
add edx,[OldY]
|
|
||||||
mov esi,[ScreenX]
|
|
||||||
mov edi,[ScreenY]
|
|
||||||
add esi,[PosX]
|
|
||||||
add edi,[PosY]
|
|
||||||
|
|
||||||
mov ebp,[Picture_SizeX]
|
|
||||||
dec ebp
|
|
||||||
cmp esi,ebp
|
|
||||||
jl @f
|
|
||||||
mov esi,ebp ;minimum x allocation
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov ebp,[Picture_SizeY]
|
|
||||||
dec ebp
|
|
||||||
cmp edi,ebp
|
|
||||||
jl @f
|
|
||||||
mov edi,ebp ;minimum y allocation
|
|
||||||
@@:
|
|
||||||
|
|
||||||
call calculate_rectangle
|
|
||||||
|
|
||||||
;save color pixels in ReserveArray
|
|
||||||
square_width_save
|
|
||||||
|
|
||||||
cmp [DrawSprite_flag],1
|
|
||||||
jne @f
|
|
||||||
;save current coordinats as old
|
|
||||||
mov eax,[SpriteCoordinatX]
|
|
||||||
mov ebx,[SpriteCoordinatY]
|
|
||||||
mov [SpriteOldCoordinatX],eax
|
|
||||||
mov [SpriteOldCoordinatY],ebx
|
|
||||||
|
|
||||||
call SaveFonForSprite
|
|
||||||
|
|
||||||
@@:
|
|
||||||
|
|
||||||
cmp [DrawSprite_flag],1
|
cmp [DrawSprite_flag],1
|
||||||
jne @f
|
jne @f
|
||||||
|
call SaveFonForSprite
|
||||||
call DrawSprite
|
call DrawSprite
|
||||||
@@:
|
@@:
|
||||||
|
end if
|
||||||
|
|
||||||
mov al,[instrument_used]
|
selection_update:
|
||||||
test al,al
|
|
||||||
jz no_change_coordinats
|
|
||||||
cmp [Activate_instrument],0
|
|
||||||
jz no_save_shades
|
|
||||||
mov eax,[ScreenX]
|
|
||||||
mov ebx,[ScreenY]
|
|
||||||
add eax,[PosX]
|
|
||||||
add ebx,[PosY]
|
|
||||||
mov [rectangular_shade_x],eax
|
|
||||||
mov [rectangular_shade_y],ebx
|
|
||||||
no_save_shades:
|
|
||||||
|
|
||||||
call MovePictureToWorkScreen
|
call MovePictureToWorkScreen
|
||||||
ret
|
ret
|
||||||
no_allocation:
|
no_allocation:
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
mov [line_width],1
|
mov [line_width],1
|
||||||
mov [lastik_is_active],0
|
mov [lastik_is_active],0
|
||||||
and [crossing],0
|
and [crossing],0
|
||||||
and [finishing_crossing],0
|
|
||||||
and [number_undo],0
|
and [number_undo],0
|
||||||
and [instrument_used],0
|
and [instrument_used],0
|
||||||
and [DrawSprite_flag],0
|
and [DrawSprite_flag],0
|
||||||
|
@ -64,6 +64,8 @@ init_main_menu:
|
|||||||
stdcall [ksubmenu_add], [main_menu_edit], eax
|
stdcall [ksubmenu_add], [main_menu_edit], eax
|
||||||
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_ClS, 0x66
|
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_ClS, 0x66
|
||||||
stdcall [ksubmenu_add], [main_menu_edit], eax
|
stdcall [ksubmenu_add], [main_menu_edit], eax
|
||||||
|
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Edit_SelectAll, 0x67
|
||||||
|
stdcall [ksubmenu_add], [main_menu_edit], eax
|
||||||
|
|
||||||
; add 'Edit' menu to main
|
; add 'Edit' menu to main
|
||||||
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Edit, [main_menu_edit]
|
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Edit, [main_menu_edit]
|
||||||
@ -126,6 +128,7 @@ button_handler_main_menu:
|
|||||||
menu_set 0x64, 6,4
|
menu_set 0x64, 6,4
|
||||||
menu_set 0x65, 6,5
|
menu_set 0x65, 6,5
|
||||||
menu_set 0x66, 6,6
|
menu_set 0x66, 6,6
|
||||||
|
menu_set 0x67, 6,7
|
||||||
menu_set 0x51, 5,1
|
menu_set 0x51, 5,1
|
||||||
menu_set 0x52, 5,2
|
menu_set 0x52, 5,2
|
||||||
menu_set 0x53, 5,3
|
menu_set 0x53, 5,3
|
||||||
@ -162,6 +165,7 @@ sz_main_menu_Edit_Copy db 'Copy', 0
|
|||||||
sz_main_menu_Edit_Paste db 'Paste', 0
|
sz_main_menu_Edit_Paste db 'Paste', 0
|
||||||
sz_main_menu_Edit_Cut db 'Cut', 0
|
sz_main_menu_Edit_Cut db 'Cut', 0
|
||||||
sz_main_menu_Edit_ClS db 'Clear screen', 0
|
sz_main_menu_Edit_ClS db 'Clear screen', 0
|
||||||
|
sz_main_menu_Edit_SelectAll db 'Select all', 0
|
||||||
|
|
||||||
sz_main_menu_Instr db 'Instruments', 0
|
sz_main_menu_Instr db 'Instruments', 0
|
||||||
sz_main_menu_Instr_Pencil db 'Pencil', 0
|
sz_main_menu_Instr_Pencil db 'Pencil', 0
|
||||||
|
@ -257,19 +257,14 @@ no_redo:
|
|||||||
cmp [number_menu],3
|
cmp [number_menu],3
|
||||||
jne no_copy
|
jne no_copy
|
||||||
|
|
||||||
cmp [instrument_used],1
|
mov eax,[crossing_old_x]
|
||||||
jne end_menu
|
mov ebx,[crossing_old_y]
|
||||||
cmp [Activate_instrument],0
|
|
||||||
jne end_menu
|
|
||||||
|
|
||||||
mov eax,[OldX]
|
|
||||||
mov ebx,[OldY]
|
|
||||||
|
|
||||||
cmp eax,[rectangular_shade_x]
|
cmp eax,[rectangular_shade_x]
|
||||||
jl no_remove_x_copy
|
jl no_remove_x_copy
|
||||||
|
|
||||||
mov ecx,[rectangular_shade_x]
|
mov ecx,[rectangular_shade_x]
|
||||||
mov [OldX],ecx ; OldX <-----> rectangulare_shade_x
|
mov [crossing_old_x],ecx ; crossing_old_x <-----> rectangulare_shade_x
|
||||||
mov [rectangular_shade_x],eax
|
mov [rectangular_shade_x],eax
|
||||||
|
|
||||||
no_remove_x_copy:
|
no_remove_x_copy:
|
||||||
@ -277,12 +272,12 @@ no_remove_x_copy:
|
|||||||
jl no_remove_y_copy
|
jl no_remove_y_copy
|
||||||
|
|
||||||
mov ecx,[rectangular_shade_y]
|
mov ecx,[rectangular_shade_y]
|
||||||
mov [OldY],ecx ; OldY <-----> rectangulare_shade_y
|
mov [crossing_old_y],ecx ; crossing_old_y <-----> rectangulare_shade_y
|
||||||
mov [rectangular_shade_y],ebx
|
mov [rectangular_shade_y],ebx
|
||||||
|
|
||||||
no_remove_y_copy:
|
no_remove_y_copy:
|
||||||
mov eax,[OldX]
|
mov eax,[crossing_old_x]
|
||||||
mov ebx,[OldY]
|
mov ebx,[crossing_old_y]
|
||||||
mov ecx,[rectangular_shade_x]
|
mov ecx,[rectangular_shade_x]
|
||||||
mov edx,[rectangular_shade_y]
|
mov edx,[rectangular_shade_y]
|
||||||
inc eax
|
inc eax
|
||||||
@ -314,10 +309,10 @@ no_signum_fill_r_y_copy:
|
|||||||
|
|
||||||
mov edx,[PointerToEditBufer]
|
mov edx,[PointerToEditBufer]
|
||||||
mov eax,[rectangular_shade_x]
|
mov eax,[rectangular_shade_x]
|
||||||
sub eax,[OldX]
|
sub eax,[crossing_old_x]
|
||||||
mov [edx],eax ;image.w
|
mov [edx],eax ;image.w
|
||||||
mov eax,[rectangular_shade_y]
|
mov eax,[rectangular_shade_y]
|
||||||
sub eax,[OldY]
|
sub eax,[crossing_old_y]
|
||||||
mov [edx+4],eax ;image.h
|
mov [edx+4],eax ;image.h
|
||||||
mov dword[edx+8],24 ;bit in pixel
|
mov dword[edx+8],24 ;bit in pixel
|
||||||
add edx,12 ;copy image parametrs
|
add edx,12 ;copy image parametrs
|
||||||
@ -365,20 +360,14 @@ no_copy:
|
|||||||
cmp [number_menu],4
|
cmp [number_menu],4
|
||||||
jne no_paste
|
jne no_paste
|
||||||
|
|
||||||
cmp [instrument_used],1
|
mov eax,[crossing_old_x]
|
||||||
jne no_paste
|
mov ebx,[crossing_old_y]
|
||||||
|
|
||||||
cmp [Activate_instrument],0
|
|
||||||
jne no_paste
|
|
||||||
|
|
||||||
mov eax,[OldX]
|
|
||||||
mov ebx,[OldY]
|
|
||||||
|
|
||||||
cmp eax,[rectangular_shade_x]
|
cmp eax,[rectangular_shade_x]
|
||||||
jl no_remove_x_paste
|
jl no_remove_x_paste
|
||||||
|
|
||||||
mov ecx,[rectangular_shade_x]
|
mov ecx,[rectangular_shade_x]
|
||||||
mov [OldX],ecx ; OldX <-----> rectangulare_shade_x
|
mov [crossing_old_x],ecx ; crossing_old_x <-----> rectangulare_shade_x
|
||||||
mov [rectangular_shade_x],eax
|
mov [rectangular_shade_x],eax
|
||||||
|
|
||||||
no_remove_x_paste:
|
no_remove_x_paste:
|
||||||
@ -386,12 +375,12 @@ no_remove_x_paste:
|
|||||||
jl no_remove_y_paste
|
jl no_remove_y_paste
|
||||||
|
|
||||||
mov ecx,[rectangular_shade_y]
|
mov ecx,[rectangular_shade_y]
|
||||||
mov [OldY],ecx ; OldY <-----> rectangulare_shade_y
|
mov [crossing_old_y],ecx ; crossing_old_y <-----> rectangulare_shade_y
|
||||||
mov [rectangular_shade_y],ebx
|
mov [rectangular_shade_y],ebx
|
||||||
|
|
||||||
no_remove_y_paste:
|
no_remove_y_paste:
|
||||||
mov eax,[OldX]
|
mov eax,[crossing_old_x]
|
||||||
mov ebx,[OldY]
|
mov ebx,[crossing_old_y]
|
||||||
mov ecx,[rectangular_shade_x]
|
mov ecx,[rectangular_shade_x]
|
||||||
mov edx,[rectangular_shade_y]
|
mov edx,[rectangular_shade_y]
|
||||||
inc eax
|
inc eax
|
||||||
@ -422,10 +411,10 @@ no_signum_fill_r_y_paste:
|
|||||||
cmp dword[edx+8],24
|
cmp dword[edx+8],24
|
||||||
jne end_menu
|
jne end_menu
|
||||||
mov eax,[edx]
|
mov eax,[edx]
|
||||||
add eax,[OldX]
|
add eax,[crossing_old_x]
|
||||||
mov [paste_img_w],eax
|
mov [paste_img_w],eax
|
||||||
mov eax,[edx+4]
|
mov eax,[edx+4]
|
||||||
add eax,[OldY]
|
add eax,[crossing_old_y]
|
||||||
mov [paste_img_h],eax
|
mov [paste_img_h],eax
|
||||||
add edx,12 ;copy image parametrs
|
add edx,12 ;copy image parametrs
|
||||||
mov [y],edi
|
mov [y],edi
|
||||||
@ -473,20 +462,14 @@ no_paste:
|
|||||||
cmp [number_menu],5
|
cmp [number_menu],5
|
||||||
jne no_cut
|
jne no_cut
|
||||||
|
|
||||||
cmp [instrument_used],1
|
mov eax,[crossing_old_x]
|
||||||
jne no_cut
|
mov ebx,[crossing_old_y]
|
||||||
|
|
||||||
cmp [Activate_instrument],0
|
|
||||||
jne no_cut
|
|
||||||
|
|
||||||
mov eax,[OldX]
|
|
||||||
mov ebx,[OldY]
|
|
||||||
|
|
||||||
cmp eax,[rectangular_shade_x]
|
cmp eax,[rectangular_shade_x]
|
||||||
jl no_remove_x_cut
|
jl no_remove_x_cut
|
||||||
|
|
||||||
mov ecx,[rectangular_shade_x]
|
mov ecx,[rectangular_shade_x]
|
||||||
mov [OldX],ecx ; OldX <-----> rectangulare_shade_x
|
mov [crossing_old_x],ecx ; crossing_old_x <-----> rectangulare_shade_x
|
||||||
mov [rectangular_shade_x],eax
|
mov [rectangular_shade_x],eax
|
||||||
|
|
||||||
no_remove_x_cut:
|
no_remove_x_cut:
|
||||||
@ -494,12 +477,12 @@ no_remove_x_cut:
|
|||||||
jl no_remove_y_cut
|
jl no_remove_y_cut
|
||||||
|
|
||||||
mov ecx,[rectangular_shade_y]
|
mov ecx,[rectangular_shade_y]
|
||||||
mov [OldY],ecx ; OldY <-----> rectangulare_shade_y
|
mov [crossing_old_y],ecx ; crossing_old_y <-----> rectangulare_shade_y
|
||||||
mov [rectangular_shade_y],ebx
|
mov [rectangular_shade_y],ebx
|
||||||
|
|
||||||
no_remove_y_cut:
|
no_remove_y_cut:
|
||||||
mov eax,[OldX]
|
mov eax,[crossing_old_x]
|
||||||
mov ebx,[OldY]
|
mov ebx,[crossing_old_y]
|
||||||
mov ecx,[rectangular_shade_x]
|
mov ecx,[rectangular_shade_x]
|
||||||
mov edx,[rectangular_shade_y]
|
mov edx,[rectangular_shade_y]
|
||||||
inc eax
|
inc eax
|
||||||
@ -570,25 +553,21 @@ no_cut:
|
|||||||
no_cleare_all:
|
no_cleare_all:
|
||||||
; <<< To allocate all >>>
|
; <<< To allocate all >>>
|
||||||
cmp [number_menu],7
|
cmp [number_menu],7
|
||||||
jne end_menu ;no_to_allocate_all
|
jne end_menu
|
||||||
|
|
||||||
mov [OldX],1
|
mov [crossing_old_x],0
|
||||||
mov [OldY],1
|
mov [crossing_old_y],0
|
||||||
mov eax,[Picture_SizeX]
|
mov eax,[Picture_SizeX]
|
||||||
mov ebx,[Picture_SizeY]
|
mov ebx,[Picture_SizeY]
|
||||||
dec eax
|
dec eax
|
||||||
dec ebx
|
dec ebx
|
||||||
mov [rectangular_shade_x],eax
|
mov [rectangular_shade_x],eax
|
||||||
mov [rectangular_shade_y],ebx
|
mov [rectangular_shade_y],ebx
|
||||||
mov [instrument_used],1
|
|
||||||
mov [Activate_instrument],1
|
|
||||||
mov [Current_instrument],30
|
mov [Current_instrument],30
|
||||||
mov [crossing],0
|
mov [crossing],2
|
||||||
; call TakeButtonInstruments
|
;call MovePictureToWorkScreen
|
||||||
; call MovePictureToWorkScreen
|
|
||||||
jmp end_menu
|
jmp end_menu
|
||||||
;---------------------------------------------------------------------
|
;---------------------------------------------------------------------
|
||||||
;no_to_allocate_all:
|
|
||||||
no_edit:
|
no_edit:
|
||||||
;|||||||||||||||||||||||||INSTRUMENTS||||||||||||||||||||||
|
;|||||||||||||||||||||||||INSTRUMENTS||||||||||||||||||||||
|
||||||
cmp [number_panel],5
|
cmp [number_panel],5
|
||||||
|
@ -236,15 +236,15 @@ big_pixel_x:
|
|||||||
|
|
||||||
fps:
|
fps:
|
||||||
;calculate selection rect
|
;calculate selection rect
|
||||||
cmp [instrument_used],1
|
cmp [crossing],0
|
||||||
jne .no_selection_rect
|
je .no_selection_rect
|
||||||
mov edx,[rectangular_shade_y]
|
mov edx,[rectangular_shade_y]
|
||||||
sub edx,[PosY]
|
sub edx,[PosY]
|
||||||
mov ecx,[rectangular_shade_x]
|
mov ecx,[rectangular_shade_x]
|
||||||
sub ecx,[PosX]
|
sub ecx,[PosX]
|
||||||
mov ebx,[OldY]
|
mov ebx,[crossing_old_y]
|
||||||
sub ebx,[PosY]
|
sub ebx,[PosY]
|
||||||
mov eax,[OldX]
|
mov eax,[crossing_old_x]
|
||||||
sub eax,[PosX]
|
sub eax,[PosX]
|
||||||
cmp [k],1
|
cmp [k],1
|
||||||
je .zo_1
|
je .zo_1
|
||||||
|
Loading…
Reference in New Issue
Block a user