Subversion Repositories Kolibri OS

Rev

Rev 8762 | Rev 9050 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8728 leency 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 .
18
*)
19
 
20
MODULE KolibriOS;
21
 
22
IMPORT
23
    KOSAPI, SYSTEM;
24
 
25
CONST
8762 leency 26
(*
8728 leency 27
    winColor* = 0EEEEEEH;
8762 leency 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
*)
8728 leency 40
    fontWidth* = 8;
41
    fontHeight* = 16;
42
 
8762 leency 43
VAR
8728 leency 44
 
8762 leency 45
    winColor*, textColor*, btnColor*, btnTextColor*,
46
    toolbarColor*, scrollColor*, scrollBkColor*,
47
    borderColor*, selMenuColor*, shadowColor*,
48
    caseColor*, disCaseColor*: INTEGER;
49
 
50
 
8728 leency 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
 
8772 leency 118
PROCEDURE ScreenSize* (VAR width, height: INTEGER);
119
VAR
120
    eax, ebx: INTEGER;
121
    right, left, top, bottom: INTEGER;
122
BEGIN
123
    eax := KOSAPI.sysfunc22(48, 5, ebx);
124
    left := LSR(eax, 16);
125
    right := eax MOD 65536;
126
    top := LSR(ebx, 16);
127
    bottom := ebx MOD 65536;
128
    width := right - left + 1;
129
    height := bottom - top + 1
130
END ScreenSize;
131
 
132
 
8728 leency 133
PROCEDURE ThreadID* (): INTEGER;
134
VAR
135
    id: INTEGER;
136
BEGIN
137
    ThreadInfo(30, 30, id, id)
138
    RETURN id
139
END ThreadID;
140
 
141
 
142
PROCEDURE RolledUp* (): BOOLEAN;
143
VAR
144
    buffer: ARRAY 1024 OF BYTE;
145
BEGIN
146
    KOSAPI.sysfunc3(9, SYSTEM.ADR(buffer[0]), -1)
147
    RETURN ODD(LSR(buffer[70], 2))
148
END RolledUp;
149
 
150
 
151
PROCEDURE SetWinSize* (width, height: INTEGER);
152
BEGIN
153
    KOSAPI.sysfunc5(67, -1, -1, width, height)
154
END SetWinSize;
155
 
156
 
157
PROCEDURE DrawText* (x, y, color: INTEGER; text: ARRAY OF WCHAR);
158
BEGIN
159
    KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(0A0H, 24), SYSTEM.ADR(text[0]), 0, 0)
160
END DrawText;
161
 
162
 
163
PROCEDURE DrawText69* (x, y, color: INTEGER; text: ARRAY OF CHAR);
164
BEGIN
165
    KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(080H, 24), SYSTEM.ADR(text[0]), 0, 0)
166
END DrawText69;
167
 
168
 
169
PROCEDURE DrawText866* (x, y, color: INTEGER; text: ARRAY OF CHAR);
170
BEGIN
171
    KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(0D0H, 24), SYSTEM.ADR(text[0]), 0, winColor)
172
END DrawText866;
173
 
174
 
175
PROCEDURE MousePos* (VAR x, y: INTEGER);
176
VAR
177
    res: INTEGER;
178
BEGIN
179
    res := KOSAPI.sysfunc2(37, 0);
180
    y := res MOD 65536;
181
    x := res DIV 65536
182
END MousePos;
183
 
184
 
185
PROCEDURE CreateButton* (id, Left, Top, Width, Height, Color: INTEGER; Caption: ARRAY OF WCHAR);
186
VAR
187
    x, y: INTEGER;
188
BEGIN
189
    KOSAPI.sysfunc5(8, LSL(Left, 16) + Width, LSL(Top, 16) + Height, id, Color);
190
    x := Left + (Width - fontWidth * LENGTH(Caption)) DIV 2;
191
    y := Top + (Height - fontHeight) DIV 2 + 1;
8762 leency 192
    DrawText(x, y, btnTextColor, Caption)
8728 leency 193
END CreateButton;
194
 
195
 
196
PROCEDURE DeleteButton* (id: INTEGER);
197
BEGIN
198
    KOSAPI.sysfunc5(8, 0, 0, id + 80000000H, 0)
199
END DeleteButton;
200
 
201
 
202
PROCEDURE GetTickCount* (): INTEGER;
203
    RETURN KOSAPI.sysfunc2(26, 9)
204
END GetTickCount;
205
 
206
 
207
PROCEDURE Pause* (time: INTEGER);
208
BEGIN
209
    KOSAPI.sysfunc2(5, time)
210
END Pause;
211
 
212
 
213
PROCEDURE ButtonCode* (): INTEGER;
214
VAR
215
    res: INTEGER;
216
BEGIN
217
    res := KOSAPI.sysfunc1(17);
218
    IF res MOD 256 = 0 THEN
219
        res := LSR(res, 8)
220
    ELSE
221
        res := 0
222
    END
223
    RETURN res
224
END ButtonCode;
225
 
226
 
227
PROCEDURE Exit*;
228
BEGIN
229
    KOSAPI.sysfunc1(-1)
230
END Exit;
231
 
232
 
233
PROCEDURE ExitID* (tid: INTEGER);
234
BEGIN
235
    KOSAPI.sysfunc3(18, 18, tid)
