Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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