Subversion Repositories Kolibri OS

Rev

Rev 5575 | Rev 5582 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5575 Rev 5576
Line 1... Line 1...
1
//CODED by Veliant, Leency, Nable. GNU GPL licence.
1
//CODED by Veliant, Leency, Nable. GNU GPL licence.
Line -... Line 2...
-
 
2
 
-
 
3
#define LIB_KOLIBRI_H
2
 
4
 
3
#startaddress 0
5
#startaddress 0
Line 4... Line 6...
4
#code32 TRUE
6
#code32 TRUE
5
 
7
 
Line 21... Line 23...
21
 
23
 
22
//Events
24
//Events
23
#define evReDraw  1
25
#define evReDraw  1
24
#define evKey     2
26
#define evKey     2
-
 
27
#define evButton  3
25
#define evButton  3
28
#define evDesktop 5
-
 
29
#define evMouse   6
26
#define evMouse   6
30
#define evIPC     7
27
#define evNetwork 8
-
 
-
 
31
#define evNetwork 8
Line 28... Line 32...
28
 
32
#define evDebug   9
29
 
33
 
30
//Button options
34
//Button options
31
#define BT_DEL      0x80000000
35
#define BT_DEL      0x80000000
Line 32... Line 36...
32
#define BT_HIDE     0x40000000
36
#define BT_HIDE     0x40000000
33
#define BT_NOFRAME  0x20000000
37
#define BT_NOFRAME  0x20000000
34
 
38
 
-
 
39
//Button mouse
35
//Button mouse
40
#define MOUSE_LEFT   001b
Line 36... Line 41...
36
#define MOUSE_LEFT 001b
41
#define MOUSE_RIGHT  010b
37
#define MOUSE_RIGHT 010b
42
#define MOUSE_LR     011b
38
#define MOUSE_CENTER 100b
43
#define MOUSE_CENTER 100b
Line 53... Line 58...
53
#define ASCII_KEY_HOME  180
58
#define ASCII_KEY_HOME  180
54
#define ASCII_KEY_END   181
59
#define ASCII_KEY_END   181
55
#define ASCII_KEY_PGDN  183
60
#define ASCII_KEY_PGDN  183
56
#define ASCII_KEY_PGUP  184
61
#define ASCII_KEY_PGUP  184
Line -... Line 62...
-
 
62
 
-
 
63
//allow event mask
-
 
64
#define EVENT_MASK_REDRAW   000000001b
-
 
65
#define EVENT_MASK_KEYBOARD 000000010b
-
 
66
#define EVENT_MASK_BUTTONS  000000100b
-
 
67
#define EVENT_MASK_DESKTOP  000010000b
-
 
68
#define EVENT_MASK_MOUSE    000100000b
-
 
69
#define EVENT_MASK_IPC      001000000b
-
 
70
#define EVENT_MASK_NETWORK  010000000b
Line -... Line 71...
-
 
71
#define EVENT_MASK_DEBUG    100000000b
-
 
72
 
57
 
73
//ARGS FUNCTION
Line 58... Line 74...
58
 
74
#define END_ARGS 0xFF00FF
59
//-------------------------------------------------------------------------
75
//-------------------------------------------------------------------------
60
 
76
 
Line 80... Line 96...
80
 */
96
 */
Line 81... Line 97...
81
 
97
 
