Subversion Repositories Kolibri OS

Rev

Rev 8728 | Rev 8772 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. (*
  2.     Copyright 2021 Anton Krotov
  3.  
  4.     This file is part of CEdit.
  5.  
  6.     CEdit is free software: you can redistribute it and/or modify
  7.     it under the terms of the GNU General Public License as published by
  8.     the Free Software Foundation, either version 3 of the License, or
  9.     (at your option) any later version.
  10.  
  11.     CEdit is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.     GNU General Public License for more details.
  15.  
  16.     You should have received a copy of the GNU General Public License
  17.     along with CEdit. If not, see <http://www.gnu.org/licenses/>.
  18. *)
  19.  
  20. MODULE KolibriOS;
  21.  
  22. IMPORT
  23.     KOSAPI, SYSTEM;
  24.  
  25. CONST
  26. (*
  27.     winColor* = 0EEEEEEH;
  28.     textColor* = 0000000H;
  29.     btnColor* = 0CCCCCCH;
  30.     btnTextColor* = 0000000H;
  31.     toolbarColor* = 0DFDFDFH;
  32.     scrollColor* = 0A0A0A0H;
  33.     scrollBkColor* = winColor;
  34.     borderColor* = 0808080H;
  35.     selMenuColor* = 0CCE8FFH;
  36.     shadowColor* = 0808080H;
  37.     caseColor* = 00000FFH;
  38.     disCaseColor* = 0808080H;
  39. *)
  40.     fontWidth* = 8;
  41.     fontHeight* = 16;
  42.  
  43. VAR
  44.  
  45.     winColor*, textColor*, btnColor*, btnTextColor*,
  46.     toolbarColor*, scrollColor*, scrollBkColor*,
  47.     borderColor*, selMenuColor*, shadowColor*,
  48.     caseColor*, disCaseColor*: INTEGER;
  49.  
  50.  
  51. PROCEDURE GetCommandLine* (): INTEGER;
  52.     RETURN KOSAPI.GetCommandLine()
  53. END GetCommandLine;
  54.  
  55.  
  56. PROCEDURE GetName* (): INTEGER;
  57.     RETURN KOSAPI.GetName()
  58. END GetName;
  59.  
  60.  
  61. PROCEDURE CreateWindow* (x, y, w, h, color, style, hcolor, hstyle: INTEGER; htext: ARRAY OF CHAR);
  62. BEGIN
  63.     KOSAPI.sysfunc6(0, x * 65536 + w, y * 65536 + h, color + LSL(style, 24), hcolor + LSL(hstyle, 24), SYSTEM.ADR(htext[0]))
  64. END CreateWindow;
  65.  
  66.  
  67. PROCEDURE BeginDraw*;
  68. BEGIN
  69.     KOSAPI.sysfunc2(12, 1)
  70. END BeginDraw;
  71.  
  72.  
  73. PROCEDURE EndDraw*;
  74. BEGIN
  75.     KOSAPI.sysfunc2(12, 2)
  76. END EndDraw;
  77.  
  78.  
  79. PROCEDURE WaitForEvent* (): INTEGER;
  80.     RETURN KOSAPI.sysfunc1(10)
  81. END WaitForEvent;
  82.  
  83.  
  84. PROCEDURE ThreadInfo (offsa, offsb: INTEGER; VAR a, b: INTEGER);
  85. VAR
  86.     buffer: ARRAY 1024 OF BYTE;
  87. BEGIN
  88.     KOSAPI.sysfunc3(9, SYSTEM.ADR(buffer[0]), -1);
  89.     SYSTEM.GET32(SYSTEM.ADR(buffer[0]) + offsa, a);
  90.     SYSTEM.GET32(SYSTEM.ADR(buffer[0]) + offsb, b);
  91. END ThreadInfo;
  92.  
  93.  
  94. PROCEDURE WinSize* (VAR width, height: INTEGER);
  95. BEGIN
  96.     ThreadInfo(42, 46, width, height)
  97. END WinSize;
  98.  
  99.  
  100. PROCEDURE WinPos* (VAR x, y: INTEGER);
  101. BEGIN
  102.     ThreadInfo(34, 38, x, y)
  103. END WinPos;
  104.  
  105.  
  106. PROCEDURE ClientSize* (VAR width, height: INTEGER);
  107. BEGIN
  108.     ThreadInfo(62, 66, width, height)
  109. END ClientSize;
  110.  
  111.  
  112. PROCEDURE ClientPos* (VAR x, y: INTEGER);
  113. BEGIN
  114.     ThreadInfo(54, 58, x, y)
  115. END ClientPos;
  116.  
  117.  
  118. PROCEDURE ThreadID* (): INTEGER;
  119. VAR
  120.     id: INTEGER;
  121. BEGIN
  122.     ThreadInfo(30, 30, id, id)
  123.     RETURN id
  124. END ThreadID;
  125.  
  126.  
  127. PROCEDURE RolledUp* (): BOOLEAN;
  128. VAR
  129.     buffer: ARRAY 1024 OF BYTE;
  130. BEGIN
  131.     KOSAPI.sysfunc3(9, SYSTEM.ADR(buffer[0]), -1)
  132.     RETURN ODD(LSR(buffer[70], 2))
  133. END RolledUp;
  134.  
  135.  
  136. PROCEDURE SetWinSize* (width, height: INTEGER);
  137. BEGIN
  138.     KOSAPI.sysfunc5(67, -1, -1, width, height)
  139. END SetWinSize;
  140.  
  141.  
  142. PROCEDURE DrawText* (x, y, color: INTEGER; text: ARRAY OF WCHAR);
  143. BEGIN
  144.     KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(0A0H, 24), SYSTEM.ADR(text[0]), 0, 0)
  145. END DrawText;
  146.  
  147.  
  148. PROCEDURE DrawText69* (x, y, color: INTEGER; text: ARRAY OF CHAR);
  149. BEGIN
  150.     KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(080H, 24), SYSTEM.ADR(text[0]), 0, 0)
  151. END DrawText69;
  152.  
  153.  
  154. PROCEDURE DrawText866* (x, y, color: INTEGER; text: ARRAY OF CHAR);
  155. BEGIN
  156.     KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(0D0H, 24), SYSTEM.ADR(text[0]), 0, winColor)
  157. END DrawText866;
  158.  
  159.  
  160. PROCEDURE MousePos* (VAR x, y: INTEGER);
  161. VAR
  162.     res: INTEGER;
  163. BEGIN
  164.     res := KOSAPI.sysfunc2(37, 0);
  165.     y := res MOD 65536;
  166.     x := res DIV 65536
  167. END MousePos;
  168.  
  169.  
  170. PROCEDURE CreateButton* (id, Left, Top, Width, Height, Color: INTEGER; Caption: ARRAY OF WCHAR);
  171. VAR
  172.     x, y: INTEGER;
  173. BEGIN
  174.     KOSAPI.sysfunc5(8, LSL(Left, 16) + Width, LSL(Top, 16) + Height, id, Color);
  175.     x := Left + (Width - fontWidth * LENGTH(Caption)) DIV 2;
  176.     y := Top + (Height - fontHeight) DIV 2 + 1;
  177.     DrawText(x, y, btnTextColor, Caption)
  178. END CreateButton;
  179.  
  180.  
  181. PROCEDURE DeleteButton* (id: INTEGER);
  182. BEGIN
  183.     KOSAPI.sysfunc5(8, 0, 0, id + 80000000H, 0)
  184. END DeleteButton;
  185.  
  186.  
  187. PROCEDURE GetTickCount* (): INTEGER;
  188.     RETURN KOSAPI.sysfunc2(26, 9)
  189. END GetTickCount;
  190.  
  191.  
  192. PROCEDURE Pause* (time: INTEGER);
  193. BEGIN
  194.     KOSAPI.sysfunc2(5, time)
  195. END Pause;
  196.  
  197.  
  198. PROCEDURE ButtonCode* (): INTEGER;
  199. VAR
  200.     res: INTEGER;
  201. BEGIN
  202.     res := KOSAPI.sysfunc1(17);
  203.     IF res MOD 256 = 0 THEN
  204.         res := LSR(res, 8)
  205.     ELSE
  206.         res := 0
  207.     END
  208.     RETURN res
  209. END ButtonCode;
  210.  
  211.  
  212. PROCEDURE Exit*;
  213. BEGIN
  214.     KOSAPI.sysfunc1(-1)
  215. END Exit;
  216.  
  217.  
  218. PROCEDURE ExitID* (tid: INTEGER);
  219. BEGIN
  220.     KOSAPI.sysfunc3(18, 18, tid)
  221. END ExitID;
  222.  
  223.  
  224. PROCEDURE CreateThread* (proc: INTEGER; stack: ARRAY OF INTEGER): INTEGER;
  225.     RETURN KOSAPI.sysfunc4(51, 1, proc, SYSTEM.ADR(stack[LEN(stack) - 2]))
  226. END CreateThread;
  227.  
  228.  
  229. PROCEDURE Run* (program, param: ARRAY OF CHAR);
  230. TYPE
  231.  
  232.     info_struct = RECORD
  233.         subfunc : INTEGER;
  234.         flags   : INTEGER;
  235.         param   : INTEGER;
  236.         rsrvd1  : INTEGER;
  237.         rsrvd2  : INTEGER;
  238.         fname   : ARRAY 1024 OF CHAR
  239.     END;
  240.  
  241. VAR
  242.     info: info_struct;
  243.  
  244. BEGIN
  245.     info.subfunc := 7;
  246.     info.flags   := 0;
  247.     info.param   := SYSTEM.ADR(param[0]);
  248.     info.rsrvd1  := 0;
  249.     info.rsrvd2  := 0;
  250.     COPY(program, info.fname);
  251.     KOSAPI.sysfunc2(70, SYSTEM.ADR(info))
  252. END Run;
  253.  
  254.  
  255. PROCEDURE DrawRect* (x, y, width, height, color: INTEGER);
  256. BEGIN
  257.     KOSAPI.sysfunc4(13, x*65536 + width, y*65536 + height, color)
  258. END DrawRect;
  259.  
  260.  
  261. PROCEDURE DrawLine* (x1, y1, x2, y2: INTEGER; color: INTEGER);
  262. BEGIN
  263.     KOSAPI.sysfunc4(38, x1*65536 + x2, y1*65536 + y2, color)
  264. END DrawLine;
  265.  
  266.  
  267. PROCEDURE DrawImage* (data, sizeX, sizeY, x, y: INTEGER);
  268. BEGIN
  269.     KOSAPI.sysfunc4(7, data, sizeX*65536 + sizeY, x*65536 + y)
  270. END DrawImage;
  271.  
  272.  
  273. PROCEDURE SetEventsMask* (mask: SET);
  274. BEGIN
  275.     KOSAPI.sysfunc2(40, ORD(mask))
  276. END SetEventsMask;
  277.  
  278.  
  279. PROCEDURE SkinHeight* (): INTEGER;
  280.     RETURN KOSAPI.sysfunc2(48, 4)
  281. END SkinHeight;
  282.  
  283.  
  284. PROCEDURE GetKey* (): INTEGER;
  285.     RETURN KOSAPI.sysfunc1(2)
  286. END GetKey;
  287.  
  288.  
  289. PROCEDURE MouseState* (): SET;
  290.     RETURN BITS(KOSAPI.sysfunc2(37, 3))
  291. END MouseState;
  292.  
  293.  
  294. PROCEDURE Scroll* (): INTEGER;
  295.     RETURN ASR(LSL(KOSAPI.sysfunc2(37, 7), 16), 16)
  296. END Scroll;
  297.  
  298.  
  299. PROCEDURE GetControlKeys* (): SET;
  300.     RETURN BITS(KOSAPI.sysfunc2(66, 3))
  301. END GetControlKeys;
  302.  
  303.  
  304. PROCEDURE malloc* (size: INTEGER): INTEGER;
  305.     RETURN KOSAPI.malloc(size)
  306. END malloc;
  307.  
  308.  
  309. PROCEDURE SetIPC* (buffer: ARRAY OF INTEGER);
  310. BEGIN
  311.     KOSAPI.sysfunc4(60, 1, SYSTEM.ADR(buffer[0]), LEN(buffer)*SYSTEM.SIZE(INTEGER));
  312. END SetIPC;
  313.  
  314.  
  315. PROCEDURE SendIPC* (tid, msg: INTEGER);
  316. BEGIN
  317.     KOSAPI.sysfunc5(60, 2, tid, SYSTEM.ADR(msg), SYSTEM.SIZE(INTEGER))
  318. END SendIPC;
  319.  
  320.  
  321. PROCEDURE PutPixel* (x, y, color: INTEGER);
  322. BEGIN
  323.     KOSAPI.sysfunc4(1, x, y, color)
  324. END PutPixel;
  325.  
  326.  
  327. PROCEDURE GetSystemColors*;
  328. VAR
  329.     buf: ARRAY 10 OF INTEGER;
  330. BEGIN
  331. (*    winColor := 0EEEEEEH;
  332.     textColor := 0000000H;
  333.     btnColor := 0CCCCCCH;
  334.     btnTextColor := 0000000H;
  335.     scrollColor := 0A0A0A0H;
  336.     scrollBkColor := winColor;
  337.     borderColor := 0808080H;
  338.     *)
  339.     selMenuColor := 0CCE8FFH;
  340.     toolbarColor := 0DFDFDFH;
  341.     shadowColor := 0808080H;
  342.     caseColor := 00000FFH;
  343.     disCaseColor := 0808080H;
  344.  
  345.     ASSERT(LEN(buf) >= 10);
  346.     KOSAPI.sysfunc4(48, 3, SYSTEM.ADR(buf[0]), 40);
  347.  
  348.     winColor := buf[5];
  349.     textColor := buf[8];
  350.     btnColor := buf[6];
  351.     btnTextColor := buf[7];
  352.     scrollColor := btnColor;
  353.     scrollBkColor := winColor;
  354.     borderColor := buf[9];
  355. END GetSystemColors;
  356.  
  357.  
  358. END KolibriOS.