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 | mov eax,[MouseX] |
16 | mov ebx,[MouseY] |
||
17 | mov ecx,[WorkScreen_SizeX] |
||
18 | mov edx,[WorkScreen_SizeY] |
||
6357 | IgorA | 19 | add ecx,ci_scrollh_coord_x_min |
20 | add edx,ci_scrollv_coord_y_min |
||
255 | heavyiron | 21 | |
1643 | mario79 | 22 | cmp eax,ecx |
23 | jae mouse_scroll |
||
255 | heavyiron | 24 | |
1643 | mario79 | 25 | cmp ebx,edx |
26 | jae mouse_scroll |
||
27 | jmp no_scrollers |
||
255 | heavyiron | 28 | |
1643 | mario79 | 29 | mouse_scroll: |
30 | mov [exit_from_work_arrea],1 ;mouse situated after work arrea |
||
31 | ;scrollers |
||
6364 | IgorA | 32 | call GetMouseClick |
1643 | mario79 | 33 | cmp eax,1 |
6364 | IgorA | 34 | jne still |
255 | heavyiron | 35 | |
1643 | mario79 | 36 | call GetMouseCoordinats |
37 | ;interraction with horizontal scroller |
||
38 | mov eax,[Scroll1CoordinatX] |
||
39 | mov ebx,[Scroll1CoordinatY] |
||
40 | mov ecx,[MouseX] |
||
41 | mov edx,[MouseY] |
||
42 | mov esi,[Scroll1MaxSizeX] |
||
43 | mov edi,[Scroll1MaxSizeY] |
||
44 | call columnus |
||
45 | test eax,eax |
||
46 | jz no_horizontal |
||
255 | heavyiron | 47 | |
6357 | IgorA | 48 | mov eax,ci_scrollh_coord_x_min |
1643 | mario79 | 49 | mov ebx,[Scroll1CoordinatY] |
50 | mov ecx,[Scroll1MaxSizeX] |
||
6357 | IgorA | 51 | inc ecx |
6358 | IgorA | 52 | mov edx,ci_scroll_dim-6 |
1643 | mario79 | 53 | mov esi,7 |
6357 | IgorA | 54 | call draw_volume_rectangle ; horizontal scrollbar clear |
255 | heavyiron | 55 | |
1643 | mario79 | 56 | mov eax,[MouseX] |
57 | mov ebx,[Scroll1SizeX] |
||
58 | shr ebx,1 |
||
59 | sub eax,ebx |
||
60 | mov ecx,[MouseX] |
||
61 | add ecx,ebx |
||
6357 | IgorA | 62 | mov edx,ci_scrollh_coord_x_min |
1643 | mario79 | 63 | add edx,[Scroll1MaxSizeX] |
64 | mov [Scroll1CoordinatX],eax |
||
6357 | IgorA | 65 | sub eax,ci_scrollh_coord_x_min |
1643 | mario79 | 66 | jns no_min_scroll |
255 | heavyiron | 67 | |
6357 | IgorA | 68 | mov [Scroll1CoordinatX],ci_scrollh_coord_x_min |
255 | heavyiron | 69 | |
1643 | mario79 | 70 | no_min_scroll: |
71 | cmp ecx,edx |
||
72 | jl no_max_scroll |
||
255 | heavyiron | 73 | |
1643 | mario79 | 74 | sub edx,ebx |
75 | sub edx,ebx |
||
76 | mov [Scroll1CoordinatX],edx |
||
255 | heavyiron | 77 | |
1643 | mario79 | 78 | no_max_scroll: |
79 | mov eax,[Scroll1CoordinatX] |
||
6357 | IgorA | 80 | sub eax,ci_scrollh_coord_x_min |
1643 | mario79 | 81 | mov ebx,[Picture_SizeX] |
82 | imul eax,ebx |
||
83 | mov ebx,[Scroll1MaxSizeX] |
||
255 | heavyiron | 84 | cdq |
1643 | mario79 | 85 | idiv ebx |
86 | mov [PosX],eax |
||
87 | jmp no_vertical |
||
255 | heavyiron | 88 | |
1643 | mario79 | 89 | no_horizontal: |
90 | mov eax,[Scroll2CoordinatX] |
||
91 | mov ebx,[Scroll2CoordinatY] |
||
92 | mov ecx,[MouseX] |
||
93 | mov edx,[MouseY] |
||
94 | mov esi,[Scroll2MaxSizeX] |
||
95 | mov edi,[Scroll2MaxSizeY] |
||
96 | call columnus |
||
97 | test eax,eax |
||
98 | jz no_vertical |
||
255 | heavyiron | 99 | |
1643 | mario79 | 100 | mov eax,[Scroll2CoordinatX] |
6357 | IgorA | 101 | mov ebx,ci_scrollv_coord_y_min |
6358 | IgorA | 102 | mov ecx,ci_scroll_dim-6 |
1643 | mario79 | 103 | mov edx,[Scroll2MaxSizeY] |
6357 | IgorA | 104 | inc edx |
1643 | mario79 | 105 | mov esi,7 |
6357 | IgorA | 106 | call draw_volume_rectangle ; vertical scrollbar clear |
255 | heavyiron | 107 | |
1643 | mario79 | 108 | mov eax,[MouseY] |
109 | mov ebx,[Scroll2SizeY] |
||
110 | shr ebx,1 |
||
111 | sub eax,ebx |
||
112 | mov ecx,[MouseY] |
||
113 | add ecx,ebx |
||
6357 | IgorA | 114 | mov edx,ci_scrollv_coord_y_min |
1643 | mario79 | 115 | add edx,[Scroll2MaxSizeY] |
116 | mov [Scroll2CoordinatY],eax |
||
255 | heavyiron | 117 | |
6357 | IgorA | 118 | sub eax,ci_scrollv_coord_y_min |
1643 | mario79 | 119 | jns no_min_scroll2 |
255 | heavyiron | 120 | |
6357 | IgorA | 121 | mov [Scroll2CoordinatY],ci_scrollv_coord_y_min |
255 | heavyiron | 122 | |
1643 | mario79 | 123 | no_min_scroll2: |
124 | cmp ecx,edx |
||
125 | jl no_max_scroll2 |
||
255 | heavyiron | 126 | |
1643 | mario79 | 127 | sub edx,ebx |
128 | sub edx,ebx |
||
129 | mov [Scroll2CoordinatY],edx |
||
255 | heavyiron | 130 | |
1643 | mario79 | 131 | no_max_scroll2: |
132 | mov eax,[Scroll2CoordinatY] |
||
6357 | IgorA | 133 | sub eax,ci_scrollv_coord_y_min |
1643 | mario79 | 134 | mov ebx,[Picture_SizeY] |
135 | imul eax,ebx |
||
136 | mov ebx,[Scroll2MaxSizeY] |
||
255 | heavyiron | 137 | cdq |
1643 | mario79 | 138 | idiv ebx |
139 | mov [PosY],eax |
||
255 | heavyiron | 140 | |
1643 | mario79 | 141 | no_vertical: |
142 | call CalculatePositionScreen |
||
143 | call draw_scrollers |
||
144 | call MovePictureToWorkScreen |
||
145 | jmp still |
||
255 | heavyiron | 146 | |
1643 | mario79 | 147 | no_scrollers: |
148 | mov eax,[MouseX] |
||
149 | mov ebx,[MouseY] |
||
150 | mov ecx,[Window_SizeX] |
||
151 | mov edx,[Window_SizeY] |
||
6364 | IgorA | 152 | sub ecx,ci_scroll_dim+ci_edit_wnd_border+5+ci_offs_skin_w |
153 | sub edx,ci_scroll_dim+ci_edit_wnd_border+5+ci_offs_skin_h |
||
255 | heavyiron | 154 | |
6357 | IgorA | 155 | cmp eax,ci_scrollh_coord_x_min |
1643 | mario79 | 156 | jle not_work_arrea |
255 | heavyiron | 157 | |
1643 | mario79 | 158 | cmp eax,ecx |
159 | jae not_work_arrea |
||
255 | heavyiron | 160 | |
6357 | IgorA | 161 | cmp ebx,ci_scrollv_coord_y_min |
1643 | mario79 | 162 | jle not_work_arrea |
255 | heavyiron | 163 | |
1643 | mario79 | 164 | cmp ebx,edx |
165 | jae not_work_arrea |
||
166 | jmp mouse_in_work_arrea |
||
255 | heavyiron | 167 | |
1643 | mario79 | 168 | not_work_arrea: |
169 | mov [exit_from_work_arrea],1 |
||
6364 | IgorA | 170 | mcall SF_MOUSE_GET, SSF_SET_CURSOR, 0 ;set standart cursor |
1643 | mario79 | 171 | jmp still |
255 | heavyiron | 172 | |
1643 | mario79 | 173 | mouse_in_work_arrea: |
174 | call GetScreenCordinats |
||
175 | call PrintMousePos |
||
6364 | IgorA | 176 | |
177 | ;set cursor for current instrument |
||
178 | mov eax,CursorsID |
||
179 | mov ebx,[Current_instrument] |
||
180 | call set_cursor |
||
181 | |||
1643 | mario79 | 182 | call GetMouseClick |
183 | test eax,eax |
||
184 | jz no_use_instruments |
||
255 | heavyiron | 185 | |
1643 | mario79 | 186 | cmp [Activate_instrument],0 |
187 | jnz no_undo___ |
||
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 |
6371 | IgorA | 213 | |
6362 | IgorA | 214 | jmp still |
255 | heavyiron | 215 | |
1643 | mario79 | 216 | no_use_instruments: |
217 | mov eax,[Current_instrument] |
||
218 | and [Activate_instrument],0 |
||
219 | jmp still |
||
255 | heavyiron | 220 | ;----------------------------------------------- |
221 | ;---------get mouse cordinats------------------- |
||
222 | ;----------------------------------------------- |
||
223 | GetMouseCoordinats: |
||
6355 | IgorA | 224 | mcall SF_MOUSE_GET,SSF_WINDOW_POSITION |
1643 | mario79 | 225 | mov ebx,eax |
226 | shr eax,16 |
||
227 | and ebx,0xffff |
||
228 | mov [MouseX],eax |
||
229 | mov [MouseY],ebx |
||
255 | heavyiron | 230 | ret |
231 | ;------------------------------------------------ |
||
232 | ;-------get mouse attributs---------------------- |
||
233 | ;------------------------------------------------ |
||
234 | GetMouseClick: |
||
6355 | IgorA | 235 | mcall SF_MOUSE_GET,SSF_BUTTON |
1643 | mario79 | 236 | ret |