SysFn48/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
Line 22: Line 22:
* ebx = 1 - номер подфункции
* ebx = 1 - номер подфункции
* ecx = тип кнопок:
* ecx = тип кнопок:
** 0 = плоские
:* 0 = плоские
** 1 = объёмные
:* 1 = объёмные
 
Возвращаемое значение:
Возвращаемое значение:
* функция не возвращает значения
* функция не возвращает значения
Замечания:
Замечания:
* После вызова описываемой функции следует перерисовать экран подфункцией 0.
* После вызова описываемой функции следует перерисовать экран подфункцией 0.

Revision as of 09:57, 16 December 2013

Функция 48 - стили отображения окон


Подфункция 0 - применить настройки экрана.

Параметры:

  • eax = 48 - номер функции
  • ebx = 0 - номер подфункции
  • ecx = 0 - зарезервировано

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • Функция перерисовывает экран после изменения параметров подфункциями 1 и 2.
  • Вызов функции без предшествующих вызовов указанных подфункций игнорируется.
  • Вызов функции с ненулевым ecx игнорируется.

Подфункция 1 - установить стиль кнопок.

Параметры:

  • eax = 48 - номер функции
  • ebx = 1 - номер подфункции
  • ecx = тип кнопок:
  • 0 = плоские
  • 1 = объёмные

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • После вызова описываемой функции следует перерисовать экран подфункцией 0.
  • Тип кнопок влияет только на их прорисовку функцией 8.

Подфункция 2 - установить стандартные цвета окон.

Параметры:

  • eax = 48 - номер функции
  • ebx = 2 - номер подфункции
  • ecx = указатель на таблицу цветов
  • edx = размер таблицы цветов (должен быть 40 байт для будущей совместимости)
    • Формат таблицы цветов указан в описании подфункции 3.

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • После вызова описываемой функции следует перерисовать экран подфункцией 0.
  • Таблица стандартных цветов влияет только на приложения, которые эту таблицу явным образом получают (подфункцией 3) и используют (указывая цвета из неё при вызовах функций рисования).
  • Таблица стандартных цветов входит в скин и устанавливается заново при установке скина (подфункции 8).
  • Таблицу цветов можно просматривать/изменять интерактивно с помощью приложения desktop.

Подфункция 3 - получить стандартные цвета окон.

Параметры:

  • eax = 48 - номер функции
  • ebx = 3 - номер подфункции
  • ecx = указатель на буфер размером edx байт, куда будет записана таблица
  • edx = размер таблицы цветов (должен быть 40 байт для будущей совместимости)

Возвращаемое значение:

  • функция не возвращает значения

Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB

  • +0: dword: frames - цвет рамки
  • +4: dword: grab - цвет заголовка
  • +8: dword: grab_button - цвет кнопки на полосе заголовка
  • +12 = +0xC: dword: grab_button_text - цвет текста на кнопке на полосе заголовка
  • +16 = +0x10: dword: grab_text - цвет текста на заголовке
  • +20 = +0x14: dword: work - цвет рабочей области
  • +24 = +0x18: dword: work_button - цвет кнопки в рабочей области
  • +28 = +0x1C: dword: work_button_text - цвет текста на кнопке в рабочей области
  • +32 = +0x20: dword: work_text - цвет текста в рабочей области
  • +36 = +0x24: dword: work_graph - цвет графики в рабочей области

Замечания:

  • Структура таблицы цветов описана в стандартном включаемом файле macros.inc под названием system_colors; например, можно писать:
       sc      system_colors           ; объявление переменной
       ...                             ; где-то надо вызвать
                                       ; описываемую функцию с ecx=sc
       mov     ecx, [sc.work_button_text]      ; читаем цвет текста
                                       ; на кнопке в рабочей области
  • Использование/неиспользование этих цветов - дело исключительно самой программы. Для использования нужно просто при вызове функций рисования указывать цвет, взятый из этой таблицы.
  • При изменении таблицы стандартных цветов (подфункцией 2 с последующим применением изменений подфункцией 0 или при установке скина подфункцией 8) всем окнам посылается сообщение о необходимости перерисовки (событие с кодом 1).
  • Стандартные цвета можно просматривать/изменять интерактивно с помощью приложения desktop.

Подфункция 4 - получить высоту скина.

Параметры:

  • eax = 48 - номер функции
  • ebx = 4 - номер подфункции

Возвращаемое значение:

  • eax = высота скина

Замечания:

  • Высотой скина по определению считается высота заголовка окон, использующих скин.
  • Смотри также общую структуру окна в описании функции 0.


Подфункция 5 - получить рабочую область экрана.

Параметры:

  • eax = 48 - номер функции
  • ebx = 5 - номер подфункции

Возвращаемое значение:

  • eax = [left]*65536 + [right]
  • ebx = [top]*65536 + [bottom]

Замечания:

  • Рабочая область экрана определяет положение и координаты максимизированного окна.
  • Рабочая область экрана при нормальной работе есть весь экран за вычетом панели (@panel).
  • (left,top) - координаты левого верхнего угла, (right,bottom) - координаты правого нижнего.
  • Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1.
  • См. также функцию 14, позволяющую определить размеры всего экрана.
  • установка параметров рабочей области производится подфункцией 6.

Подфункция 6 - установить рабочую область экрана.

Параметры:

  • eax = 48 - номер функции
  • ebx = 6 - номер подфункции
  • ecx = [left]*65536 + [right]
  • edx = [top]*65536 + [bottom]

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • Рабочая область экрана определяет положение и координаты максимизированного окна.
  • Эта функция используется только приложением @panel, устанавливающим рабочей областью весь экран за вычетом панели.
  • (left,top) - координаты левого верхнего угла, (right,bottom) - координаты правого нижнего.
  • Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1.
    • Если left>=right, то x-координаты рабочей области не изменяются.
    • Если left<0, то left не устанавливается.
    • Если right больше или равно ширины экрана, то right не устанавливается.
    • Аналогично по оси y.
  • См. также функцию 14, позволяющую определить размеры всего экрана.
  • Эта функция автоматически перерисовывает экран, по ходу дела обновляет координаты и размеры максимизированных окон. Все окна извещаются о необходимости перерисовки (событие 1).
  • Чтение параметров рабочей области производится подфункцией 5.


Подфункция 7 - получить область скина для текста заголовка.

Возвращает область заголовка окна со скином, предназначенную для вывода текста заголовка.

Параметры:

  • eax = 48 - номер функции
  • ebx = 7 - номер подфункции

Возвращаемое значение:

  • eax = [left]*65536 + [right]
  • ebx = [top]*65536 + [bottom]

Замечания:

  • Использование/неиспользование этой функции - на усмотрение прикладного программиста.
  • Параметры, возвращаемые этой функцией, рекомендуется учитывать при выборе места для рисования текста заголовка (функцией 4) или какого-нибудь заменителя этого текста.


Подфункция 8 - установить используемый скин окон.

Параметры:

  • eax = 48 - номер функции
  • ebx = 8 - номер подфункции
  • ecx = указатель на имя файла скина

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = 1 - не удалось загрузить файл
  • eax = 2 - файл не является файлом скина

Замечания:

  • При успешной загрузке скина все окна извещаются о необходимости перерисовки (событие 1).
  • При загрузке система считывает скин из файла default.skn на рамдиске.
  • Пользователь может изменять скин статически, создав свой default.skn, или динамически с помощью приложения desktop.