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 |