SysFn50/ru

From KolibriOS wiki
Revision as of 15:14, 6 April 2010 by Art zh (talk | contribs) (Created page with ''''Функция 50 - установка формы окна''' ---- Обычные окна представляют собой прямоугольники. С помощь...')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Функция 50 - установка формы окна


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

Установка данных с информацией о форме

Параметры:

  • eax = 50 - номер функции
  • ebx = 0 - номер подфункции
  • ecx = указатель на данные формы (массив байт 0/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 с нулевым указателем приводит к возврату к прямоугольной форме.