﻿==============================================================================

	Библиотека (KolibriOS)

------------------------------------------------------------------------------
MODULE Out - консольный вывод

	PROCEDURE Open
		формально открывает консольный вывод

	PROCEDURE Int(x, width: INTEGER)
		вывод целого числа x;
		width - количество знакомест, используемых для вывода

	PROCEDURE Real(x: LONGREAL; width: INTEGER)
		вывод вещественного числа x в плавающем формате;
		width - количество знакомест, используемых для вывода

	PROCEDURE Char(x: CHAR)
		вывод символа x

	PROCEDURE FixReal(x: LONGREAL; 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 LongReal(VAR x: LONGREAL)
		ввод числа типа LONGREAL

	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.141592653589793D+00
		e  = 2.718281828459045D+00

	VAR

		Inf, nInf: LONGREAL
			положительная и отрицательная бесконечность

	PROCEDURE IsNan(x: LONGREAL): BOOLEAN
		возвращает TRUE, если x - не число

	PROCEDURE IsInf(x: LONGREAL): BOOLEAN
		возвращает TRUE, если x - бесконечность

	PROCEDURE sqrt(x: LONGREAL): LONGREAL
		квадратный корень x

	PROCEDURE exp(x: LONGREAL): LONGREAL
		экспонента x

	PROCEDURE ln(x: LONGREAL): LONGREAL
		натуральный логарифм x

	PROCEDURE sin(x: LONGREAL): LONGREAL
		синус x

	PROCEDURE cos(x: LONGREAL): LONGREAL
		косинус x

	PROCEDURE tan(x: LONGREAL): LONGREAL
		тангенс x

	PROCEDURE arcsin(x: LONGREAL): LONGREAL
		арксинус x

	PROCEDURE arccos(x: LONGREAL): LONGREAL
		арккосинус x

	PROCEDURE arctan(x: LONGREAL): LONGREAL
		арктангенс x

	PROCEDURE arctan2(y, x: LONGREAL): LONGREAL
		арктангенс y/x

	PROCEDURE power(base, exponent: LONGREAL): LONGREAL
		возведение числа base в степень exponent

	PROCEDURE log(base, x: LONGREAL): LONGREAL
		логарифм x по основанию base

	PROCEDURE sinh(x: LONGREAL): LONGREAL
		гиперболический синус x

	PROCEDURE cosh(x: LONGREAL): LONGREAL
		гиперболический косинус x

	PROCEDURE tanh(x: LONGREAL): LONGREAL
		гиперболический тангенс x

	PROCEDURE arcsinh(x: LONGREAL): LONGREAL
		обратный гиперболический синус x

	PROCEDURE arccosh(x: LONGREAL): LONGREAL
		обратный гиперболический косинус x

	PROCEDURE arctanh(x: LONGREAL): LONGREAL
		обратный гиперболический тангенс x

	PROCEDURE round(x: LONGREAL): LONGREAL
		округление x до ближайшего целого

	PROCEDURE frac(x: LONGREAL): LONGREAL;
		дробная часть числа x

	PROCEDURE floor(x: LONGREAL): LONGREAL
		наибольшее целое число (представление как LONGREAL),
		не больше x: floor(1.2) = 1.0

	PROCEDURE ceil(x: LONGREAL): LONGREAL
		наименьшее целое число (представление как LONGREAL),
		не меньше x: ceil(1.2) = 2.0

	PROCEDURE sgn(x: LONGREAL): INTEGER
		если x > 0 возвращает 1
		если x < 0 возвращает -1
		если x = 0 возвращает 0

------------------------------------------------------------------------------
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 LongReal(F: File.FS; VAR x: LONGREAL): BOOLEAN

	PROCEDURE Boolean(F: File.FS; VAR x: BOOLEAN): BOOLEAN

	PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN

	PROCEDURE Card16(F: File.FS; VAR x: SYSTEM.CARD16): 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 LongReal(F: File.FS; x: LONGREAL): BOOLEAN

	PROCEDURE Boolean(F: File.FS; x: BOOLEAN): BOOLEAN

	PROCEDURE Set(F: File.FS; x: SET): BOOLEAN

	PROCEDURE Card16(F: File.FS; x: SYSTEM.CARD16): BOOLEAN

------------------------------------------------------------------------------
MODULE DateTime - дата, время

	CONST ERR = -7.0D5

	PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec: INTEGER)
		записывает в параметры компоненты текущей системной даты и
		времени

	PROCEDURE Encode(Year, Month, Day, Hour, Min, Sec: INTEGER): LONGREAL
		возвращает дату, полученную из компонентов
		Year, Month, Day, Hour, Min, Sec;
		при ошибке возвращает константу ERR = -7.0D5

	PROCEDURE Decode(Date: LONGREAL; 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
------------------------------------------------------------------------------