Difference between revisions of "SysFn48/ru"

From KolibriOS wiki
Jump to navigation Jump to search
m (обновление: "@panel" -> "@taskbar")
 
(2 intermediate revisions by 2 users not shown)
Line 6: Line 6:
  
 
Параметры:
 
Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 0 - номер подфункции
+
:* ebx = 0 - номер подфункции
* ecx = 0 - зарезервировано
+
:* ecx = 0 - зарезервировано
 
Возвращаемое значение:
 
Возвращаемое значение:
* функция не возвращает значения
+
:* функция не возвращает значения
 
Замечания:
 
Замечания:
* Функция перерисовывает экран после изменения параметров подфункциями 1 и 2.
+
:* Функция перерисовывает экран после изменения параметров подфункциями 1 и 2.
* Вызов функции без предшествующих вызовов указанных подфункций игнорируется.
+
:* Вызов функции без предшествующих вызовов указанных подфункций игнорируется.
* Вызов функции с ненулевым ecx игнорируется.
+
:* Вызов функции с ненулевым ecx игнорируется.
 +
 
 +
'''Константы для регистров:'''
 +
::eax - SF_STYLE_SETTINGS (48)
 +
::ebx - SSF_APPLY (0)
  
 
=== Подфункция 1 - установить стиль кнопок. ===
 
=== Подфункция 1 - установить стиль кнопок. ===
  
 
Параметры:
 
Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 1 - номер подфункции
+
:* ebx = 1 - номер подфункции
* ecx = тип кнопок:
+
:* ecx = тип кнопок:
:* 0 = плоские
+
::* 0 = плоские
:* 1 = объёмные
+
::* 1 = объёмные
 
Возвращаемое значение:
 
Возвращаемое значение:
* функция не возвращает значения
+
:* функция не возвращает значения
 
Замечания:
 
Замечания:
* После вызова описываемой функции следует перерисовать экран подфункцией 0.
+
:* После вызова описываемой функции следует перерисовать экран подфункцией 0.
* Тип кнопок влияет только на их прорисовку [[SysFn08/ru|функцией 8]].
+
:* Тип кнопок влияет только на их прорисовку [[SysFn08/ru|функцией 8]].
 +
 
 +
'''Константы для регистров:'''
 +
::eax - SF_STYLE_SETTINGS (48)
 +
::ebx - SSF_SET_BUTTON_STYLE (1)
  
 
=== Подфункция 2 - установить стандартные цвета окон. ===
 
=== Подфункция 2 - установить стандартные цвета окон. ===
  
 
Параметры:
 
Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 2 - номер подфункции
+
:* ebx = 2 - номер подфункции
* ecx = указатель на таблицу цветов
+
:* ecx = указатель на таблицу цветов
* edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости)
+
:* edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости)
Формат таблицы цветов указан в описании подфункции 3.
+
::Формат таблицы цветов указан в описании подфункции 3.
 
Возвращаемое значение:
 
Возвращаемое значение:
* функция не возвращает значения
+
:* функция не возвращает значения
 
Замечания:
 
Замечания:
* После вызова описываемой функции следует перерисовать экран подфункцией 0.
+
:* После вызова описываемой функции следует перерисовать экран подфункцией 0.
* Таблица стандартных цветов влияет только на приложения, которые эту таблицу явным образом получают (подфункцией 3) и используют (указывая цвета из неё при вызовах функций рисования).
+
:* Таблица стандартных цветов влияет только на приложения, которые эту таблицу явным образом получают (подфункцией 3) и используют (указывая цвета из неё при вызовах функций рисования).
* Таблица стандартных цветов входит в скин и устанавливается заново при установке скина (подфункции 8).
+
:* Таблица стандартных цветов входит в скин и устанавливается заново при установке скина (подфункции 8).
* Таблицу цветов можно просматривать/изменять интерактивно с помощью приложения [[desktop/ru|desktop]].
+
:* Таблицу цветов можно просматривать/изменять интерактивно с помощью приложения [[desktop/ru|desktop]].
 +
 
 +
'''Константы для регистров:'''
 +
::eax - SF_STYLE_SETTINGS (48)
 +
::ebx - SSF_SET_COLORS (2)
  
 
=== Подфункция 3 - получить стандартные цвета окон. ===
 
=== Подфункция 3 - получить стандартные цвета окон. ===
  
 
Параметры:
 
Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 3 - номер подфункции
+
:* ebx = 3 - номер подфункции
* ecx = указатель на буфер размером edx байт, куда будет записана таблица
+
:* ecx = указатель на буфер размером edx байт, куда будет записана таблица
* edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости)
+
:* edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости)
 
