============================================================================== Библиотека (KolibriOS) ------------------------------------------------------------------------------ MODULE Out - консольный вывод PROCEDURE Open формально открывает консольный вывод PROCEDURE Int(x, width: INTEGER) вывод целого числа x; width - количество знакомест, используемых для вывода PROCEDURE Real(x: REAL; width: INTEGER) вывод вещественного числа x в плавающем формате; width - количество знакомест, используемых для вывода PROCEDURE Char(x: CHAR) вывод символа x PROCEDURE FixReal(x: REAL; width, p: INTEGER) вывод вещественного числа x в фиксированном формате; width - количество знакомест, используемых для вывода; p - количество знаков после десятичной точки PROCEDURE Ln переход на следующую строку PROCEDURE String(s: ARRAY OF CHAR) вывод строки s ------------------------------------------------------------------------------ MODULE In - консольный ввод VAR Done: BOOLEAN принимает значение TRUE в случае успешного выполнения операции ввода, иначе FALSE PROCEDURE Open формально открывает консольный ввод, также присваивает переменной Done значение TRUE PROCEDURE Int(VAR x: INTEGER) ввод числа типа INTEGER PROCEDURE Char(VAR x: CHAR) ввод символа PROCEDURE Real(VAR x: REAL) ввод числа типа REAL PROCEDURE String(VAR s: ARRAY OF CHAR) ввод строки PROCEDURE Ln ожидание нажатия ENTER ------------------------------------------------------------------------------ MODULE Console - дополнительные процедуры консольного вывода CONST Следующие константы определяют цвет консольного вывода Black = 0 Blue = 1 Green = 2 Cyan = 3 Red = 4 Magenta = 5 Brown = 6 LightGray = 7 DarkGray = 8 LightBlue = 9 LightGreen = 10 LightCyan = 11 LightRed = 12 LightMagenta = 13 Yellow = 14 White = 15 PROCEDURE Cls очистка окна консоли PROCEDURE SetColor(FColor, BColor: INTEGER) установка цвета консольного вывода: FColor - цвет текста, BColor - цвет фона, возможные значения - вышеперечисленные константы PROCEDURE SetCursor(x, y: INTEGER) установка курсора консоли в позицию (x, y) PROCEDURE GetCursor(VAR x, y: INTEGER) записывает в параметры текущие координаты курсора консоли PROCEDURE GetCursorX(): INTEGER возвращает текущую x-координату курсора консоли PROCEDURE GetCursorY(): INTEGER возвращает текущую y-координату курсора консоли ------------------------------------------------------------------------------ MODULE ConsoleLib - обертка библиотеки console.obj ------------------------------------------------------------------------------ MODULE Math - математические функции CONST pi = 3.141592653589793E+00 e = 2.718281828459045E+00 PROCEDURE IsNan(x: REAL): BOOLEAN возвращает TRUE, если x - не число PROCEDURE IsInf(x: REAL): BOOLEAN возвращает TRUE, если x - бесконечность PROCEDURE sqrt(x: REAL): REAL квадратный корень x PROCEDURE exp(x: REAL): REAL экспонента x PROCEDURE ln(x: REAL): REAL натуральный логарифм x PROCEDURE sin(x: REAL): REAL синус x PROCEDURE cos(x: REAL): REAL косинус x PROCEDURE tan(x: REAL): REAL тангенс x PROCEDURE arcsin(x: REAL): REAL арксинус x PROCEDURE arccos(x: REAL): REAL арккосинус x PROCEDURE arctan(x: REAL): REAL арктангенс x PROCEDURE arctan2(y, x: REAL): REAL арктангенс y/x PROCEDURE power(base, exponent: REAL): REAL возведение числа base в степень exponent PROCEDURE log(base, x: REAL): REAL логарифм x по основанию base PROCEDURE sinh(x: REAL): REAL гиперболический синус x PROCEDURE cosh(x: REAL): REAL гиперболический косинус x PROCEDURE tanh(x: REAL): REAL гиперболический тангенс x PROCEDURE arsinh(x: REAL): REAL обратный гиперболический синус x PROCEDURE arcosh(x: REAL): REAL обратный гиперболический косинус x PROCEDURE artanh(x: REAL): REAL обратный гиперболический тангенс x PROCEDURE round(x: REAL): REAL округление x до ближайшего целого PROCEDURE frac(x: REAL): REAL; дробная часть числа x PROCEDURE floor(x: REAL): REAL наибольшее целое число (представление как REAL), не больше x: floor(1.2) = 1.0 PROCEDURE ceil(x: REAL): REAL наименьшее целое число (представление как REAL), не меньше x: ceil(1.2) = 2.0 PROCEDURE sgn(x: REAL): INTEGER если x > 0 возвращает 1 если x < 0 возвращает -1 если x = 0 возвращает 0 PROCEDURE fact(n: INTEGER): REAL факториал n ------------------------------------------------------------------------------ MODULE Debug - вывод на доску отладки Интерфейс как модуль Out PROCEDURE Open открывает доску отладки ------------------------------------------------------------------------------ MODULE File - работа с файловой системой TYPE FNAME = ARRAY 520 OF CHAR FS = POINTER TO rFS rFS = RECORD (* информационная структура файла *) subfunc, pos, hpos, bytes, buffer: INTEGER; name: FNAME END FD = POINTER TO rFD rFD = RECORD (* структура блока данных входа каталога *) attr: INTEGER; ntyp: CHAR; reserved: ARRAY 3 OF CHAR; time_create, date_create, time_access, date_access, time_modif, date_modif, size, hsize: INTEGER; name: FNAME END CONST SEEK_BEG = 0 SEEK_CUR = 1 SEEK_END = 2 PROCEDURE Load(FName: ARRAY OF CHAR; VAR size: INTEGER): INTEGER; Загружает в память файл с именем FName, записывает в параметр size размер файла, возвращает адрес загруженного файла или 0 (ошибка). При необходимости, распаковывает файл (kunpack). PROCEDURE GetFileInfo(FName: ARRAY OF CHAR; VAR Info: rFD): BOOLEAN Записывает структуру блока данных входа каталога для файла или папки с именем FName в параметр Info. При ошибке возвращает FALSE. PROCEDURE Exists(FName: ARRAY OF CHAR): BOOLEAN возвращает TRUE, если файл с именем FName существует PROCEDURE Close(VAR F: FS) освобождает память, выделенную для информационной структуры файла F и присваивает F значение NIL PROCEDURE Open(FName: ARRAY OF CHAR): FS возвращает указатель на информационную структуру файла с именем FName, при ошибке возвращает NIL PROCEDURE Delete(FName: ARRAY OF CHAR): BOOLEAN удаляет файл с именем FName, при ошибке возвращает FALSE PROCEDURE Seek(F: FS; Offset, Origin: INTEGER): INTEGER устанавливает позицию чтения-записи файла F на Offset, относительно Origin = (SEEK_BEG - начало файла, SEEK_CUR - текущая позиция, SEEK_END - конец файла), возвращает позицию относительно начала файла, например: Seek(F, 0, SEEK_END) устанавливает позицию на конец файла и возвращает длину файла; при ошибке возвращает -1 PROCEDURE Read(F: FS; Buffer, Count: INTEGER): INTEGER Читает данные из файла в память. F - указатель на информационную структуру файла, Buffer - адрес области памяти, Count - количество байт, которое требуется прочитать из файла; возвращает количество байт, которое было прочитано и соответствующим образом изменяет позицию чтения/записи в информационной структуре F. PROCEDURE Write(F: FS; Buffer, Count: INTEGER): INTEGER Записывает данные из памяти в файл. F - указатель на информационную структуру файла, Buffer - адрес области памяти, Count - количество байт, которое требуется записать в файл; возвращает количество байт, которое было записано и соответствующим образом изменяет позицию чтения/записи в информационной структуре F. PROCEDURE Create(FName: ARRAY OF CHAR): FS создает новый файл с именем FName (полное имя), возвращает указатель на информационную структуру файла, при ошибке возвращает NIL PROCEDURE CreateDir(DirName: ARRAY OF CHAR): BOOLEAN создает папку с именем DirName, все промежуточные папки должны существовать, при ошибке возвращает FALSE PROCEDURE DeleteDir(DirName: ARRAY OF CHAR): BOOLEAN удаляет пустую папку с именем DirName, при ошибке возвращает FALSE PROCEDURE DirExists(DirName: ARRAY OF CHAR): BOOLEAN возвращает TRUE, если папка с именем DirName существует ------------------------------------------------------------------------------ MODULE Read - чтение основных типов данных из файла F Процедуры возвращают TRUE в случае успешной операции чтения и соответствующим образом изменяют позицию чтения/записи в информационной структуре F PROCEDURE Char(F: File.FS; VAR x: CHAR): BOOLEAN PROCEDURE Int(F: File.FS; VAR x: INTEGER): BOOLEAN PROCEDURE Real(F: File.FS; VAR x: REAL): BOOLEAN PROCEDURE Boolean(F: File.FS; VAR x: BOOLEAN): BOOLEAN PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN PROCEDURE WChar(F: File.FS; VAR x: WCHAR): BOOLEAN ------------------------------------------------------------------------------ MODULE Write - запись основных типов данных в файл F Процедуры возвращают TRUE в случае успешной операции записи и соответствующим образом изменяют позицию чтения/записи в информационной структуре F PROCEDURE Char(F: File.FS; x: CHAR): BOOLEAN PROCEDURE Int(F: File.FS; x: INTEGER): BOOLEAN PROCEDURE Real(F: File.FS; x: REAL): BOOLEAN PROCEDURE Boolean(F: File.FS; x: BOOLEAN): BOOLEAN PROCEDURE Set(F: File.FS; x: SET): BOOLEAN PROCEDURE WChar(F: File.FS; x: WCHAR): BOOLEAN ------------------------------------------------------------------------------ MODULE DateTime - дата, время CONST ERR = -7.0E5 PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec: INTEGER) записывает в параметры компоненты текущей системной даты и времени PROCEDURE Encode(Year, Month, Day, Hour, Min, Sec: INTEGER): REAL возвращает дату, полученную из компонентов Year, Month, Day, Hour, Min, Sec; при ошибке возвращает константу ERR = -7.0E5 PROCEDURE Decode(Date: REAL; VAR Year, Month, Day, Hour, Min, Sec: INTEGER): BOOLEAN извлекает компоненты Year, Month, Day, Hour, Min, Sec из даты Date; при ошибке возвращает FALSE ------------------------------------------------------------------------------ MODULE Args - параметры программы VAR argc: INTEGER количество параметров программы, включая имя исполняемого файла PROCEDURE GetArg(n: INTEGER; VAR s: ARRAY OF CHAR) записывает в строку s n-й параметр программы, нумерация параметров от 0 до argc - 1, нулевой параметр -- имя исполняемого файла ------------------------------------------------------------------------------ MODULE KOSAPI PROCEDURE sysfunc1(arg1: INTEGER): INTEGER PROCEDURE sysfunc2(arg1, arg2: INTEGER): INTEGER ... PROCEDURE sysfunc7(arg1, arg2, ..., arg7: INTEGER): INTEGER Обертки для функций API ядра KolibriOS. arg1 .. arg7 соответствуют регистрам eax, ebx, ecx, edx, esi, edi, ebp; возвращают значение регистра eax после системного вызова. PROCEDURE sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER Обертка для функций API ядра KolibriOS. arg1 - регистр eax, arg2 - регистр ebx, res2 - значение регистра ebx после системного вызова; возвращает значение регистра eax после системного вызова. PROCEDURE malloc(size: INTEGER): INTEGER Выделяет блок памяти. size - размер блока в байтах, возвращает адрес выделенного блока PROCEDURE free(ptr: INTEGER): INTEGER Освобождает ранее выделенный блок памяти с адресом ptr, возвращает 0 PROCEDURE realloc(ptr, size: INTEGER): INTEGER Перераспределяет блок памяти, ptr - адрес ранее выделенного блока, size - новый размер, возвращает указатель на перераспределенный блок, 0 при ошибке PROCEDURE GetCommandLine(): INTEGER Возвращает адрес строки параметров PROCEDURE GetName(): INTEGER Возвращает адрес строки с именем программы PROCEDURE LoadLib(name: ARRAY OF CHAR): INTEGER Загружает DLL с полным именем name. Возвращает адрес таблицы экспорта. При ошибке возвращает 0. PROCEDURE GetProcAdr(name: ARRAY OF CHAR; lib: INTEGER): INTEGER name - имя процедуры lib - адрес таблицы экспорта DLL Возвращает адрес процедуры. При ошибке возвращает 0. ------------------------------------------------------------------------------ MODULE ColorDlg - работа с диалогом "Color Dialog" TYPE Dialog = POINTER TO RECORD (* структура диалога *) status: INTEGER (* состояние диалога: 0 - пользователь нажал Cancel 1 - пользователь нажал OK 2 - диалог открыт *) color: INTEGER (* выбранный цвет *) END PROCEDURE Create(draw_window: DRAW_WINDOW): Dialog создать диалог draw_window - процедура перерисовки основного окна (TYPE DRAW_WINDOW = PROCEDURE); процедура возвращает указатель на структуру диалога PROCEDURE Show(cd: Dialog) показать диалог cd - указатель на структуру диалога, который был создан ранее процедурой Create PROCEDURE Destroy(VAR cd: Dialog) уничтожить диалог cd - указатель на структуру диалога ------------------------------------------------------------------------------ MODULE OpenDlg - работа с диалогом "Open Dialog" TYPE Dialog = POINTER TO RECORD (* структура диалога *) status: INTEGER (* состояние диалога: 0 - пользователь нажал Cancel 1 - пользователь нажал OK 2 - диалог открыт *) FileName: ARRAY 4096 OF CHAR (* имя выбранного файла *) FilePath: ARRAY 4096 OF CHAR (* полное имя выбранного файла *) END PROCEDURE Create(draw_window: DRAW_WINDOW; type: INTEGER; def_path, filter: ARRAY OF CHAR): Dialog создать диалог draw_window - процедура перерисовки основного окна (TYPE DRAW_WINDOW = PROCEDURE) type - тип диалога 0 - открыть 1 - сохранить 2 - выбрать папку def_path - путь по умолчанию, папка def_path будет открыта при первом запуске диалога filter - в строке записано перечисление расширений файлов, которые будут показаны в диалоговом окне, расширения разделяются символом "|", например: "ASM|TXT|INI" процедура возвращает указатель на структуру диалога PROCEDURE Show(od: Dialog; Width, Height: INTEGER) показать диалог od - указатель на структуру диалога, который был создан ранее процедурой Create Width и Height - ширина и высота диалогового окна PROCEDURE Destroy(VAR od: Dialog) уничтожить диалог od - указатель на структуру диалога ------------------------------------------------------------------------------ MODULE kfonts - работа с kf-шрифтами CONST bold = 1 italic = 2 underline = 4 strike_through = 8 smoothing = 16 bpp32 = 32 TYPE TFont = POINTER TO TFont_desc (* указатель на шрифт *) PROCEDURE LoadFont(file_name: ARRAY OF CHAR): TFont загрузить шрифт из файла file_name имя kf-файла рез-т: указатель на шрифт/NIL (ошибка) PROCEDURE SetSize(Font: TFont; font_size: INTEGER): BOOLEAN установить размер шрифта Font указатель на шрифт font_size размер шрифта рез-т: TRUE/FALSE (ошибка) PROCEDURE Enabled(Font: TFont; font_size: INTEGER): BOOLEAN проверить, есть ли шрифт, заданного размера Font указатель на шрифт font_size размер шрифта рез-т: TRUE/FALSE (шрифта нет) PROCEDURE Destroy(VAR Font: TFont) выгрузить шрифт, освободить динамическую память Font указатель на шрифт Присваивает переменной Font значение NIL PROCEDURE TextHeight(Font: TFont): INTEGER получить высоту строки текста Font указатель на шрифт рез-т: высота строки текста в пикселях PROCEDURE TextWidth(Font: TFont; str, length, params: INTEGER): INTEGER получить ширину строки текста Font указатель на шрифт str адрес строки текста в кодировке Win-1251 length количество символов в строке или -1, если строка завершается нулем params параметры-флаги см. ниже рез-т: ширина строки текста в пикселях PROCEDURE TextOut(Font: TFont; canvas, x, y, str, length, color, params: INTEGER) вывести текст в буфер для вывода буфера в окно, использовать ф.65 или ф.7 (если буфер 24-битный) Font указатель на шрифт canvas адрес графического буфера структура буфера: Xsize dd Ysize dd picture rb Xsize * Ysize * 4 (32 бита) или Xsize * Ysize * 3 (24 бита) x, y координаты текста относительно левого верхнего угла буфера str адрес строки текста в кодировке Win-1251 length количество символов в строке или -1, если строка завершается нулем color цвет текста 0x00RRGGBB params параметры-флаги: 1 жирный 2 курсив 4 подчеркнутый 8 перечеркнутый 16 применить сглаживание 32 вывод в 32-битный буфер возможно использование флагов в любых сочетаниях ------------------------------------------------------------------------------ MODULE RasterWorks - обертка библиотеки Rasterworks.obj ------------------------------------------------------------------------------ MODULE libimg - обертка библиотеки libimg.obj ------------------------------------------------------------------------------