Subversion Repositories Kolibri OS

Rev

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