Difference between revisions of "SysFn50/ru"
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
m |
||
Line 1: | Line 1: | ||
− | '''Функция 50 - установка формы окна | + | '''Функция 50''' - установка формы окна |
---- | ---- | ||
Обычные окна представляют собой прямоугольники. С помощью этой функции окну можно придать произвольную форму. Форма задаётся набором точек внутри обрамляющего прямоугольника, принадлежащих окну. | Обычные окна представляют собой прямоугольники. С помощью этой функции окну можно придать произвольную форму. Форма задаётся набором точек внутри обрамляющего прямоугольника, принадлежащих окну. | ||
− | Положение и размеры обрамляющего прямоугольника задаются функцией 0 и изменяются функцией 67. | + | Положение и размеры обрамляющего прямоугольника задаются [[SysFn00/ru|функцией 0]] и изменяются [[SysFn67/ru|функцией 67]]. |
=== Подфункция 0 - установка данных с информацией о форме === | === Подфункция 0 - установка данных с информацией о форме === | ||
Параметры: | Параметры: | ||
− | * eax = 50 - номер функции | + | :* eax = 50 - номер функции |
− | * ebx = 0 - номер подфункции | + | :* ebx = 0 - номер подфункции |
− | * ecx = указатель на данные формы (массив байт 0/1) | + | :* ecx = указатель на данные формы (массив байт 0/1) |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * функция не возвращает значения | + | :* функция не возвращает значения |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_SET_WINDOW_SHAPE (50) | ||
=== Подфункция 1 - установка масштаба данных формы === | === Подфункция 1 - установка масштаба данных формы === | ||
Параметры: | Параметры: | ||
− | * eax = 50 - номер функции | + | :* eax = 50 - номер функции |
− | * ebx = 1 - номер подфункции | + | :* ebx = 1 - номер подфункции |
− | * ecx задаёт масштаб: каждый байт данных определяет (2^scale)*(2^scale) пикселей | + | :* ecx задаёт масштаб: каждый байт данных определяет (2^scale)*(2^scale) пикселей |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * функция не возвращает значения | + | :* функция не возвращает значения |
Замечания: | Замечания: | ||
− | * Масштаб по умолчанию равен 0 (масштабирующий множитель 1). Если в данных формы один байт соответствует одному пикселю, то масштаб можно не устанавливать. | + | :* Масштаб по умолчанию равен 0 (масштабирующий множитель 1). Если в данных формы один байт соответствует одному пикселю, то масштаб можно не устанавливать. |
− | * Обозначим xsize = ширина окна (в пикселях), ysize = высота; обратите внимание, что они на единицу больше, чем устанавливаемые функциями 0, 67. | + | :* Обозначим xsize = ширина окна (в пикселях), ysize = высота; обратите внимание, что они на единицу больше, чем устанавливаемые [[SysFn00/ru|функциями 0]], [[SysFn67/ru|67]]. |
− | * По определению масштаба xsize и ysize должны делиться на 2^scale. | + | :* По определению масштаба xsize и ysize должны делиться на 2^scale. |
− | * Байт данных по смещению a должен быть 0/1 и определяет принадлежность окну квадрата со стороной 2^scale (при scale=0 получаем пиксель) и координатами левого верхнего угла (a mod (xsize shr scale), a div (xsize shr scale)) | + | :* Байт данных по смещению a должен быть 0/1 и определяет принадлежность окну квадрата со стороной 2^scale (при scale=0 получаем пиксель) и координатами левого верхнего угла (a mod (xsize shr scale), a div (xsize shr scale)) |
− | * Размер данных: (xsize shr scale)*(ysize shr scale). | + | :* Размер данных: (xsize shr scale)*(ysize shr scale). |
− | * Данные должны присутствовать в памяти и не меняться после установки формы. | + | :* Данные должны присутствовать в памяти и не меняться после установки формы. |
− | * Система просматривает данные о форме при каждой перерисовке окна функцией 0. | + | :* Система просматривает данные о форме при каждой перерисовке окна [[SysFn00/ru|функцией 0]]. |
− | * Вызов подфункции 0 с нулевым указателем приводит к возврату к прямоугольной форме. | + | :* Вызов подфункции 0 с нулевым указателем приводит к возврату к прямоугольной форме. |
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_SET_WINDOW_SHAPE (50) | ||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Latest revision as of 18:54, 17 January 2016
Функция 50 - установка формы окна
Обычные окна представляют собой прямоугольники. С помощью этой функции окну можно придать произвольную форму. Форма задаётся набором точек внутри обрамляющего прямоугольника, принадлежащих окну. Положение и размеры обрамляющего прямоугольника задаются функцией 0 и изменяются функцией 67.
Подфункция 0 - установка данных с информацией о форме
Параметры:
- eax = 50 - номер функции
- ebx = 0 - номер подфункции
- ecx = указатель на данные формы (массив байт 0/1)
Возвращаемое значение:
- функция не возвращает значения
Константы для регистров:
- eax - SF_SET_WINDOW_SHAPE (50)
Подфункция 1 - установка масштаба данных формы
Параметры:
- eax = 50 - номер функции
- ebx = 1 - номер подфункции
- ecx задаёт масштаб: каждый байт данных определяет (2^scale)*(2^scale) пикселей
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Масштаб по умолчанию равен 0 (масштабирующий множитель 1). Если в данных формы один байт соответствует одному пикселю, то масштаб можно не устанавливать.
- Обозначим xsize = ширина окна (в пикселях), ysize = высота; обратите внимание, что они на единицу больше, чем устанавливаемые функциями 0, 67.
- По определению масштаба xsize и ysize должны делиться на 2^scale.
- Байт данных по смещению a должен быть 0/1 и определяет принадлежность окну квадрата со стороной 2^scale (при scale=0 получаем пиксель) и координатами левого верхнего угла (a mod (xsize shr scale), a div (xsize shr scale))
- Размер данных: (xsize shr scale)*(ysize shr scale).
- Данные должны присутствовать в памяти и не меняться после установки формы.
- Система просматривает данные о форме при каждой перерисовке окна функцией 0.
- Вызов подфункции 0 с нулевым указателем приводит к возврату к прямоугольной форме.
Константы для регистров:
- eax - SF_SET_WINDOW_SHAPE (50)
|