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 |