Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
7618 leency 1
 
2
3
 
4
typedef unsigned __int16 Word;
5
typedef unsigned __int8 Byte;
6
//typedef unsigned __int32 size_t;
7
8
 
9
10
 
11
12
 
13
#define FO_WRITE				2
14
15
 
16
#define EM_WINDOW_REDRAW		1
17
#define EM_KEY_PRESS			2
18
#define EM_BUTTON_CLICK			3
19
#define EM_APP_CLOSE			4
20
#define EM_DRAW_BACKGROUND		5
21
#define EM_MOUSE_EVENT			6
22
#define EM_IPC					7
23
#define EM_NETWORK				8
24
#define EM_DEBUG				9
25
26
 
27
#define EVM_REDRAW        1
28
#define EVM_KEY           2
29
#define EVM_BUTTON        4
30
#define EVM_EXIT          8
31
#define EVM_BACKGROUND    16
32
#define EVM_MOUSE         32
33
#define EVM_IPC           64
34
#define EVM_STACK         128
35
#define EVM_DEBUG         256
36
#define EVM_STACK2        512
37
#define EVM_MOUSE_FILTER  0x80000000
38
#define EVM_CURSOR_FILTER 0x40000000
39
40
 
41
#define BT_DEL      0x80000000
42
#define BT_HIDE     0x40000000
43
#define BT_NOFRAME  0x20000000
44
#define BT_NODRAW   BT_HIDE+BT_NOFRAME
45
46
 
47
#define KM_SCANS				1
48
49
 
50
#define WRS_END					2
51
52
 
53
54
 
55
56
 
57
extern "C" double __cdecl asin(double x);
58
extern "C" double __cdecl floor(double x);
59
extern "C" double __cdecl round(double x);
60
#pragma function(acos,asin)
61
#if _MSC_VER > 1200
62
#pragma function(floor)
63
#endif
64
65
 
66
 
67
{
68
	Dword rwMode;
69
	Dword OffsetLow;
70
	char* OffsetHigh;
71
	Dword dataCount;
72
	Byte *bufferPtr;
73
	char fileURL[MAX_PATH];
74
};
75
76
 
77
 
78
	Dword nonset1;
79
	Dword nonset2;
80
	Dword work_dark;
81
	Dword work_light;
82
	Dword window_title;
83
	Dword work;
84
	Dword work_button;
85
	Dword work_button_text;
86
	Dword work_text;
87
	Dword work_graph;
88
};
89
90
 
91
 
92
{
93
	Byte b;
94
	Byte g;
95
	Byte r;
96
	//
97
	RGB() {};
98
	//
99
	RGB( Dword value )
100
	{
101
		r = (Byte)(value >> 16);
102
		g = (Byte)(value >> 8);
103
		b = (Byte)value;
104
	};
105
	//
106
	bool operator != ( RGB &another )
107
	{
108
		return this->b != another.b || this->g != another.g || this->r != another.r;
109
	};
110
	//
111
	bool operator == ( RGB &another )
112
	{
113
		return this->b == another.b && this->g == another.g && this->r == another.r;
114
	};
115
};
116
117
 
118
 
119
union sProcessInfo
120
{
121
	Byte rawData[1024];
122
	struct
123
	{
124
		Dword cpu_usage;
125
		Word window_stack_position;
126
		Word window_slot; //slot
127
		Word reserved1;
128
		char process_name[12];
129
		Dword memory_start;
130
		Dword used_memory;
131
		Dword PID;
132
		Dword x_start;
133
		Dword y_start;
134
		Dword width;
135
		Dword height;
136
		Word slot_state;
137
		Word reserved3;
138
		Dword work_left;
139
		Dword work_top;
140
		Dword work_width;
141
		Dword work_height;
142
		char status_window;
143
		Dword cwidth;
144
		Dword cheight;
145
	} processInfo;
146
};
147
#pragma pack(pop)
148
149
 
150
//
151
extern char *kosExePath;
152
#endif
153
154
 
155
void crtStartUp();
156
//
157
int __cdecl _purecall();
158
//
159
int __cdecl atexit( void (__cdecl *func )( void ));
160
//
161
void rtlSrand( Dword seed );
162
Dword rtlRand( void );
163
//
164
char * __cdecl strcpy( char *target, const char *source );
165
int __cdecl strlen( const char *line );
166
char * __cdecl strrchr( const char * string, int c );
167
//
168
// if you have trouble here look at old SVN revisions for alternatives
169
void memcpy( void *dst, const void *src, size_t bytesCount );
170
void memset( Byte *dst, Byte filler, Dword count );
171
//
172
void sprintf( char *Str, char* Format, ... );
173
//
174
Dword rtlInterlockedExchange( Dword *target, Dword value );
175
// function -1 завершения процесса
176
void kos_ExitApp();
177
// function 0
178
void kos_DefineAndDrawWindow(
179
	Word x, Word y,
180
	Word sizeX, Word sizeY,
181
	Byte mainAreaType, Dword mainAreaColour,
182
	Byte headerType, Dword headerColour,
183
	Dword borderColour
184
	);
185
// function 1 поставить точку
186
void kos_PutPixel( Dword x, Dword y, Dword colour );
187
// function 2 получить код нажатой клавиши
188
bool kos_GetKey( Byte &keyCode );
189
bool kos_GetKeys( Dword &key_editbox, Byte &key_ascii, Byte &key_scancode );
190
// function 3 получить время
191
Dword kos_GetSystemClock();
192
// function 4
193
void __declspec(noinline) kos_WriteTextToWindow(
194
	Word x, Word y,
195
	Byte fontType,
196
	Dword textColour,
197
	char *textPtr,
198
	Dword textLen
199
	);
