Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 254 → Rev 255

/programs/media/animage/trunk/events_of_mouse.inc
0,0 → 1,318
;---------------------------------------------
;-------------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
call panel_interraction
 
jmp still
no_panel:
 
cmp [Panel_flag],0
jz no_redraw_panel
 
mov [counter],7
mov edi,panel_text
call 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:
 
mov eax,37
mov ebx,1
int 0x40
 
mov ebx,eax
shr eax,16
and ebx,0xffff
 
mov [MouseX],eax
mov [MouseY],ebx
 
ret
;------------------------------------------------
;-------get mouse attributs----------------------
;------------------------------------------------
GetMouseClick:
mov eax,37
mov ebx,2
int 0x40
 
ret