Subversion Repositories Kolibri OS

Rev

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

Rev 6280 Rev 6285
Line 46... Line 46...
46
//Button options
46
//Button options
47
#define BT_DEL      0x80000000
47
#define BT_DEL      0x80000000
48
#define BT_HIDE     0x40000000
48
#define BT_HIDE     0x40000000
49
#define BT_NOFRAME  0x20000000
49
#define BT_NOFRAME  0x20000000
Line 50... Line -...
50
 
-
 
51
//ASCII KEYS
-
 
52
#define ASCII_KEY_BS    008
-
 
53
#define ASCII_KEY_TAB   009
-
 
54
#define ASCII_KEY_ENTER 013
-
 
55
#define ASCII_KEY_ESC   027
-
 
56
#define ASCII_KEY_DEL   182
-
 
57
#define ASCII_KEY_INS   185
-
 
58
#define ASCII_KEY_SPACE 032
-
 
59
 
-
 
60
#define ASCII_KEY_LEFT  176
-
 
61
#define ASCII_KEY_RIGHT 179
-
 
62
#define ASCII_KEY_DOWN  177
-
 
63
#define ASCII_KEY_UP    178
-
 
64
#define ASCII_KEY_HOME  180
-
 
65
#define ASCII_KEY_END   181
-
 
66
#define ASCII_KEY_PGDN  183
-
 
67
#define ASCII_KEY_PGUP  184
-
 
68
 
-
 
69
//SCAN CODE KEYS
-
 
70
#define SCAN_CODE_BS    014
-
 
71
#define SCAN_CODE_TAB   015
-
 
72
#define SCAN_CODE_ENTER 028
-
 
73
#define SCAN_CODE_ESC   001
-
 
74
#define SCAN_CODE_DEL   083
-
 
75
#define SCAN_CODE_INS   082
-
 
76
#define SCAN_CODE_SPACE 057
-
 
77
			
-
 
78
#define SCAN_CODE_LEFT  075
-
 
79
#define SCAN_CODE_RIGHT 077
-
 
80
#define SCAN_CODE_DOWN  080
-
 
81
#define SCAN_CODE_UP    072
-
 
82
#define SCAN_CODE_HOME  071
-
 
83
#define SCAN_CODE_END   079
-
 
84
#define SCAN_CODE_PGDN  081
-
 
85
#define SCAN_CODE_PGUP  073
-
 
86
 
-
 
87
#define KEY_LSHIFT     00000000001b
-
 
88
#define KEY_RSHIFT     00000000010b
-
 
89
#define KEY_LCTRL      00000000100b
-
 
90
#define KEY_RCTRL      00000001000b
-
 
91
#define KEY_LALT       00000010000b
-
 
92
#define KEY_RALT       00000100000b
-
 
93
#define KEY_CAPSLOCK   00001000000b
-
 
94
#define KEY_NUMLOCK    00010000000b
-
 
95
#define KEY_SCROLLLOCK 00100000000b
-
 
96
#define KEY_LWIN       01000000000b
-
 
97
#define KEY_RWIN       10000000000b
-
 
98
 
-
 
99
dword calc(EAX) { return EAX; }
-
 
100
 
-
 
101
inline fastcall word GetKey()  //+Gluk fix
-
 
102
{
-
 
103
		$push edx
-
 
104
GETKEY:
-
 
105
		$mov  eax,2
-
 
106
		$int  0x40
-
 
107
		$cmp eax,1
-
 
108
		$jne GETKEYI
-
 
109
		$mov ah,dh
-
 
110
		$jmp GETKEYII //jz?
-
 
111
GETKEYI:
-
 
112
		$mov dh,ah
-
 
113
		$jmp GETKEY
-
 
114
GETKEYII:
-
 
115
		$pop edx
-
 
116
		$shr eax,8
-
 
117
}
-
 
118
 
-
 
119
 
-
 
120
unsigned char key_ascii;
-
 
121
dword key_scancode, key_modifier;
-
 
122
int GetKeys()
-
 
123
{
-
 
124
		$push edx
-
 
125
GETKEY:
-
 
126
		$mov  eax,2
-
 
127
		$int  0x40
-
 
128
		$cmp eax,1
-
 
129
		$jne GETKEYI
-
 
130
		$mov eax,edx
-
 
131
		$jmp GETKEYII
-
 
132
GETKEYI:
-
 
133
		$mov edx,eax
-
 
134
		$jmp GETKEY
-
 
135
GETKEYII:
-
 
136
		$pop edx
-
 
137
	key_ascii = AH;
-
 
138
	$shr  eax,16
-
 
139
	key_scancode = AL;
-
 
140
	//get alt/shift/ctrl key status
-
 
141
	$mov eax,66
-
 
142
	$mov ebx,3
-
 
143
	$int 0x40
-
 
144
	key_modifier = EAX;
-
 
145
}
-
 
