Rev 5658 | Rev 5676 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5658 | Rev 5674 | ||
---|---|---|---|
Line 35... | Line 35... | ||
35 | //Button options |
35 | //Button options |
36 | #define BT_DEL 0x80000000 |
36 | #define BT_DEL 0x80000000 |
37 | #define BT_HIDE 0x40000000 |
37 | #define BT_HIDE 0x40000000 |
38 | #define BT_NOFRAME 0x20000000 |
38 | #define BT_NOFRAME 0x20000000 |
Line 39... | Line -... | ||
39 | - | ||
40 | //Button MOUSE |
- | |
41 | #define MOUSE_LEFT 001b |
- | |
42 | #define MOUSE_RIGHT 010b |
- | |
43 | #define MOUSE_LR 011b |
- | |
44 | #define MOUSE_CENTER 100b |
- | |
45 | 39 | ||
46 | //ASCII KEYS |
40 | //ASCII KEYS |
47 | #define ASCII_KEY_BS 008 |
41 | #define ASCII_KEY_BS 008 |
48 | #define ASCII_KEY_TAB 009 |
42 | #define ASCII_KEY_TAB 009 |
49 | #define ASCII_KEY_ENTER 013 |
43 | #define ASCII_KEY_ENTER 013 |
Line 73... | Line 67... | ||
73 | 67 | ||
74 | //ARGS FUNCTION |
68 | //ARGS FUNCTION |
75 | #define END_ARGS 0xFF00FF |
69 | #define END_ARGS 0xFF00FF |
Line -... | Line 70... | ||
- | 70 | //------------------------------------------------------------------------- |
|
- | 71 | ||
- | 72 | #ifndef INCLUDE_SYSTEM_H |
|
- | 73 | #include "../lib/system.h" |
|
- | 74 | #endif |
|
- | 75 | ||
- | 76 | #ifndef INCLUDE_MOUSE_H |
|
- | 77 | #include "../lib/mouse.h" |
|
76 | //------------------------------------------------------------------------- |
78 | #endif |
77 | 79 | ||
78 | :struct raw_image { |
80 | :struct raw_image { |
Line 79... | Line -... | ||
79 | dword w, h, data; |
- | |
80 | }; |
- | |
81 | - | ||
82 | /** |
- | |
83 | * The structure of the MOUSE |
- | |
84 | * x - coordinate X |
- | |
85 | * y - coordinate Y |
- | |
86 | * xx and yy - time coordinates |
- | |
87 | * lkm - left MOUSE button |
- | |
88 | * pkm - right MOUSE button |
- | |
89 | * mkm - MOUSE wheel |
- | |
90 | * key - keycode button |
- | |
91 | * tmp - time keycode |
- | |
92 | * down - key event press |
- | |
93 | * up - key release events |
- | |
94 | * move - event MOUSE movements |
- | |
95 | * click - when clicked |
- | |
96 | * dblclick - double-click the default 50 (500 ms) |
- | |
97 | * drag - drag the element event |
- | |
98 | */ |
- | |
99 | - | ||
100 | :dword __TMP_TIME,MOUSE_TIME; |
- | |
101 | :struct MOUSE |
- | |
102 | { |
- | |
103 | signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,tmp_time,hor,vert,down,up,move,click,dblclick,drag,left,top; |
- | |
104 | dword handle,_; |
- | |
105 | byte cmd; |
- | |
106 | void clearTime(); |
- | |
107 | void get(); |
- | |
108 | void set(); |
- | |
109 | void center(); |
- | |
110 | dword hide(); |
- | |
111 | void slider(); |
- | |
112 | void show(); |
- | |
113 | } mouse; |
- | |
114 | :void MOUSE::clearTime() |
- | |
115 | { |
- | |
116 | tmp_time = GetStartTime()+MOUSE_TIME; |
- | |
117 | } |
- | |
118 | :void MOUSE::show() |
- | |
119 | { |
- | |
120 | if(!handle)return; |
- | |
121 | ECX = handle; |
- | |
122 | EAX = 37; |
- | |
123 | EBX = 5; |
- | |
124 | $int 0x40; |
- | |
125 | } |
- | |
126 | :dword MOUSE::hide() |
- | |
127 | { |
- | |
128 | if(!_) |
- | |
129 | { |
- | |
130 | EAX = 68; |
- | |
131 | EBX = 12; |
- | |
132 | ECX = 32*32*4; |
- | |
133 | $int 0x40 |
- | |
134 | ECX = EAX; |
- | |
135 | _ = EAX; |
- | |
136 | } else ECX = _; |
- | |
137 | EAX = 37; |
- | |
138 | EBX = 4; |
- | |
139 | DX = 2; |
- | |
140 | $int 0x40; |
- | |
141 | handle = EAX; |
- | |
142 | ECX = EAX; |
- | |
143 | EAX = 37; |
- | |
144 | EBX = 5; |
- | |
145 | $int 0x40; |
- | |
146 | handle = EAX; |
- | |
147 | } |
- | |
148 | - | ||
149 | //set new attributes MOUSE |
- | |
150 | :void MOUSE::set() |
- | |
151 | { |
- | |
152 | if((xx!=x)||(yy!=y)) |
- | |
153 | { |
- | |
154 | EAX = 18; |
- | |
155 | EBX = 19; |
- | |
156 | ECX = 4; |
- | |
157 | EDX = (x<<16)+y; |
- | |
158 | $int 0x40 |
- | |
159 | //move = true; |
- | |
160 | } |
- | |
161 | if((key)||(lkm|mkm|pkm))&&(down|up|click|dblclick|move) |
- | |
162 | { |
- | |
163 | if(lkm|mkm|pkm)key=(lkm)|(pkm<<1)|(2< |
- | |
164 | EAX = 18; |
- | |
165 | EBX = 19; |
- | |
166 | ECX = key; |
- | |
167 | EDX = (x<<16)+y; |
- | |
168 | $int 0x40 |
- | |
169 | } |
- | |
170 | } |
- | |
171 | - | ||
172 | :void MOUSE::center() |
- | |
173 | { |
- | |
174 | EAX = 18; |
- | |
175 | EBX = 15; |
- | |
176 | $int 0x40 |
- | |
177 | } |
- | |
178 | - | ||
179 | //get new attributes MOUSE |
- | |
180 | :void MOUSE::get() |
- | |
181 | { |
- | |
182 | EAX = 37; |
- | |
183 | EBX = 1; |
- | |
184 | $int 0x40 |
- | |
185 | $mov ebx, eax |
- | |
186 | $shr eax, 16 |
- | |
187 | $and ebx,0x0000FFFF |
- | |
188 | x = EAX; |
- | |
189 | y = EBX; |
- | |
190 | if (x>6000) x-=65535; |
- | |
191 | if (y>6000) y-=65535; |
- | |
192 | EAX = 37; |
- | |
193 | EBX = 2; |
- | |
194 | $int 0x40 |
- | |
195 | $mov ebx, eax |
- | |
196 | $mov ecx, eax |
- | |
197 | key = EAX; |
- | |
198 | $and eax, 0x00000001 |
- | |
199 | $shr ebx, 1 |
- | |
200 | $and ebx, 0x00000001 |
- | |
201 | $shr ecx, 2 |
- | |
202 | $and ecx, 0x00000001 |
- | |
203 | lkm = EAX; |
- | |
204 | pkm = EBX; |
- | |
205 | mkm = ECX; |
- | |
206 | - | ||
207 | //when you release the MOUSE button |
- | |
208 | // Mouse Move Event |
- | |
209 | if(xx!=x)||(yy!=y) |
- | |
210 | { |
- | |
211 | move = true; |
- | |
212 | xx = x; |
- | |
213 | yy = y; |
- | |
214 | } |
- | |
215 | else move = false; |
- | |
216 | // Mouse Up Event |
- | |
217 | if(cmd)&&(!key){ |
- | |
218 | up = true; |
- | |
219 | down = false; |
- | |
220 | drag = false; |
- | |
221 | if(!move) click = true; |
- | |
222 | __TMP_TIME = GetStartTime(); |
- | |
223 | if(__TMP_TIME-tmp_time<=MOUSE_TIME) |
- | |
224 | { |
- | |
225 | dblclick = true; |
- | |
226 | click = false; |
- | |
227 | } |
- | |
228 | tmp_time = __TMP_TIME; |
- | |
229 | //returns the key code |
- | |
230 | key = tmp; |
- | |
231 | lkm = 1&tmp; |
- | |
232 | pkm = 2&tmp; |
- | |
233 | pkm >>= 1; |
- | |
234 | mkm = 4&tmp; |
- | |
Line 235... | Line -... | ||
235 | mkm >>= 2; |
- | |
236 | cmd = false; |
- | |
237 | } |
- | |
238 | - | ||
239 | //when you press the MOUSE button |
- | |
240 | // Mouse Down Event/Move Event |
- | |
241 | else |
- | |
242 | { |
- | |
243 | up = false; |
- | |
244 | click = false; |
- | |
245 | dblclick = false; |
- | |
246 | down = false; |
- | |
247 | // Mouse Move Event |
- | |
248 | if(key)if(!cmd) |
- | |
249 | { |
- | |
250 | down = true; |
- | |
251 | if(move)drag = true; |
- | |
252 | cmd = true; |
- | |
253 | tmp=key; |
- | |
254 | } |
- | |
255 | } |
- | |
256 | - | ||
257 | //scroll |
- | |
258 | EAX = 37; |
- | |
259 | EBX = 7; |
- | |
260 | $int 0x40 |
- | |
261 | $mov ebx, eax |
- | |
262 | $shr eax, 16 |
- | |
263 | $and ebx,0x0000FFFF |
- | |
264 | //hor = EAX; |
- | |
265 | vert = EBX; |
- | |
266 | } |
- | |
267 | - | ||
268 | - | ||
269 | - | ||
270 | :void MOUSE::slider() |
- | |
271 | { |
- | |
272 | signed _x,_y; |
- | |
273 | if(!handle)hide(); |
- | |
274 | get(); |
- | |
275 | _x = x;_y = y; |
- | |
276 | pause(5); |
- | |
277 | get(); |
- | |
278 | left = _x - x; |
- | |
279 | top = _y - y; |
- | |
280 | center(); |
- | |
281 | get(); |
- | |
282 | _x = x;_y = y; |
- | |
283 | pause(5); |
- | |
284 | } |
- | |
285 | - | ||
286 | :struct keyboard |
- | |
287 | { |
- | |
288 | signed key; |
- | |
289 | byte down,up,press; |
- | |
290 | void get(void); |
- | |
291 | }; |
- | |
292 | - | ||
293 | :void keyboard::get(void) |
- | |
294 | { |
- | |
295 | - | ||
296 | } |
- | |
297 | - | ||
298 | :struct system_colors |
- | |
299 | { |
- | |
300 | dword frame,grab,grab_button,grab_button_text,grab_text, |
- | |
301 | work,work_button,work_button_text,work_text,work_graph; |
- | |
302 | void get(); |
- | |
303 | }; |
- | |
304 | - | ||
305 | :void system_colors::get() |
- | |
306 | { |
- | |
307 | EAX = 48; |
- | |
308 | EBX = 3; |
- | |
Line 309... | Line 81... | ||
309 | ECX = #frame; |
81 | dword w, h, data; |
310 | EDX = 40; |
82 | }; |
311 | $int 0x40 |
83 | |
312 | } |
84 |