236
END ExitID;
237
 
238
 
239
PROCEDURE CreateThread* (proc: INTEGER; stack: ARRAY OF INTEGER): INTEGER;
240
    RETURN KOSAPI.sysfunc4(51, 1, proc, SYSTEM.ADR(stack[LEN(stack) - 2]))
241
END CreateThread;
242
 
243
 
244
PROCEDURE Run* (program, param: ARRAY OF CHAR);
245
TYPE
246
 
247
    info_struct = RECORD
248
        subfunc : INTEGER;
249
        flags   : INTEGER;
250
        param   : INTEGER;
251
        rsrvd1  : INTEGER;
252
        rsrvd2  : INTEGER;
253
        fname   : ARRAY 1024 OF CHAR
254
    END;
255
 
256
VAR
257
    info: info_struct;
258
 
259
BEGIN
260
    info.subfunc := 7;
261
    info.flags   := 0;
262
    info.param   := SYSTEM.ADR(param[0]);
263
    info.rsrvd1  := 0;
264
    info.rsrvd2  := 0;
265
    COPY(program, info.fname);
266
    KOSAPI.sysfunc2(70, SYSTEM.ADR(info))
267
END Run;
268
 
269
 
270
PROCEDURE DrawRect* (x, y, width, height, color: INTEGER);
271
BEGIN
272
    KOSAPI.sysfunc4(13, x*65536 + width, y*65536 + height, color)
273
END DrawRect;
274
 
275
 
276
PROCEDURE DrawLine* (x1, y1, x2, y2: INTEGER; color: INTEGER);
277
BEGIN
278
    KOSAPI.sysfunc4(38, x1*65536 + x2, y1*65536 + y2, color)
279
END DrawLine;
280
 
281
 
282
PROCEDURE DrawImage* (data, sizeX, sizeY, x, y: INTEGER);
283
BEGIN
284
    KOSAPI.sysfunc4(7, data, sizeX*65536 + sizeY, x*65536 + y)
285
END DrawImage;
286
 
287
 
288
PROCEDURE SetEventsMask* (mask: SET);
289
BEGIN
290
    KOSAPI.sysfunc2(40, ORD(mask))
291
END SetEventsMask;
292
 
293
 
294
PROCEDURE SkinHeight* (): INTEGER;
295
    RETURN KOSAPI.sysfunc2(48, 4)
296
END SkinHeight;
297
 
298
 
299
PROCEDURE GetKey* (): INTEGER;
300
    RETURN KOSAPI.sysfunc1(2)
301
END GetKey;
302
 
303
 
304
PROCEDURE MouseState* (): SET;
305
    RETURN BITS(KOSAPI.sysfunc2(37, 3))
306
END MouseState;
307
 
308
 
309
PROCEDURE Scroll* (): INTEGER;
310
    RETURN ASR(LSL(KOSAPI.sysfunc2(37, 7), 16), 16)
311
END Scroll;
312
 
313
 
314
PROCEDURE GetControlKeys* (): SET;
315
    RETURN BITS(KOSAPI.sysfunc2(66, 3))
316
END GetControlKeys;
317
 
318
 
319
PROCEDURE malloc* (size: INTEGER): INTEGER;
320
    RETURN KOSAPI.malloc(size)
321
END malloc;
322
 
323
 
324
PROCEDURE SetIPC* (buffer: ARRAY OF INTEGER);
325
BEGIN
326
    KOSAPI.sysfunc4(60, 1, SYSTEM.ADR(buffer[0]), LEN(buffer)*SYSTEM.SIZE(INTEGER));
327
END SetIPC;
328
 
329
 
330
PROCEDURE SendIPC* (tid, msg: INTEGER);
331
BEGIN
332
    KOSAPI.sysfunc5(60, 2, tid, SYSTEM.ADR(msg), SYSTEM.SIZE(INTEGER))
333
END SendIPC;
334
 
335
 
8762 leency 336
PROCEDURE PutPixel* (x, y, color: INTEGER);
337
BEGIN
338
    KOSAPI.sysfunc4(1, x, y, color)
339
END PutPixel;
340
 
341
 
342
PROCEDURE GetSystemColors*;
343
VAR
344
    buf: ARRAY 10 OF INTEGER;
345
BEGIN
346
(*    winColor := 0EEEEEEH;
347
    textColor := 0000000H;
348
    btnColor := 0CCCCCCH;
349
    btnTextColor := 0000000H;
350
    scrollColor := 0A0A0A0H;
351
    scrollBkColor := winColor;
352
    borderColor := 0808080H;
353
    *)
354
    selMenuColor := 0CCE8FFH;
355
    toolbarColor := 0DFDFDFH;
356
    shadowColor := 0808080H;
357
    caseColor := 00000FFH;
358
    disCaseColor := 0808080H;
359
 
360
    ASSERT(LEN(buf) >= 10);
361
    KOSAPI.sysfunc4(48, 3, SYSTEM.ADR(buf[0]), 40);
362
 
363
    winColor := buf[5];
364
    textColor := buf[8];
365
    btnColor := buf[6];
366
    btnTextColor := buf[7];
367
    scrollColor := btnColor;
368
    scrollBkColor := winColor;
369
    borderColor := buf[9];
370
END GetSystemColors;
371
 
372
 
8728 leency 373
END KolibriOS.