mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-24 15:46:49 +03:00
bab525b2cf
1) Fixed window flicker when redrawing 2) Fixed memory leak for stack git-svn-id: svn://kolibrios.org@1643 a494cfbc-eb01-0410-851d-a64ba20cac60
271 lines
4.7 KiB
PHP
271 lines
4.7 KiB
PHP
;---------------------------------------------
|
|
;-------------interraction MOUSE--------------
|
|
;---------------------------------------------
|
|
mouse:
|
|
call GetMouseCoordinats
|
|
;panel
|
|
mov edx,[Window_SizeX]
|
|
sub edx,5
|
|
|
|
cmp ebx,20
|
|
jle no_panel
|
|
|
|
cmp ebx,20+15
|
|
jae no_panel
|
|
|
|
cmp eax,5
|
|
jle no_panel
|
|
|
|
cmp eax,edx ;585
|
|
jae no_panel
|
|
|
|
call GetMouseCoordinats
|
|
mov [counter],7
|
|
mov edi,panel_text
|
|
jmp panel_interraction
|
|
|
|
no_panel:
|
|
cmp [Panel_flag],0
|
|
jz no_redraw_panel
|
|
|
|
mov [counter],7
|
|
mov edi,panel_text
|
|
jmp panel_interraction
|
|
|
|
no_redraw_panel:
|
|
call GetMouseCoordinats
|
|
mov eax,[MouseX]
|
|
mov ebx,[MouseY]
|
|
mov ecx,[WorkScreen_SizeX]
|
|
mov edx,[WorkScreen_SizeY]
|
|
add ecx,9
|
|
add edx,89
|
|
|
|
cmp eax,ecx
|
|
jae mouse_scroll
|
|
|
|
cmp ebx,edx
|
|
jae mouse_scroll
|
|
jmp no_scrollers
|
|
|
|
mouse_scroll:
|
|
mov [exit_from_work_arrea],1 ;mouse situated after work arrea
|
|
;scrollers
|
|
call GetMouseClick
|
|
cmp eax,1
|
|
jne no_click
|
|
|
|
call GetMouseCoordinats
|
|
;interraction with horizontal scroller
|
|
mov eax,[Scroll1CoordinatX]
|
|
mov ebx,[Scroll1CoordinatY]
|
|
mov ecx,[MouseX]
|
|
mov edx,[MouseY]
|
|
mov esi,[Scroll1MaxSizeX]
|
|
mov edi,[Scroll1MaxSizeY]
|
|
call columnus
|
|
test eax,eax
|
|
jz no_horizontal
|
|
|
|
mov eax,9
|
|
mov ebx,[Scroll1CoordinatY]
|
|
mov ecx,[Scroll1MaxSizeX]
|
|
mov edx,14+10
|
|
mov esi,7
|
|
inc ecx
|
|
call draw_volume_rectangle
|
|
|
|
mov eax,[MouseX]
|
|
mov ebx,[Scroll1SizeX]
|
|
shr ebx,1
|
|
sub eax,ebx
|
|
mov ecx,[MouseX]
|
|
add ecx,ebx
|
|
mov edx,8+1
|
|
add edx,[Scroll1MaxSizeX]
|
|
mov [Scroll1CoordinatX],eax
|
|
sub eax,9
|
|
jns no_min_scroll
|
|
|
|
mov [Scroll1CoordinatX],9
|
|
|
|
no_min_scroll:
|
|
cmp ecx,edx
|
|
jl no_max_scroll
|
|
|
|
sub edx,ebx
|
|
sub edx,ebx
|
|
mov [Scroll1CoordinatX],edx
|
|
|
|
no_max_scroll:
|
|
mov eax,[Scroll1CoordinatX]
|
|
sub eax,9
|
|
mov ebx,[Picture_SizeX]
|
|
imul eax,ebx
|
|
mov ebx,[Scroll1MaxSizeX]
|
|
cdq
|
|
idiv ebx
|
|
mov [PosX],eax
|
|
jmp no_vertical
|
|
|
|
no_horizontal:
|
|
mov eax,[Scroll2CoordinatX]
|
|
mov ebx,[Scroll2CoordinatY]
|
|
mov ecx,[MouseX]
|
|
mov edx,[MouseY]
|
|
mov esi,[Scroll2MaxSizeX]
|
|
mov edi,[Scroll2MaxSizeY]
|
|
call columnus
|
|
test eax,eax
|
|
jz no_vertical
|
|
|
|
mov eax,[Scroll2CoordinatX]
|
|
mov ebx,89
|
|
mov ecx,14+10
|
|
mov edx,[Scroll2MaxSizeY]
|
|
mov esi,7
|
|
inc edx
|
|
call draw_volume_rectangle
|
|
|
|
mov eax,[MouseY]
|
|
mov ebx,[Scroll2SizeY]
|
|
shr ebx,1
|
|
sub eax,ebx
|
|
mov ecx,[MouseY]
|
|
add ecx,ebx
|
|
mov edx,89
|
|
add edx,[Scroll2MaxSizeY]
|
|
mov [Scroll2CoordinatY],eax
|
|
|
|
sub eax,89
|
|
jns no_min_scroll2
|
|
|
|
mov [Scroll2CoordinatY],89
|
|
|
|
no_min_scroll2:
|
|
cmp ecx,edx
|
|
jl no_max_scroll2
|
|
|
|
sub edx,ebx
|
|
sub edx,ebx
|
|
mov [Scroll2CoordinatY],edx
|
|
|
|
no_max_scroll2:
|
|
mov eax,[Scroll2CoordinatY]
|
|
sub eax,89
|
|
mov ebx,[Picture_SizeY]
|
|
imul eax,ebx
|
|
mov ebx,[Scroll2MaxSizeY]
|
|
cdq
|
|
idiv ebx
|
|
mov [PosY],eax
|
|
|
|
no_vertical:
|
|
call CalculatePositionScreen
|
|
call draw_scrollers
|
|
call MovePictureToWorkScreen
|
|
|
|
no_click:
|
|
jmp still
|
|
|
|
no_scrollers:
|
|
mov eax,[MouseX]
|
|
mov ebx,[MouseY]
|
|
mov ecx,[Window_SizeX]
|
|
mov edx,[Window_SizeY]
|
|
sub ecx,36
|
|
sub edx,35
|
|
|
|
cmp eax,9
|
|
jle not_work_arrea
|
|
|
|
cmp eax,ecx
|
|
jae not_work_arrea
|
|
|
|
cmp ebx,20+15+1+50
|
|
jle not_work_arrea
|
|
|
|
cmp ebx,edx
|
|
jae not_work_arrea
|
|
jmp mouse_in_work_arrea
|
|
|
|
not_work_arrea:
|
|
mov [exit_from_work_arrea],1
|
|
jmp still
|
|
|
|
mouse_in_work_arrea:
|
|
call GetScreenCordinats
|
|
call PrintMousePos
|
|
call GetMouseClick
|
|
test eax,eax
|
|
jz no_use_instruments
|
|
|
|
cmp [Activate_instrument],0
|
|
jnz no_undo___
|
|
;------------begin copy for undo-------------
|
|
inc [number_undo]
|
|
cmp [number_undo],1
|
|
jne no_one__
|
|
|
|
mov edi,[PointerToCopyPicture]
|
|
|
|
no_one__:
|
|
cmp [number_undo],2
|
|
jne no_two__
|
|
|
|
mov edi,[PointerToCopyPicture2]
|
|
|
|
no_two__:
|
|
cmp [number_undo],3
|
|
jne no_three__
|
|
|
|
;copy bufer number two to bufer number one
|
|
mov esi,[PointerToCopyPicture2]
|
|
mov edi,[PointerToCopyPicture]
|
|
mov ecx,[Picture_SizeX]
|
|
imul ecx,[Picture_SizeY]
|
|
lea ecx,[ecx+ecx*2]
|
|
add ecx,4
|
|
shr ecx,2
|
|
inc ecx
|
|
cld
|
|
rep movsd
|
|
;end copy
|
|
dec [number_undo]
|
|
mov edi,[PointerToCopyPicture2]
|
|
|
|
no_three__:
|
|
mov esi,[PointerToPicture]
|
|
mov ecx,[Picture_SizeX]
|
|
imul ecx,[Picture_SizeY]
|
|
lea ecx,[ecx+ecx*2]
|
|
add ecx,4
|
|
shr ecx,2
|
|
inc ecx
|
|
cld
|
|
rep movsd
|
|
;--------------end copy for undo-------------
|
|
no_undo___:
|
|
call TakeButtonInstruments
|
|
|
|
no_use_instruments:
|
|
mov eax,[Current_instrument]
|
|
and [Activate_instrument],0
|
|
jmp still
|
|
;-----------------------------------------------
|
|
;---------get mouse cordinats-------------------
|
|
;-----------------------------------------------
|
|
GetMouseCoordinats:
|
|
mcall 37,1
|
|
mov ebx,eax
|
|
shr eax,16
|
|
and ebx,0xffff
|
|
mov [MouseX],eax
|
|
mov [MouseY],ebx
|
|
ret
|
|
;------------------------------------------------
|
|
;-------get mouse attributs----------------------
|
|
;------------------------------------------------
|
|
GetMouseClick:
|
|
mcall 37,2
|
|
ret |