Subversion Repositories Kolibri OS

Rev

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