82
dword __TMP_TIME,MOUSE_TIME;
98
dword __TMP_TIME,MOUSE_TIME;
83
:struct mouse
99
:struct mouse
84
{
100
{
-
 
101
	signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,tmp_time,hor,vert,down,up,move,click,dblclick,left,top;
-
 
102
	dword handle,_;
-
 
103
	byte cmd;
85
	signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,tmp_time,hor,vert,down,up,move,click,dblclick;
104
	void clearTime();
-
 
105
	void get();
-
 
106
	void set();
-
 
107
	void center();
-
 
108
	dword hide();
-
 
109
	void slider();
86
	void get();
110
	void show();
-
 
111
};
-
 
112
:void mouse::clearTime()
-
 
113
{
-
 
114
	tmp_time = GetStartTime()+MOUSE_TIME;
-
 
115
}
-
 
116
:void mouse::show()
-
 
117
{
-
 
118
	if(!handle)return;
-
 
119
	ECX = handle;
-
 
120
	EAX = 37;
-
 
121
	EBX = 5;
-
 
122
	$int 0x40;
-
 
123
}
-
 
124
:dword mouse::hide()
-
 
125
{
-
 
126
	if(!_)
-
 
127
	{
-
 
128
		EAX = 68;
-
 
129
		EBX = 12;
-
 
130
		ECX = 32*32*4;
-
 
131
		$int 0x40
-
 
132
		ECX = EAX;
-
 
133
		_ = EAX;
-
 
134
	} else ECX = _;
-
 
135
	EAX = 37;
-
 
136
	EBX = 4;
-
 
137
	DX  = 2;
-
 
138
	$int 0x40;
-
 
139
	handle = EAX;
-
 
140
	ECX = EAX;
-
 
141
	EAX = 37;
-
 
142
	EBX = 5;
-
 
143
	$int 0x40;
-
 
144
	handle = EAX;
-
 
145
}
-
 
146
 
-
 
147
//set new attributes mouse
-
 
148
:void mouse::set()
-
 
149
{
-
 
150
	if((xx!=x)||(yy!=y))
-
 
151
	{
-
 
152
		EAX = 18;
-
 
153
		EBX = 19;
-
 
154
		ECX = 4;
-
 
155
		EDX = (x<<16)+y;
-
 
156
		$int 0x40
-
 
157
		//move = true;
-
 
158
	}
-
 
159
	if((key)||(lkm|mkm|pkm))&&(down|up|click|dblclick|move)
-
 
160
	{
-
 
161
		if(lkm|mkm|pkm)key=(lkm)|(pkm<<1)|(2<
-
 
162
		EAX = 18;
-
 
163
		EBX = 19;
-
 
164
		ECX = key;
-
 
165
		EDX = (x<<16)+y;
-
 
166
		$int 0x40
-
 
167
	}
-
 
168
}
-
 
169
 
-
 
170
:void mouse::center()
-
 
171
{
-
 
172
	EAX = 18;
-
 
173
	EBX = 15;
-
 
174
	$int 0x40
Line 87... Line 175...
87
};
175
}
88
 
176
 
89
//get new attributes mouse
177
//get new attributes mouse
90
:void mouse::get()
178
:void mouse::get()
Line 113... Line 201...
113
	lkm = EAX;
201
	lkm = EAX;
114
	pkm = EBX;
202
	pkm = EBX;
115
	mkm = ECX;
203
	mkm = ECX;
Line 116... Line 204...
116
	
204
	
-
 
205
	//when you release the mouse button
117
	//when you release the mouse button
206
	// Mouse Up Event
118
	if((down)&&!(key)){
207
	if((cmd)&&!(key)){
119
		up = true;
208
		up = true;
120
		down = false;
209
		down = false;
-
 
210
		if(!move) click = true;
121
		if(!move) click = true;
211
		move = false;
122
		__TMP_TIME = GetStartTime();
212
		__TMP_TIME = GetStartTime();
123
		if(__TMP_TIME-tmp_time<=MOUSE_TIME) dblclick = true;
213
		if(__TMP_TIME-tmp_time<=MOUSE_TIME){ dblclick = true;click = false; }
124
		tmp_time = __TMP_TIME;
214
		tmp_time = __TMP_TIME;
125
		//returns the key code
215
		//returns the key code
126
		key = tmp;
216
		key = tmp;
127
		lkm = 1&tmp;
217
		lkm = 1&tmp;
128
		pkm = 2&tmp;
218
		pkm = 2&tmp;
129
		pkm >>= 1;
219
		pkm >>= 1;
130
		mkm = 4&tmp;
220
		mkm = 4&tmp;
-
 
221
		mkm >>= 2;
131
		mkm >>= 2;
222
		cmd = false;
Line 132... Line 223...
132
	}
223
	}
-
 
224
	
133
	
225
	//when you press the mouse button
134
	//when you press the mouse button
226
	// Mouse Down Event/Move Event
135
	else {
227
	else {
136
		up = false;
228
	    up       = false;
-
 
229
		click    = false;
-
 
230
		dblclick = false;
137
		click = false;
231
		down     = false;
138
		dblclick = false;
232
		// Mouse Move Event
139
		if(key)
-
 
140
		{
-
 
141
			down = true;
-
 
142
			tmp = key;
-
 
143
		}
-
 
144
		else down = false;
233
		if((xx!=x)||(yy!=y))
145
		if((xx!=x)||(yy!=y)){
234
		{
146
			move = true;
235
			move = true;
147
			xx = x;
236
			xx = x;
148
			yy = y;
237
			yy = y;
-
 
238
		}
149
		}
239
		else move = false;
Line 150... Line 240...
150
		else move = false;
240
		if(key)if(!cmd) {down = true;cmd = true;tmp=key;}
151
	}
241
	}
152
	
242
	
Line 159... Line 249...
159
	$and	ebx,0x0000FFFF
249
	$and	ebx,0x0000FFFF
160
	//hor = EAX;
250
	//hor = EAX;
161
	vert = EBX;
251
	vert = EBX;
162
}
252
}
Line -... Line 253...
-
 
