Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. #pragma once
  3.  
  4. typedef unsigned __int32 Dword;
  5. typedef unsigned __int16 Word;
  6. typedef unsigned __int8 Byte;
  7. //typedef unsigned __int32 size_t;
  8.  
  9. extern "C" char kosCmdLine[];   // command line initialized by OS
  10. extern "C" char kosExePath[];   // path to binary initialized by OS
  11.  
  12. #define NULL 0
  13.  
  14. #define MAX_PATH                                256
  15.  
  16. #define FO_READ                                 0
  17. #define FO_WRITE                                2
  18.  
  19. #define EM_WINDOW_REDRAW                1
  20. #define EM_KEY_PRESS                    2
  21. #define EM_BUTTON_CLICK                 4
  22. #define EM_APP_CLOSE                    8
  23. #define EM_DRAW_BACKGROUND              16
  24. #define EM_MOUSE_EVENT                  32
  25. #define EM_IPC                                  64
  26. #define EM_NETWORK                              256
  27.  
  28. #define KM_CHARS                                0
  29. #define KM_SCANS                                1
  30.  
  31. #define WRS_BEGIN                               1
  32. #define WRS_END                                 2
  33.  
  34. #define PROCESS_ID_SELF                 -1
  35.  
  36. #define abs(a) (a<0?0-a:a)
  37.  
  38. extern "C" double __cdecl acos(double x);
  39. extern "C" double __cdecl asin(double x);
  40. extern "C" double __cdecl floor(double x);
  41. extern "C" double __cdecl round(double x);
  42. #pragma function(acos,asin)
  43. #if _MSC_VER > 1200
  44. #pragma function(floor)
  45. #endif
  46.  
  47.  
  48. struct kosFileInfo
  49. {
  50.         Dword rwMode;
  51.         Dword OffsetLow;
  52.         Dword OffsetHigh;
  53.         Dword dataCount;
  54.         Byte *bufferPtr;
  55.         char fileURL[MAX_PATH];
  56. };
  57.  
  58.  
  59. struct RGB
  60. {
  61.         Byte b;
  62.         Byte g;
  63.         Byte r;
  64.         //
  65.         RGB() {};
  66.         //
  67.         RGB( Dword value )
  68.         {
  69.                 r = (Byte)(value >> 16);
  70.                 g = (Byte)(value >> 8);
  71.                 b = (Byte)value;
  72.         };
  73.         //
  74.         bool operator != ( RGB &another )
  75.         {
  76.                 return this->b != another.b || this->g != another.g || this->r != another.r;
  77.         };
  78.         //
  79.         bool operator == ( RGB &another )
  80.         {
  81.                 return this->b == another.b && this->g == another.g && this->r == another.r;
  82.         };
  83. };
  84.  
  85.  
  86. #pragma pack(push, 1)
  87. union sProcessInfo
  88. {
  89.         Byte rawData[1024];
  90.         struct
  91.         {
  92.                 Dword cpu_usage;
  93.                 Word window_stack_position;
  94.                 Word window_stack_value;
  95.                 Word reserved1;
  96.                 char process_name[12];
  97.                 Dword memory_start;
  98.                 Dword used_memory;
  99.                 Dword PID;
  100.                 Dword x_start;
  101.                 Dword y_start;
  102.                 Dword x_size;
  103.                 Dword y_size;
  104.                 Word slot_state;
  105.         } processInfo;
  106. };
  107. #pragma pack(pop)
  108.  
  109. //
  110. extern "C" void __cdecl crtStartUp();
  111. //
  112. int __cdecl _purecall();
  113. //
  114. int __cdecl atexit( void (__cdecl *func )( void ));
  115. //
  116. void rtlSrand( Dword seed );
  117. Dword rtlRand( void );
  118. //
  119. char * __cdecl strcpy( char *target, const char *source );
  120. int __cdecl strlen( const char *line );
  121. char * __cdecl strrchr( const char * string, int c );
  122.  
  123. #if _MSC_VER < 1400
  124. extern "C" void * __cdecl memcpy( void *dst, const void *src, size_t bytesCount );
  125. extern "C" void memset( Byte *dst, Byte filler, Dword count );
  126. //#pragma intrinsic(memcpy,memset)
  127. #else
  128. void * __cdecl memcpy( void *dst, const void *src, size_t bytesCount );
  129. void memset( Byte *dst, Byte filler, Dword count );
  130. #endif
  131.  
  132. unsigned int num2hex( unsigned int num );
  133. void sprintf( char *Str, char* Format, ... );
  134. //
  135. Dword rtlInterlockedExchange( Dword *target, Dword value );
  136. // ôóíêöèÿ -1 çàâåðøåíèÿ ïðîöåññà
  137. void __declspec(noreturn) kos_ExitApp();
  138. // ôóíêöèÿ 0
  139. void kos_DefineAndDrawWindow(
  140.         Word x, Word y,
  141.         Word sizeX, Word sizeY,
  142.         Byte mainAreaType, Dword mainAreaColour,
  143.         Byte headerType, Dword headerColour,
  144.         Dword borderColour
  145.         );
  146. // ôóíêöèÿ 1 ïîñòàâèòü òî÷êó
  147. void kos_PutPixel( Dword x, Dword y, Dword colour );
  148. // ôóíêöèÿ 2 ïîëó÷èòü êîä íàæàòîé êëàâèøè
  149. bool kos_GetKey( Byte &keyCode );
  150. // ôóíêöèÿ 3 ïîëó÷èòü âðåìÿ
  151. Dword kos_GetSystemClock();
  152. // ôóíêöèÿ 4
  153. void kos_WriteTextToWindow(
  154.         Word x, Word y,
  155.         Byte fontType,
  156.         Dword textColour,
  157.         const char *textPtr,
  158.         Dword textLen
  159.         );
  160. // ôóíêöèÿ 7 íàðèñîâàòü èçîáðàæåíèå
  161. void kos_PutImage( RGB * imagePtr, Word sizeX, Word sizeY, Word x, Word y );
  162. // ôóíêöèÿ 8 îïðåäåëèòü êíîïêó
  163. void __declspec(noinline) kos_DefineButton( Word x, Word y, Word sizeX, Word sizeY, Dword buttonID, Dword colour );
  164. // ôóíêöèÿ 5 ïàóçà, â ñîòûõ äîëÿõ ñåêóíäû
  165. void kos_Pause( Dword value );
  166. // ôóíêöèÿ 9 - èíôîðìàöèÿ î ïðîöåññå
  167. Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID = PROCESS_ID_SELF );
  168. // ôóíêöèÿ 10
  169. Dword kos_WaitForEvent();
  170. // ôóíêöèÿ 11
  171. Dword kos_CheckForEvent();
  172. // ôóíêöèÿ 12
  173. void kos_WindowRedrawStatus( Dword status );
  174. // ôóíêöèÿ 13 íàðèñîâàòü ïîëîñó
  175. void __declspec(noinline) kos_DrawBar( Word x, Word y, Word sizeX, Word sizeY, Dword colour );
  176. // ôóíêöèÿ 17
  177. bool kos_GetButtonID( Dword &buttonID );
  178. // ôóíêöèÿ 23
  179. Dword kos_WaitForEventTimeout( Dword timeOut );
  180. //
  181. enum eNumberBase
  182. {
  183.         nbDecimal = 0,
  184.         nbHex,
  185.         nbBin
  186. };
  187. // ïîëó÷åíèå èíôîðìàöèè î ñîñòîÿíèè "ìûøè" ôóíêöèÿ 37
  188. void kos_GetMouseState( Dword & buttons, int & cursorX, int & cursorY );
  189. // ôóíêöèÿ 40 óñòàíîâèòü ìàñêó ñîáûòèé
  190. void kos_SetMaskForEvents( Dword mask );
  191. // ôóíêöèÿ 47 âûâåñòè â îêíî ïðèëîæåíèÿ ÷èñëî
  192. void kos_DisplayNumberToWindow(
  193.    Dword value,
  194.    Dword digitsNum,
  195.    Word x,
  196.    Word y,
  197.    Dword colour,
  198.    eNumberBase nBase = nbDecimal,
  199.    bool valueIsPointer = false
  200.    );
  201. // ôóíêöèÿ 58 äîñòóï ê ôàéëîâîé ñèñòåìå
  202. Dword kos_FileSystemAccess( kosFileInfo *fileInfo );
  203. // ôóíêöèÿ 63
  204. void kos_DebugOutChar( char ccc );
  205. //
  206. void rtlDebugOutString( char *str );
  207. // ôóíêöèÿ 64 èçìåíèòü ïàðàìåòðû îêíà, ïàðàìåòð == -1 íå ìåíÿåòñÿ
  208. void kos_ChangeWindow( Dword x, Dword y, Dword sizeX, Dword sizeY );
  209. // ôóíêöèÿ 67 èçìåíåíèå êîëè÷åñòâà ïàìÿòè, âûäåëåííîé äëÿ ïðîãðàììû
  210. bool kos_ApplicationMemoryResize( Dword targetSize );
  211. // ôóíêöèÿ 66 ðåæèì ïîëó÷åíèÿ äàííûõ îò êëàâèàòóðû
  212. void kos_SetKeyboardDataMode( Dword mode );
  213.  
  214. void kos_InitHeap();
  215.  
  216. //
  217. void kos_Main();
  218.