200
// function 7 нарисовать изображение
201
void kos_PutImage( RGB * imagePtr, Word sizeX, Word sizeY, Word x, Word y );
202
// function 8 определить кнопку
203
void __declspec(noinline) kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour );
204
//
205
void __declspec(noinline) kos_UnsaveDefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour );
206
// function 5 пауза, в сотых долях секунды
207
void kos_Pause( Dword value );
208
// function 9 - информация о процессе
209
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID = PROCESS_ID_SELF );
210
// function 10
211
Dword kos_WaitForEvent();
212
// function 11
213
Dword kos_CheckForEvent();
214
// function 12
215
void kos_WindowRedrawStatus( Dword status );
216
// function 13 нарисовать полосу
217
void __declspec(noinline) kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour );
218
// function 17
219
bool kos_GetButtonID( Dword &buttonID );
220
// function 23
221
Dword kos_WaitForEventTimeout( Dword timeOut );
222
//
223
enum eNumberBase
224
{
225
	nbDecimal = 0,
226
	nbHex,
227
	nbBin
228
};
229
// получение информации о состоянии "мыши" function 37
230
void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY );
231
// function 38
232
void kos_DrawLine( Word x1, Word y1, Word x2, Word y2, Dword colour, Dword invert );
233
// function 40 установить маску событий
234
void kos_SetMaskForEvents( Dword mask );
235
// function 47 вывести в окно приложения число
236
void kos_DisplayNumberToWindow(
237
   Dword value,
238
   Dword digitsNum,
239
   Word x,
240
   Word y,
241
   Dword colour,
242
   eNumberBase nBase = nbDecimal,
243
   bool valueIsPointer = false
244
   );
245
// 48.3: get system colors
246
bool kos_GetSystemColors( kosSysColors *sc );
247
// function 63
248
void kos_DebugOutChar( char ccc );
249
//
250
void rtlDebugOutString( char *str );
251
//
252
void kos_DebugValue(char *str, int n);
253
// function 64 изменить параметры окна, параметр == -1 не меняется
254
void kos_ChangeWindow( Dword x, Dword y, Dword sizeX, Dword sizeY );
255
// function 67 изменение количества памяти, выделенной для программы
256
bool kos_ApplicationMemoryResize( Dword targetSize );
257
// function 66 режим получения данных от клавиатуры
258
void kos_SetKeyboardDataMode( Dword mode );
259
// 68.11: init heap
260
void kos_InitHeap();
261
// function 70 доступ к файловой системе
262
Dword kos_FileSystemAccess( kosFileInfo *fileInfo );
263
// 70.7: run Kolibri application with param
264
int kos_AppRun(char* app_path, char* param);
265
//
266
void kos_Main();
267
268
 
269
#define SCAN_CODE_BS    14
270
#define SCAN_CODE_TAB   15
271
#define SCAN_CODE_ENTER 28
272
#define SCAN_CODE_ESC    1
273
#define SCAN_CODE_DEL   83
274
#define SCAN_CODE_INS   82
275
#define SCAN_CODE_SPACE 57
276
#define SCAN_CODE_MENU  93
277
278
 
279
#define SCAN_CODE_RIGHT 77
280
#define SCAN_CODE_DOWN  80
281
#define SCAN_CODE_UP    72
282
#define SCAN_CODE_HOME  71
283
#define SCAN_CODE_END   79
284
#define SCAN_CODE_PGDN  81
285
#define SCAN_CODE_PGUP  73
286
287
 
288
#define SCAN_CODE_PLUS  13
289
290
 
291
#define SCAN_CODE_F2    60
292
#define SCAN_CODE_F3    61
293
#define SCAN_CODE_F4    62
294
#define SCAN_CODE_F5    63
295
#define SCAN_CODE_F6    64
296
#define SCAN_CODE_F7    65
297
#define SCAN_CODE_F8    66
298
#define SCAN_CODE_F9    67
299
#define SCAN_CODE_F10   68
300
#define SCAN_CODE_F11   87
301
#define SCAN_CODE_F12   88
302
303
 
304
#define SCAN_CODE_KEY_B 48
305
#define SCAN_CODE_KEY_C 46
306
#define SCAN_CODE_KEY_D 32
307
#define SCAN_CODE_KEY_E 18
308
#define SCAN_CODE_KEY_F 33
309
#define SCAN_CODE_KEY_H 35
310
#define SCAN_CODE_KEY_I 23
311
#define SCAN_CODE_KEY_L 38
312
#define SCAN_CODE_KEY_M 50
313
#define SCAN_CODE_KEY_N 49
314
#define SCAN_CODE_KEY_O 24
315
#define SCAN_CODE_KEY_P 25
316
#define SCAN_CODE_KEY_R 19
317
#define SCAN_CODE_KEY_S 31
318
#define SCAN_CODE_KEY_T 20
319
#define SCAN_CODE_KEY_U 22
320
#define SCAN_CODE_KEY_V 47
321
#define SCAN_CODE_KEY_X 45
322
#define SCAN_CODE_KEY_Y 21
323
#define SCAN_CODE_KEY_Z 44
324