Возвращаемое значение:
 
Возвращаемое значение:
* функция не возвращает значения
+
:* функция не возвращает значения
 
Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB
 
Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB
 
:* +0: dword: menu_body - цвет фона системного меню
 
:* +0: dword: menu_body - цвет фона системного меню
Line 116: Line 128:
 
* При изменении таблицы стандартных цветов (подфункцией 2 с последующим применением изменений подфункцией 0 или при установке скина подфункцией 8) всем окнам посылается сообщение о необходимости перерисовки (событие с кодом 1).
 
* При изменении таблицы стандартных цветов (подфункцией 2 с последующим применением изменений подфункцией 0 или при установке скина подфункцией 8) всем окнам посылается сообщение о необходимости перерисовки (событие с кодом 1).
 
* Стандартные цвета можно просматривать/изменять интерактивно с помощью приложения [[desktop/ru|desktop]].
 
* Стандартные цвета можно просматривать/изменять интерактивно с помощью приложения [[desktop/ru|desktop]].
 +
 +
'''Константы для регистров:'''
 +
::eax - SF_STYLE_SETTINGS (48)
 +
::ebx - SSF_GET_COLORS (3)
  
 
=== Подфункция 4 - получить высоту скина. ===
 
=== Подфункция 4 - получить высоту скина. ===
 +
 
Параметры:
 
Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 4 - номер подфункции
+
:* ebx = 4 - номер подфункции
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = высота скина
+
:* eax = высота скина
 
Замечания:
 
Замечания:
* Высотой скина по определению считается высота заголовка окон, использующих скин.
+
:* Высотой скина по определению считается высота заголовка окон, использующих скин.
* Смотри также общую структуру окна в описании [[SysFn00/ru|функции 0]].
+
:* Смотри также общую структуру окна в описании [[SysFn00/ru|функции 0]].
 +
 
 +
'''Константы для регистров:'''
 +
::eax - SF_STYLE_SETTINGS (48)
 +
::ebx - SSF_GET_SKIN_HEIGHT (4)
  
 
=== Подфункция 5 - получить рабочую область экрана. ===
 
=== Подфункция 5 - получить рабочую область экрана. ===
  
 
Параметры:
 
Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 5 - номер подфункции
+
:* ebx = 5 - номер подфункции
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = [left]*65536 + [right]
+
:* eax = [left]*65536 + [right]
* ebx = [top]*65536 + [bottom]
+
:* ebx = [top]*65536 + [bottom]
 
Замечания:
 
Замечания:
* Рабочая область экрана определяет положение и координаты максимизированного окна.
+
:* Рабочая область экрана определяет положение и координаты максимизированного окна.
* Рабочая область экрана при нормальной работе есть весь экран за вычетом панели (@panel).
+
:* Рабочая область экрана при нормальной работе есть весь экран за вычетом панели (@taskbar).
* (left,top) - координаты левого верхнего угла,
+
:* (left,top) - координаты левого верхнего угла,
:(right,bottom) - координаты правого нижнего.
+
::(right,bottom) - координаты правого нижнего.
:Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1.
+
::Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1.
* Смотри также функцию 14, позволяющую определить размеры всего экрана.
+
:* Смотри также [[SysFn14/ru|функцию 14]], позволяющую определить размеры всего экрана.
* Есть парная функция установки рабочей области - подфункция 6.
+
:* Есть парная функция установки рабочей области - подфункция 6.
 +
 
 +
'''Константы для регистров:'''
 +
::eax - SF_STYLE_SETTINGS (48)
 +
::ebx - SSF_GET_SCREEN_AREA (5)
  
 
=== Подфункция 6 - установить рабочую область экрана. ===
 
=== Подфункция 6 - установить рабочую область экрана. ===
  
 
Параметры:
 
Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 6 - номер подфункции
+
:* ebx = 6 - номер подфункции
* ecx = [left]*65536 + [right]
+
:* ecx = [left]*65536 + [right]
* edx = [top]*65536 + [bottom]
+
:* edx = [top]*65536 + [bottom]
 
Возвращаемое значение:
 
Возвращаемое значение:
* функция не возвращает значения
+
:* функция не возвращает значения
 
Замечания:
 