146
 
50
 
147
//allow event mask
51
//allow event mask
148
#define EVENT_MASK_REDRAW   000000001b
52
#define EVENT_MASK_REDRAW   000000001b
149
#define EVENT_MASK_KEYBOARD 000000010b
53
#define EVENT_MASK_KEYBOARD 000000010b
150
#define EVENT_MASK_BUTTONS  000000100b
54
#define EVENT_MASK_BUTTONS  000000100b
Line 156... Line 60...
156
 
60
 
157
//ARGS FUNCTION
61
//ARGS FUNCTION
158
#define END_ARGS 0xFF00FF
62
#define END_ARGS 0xFF00FF
Line 159... Line -...
159
//-------------------------------------------------------------------------
-
 
160
 
63
//-------------------------------------------------------------------------
161
#ifndef INCLUDE_SYSTEM_H
-
 
162
#include "../lib/system.h"
-
 
163
#endif
-
 
164
 
64
 
165
#ifndef INCLUDE_MOUSE_H
65
#include "../lib/system.h"
Line 166... Line 66...
166
#include "../lib/mouse.h"
66
#include "../lib/mouse.h"
167
#endif
67
#include "../lib/keyboard.h"
168
 
68
 
Line 169... Line -...
169
:struct raw_image {
-
 
170
	dword w, h, data;
-
 
171
};
69
:struct raw_image {
172
 
70
	dword w, h, data;
173
 
71
};
174
 
72
 
175
//------------------------------------------------------------------------------
73
//------------------------------------------------------------------------------
Line 221... Line 119...
221
	$mov ebx, 16
119
	$mov ebx, 16
222
	$int 0x40
120
	$int 0x40
223
	//return eax = ðàçìåð ñâîáîäíîé ïàìÿòè â êèëîáàéòàõ
121
	//return eax = ðàçìåð ñâîáîäíîé ïàìÿòè â êèëîáàéòàõ
224
}
122
}
Line 225... Line -...
225
 
-
 
226
inline void draw_line(dword x1,y1,x2,y2,color)
-
 
227
{
-
 
228
	x2--;y2--;y1--;
-
 
229
	$mov EAX,38
-
 
230
	EBX = x1<<16;
-
 
231
	EBX |= x2;
-
 
232
	ECX = y1<<16;
-
 
233
	ECX |= y2;
-
 
234
	$mov EDX,color
-
 
235
	$int 0x40
-
 
236
}
-
 
237
 
123
 
238
inline fastcall dword LoadDriver(ECX) //ECX - èìÿ äðàéâåðà
124
inline fastcall dword LoadDriver(ECX) //ECX - èìÿ äðàéâåðà
239
{
125
{
240
	$mov eax, 68
126
	$mov eax, 68
241
	$mov ebx, 16
127
	$mov ebx, 16
Line 414... Line 300...
414
	$mov ebx, 5
300
	$mov ebx, 5
415
	$int 0x40
301
	$int 0x40
416
	$mov eax, ebx
302
	$mov eax, ebx
417
}
303
}
Line 418... Line -...
418
 
-
 
419
 
304
 
420
inline fastcall dword LoadLibrary( ECX)
305
inline fastcall dword LoadLibrary( ECX)
421
{
306
{
422
	$mov eax, 68 
307
	$mov eax, 68 
423
	$mov ebx, 19
308
	$mov ebx, 19
Line 428... Line 313...
428
{
313
{
429
	$shr eax,cl
314
	$shr eax,cl
430
	$and eax,1
315
	$and eax,1
431
}
316
}
Line 432... Line -...
432
 
-
 
433
inline fastcall int PlaySpeaker( ESI)
-
 
434
{
-
 
435
	$mov eax, 55
-
 
436
	$mov ebx, 55
-
 
437
	$int 0x40
-
 
438
}
-
 
439
 
317
 
Line 440... Line 318...
440
//------------------------------------------------------------------------------
318
//------------------------------------------------------------------------------
441
 
319
 
442
void DefineAndDrawWindow(dword x, y, size_w, size_h, byte WindowType,dword WindowAreaColor, EDI, ESI)
320
void DefineAndDrawWindow(dword x, y, size_w, size_h, byte WindowType,dword WindowAreaColor, EDI, ESI)
Line 577... Line 455...
577
	EBX = 3;
455
	EBX = 3;
578
	EDX = ID_ACTIVE;
456
	EDX = ID_ACTIVE;
579
	$int 0x40
457
	$int 0x40
580
}
458
}
Line 581... Line -...
581
 
