KOSLib.txt 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  1. ==============================================================================
  2. Библиотека (KolibriOS)
  3. ------------------------------------------------------------------------------
  4. MODULE Out - консольный вывод
  5. PROCEDURE Open
  6. формально открывает консольный вывод
  7. PROCEDURE Int(x, width: INTEGER)
  8. вывод целого числа x;
  9. width - количество знакомест, используемых для вывода
  10. PROCEDURE Real(x: REAL; width: INTEGER)
  11. вывод вещественного числа x в плавающем формате;
  12. width - количество знакомест, используемых для вывода
  13. PROCEDURE Char(x: CHAR)
  14. вывод символа x
  15. PROCEDURE FixReal(x: REAL; width, p: INTEGER)
  16. вывод вещественного числа x в фиксированном формате;
  17. width - количество знакомест, используемых для вывода;
  18. p - количество знаков после десятичной точки
  19. PROCEDURE Ln
  20. переход на следующую строку
  21. PROCEDURE String(s: ARRAY OF CHAR)
  22. вывод строки s
  23. ------------------------------------------------------------------------------
  24. MODULE In - консольный ввод
  25. VAR Done: BOOLEAN
  26. принимает значение TRUE в случае успешного выполнения
  27. операции ввода, иначе FALSE
  28. PROCEDURE Open
  29. формально открывает консольный ввод,
  30. также присваивает переменной Done значение TRUE
  31. PROCEDURE Int(VAR x: INTEGER)
  32. ввод числа типа INTEGER
  33. PROCEDURE Char(VAR x: CHAR)
  34. ввод символа
  35. PROCEDURE Real(VAR x: REAL)
  36. ввод числа типа REAL
  37. PROCEDURE String(VAR s: ARRAY OF CHAR)
  38. ввод строки
  39. PROCEDURE Ln
  40. ожидание нажатия ENTER
  41. ------------------------------------------------------------------------------
  42. MODULE Console - дополнительные процедуры консольного вывода
  43. CONST
  44. Следующие константы определяют цвет консольного вывода
  45. Black = 0 Blue = 1 Green = 2
  46. Cyan = 3 Red = 4 Magenta = 5
  47. Brown = 6 LightGray = 7 DarkGray = 8
  48. LightBlue = 9 LightGreen = 10 LightCyan = 11
  49. LightRed = 12 LightMagenta = 13 Yellow = 14
  50. White = 15
  51. PROCEDURE Cls
  52. очистка окна консоли
  53. PROCEDURE SetColor(FColor, BColor: INTEGER)
  54. установка цвета консольного вывода: FColor - цвет текста,
  55. BColor - цвет фона, возможные значения - вышеперечисленные
  56. константы
  57. PROCEDURE SetCursor(x, y: INTEGER)
  58. установка курсора консоли в позицию (x, y)
  59. PROCEDURE GetCursor(VAR x, y: INTEGER)
  60. записывает в параметры текущие координаты курсора консоли
  61. PROCEDURE GetCursorX(): INTEGER
  62. возвращает текущую x-координату курсора консоли
  63. PROCEDURE GetCursorY(): INTEGER
  64. возвращает текущую y-координату курсора консоли
  65. ------------------------------------------------------------------------------
  66. MODULE ConsoleLib - обертка библиотеки console.obj
  67. ------------------------------------------------------------------------------
  68. MODULE Math - математические функции
  69. CONST
  70. pi = 3.141592653589793E+00
  71. e = 2.718281828459045E+00
  72. PROCEDURE IsNan(x: REAL): BOOLEAN
  73. возвращает TRUE, если x - не число
  74. PROCEDURE IsInf(x: REAL): BOOLEAN
  75. возвращает TRUE, если x - бесконечность
  76. PROCEDURE sqrt(x: REAL): REAL
  77. квадратный корень x
  78. PROCEDURE exp(x: REAL): REAL
  79. экспонента x
  80. PROCEDURE ln(x: REAL): REAL
  81. натуральный логарифм x
  82. PROCEDURE sin(x: REAL): REAL
  83. синус x
  84. PROCEDURE cos(x: REAL): REAL
  85. косинус x
  86. PROCEDURE tan(x: REAL): REAL
  87. тангенс x
  88. PROCEDURE arcsin(x: REAL): REAL
  89. арксинус x
  90. PROCEDURE arccos(x: REAL): REAL
  91. арккосинус x
  92. PROCEDURE arctan(x: REAL): REAL
  93. арктангенс x
  94. PROCEDURE arctan2(y, x: REAL): REAL
  95. арктангенс y/x
  96. PROCEDURE power(base, exponent: REAL): REAL
  97. возведение числа base в степень exponent
  98. PROCEDURE log(base, x: REAL): REAL
  99. логарифм x по основанию base
  100. PROCEDURE sinh(x: REAL): REAL
  101. гиперболический синус x
  102. PROCEDURE cosh(x: REAL): REAL
  103. гиперболический косинус x
  104. PROCEDURE tanh(x: REAL): REAL
  105. гиперболический тангенс x
  106. PROCEDURE arsinh(x: REAL): REAL
  107. обратный гиперболический синус x
  108. PROCEDURE arcosh(x: REAL): REAL
  109. обратный гиперболический косинус x
  110. PROCEDURE artanh(x: REAL): REAL
  111. обратный гиперболический тангенс x
  112. PROCEDURE round(x: REAL): REAL
  113. округление x до ближайшего целого
  114. PROCEDURE frac(x: REAL): REAL;
  115. дробная часть числа x
  116. PROCEDURE floor(x: REAL): REAL
  117. наибольшее целое число (представление как REAL),
  118. не больше x: floor(1.2) = 1.0
  119. PROCEDURE ceil(x: REAL): REAL
  120. наименьшее целое число (представление как REAL),
  121. не меньше x: ceil(1.2) = 2.0
  122. PROCEDURE sgn(x: REAL): INTEGER
  123. если x > 0 возвращает 1
  124. если x < 0 возвращает -1
  125. если x = 0 возвращает 0
  126. PROCEDURE fact(n: INTEGER): REAL
  127. факториал n
  128. ------------------------------------------------------------------------------
  129. MODULE Debug - вывод на доску отладки
  130. Интерфейс как модуль Out
  131. PROCEDURE Open
  132. открывает доску отладки
  133. ------------------------------------------------------------------------------
  134. MODULE File - работа с файловой системой
  135. TYPE
  136. FNAME = ARRAY 520 OF CHAR
  137. FS = POINTER TO rFS
  138. rFS = RECORD (* информационная структура файла *)
  139. subfunc, pos, hpos, bytes, buffer: INTEGER;
  140. name: FNAME
  141. END
  142. FD = POINTER TO rFD
  143. rFD = RECORD (* структура блока данных входа каталога *)
  144. attr: INTEGER;
  145. ntyp: CHAR;
  146. reserved: ARRAY 3 OF CHAR;
  147. time_create, date_create,
  148. time_access, date_access,
  149. time_modif, date_modif,
  150. size, hsize: INTEGER;
  151. name: FNAME
  152. END
  153. CONST
  154. SEEK_BEG = 0
  155. SEEK_CUR = 1
  156. SEEK_END = 2
  157. PROCEDURE Load(FName: ARRAY OF CHAR; VAR size: INTEGER): INTEGER;
  158. Загружает в память файл с именем FName, записывает в параметр
  159. size размер файла, возвращает адрес загруженного файла
  160. или 0 (ошибка). При необходимости, распаковывает
  161. файл (kunpack).
  162. PROCEDURE GetFileInfo(FName: ARRAY OF CHAR; VAR Info: rFD): BOOLEAN
  163. Записывает структуру блока данных входа каталога для файла
  164. или папки с именем FName в параметр Info.
  165. При ошибке возвращает FALSE.
  166. PROCEDURE Exists(FName: ARRAY OF CHAR): BOOLEAN
  167. возвращает TRUE, если файл с именем FName существует
  168. PROCEDURE Close(VAR F: FS)
  169. освобождает память, выделенную для информационной структуры
  170. файла F и присваивает F значение NIL
  171. PROCEDURE Open(FName: ARRAY OF CHAR): FS
  172. возвращает указатель на информационную структуру файла с
  173. именем FName, при ошибке возвращает NIL
  174. PROCEDURE Delete(FName: ARRAY OF CHAR): BOOLEAN
  175. удаляет файл с именем FName, при ошибке возвращает FALSE
  176. PROCEDURE Seek(F: FS; Offset, Origin: INTEGER): INTEGER
  177. устанавливает позицию чтения-записи файла F на Offset,
  178. относительно Origin = (SEEK_BEG - начало файла,
  179. SEEK_CUR - текущая позиция, SEEK_END - конец файла),
  180. возвращает позицию относительно начала файла, например:
  181. Seek(F, 0, SEEK_END)
  182. устанавливает позицию на конец файла и возвращает длину
  183. файла; при ошибке возвращает -1
  184. PROCEDURE Read(F: FS; Buffer, Count: INTEGER): INTEGER
  185. Читает данные из файла в память. F - указатель на
  186. информационную структуру файла, Buffer - адрес области
  187. памяти, Count - количество байт, которое требуется прочитать
  188. из файла; возвращает количество байт, которое было прочитано
  189. и соответствующим образом изменяет позицию чтения/записи в
  190. информационной структуре F.
  191. PROCEDURE Write(F: FS; Buffer, Count: INTEGER): INTEGER
  192. Записывает данные из памяти в файл. F - указатель на
  193. информационную структуру файла, Buffer - адрес области
  194. памяти, Count - количество байт, которое требуется записать
  195. в файл; возвращает количество байт, которое было записано и
  196. соответствующим образом изменяет позицию чтения/записи в
  197. информационной структуре F.
  198. PROCEDURE Create(FName: ARRAY OF CHAR): FS
  199. создает новый файл с именем FName (полное имя), возвращает
  200. указатель на информационную структуру файла,
  201. при ошибке возвращает NIL
  202. PROCEDURE CreateDir(DirName: ARRAY OF CHAR): BOOLEAN
  203. создает папку с именем DirName, все промежуточные папки
  204. должны существовать, при ошибке возвращает FALSE
  205. PROCEDURE DeleteDir(DirName: ARRAY OF CHAR): BOOLEAN
  206. удаляет пустую папку с именем DirName,
  207. при ошибке возвращает FALSE
  208. PROCEDURE DirExists(DirName: ARRAY OF CHAR): BOOLEAN
  209. возвращает TRUE, если папка с именем DirName существует
  210. ------------------------------------------------------------------------------
  211. MODULE Read - чтение основных типов данных из файла F
  212. Процедуры возвращают TRUE в случае успешной операции чтения и
  213. соответствующим образом изменяют позицию чтения/записи в
  214. информационной структуре F
  215. PROCEDURE Char(F: File.FS; VAR x: CHAR): BOOLEAN
  216. PROCEDURE Int(F: File.FS; VAR x: INTEGER): BOOLEAN
  217. PROCEDURE Real(F: File.FS; VAR x: REAL): BOOLEAN
  218. PROCEDURE Boolean(F: File.FS; VAR x: BOOLEAN): BOOLEAN
  219. PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN
  220. PROCEDURE WChar(F: File.FS; VAR x: WCHAR): BOOLEAN
  221. ------------------------------------------------------------------------------
  222. MODULE Write - запись основных типов данных в файл F
  223. Процедуры возвращают TRUE в случае успешной операции записи и
  224. соответствующим образом изменяют позицию чтения/записи в
  225. информационной структуре F
  226. PROCEDURE Char(F: File.FS; x: CHAR): BOOLEAN
  227. PROCEDURE Int(F: File.FS; x: INTEGER): BOOLEAN
  228. PROCEDURE Real(F: File.FS; x: REAL): BOOLEAN
  229. PROCEDURE Boolean(F: File.FS; x: BOOLEAN): BOOLEAN
  230. PROCEDURE Set(F: File.FS; x: SET): BOOLEAN
  231. PROCEDURE WChar(F: File.FS; x: WCHAR): BOOLEAN
  232. ------------------------------------------------------------------------------
  233. MODULE DateTime - дата, время
  234. CONST ERR = -7.0E5
  235. PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec: INTEGER)
  236. записывает в параметры компоненты текущей системной даты и
  237. времени
  238. PROCEDURE Encode(Year, Month, Day, Hour, Min, Sec: INTEGER): REAL
  239. возвращает дату, полученную из компонентов
  240. Year, Month, Day, Hour, Min, Sec;
  241. при ошибке возвращает константу ERR = -7.0E5
  242. PROCEDURE Decode(Date: REAL; VAR Year, Month, Day,
  243. Hour, Min, Sec: INTEGER): BOOLEAN
  244. извлекает компоненты
  245. Year, Month, Day, Hour, Min, Sec из даты Date;
  246. при ошибке возвращает FALSE
  247. ------------------------------------------------------------------------------
  248. MODULE Args - параметры программы
  249. VAR argc: INTEGER
  250. количество параметров программы, включая имя
  251. исполняемого файла
  252. PROCEDURE GetArg(n: INTEGER; VAR s: ARRAY OF CHAR)
  253. записывает в строку s n-й параметр программы,
  254. нумерация параметров от 0 до argc - 1,
  255. нулевой параметр -- имя исполняемого файла
  256. ------------------------------------------------------------------------------
  257. MODULE KOSAPI
  258. PROCEDURE sysfunc1(arg1: INTEGER): INTEGER
  259. PROCEDURE sysfunc2(arg1, arg2: INTEGER): INTEGER
  260. ...
  261. PROCEDURE sysfunc7(arg1, arg2, ..., arg7: INTEGER): INTEGER
  262. Обертки для функций API ядра KolibriOS.
  263. arg1 .. arg7 соответствуют регистрам
  264. eax, ebx, ecx, edx, esi, edi, ebp;
  265. возвращают значение регистра eax после системного вызова.
  266. PROCEDURE sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER
  267. Обертка для функций API ядра KolibriOS.
  268. arg1 - регистр eax, arg2 - регистр ebx,
  269. res2 - значение регистра ebx после системного вызова;
  270. возвращает значение регистра eax после системного вызова.
  271. PROCEDURE malloc(size: INTEGER): INTEGER
  272. Выделяет блок памяти.
  273. size - размер блока в байтах,
  274. возвращает адрес выделенного блока
  275. PROCEDURE free(ptr: INTEGER): INTEGER
  276. Освобождает ранее выделенный блок памяти с адресом ptr,
  277. возвращает 0
  278. PROCEDURE realloc(ptr, size: INTEGER): INTEGER
  279. Перераспределяет блок памяти,
  280. ptr - адрес ранее выделенного блока,
  281. size - новый размер,
  282. возвращает указатель на перераспределенный блок,
  283. 0 при ошибке
  284. PROCEDURE GetCommandLine(): INTEGER
  285. Возвращает адрес строки параметров
  286. PROCEDURE GetName(): INTEGER
  287. Возвращает адрес строки с именем программы
  288. PROCEDURE LoadLib(name: ARRAY OF CHAR): INTEGER
  289. Загружает DLL с полным именем name. Возвращает адрес таблицы
  290. экспорта. При ошибке возвращает 0.
  291. PROCEDURE GetProcAdr(name: ARRAY OF CHAR; lib: INTEGER): INTEGER
  292. name - имя процедуры
  293. lib - адрес таблицы экспорта DLL
  294. Возвращает адрес процедуры. При ошибке возвращает 0.
  295. ------------------------------------------------------------------------------
  296. MODULE ColorDlg - работа с диалогом "Color Dialog"
  297. TYPE
  298. Dialog = POINTER TO RECORD (* структура диалога *)
  299. status: INTEGER (* состояние диалога:
  300. 0 - пользователь нажал Cancel
  301. 1 - пользователь нажал OK
  302. 2 - диалог открыт *)
  303. color: INTEGER (* выбранный цвет *)
  304. END
  305. PROCEDURE Create(draw_window: DRAW_WINDOW): Dialog
  306. создать диалог
  307. draw_window - процедура перерисовки основного окна
  308. (TYPE DRAW_WINDOW = PROCEDURE);
  309. процедура возвращает указатель на структуру диалога
  310. PROCEDURE Show(cd: Dialog)
  311. показать диалог
  312. cd - указатель на структуру диалога, который был создан ранее
  313. процедурой Create
  314. PROCEDURE Destroy(VAR cd: Dialog)
  315. уничтожить диалог
  316. cd - указатель на структуру диалога
  317. ------------------------------------------------------------------------------
  318. MODULE OpenDlg - работа с диалогом "Open Dialog"
  319. TYPE
  320. Dialog = POINTER TO RECORD (* структура диалога *)
  321. status: INTEGER (* состояние диалога:
  322. 0 - пользователь нажал Cancel
  323. 1 - пользователь нажал OK
  324. 2 - диалог открыт *)
  325. FileName: ARRAY 4096 OF CHAR (* имя выбранного файла *)
  326. FilePath: ARRAY 4096 OF CHAR (* полное имя выбранного
  327. файла *)
  328. END
  329. PROCEDURE Create(draw_window: DRAW_WINDOW; type: INTEGER; def_path,
  330. filter: ARRAY OF CHAR): Dialog
  331. создать диалог
  332. draw_window - процедура перерисовки основного окна
  333. (TYPE DRAW_WINDOW = PROCEDURE)
  334. type - тип диалога
  335. 0 - открыть
  336. 1 - сохранить
  337. 2 - выбрать папку
  338. def_path - путь по умолчанию, папка def_path будет открыта
  339. при первом запуске диалога
  340. filter - в строке записано перечисление расширений файлов,
  341. которые будут показаны в диалоговом окне, расширения
  342. разделяются символом "|", например: "ASM|TXT|INI"
  343. процедура возвращает указатель на структуру диалога
  344. PROCEDURE Show(od: Dialog; Width, Height: INTEGER)
  345. показать диалог
  346. od - указатель на структуру диалога, который был создан ранее
  347. процедурой Create
  348. Width и Height - ширина и высота диалогового окна
  349. PROCEDURE Destroy(VAR od: Dialog)
  350. уничтожить диалог
  351. od - указатель на структуру диалога
  352. ------------------------------------------------------------------------------
  353. MODULE kfonts - работа с kf-шрифтами
  354. CONST
  355. bold = 1
  356. italic = 2
  357. underline = 4
  358. strike_through = 8
  359. smoothing = 16
  360. bpp32 = 32
  361. TYPE
  362. TFont = POINTER TO TFont_desc (* указатель на шрифт *)
  363. PROCEDURE LoadFont(file_name: ARRAY OF CHAR): TFont
  364. загрузить шрифт из файла
  365. file_name имя kf-файла
  366. рез-т: указатель на шрифт/NIL (ошибка)
  367. PROCEDURE SetSize(Font: TFont; font_size: INTEGER): BOOLEAN
  368. установить размер шрифта
  369. Font указатель на шрифт
  370. font_size размер шрифта
  371. рез-т: TRUE/FALSE (ошибка)
  372. PROCEDURE Enabled(Font: TFont; font_size: INTEGER): BOOLEAN
  373. проверить, есть ли шрифт, заданного размера
  374. Font указатель на шрифт
  375. font_size размер шрифта
  376. рез-т: TRUE/FALSE (шрифта нет)
  377. PROCEDURE Destroy(VAR Font: TFont)
  378. выгрузить шрифт, освободить динамическую память
  379. Font указатель на шрифт
  380. Присваивает переменной Font значение NIL
  381. PROCEDURE TextHeight(Font: TFont): INTEGER
  382. получить высоту строки текста
  383. Font указатель на шрифт
  384. рез-т: высота строки текста в пикселях
  385. PROCEDURE TextWidth(Font: TFont;
  386. str, length, params: INTEGER): INTEGER
  387. получить ширину строки текста
  388. Font указатель на шрифт
  389. str адрес строки текста в кодировке Win-1251
  390. length количество символов в строке или -1, если строка
  391. завершается нулем
  392. params параметры-флаги см. ниже
  393. рез-т: ширина строки текста в пикселях
  394. PROCEDURE TextOut(Font: TFont;
  395. canvas, x, y, str, length, color, params: INTEGER)
  396. вывести текст в буфер
  397. для вывода буфера в окно, использовать ф.65 или
  398. ф.7 (если буфер 24-битный)
  399. Font указатель на шрифт
  400. canvas адрес графического буфера
  401. структура буфера:
  402. Xsize dd
  403. Ysize dd
  404. picture rb Xsize * Ysize * 4 (32 бита)
  405. или Xsize * Ysize * 3 (24 бита)
  406. x, y координаты текста относительно левого верхнего
  407. угла буфера
  408. str адрес строки текста в кодировке Win-1251
  409. length количество символов в строке или -1, если строка
  410. завершается нулем
  411. color цвет текста 0x00RRGGBB
  412. params параметры-флаги:
  413. 1 жирный
  414. 2 курсив
  415. 4 подчеркнутый
  416. 8 перечеркнутый
  417. 16 применить сглаживание
  418. 32 вывод в 32-битный буфер
  419. возможно использование флагов в любых сочетаниях
  420. ------------------------------------------------------------------------------
  421. MODULE RasterWorks - обертка библиотеки Rasterworks.obj
  422. ------------------------------------------------------------------------------
  423. MODULE libimg - обертка библиотеки libimg.obj
  424. ------------------------------------------------------------------------------