Difference between revisions of "SysFn50/ru"

From KolibriOS wiki
Jump to navigation Jump to search
(Created page with ''''Функция 50 - установка формы окна''' ---- Обычные окна представляют собой прямоугольники. С помощь...')
 
m
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
'''Функция 50 - установка формы окна'''
+
'''Функция 50''' - установка формы окна
  
 
----
 
----
  
 
Обычные окна представляют собой прямоугольники. С помощью этой функции окну можно придать произвольную форму. Форма задаётся набором точек внутри обрамляющего прямоугольника, принадлежащих окну.  
 
Обычные окна представляют собой прямоугольники. С помощью этой функции окну можно придать произвольную форму. Форма задаётся набором точек внутри обрамляющего прямоугольника, принадлежащих окну.  
Положение и размеры обрамляющего прямоугольника задаются функцией 0 и изменяются функцией 67.
+
Положение и размеры обрамляющего прямоугольника задаются [[SysFn00/ru|функцией 0]] и изменяются [[SysFn67/ru|функцией 67]].
  
=== Установка данных с информацией о форме ===
+
=== Подфункция 0 - установка данных с информацией о форме ===
  
 
Параметры:
 
Параметры:
* eax = 50 - номер функции
+
:* eax = 50 - номер функции
* ebx = 0 - номер подфункции
+
:* ebx = 0 - номер подфункции
* ecx = указатель на данные формы (массив байт 0/1)
+
:* ecx = указатель на данные формы (массив байт 0/1)
 +
Возвращаемое значение:
 +
:* функция не возвращает значения
  
Возвращаемое значение:
+
'''Константы для регистров:'''
* функция не возвращает значения
+
::eax - SF_SET_WINDOW_SHAPE (50)
  
=== Установка масштаба данных формы ===
+
=== Подфункция 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)