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 |