Subversion Repositories Kolibri OS

Rev

Rev 6371 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
255 heavyiron 1
;---------------------------------------------
2
;-------------interraction MOUSE--------------
3
;---------------------------------------------
4
mouse:
6359 IgorA 5
	stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
6
 
6358 IgorA 7
	or ecx,-1
6355 IgorA 8
	mcall SF_THREAD_INFO,procinfo
2045 mario79 9
 
10
	mov	eax,[procinfo+70] ;staus of window
6358 IgorA 11
	test eax,100b
2045 mario79 12
	jne	still
13
 
6385 IgorA 14
	call GetMouseClick
15
 
6358 IgorA 16
	call GetMouseCoordinats
1643 mario79 17
	mov	eax,[MouseX]
18
	mov	ebx,[MouseY]
19
	mov	ecx,[WorkScreen_SizeX]
20
	mov	edx,[WorkScreen_SizeY]
6357 IgorA 21
	add	ecx,ci_scrollh_coord_x_min
22
	add	edx,ci_scrollv_coord_y_min
255 heavyiron 23
 
1643 mario79 24
	cmp	eax,ecx
25
	jae	mouse_scroll
255 heavyiron 26
 
1643 mario79 27
	cmp	ebx,edx
28
	jae	mouse_scroll
29
	jmp	no_scrollers
255 heavyiron 30
 
1643 mario79 31
mouse_scroll:
32
	mov	[exit_from_work_arrea],1 ;mouse situated after work arrea
33
;scrollers
6385 IgorA 34
	cmp [MouseBut],0
35
	je still
255 heavyiron 36
 
6385 IgorA 37
	;call GetMouseCoordinats
1643 mario79 38
;interraction with horizontal scroller
39
	mov	eax,[Scroll1CoordinatX]
40
	mov	ebx,[Scroll1CoordinatY]
41
	mov	ecx,[MouseX]
42
	mov	edx,[MouseY]
43
	mov	esi,[Scroll1MaxSizeX]
44
	mov	edi,[Scroll1MaxSizeY]
45
	call	columnus
46
	test	eax,eax
47
	jz	no_horizontal
255 heavyiron 48
 
6357 IgorA 49
	mov	eax,ci_scrollh_coord_x_min
1643 mario79 50
	mov	ebx,[Scroll1CoordinatY]
51
	mov	ecx,[Scroll1MaxSizeX]
6357 IgorA 52
	inc ecx
6358 IgorA 53
	mov	edx,ci_scroll_dim-6
1643 mario79 54
	mov	esi,7
6357 IgorA 55
	call draw_volume_rectangle ; horizontal scrollbar clear
255 heavyiron 56
 
1643 mario79 57
	mov	eax,[MouseX]
58
	mov	ebx,[Scroll1SizeX]
59
	shr	ebx,1
60
	sub	eax,ebx
61
	mov	ecx,[MouseX]
62
	add	ecx,ebx
6357 IgorA 63
	mov	edx,ci_scrollh_coord_x_min
1643 mario79 64
	add	edx,[Scroll1MaxSizeX]
65
	mov	[Scroll1CoordinatX],eax
6357 IgorA 66
	sub	eax,ci_scrollh_coord_x_min
1643 mario79 67
	jns	no_min_scroll
255 heavyiron 68
 
6357 IgorA 69
	mov	[Scroll1CoordinatX],ci_scrollh_coord_x_min
255 heavyiron 70
 
1643 mario79 71
no_min_scroll:
72
	cmp	ecx,edx
73
	jl	no_max_scroll
255 heavyiron 74
 
1643 mario79 75
	sub	edx,ebx
76
	sub	edx,ebx
77
	mov	[Scroll1CoordinatX],edx
255 heavyiron 78
 
1643 mario79 79
no_max_scroll:
80
	mov	eax,[Scroll1CoordinatX]
6357 IgorA 81
	sub	eax,ci_scrollh_coord_x_min
1643 mario79 82
	mov	ebx,[Picture_SizeX]
83
	imul	eax,ebx
84
	mov	ebx,[Scroll1MaxSizeX]
255 heavyiron 85
	cdq
1643 mario79 86
	idiv	ebx
87
	mov	[PosX],eax
88
	jmp	no_vertical
255 heavyiron 89
 
1643 mario79 90
no_horizontal:
91
	mov	eax,[Scroll2CoordinatX]
92
	mov	ebx,[Scroll2CoordinatY]
93
	mov	ecx,[MouseX]
94
	mov	edx,[MouseY]
95
	mov	esi,[Scroll2MaxSizeX]
96
	mov	edi,[Scroll2MaxSizeY]
97
	call	columnus
98
	test	eax,eax
99
	jz	no_vertical
255 heavyiron 100
 
1643 mario79 101
	mov	eax,[Scroll2CoordinatX]
6357 IgorA 102
	mov	ebx,ci_scrollv_coord_y_min
6358 IgorA 103
	mov	ecx,ci_scroll_dim-6
1643 mario79 104
	mov	edx,[Scroll2MaxSizeY]
6357 IgorA 105
	inc edx
1643 mario79 106
	mov	esi,7
6357 IgorA 107
	call draw_volume_rectangle ; vertical scrollbar clear
255 heavyiron 108
 
1643 mario79 109
	mov	eax,[MouseY]
110
	mov	ebx,[Scroll2SizeY]
111
	shr	ebx,1
112
	sub	eax,ebx
113
	mov	ecx,[MouseY]
114
	add	ecx,ebx