-
 
582
inline getIPC(ECX,EDX)
-
 
583
{
-
 
584
	$mov EAX,60
-
 
585
	$mov EBX,2
-
 
586
	$int 0x40
-
 
587
}
-
 
588
 
-
 
589
inline sendIPC(ECX,EDX,ESI)
-
 
590
{
-
 
591
	$mov EAX,60
-
 
592
	$mov EBX,1
-
 
593
	$int 0x40
-
 
594
}
-
 
595
 
459
 
596
void UnsafeDefineButton(dword x,y,w,h,EDX,ESI)
460
void UnsafeDefineButton(dword x,y,w,h,EDX,ESI)
597
{
461
{
598
	EAX = 8;
462
	EAX = 8;
599
	EBX = x<<16+w;
463
	EBX = x<<16+w;
Line 633... Line 497...
633
	X_EventRedrawWindow = x;
497
	X_EventRedrawWindow = x;
634
	Y_EventRedrawWindow = y;
498
	Y_EventRedrawWindow = y;
635
	CreateThread(#_EventRedrawWindow,#REDRAW_BUFF_EVENT_+4092);
499
	CreateThread(#_EventRedrawWindow,#REDRAW_BUFF_EVENT_+4092);
636
}
500
}
Line 637... Line -...
637
 
-
 
638
:dword ALERT_TEXT;
-
 
639
:void dialog_alert()
-
 
640
{
501
 
641
	byte id;
-
 
642
	loop()switch(WaitEvent())
502
:struct obj
643
	{
503
{
644
		case evReDraw:
-
 
645
			DefineAndDrawWindow(215,100,250,200,0x34,0xFFFFFF,"Alert");
-
 
646
			WriteTextB(5,5,0x90,0x0,ALERT_TEXT);
-
 
647
		break;
504
	dword x,y,w,h;
648
		case evKey:
-
 
649
		case evButton:
-
 
650
			id=GetButtonID();
-
 
651
			if (id==1) ExitProcess();
-
 
652
		break;
505
	void size();
653
	}
506
};
654
}
507
 
655
:dword alert(dword text)
508
:void obj::size(dword _x, _y, _w, _h)
656
{
509
{
657
	dword mem = malloc(4096);
510
	x=_x; 
658
	ALERT_TEXT = text;
511
	y=_y;
659
	CreateThread(#dialog_alert,mem+4092);
512
	w=_w;
660
	return mem;
513
	h=_h;
Line 661... Line 514...
661
}
514
}
662
 
515
 
663
:struct _screen
516
:struct _screen
Line 667... Line 520...
667
 
520
 
Line 668... Line 521...
668
:byte skin_height;
521
:byte skin_height;
669
 
522
 
670
:void DrawDate(dword x, y, color, in_date)
-
 
671
{
523
:void DrawDate(dword x, y, color, in_date)
672
	//char text[15];
524
{
673
	EDI = in_date;
525
	EDI = in_date;
674
	EAX = 47;
526
	EAX = 47;
675
	EBX = 2<<16;
527
	EBX = 2<<16;
676
	EDX = x<<16+y;
528
	EDX = x<<16+y;
677
	ESI = 0x90<<24+color;
529
	ESI = 0x90<<24+color;
678
	ECX = EDI.date.day;
530
	ECX = EDI.date.day;
679
	$int 0x40;
531
	$int 0x40;
680
	EDX += 18<<16;
532
	EDX += 20<<16;
681
	ECX = EDI.date.month;
533
	ECX = EDI.date.month;
682
	$int 0x40;
534
	$int 0x40;
683
	EDX += 18<<16;
535
	EDX += 20<<16;
684
	EBX = 4<<16;
536
	EBX = 4<<16;
685
	ECX = EDI.date.year;
537
	ECX = EDI.date.year;
686
	$int 0x40;
538
	$int 0x40;
687
	PutPixel(x+14,y+6,color);
-
 
688
	PutPixel(x+32,y+6,color);
-
 
689
	//sprintf(#text,"%d",EDI.date.year);
539
	DrawBar(x+17,y+10,2,2,color);
Line 690... Line 540...
690
	//WriteText(x, y, 0x80, 0x000000, #text);
540
	DrawBar(x+37,y+10,2,2,color);
691
}
541
}
692
 
542