Замечания:
* Рабочая область экрана определяет положение и координаты максимизированного окна.
+
:* Рабочая область экрана определяет положение и координаты максимизированного окна.
* Эта функция используется только приложением @panel, устанавливающим рабочей областью весь экран за вычетом панели.
+
:* Эта функция используется только приложением @taskbar, устанавливающим рабочей областью весь экран за вычетом панели.
* (left,top) - координаты левого верхнего угла,
+
:* (left,top) - координаты левого верхнего угла,
:(right,bottom) - координаты правого нижнего.
+
::(right,bottom) - координаты правого нижнего.
:Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1.
+
::Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1.
* Если left>=right, то x-координаты рабочей области не изменяются.
+
:* Если left>=right, то x-координаты рабочей области не изменяются.
:Если left<0, то left не устанавливается. Если right больше или равно ширины экрана, то right не устанавливается.
+
::Если left<0, то left не устанавливается. Если right больше или равно ширины экрана, то right не устанавливается.
:Аналогично по оси y.
+
::Аналогично по оси y.
* Смотри также функцию 14, позволяющую определить размеры всего экрана.
+
:* Смотри также [[SysFn14/ru|функцию 14]], позволяющую определить размеры всего экрана.
* Есть парная функция получения рабочей области - подфункция 5.
+
:* Есть парная функция получения рабочей области - подфункция 5.
* Эта функция автоматически перерисовывает экран, по ходу дела обновляет координаты и размеры максимизированных окон.
+
:* Эта функция автоматически перерисовывает экран, по ходу дела обновляет координаты и размеры максимизированных окон.
:Все окна извещаются о необходимости перерисовки (событие 1).
+
::Все окна извещаются о необходимости перерисовки (событие 1).
 +
 
 +
'''Константы для регистров:'''
 +
::eax - SF_STYLE_SETTINGS (48)
 +
::ebx - SSF_SET_SCREEN_AREA (6)
  
 
=== Подфункция 7 - получить область скина для текста заголовка. ===
 
=== Подфункция 7 - получить область скина для текста заголовка. ===
Line 171: Line 200:
 
Возвращает область заголовка окна со скином, предназначенную
 
Возвращает область заголовка окна со скином, предназначенную
 
для вывода текста заголовка.
 
для вывода текста заголовка.
Параметры:
+
<br>Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 7 - номер подфункции
+
:* ebx = 7 - номер подфункции
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = [left]*65536 + [right]
+
:* eax = [left]*65536 + [right]
* ebx = [top]*65536 + [bottom]
+
:* ebx = [top]*65536 + [bottom]
 
Замечания:
 
Замечания:
* Использование/неиспользование этой функции - личное дело приложения.
+
:* Использование/неиспользование этой функции - личное дело приложения.
* Рекомендуется учитывать значения, возвращаемые этой функцией, при выборе места для рисования текста заголовка (функцией 4) или какого-нибудь заменителя текста заголовка (по усмотрению приложения).
+
:* Рекомендуется учитывать значения, возвращаемые этой функцией, при выборе места для рисования текста заголовка ([[SysFn04/ru|функцией 4]]) или какого-нибудь заменителя текста заголовка (по усмотрению приложения).
 +
 
 +
'''Константы для регистров:'''
 +
::eax - SF_STYLE_SETTINGS (48)
 +
::ebx - SSF_GET_SKIN_MARGINS (7)
  
 
=== Подфункция 8 - установить используемый скин окон. ===
 
=== Подфункция 8 - установить используемый скин окон. ===
  
 
Параметры:
 
Параметры:
* eax = 48 - номер функции
+
:* eax = 48 - номер функции
* ebx = 8 - номер подфункции
+
:* ebx = 8 - номер подфункции
* ecx = указатель на имя файла скина
+
:* ecx = указатель на имя файла скина
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = 0 - успешно
+
:* eax = 0 - успешно
* eax = 1 - не удалось загрузить файл
+
:* eax = 1 - не удалось загрузить файл
* eax = 2 - файл не является файлом скина
+
:* eax = 2 - файл не является файлом скина
 
Замечания:
 
Замечания:
* При успешной загрузке скина все окна извещаются о необходимости перерисовки (событие 1).
+
:* При успешной загрузке скина все окна извещаются о необходимости перерисовки (событие 1).
* При загрузке система считывает скин из файла default.skn на рамдиске.
+
:* При загрузке система считывает скин из файла default.skn на рамдиске.
* Пользователь может изменять скин статически, создав свой default.skn, или динамически с помощью приложения [[desktop/ru|desktop]].
+
:* Пользователь может изменять скин статически, создав свой default.skn, или динамически с помощью приложения [[desktop/ru|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  = новая высота шрифта в пикселях
 +
 
 +
'''Константы для регистров:'''</