6357 IgorA 115
	mov	edx,ci_scrollv_coord_y_min
1643 mario79 116
	add	edx,[Scroll2MaxSizeY]
117
	mov	[Scroll2CoordinatY],eax
255 heavyiron 118
 
6357 IgorA 119
	sub	eax,ci_scrollv_coord_y_min
1643 mario79 120
	jns	no_min_scroll2
255 heavyiron 121
 
6357 IgorA 122
	mov	[Scroll2CoordinatY],ci_scrollv_coord_y_min
255 heavyiron 123
 
1643 mario79 124
no_min_scroll2:
125
	cmp	ecx,edx
126
	jl	no_max_scroll2
255 heavyiron 127
 
1643 mario79 128
	sub	edx,ebx
129
	sub	edx,ebx
130
	mov	[Scroll2CoordinatY],edx
255 heavyiron 131
 
1643 mario79 132
no_max_scroll2:
133
	mov	eax,[Scroll2CoordinatY]
6357 IgorA 134
	sub	eax,ci_scrollv_coord_y_min
1643 mario79 135
	mov	ebx,[Picture_SizeY]
136
	imul	eax,ebx
137
	mov	ebx,[Scroll2MaxSizeY]
255 heavyiron 138
	cdq
1643 mario79 139
	idiv	ebx
140
	mov	[PosY],eax
255 heavyiron 141
 
1643 mario79 142
no_vertical:
143
	call	CalculatePositionScreen
144
	call	draw_scrollers
145
	call	MovePictureToWorkScreen
146
	jmp	still
255 heavyiron 147
 
1643 mario79 148
no_scrollers:
149
	mov	eax,[MouseX]
150
	mov	ebx,[MouseY]
151
	mov	ecx,[Window_SizeX]
152
	mov	edx,[Window_SizeY]
6364 IgorA 153
	sub	ecx,ci_scroll_dim+ci_edit_wnd_border+5+ci_offs_skin_w
154
	sub	edx,ci_scroll_dim+ci_edit_wnd_border+5+ci_offs_skin_h
255 heavyiron 155
 
6357 IgorA 156
	cmp	eax,ci_scrollh_coord_x_min
1643 mario79 157
	jle	not_work_arrea
255 heavyiron 158
 
1643 mario79 159
	cmp	eax,ecx
160
	jae	not_work_arrea
255 heavyiron 161
 
6357 IgorA 162
	cmp	ebx,ci_scrollv_coord_y_min
1643 mario79 163
	jle	not_work_arrea
255 heavyiron 164
 
1643 mario79 165
	cmp	ebx,edx
166
	jae	not_work_arrea
167
	jmp	mouse_in_work_arrea
255 heavyiron 168
 
1643 mario79 169
not_work_arrea:
170
	mov	[exit_from_work_arrea],1
6364 IgorA 171
	mcall SF_MOUSE_GET, SSF_SET_CURSOR, 0 ;set standart cursor
1643 mario79 172
	jmp	still
255 heavyiron 173
 
1643 mario79 174
mouse_in_work_arrea:
175
	call	GetScreenCordinats
176
	call	PrintMousePos
6364 IgorA 177
 
178
	;set cursor for current instrument
179
	mov eax,CursorsID
180
	mov ebx,[Current_instrument]
181
	call set_cursor
182
 
6385 IgorA 183
	cmp [MouseBut],0
184
	je no_use_instruments
255 heavyiron 185
 
1643 mario79 186
	cmp	[Activate_instrument],0
6385 IgorA 187
	jne	no_undo___
1643 mario79 188
;------------begin copy for undo-------------
6364 IgorA 189
;copy bufer_0 -> bufer_2
6355 IgorA 190
	mov edi,[PointerToCopyPicture2]
191
	mov esi,[PointerToPicture]
192
	mov ecx,[Picture_SizeX]
193
	imul ecx,[Picture_SizeY]
194
	lea ecx,[ecx+ecx*2]
195
	mov ebx,ecx
196
	shr ecx,2
255 heavyiron 197
	cld
6355 IgorA 198
	rep movsd
199
	mov ecx,ebx
200
	and ecx,3
201
	rep movsb
202
;rotate bufers +1
203
	and	[number_undo],0 ;erase all undo
204
	mov eax,[PointerToPicture]
205
	mov ebx,[PointerToCopyPicture]
206
	mov ecx,[PointerToCopyPicture2]
207
	mov [PointerToPicture],ecx
208
	mov [PointerToCopyPicture],eax
209
	mov [PointerToCopyPicture2],ebx
1643 mario79 210
;--------------end copy for undo-------------
211
no_undo___:
6362 IgorA 212
	call TakeButtonInstruments
213
	jmp still
255 heavyiron 214
 
1643 mario79 215
no_use_instruments:
216
	and	[Activate_instrument],0
217
	jmp	still
255 heavyiron 218
;-----------------------------------------------
219
;---------get mouse cordinats-------------------
220
;-----------------------------------------------
221
GetMouseCoordinats:
6355 IgorA 222
	mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
1643 mario79 223
	mov	ebx,eax
224
	shr	eax,16
225
	and	ebx,0xffff
226
	mov	[MouseX],eax
227
	mov	[MouseY],ebx
255 heavyiron 228
	ret
229
;------------------------------------------------
230
;-------get mouse attributs----------------------
231
;------------------------------------------------
232
GetMouseClick:
6385 IgorA 233
	mcall SF_MOUSE_GET,SSF_BUTTON_EXT
234
	mov [MouseBut],eax
1643 mario79 235
	ret