253
 
-
 
254
:void mouse::slider()
-
 
255
{
-
 
256
	signed _x,_y;
-
 
257
	if(!handle)hide();
-
 
258
	get();
-
 
259
	_x = x;_y = y;
-
 
260
	pause(5);
-
 
261
	get();
-
 
262
	left = _x - x;
-
 
263
	top  = _y - y;
-
 
264
	center();
-
 
265
	get();
-
 
266
	_x = x;_y = y;
-
 
267
	pause(5);
-
 
268
}
-
 
269
 
-
 
270
:struct keyboard
-
 
271
{
-
 
272
	signed key;
-
 
273
	byte down,up,press;
-
 
274
	void get(void);
-
 
275
};
-
 
276
 
-
 
277
:void keyboard::get(void)
-
 
278
{
-
 
279
	
Line 163... Line 280...
163
 
280
}
164
 
281
 
165
:struct system_colors
282
:struct system_colors
166
{
283
{
Line 177... Line 294...
177
	EDX = 40;
294
	EDX = 40;
178
	$int 0x40
295
	$int 0x40
179
}
296
}
Line 180... Line 297...
180
 
297
 
181
//------------------------------------------------------------------------------
-
 
-
 
298
//------------------------------------------------------------------------------
182
 
299
dword wait_event_code;
183
inline fastcall dword WaitEvent()
300
inline fastcall dword WaitEvent()
184
{
301
{
185
	$mov eax,10
302
	$mov eax,10
-
 
303
	$int 0x40
186
	$int 0x40
304
	wait_event_code = EAX;
Line 187... Line 305...
187
}
305
}
188
 
306
 
189
inline fastcall dword CheckEvent()
307
inline fastcall dword CheckEvent()
Line 520... Line 638...
520
{
638
{
521
	EAX = 12;              // function 12:tell os about windowdraw
639
	EAX = 12;              // function 12:tell os about windowdraw
522
	EBX = 1;
640
	EBX = 1;
523
	$int 0x40
641
	$int 0x40
Line 524... Line 642...
524
	
642
	
525
	EAX = 0;
643
	$xor EAX,EAX
526
	EBX = x << 16 + size_w; 
644
	EBX = x << 16 + size_w; 
-
 
645
	ECX = y << 16 + size_h;
527
	ECX = y << 16 + size_h;
646
 
528
	EDX = WindowType << 24 | WindowAreaColor;
647
	EDX = WindowType << 24 | WindowAreaColor;
Line 529... Line 648...
529
	$int 0x40
648
	$int 0x40
530
 
649
 
Line 662... Line 781...
662
	$mov eax,26
781
	$mov eax,26
663
	$mov ebx,9
782
	$mov ebx,9
664
	$int 0x40
783
	$int 0x40
665
}
784
}
Line -... Line 785...
-
 
785
 
-
 
786
:dword ALERT_TEXT;
-
 
787
:void dialog_alert()
-
 
788
{
-
 
789
	byte id;
-
 
790
	loop()switch(WaitEvent())
-
 
791
	{
-
 
792
		case evReDraw:
-
 
793
			DefineAndDrawWindow(215,100,250,200,0x34,0xFFFFFF,"Alert");
-
 
794
			WriteTextB(5,5,0x90,0x0,ALERT_TEXT);
-
 
795
		break;
-
 
796
		case evButton:
-
 
797
			id=GetButtonID();
-
 
798
			if (id==1) ExitProcess();
-
 
799
		break;
-
 
800
	}
-
 
801
}
-
 
802
 
-
 
803
:dword alert(dword text)
-
 
804
{
-
 
805
	dword mem = malloc(4096);
-
 
806
	ALERT_TEXT = text;
-
 
807
	CreateThread(#dialog_alert,mem+4092);
-
 
808
	return mem;
-
 
809
}
666
 
810
 
Line -... Line 811...
-
 
811
dword __generator;  // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë
-
 
812
 
667
dword __generator;  // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë
813
dword program_path_length;
668
 
814
 
669
//The initialization of the initial data before running
815
//The initialization of the initial data before running
-
 
816
void load_init_main()
670
void load_init_main()
817
{
671
{
818
	//program_path_length = strlen(program_path);
672
	MOUSE_TIME = 50; //Default 50 ms.
819
	MOUSE_TIME = 50; //Default 500 ms.
673
	__generator = GetStartTime();
820
	__generator = GetStartTime();
674
	main();
821
	main();