SysFn48/ru

From KolibriOS wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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


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

Параметры:

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

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

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

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_APPLY (0)

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

Параметры:

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

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

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

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_BUTTON_STYLE (1)

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

Параметры:

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

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

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

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_COLORS (2)

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

Параметры:

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

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

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

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

  • +0: dword: menu_body - цвет фона системного меню
  • +4: dword: 3d_face - цвет фона для придания 3D эффекта
  • +8: dword: 3d_dark - цвет темной обводки для придания 3D эффекта
  • +12: dword: 3d_light - цвет светлой обводки для придания 3D эффекта
  • +16: dword: win_title - цвет текста в заголовке окна приложения
  • +20: dword: win_body - цвет фона окна
  • +24: dword: btn_face - цвет активной кнопки
  • +28: dword: btn_text - цвет текста активной кнопки
  • +32: dword: win_text - цвет текста в рабочей области окна
  • +36: dword: panel_frame - цвет рамки области панели
  • +40: dword: win_face - цвет бордюра окна между внешней и внутренней рамкой
  • +44: dword: win_inface - цвет бордюра "неактивного" окна между внешней и внутренней рамкой
  • +48: dword: win_frame - цвет внешней рамки окна
  • +52: dword: win_inframe - цвет внешней рамки "неактивного" окна
  • +56: dword: win_border - цвет внутренней рамки окна
  • +60: dword: win_inborder - цвет внутренней рамки "неактивного" окна
  • +64: dword: win_graytext - цвет в оттенках серого в рабочей области окна.
  • +68: dword: menu_frame - цвет рамки системного меню
  • +72: dword: menu_text - цвет текста системного меню
  • +76: dword: panel_body - цвет фона области панели
  • +80: dword: panel_text - цвет текста области панели
  • +84: dword: hint_frame - цвет рамки всплывающей подсказки
  • +88: dword: hint_body - цвет фона всплывающей подсказки
  • +92: dword: hint_text - цвет текста всплывающей подсказки
  • +96: dword: btn_inface - цвет фона "неактивной" кнопки
  • +100: dword: btn_fcface - цвет фона кнопки при наведении курсора (focus)
  • +104: dword: btn_frame - цвет рамки кнопки
  • +108: dword: btn_inframe - цвет рамки "неактивной" кнопки
  • +112: dword: btn_fcframe - цвет рамки кнопки при наведении курсора (focus)
  • +116: dword: btn_intext - цвет текста "неактивной" кнопки
  • +120: dword: btn_fctext - цвет текста кнопки при наведении курсора (focus)
  • +124: dword: gui_shadow - цвет тени от любого текста
  • +128: dword: gui_face - цвет фона элемента (edit,listbox,checkbox...)
  • +132: dword: gui_inface - цвет фона "неактивного" элемента
  • +136: dword: gui_fcface - цвет фона элемента при наведении курсора
  • +140: dword: gui_frame - цвет рамки элемента
  • +144: dword: gui_inframe - цвет рамки "неактивного" элемента
  • +148: dword: gui_fcframe - цвет рамки элемента при наведении курсора
  • +152: dword: gui_text - цвет текста элемента
  • +156: dword: gui_intext - цвет текста "неактивного" элемента
  • +160: dword: gui_fctext - цвет текста элемента при наведении курсора
  • +164: dword: gui_select - цвет выделения текста
  • +168: dword: res_var_a - зарезервированно
  • +172: dword: res_var_b - зарезервированно
  • +176: dword: res_var_c - зарезервированно
  • +180: dword: res_var_d - зарезервированно
  • +184: dword: res_var_e - зарезервированно
  • +188: dword: res_var_f - зарезервированно

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_COLORS (3)

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

Параметры:

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

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

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

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_SKIN_HEIGHT (4)

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

Параметры:

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

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

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

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_SCREEN_AREA (5)

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

Параметры:

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

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

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

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_SCREEN_AREA (6)

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

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

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

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

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

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_SKIN_MARGINS (7)

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

Параметры:

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

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

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

Замечания:

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

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_SKIN (8)

Подфункция 9 - получить настройку сглаживания шрифтов.

Параметры:

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

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

  • eax = 2 - субпиксельное, 1 - обычное, 0 - выключить

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_FONT_SMOOTH (9)

Подфункция 10 - настроить сглаживание шрифтов.

Параметры:

  • eax = 48 - номер функции
  • ebx = 10 - номер подфункции
  • cl = 2 - субпиксельное, 1 - обычное, 0 - выключить

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_FONT_SMOOTH (10)

Подфункция 11 - получить размер шрифтов.

Параметры:

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

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

  • eax = текущая высота шрифта в пикселях

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_GET_FONT_SIZE (11)

Подфункция 12 - установить размер шрифтов.

Параметры:

  • eax = 48 - номер функции
  • ebx = 12 - номер подфункции
  • cl = новая высота шрифта в пикселях

Константы для регистров:

eax - SF_STYLE_SETTINGS (48)
ebx - SSF_SET_FONT_SIZE (12)

Подфункция 13 - установить скин с указанием кодировки.

Параметры:

  • eax = 48 - номер функции
  • ebx = 13 - номер подфункции
  • ecx = указатель на строку с путём к файлу скина
  • edx = кодировка строки, подробности указаны в описании функции 80.

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

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

Замечания:

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