Subversion Repositories Kolibri OS

Rev

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