Difference between revisions of "SysFn00/ru"

From KolibriOS wiki
Jump to navigation Jump to search
m
m
 
(4 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
----
 
----
  
Определяет окно приложения. Рисует рамку окна, заголовок и рабочую область.  
+
Определяет окно приложения. Рисует рамку окна, заголовок и рабочую
 +
область. Для окон со скином определяет стандартные кнопки закрытия и
 +
минимизации.
 +
Параметры:
 +
:* eax = 0 - номер функции
 +
:* ebx = [координата по оси x]*65536 + [размер по оси x]
 +
:* ecx = [координата по оси y]*65536 + [размер по оси y]
 +
:* edx = 0xXYRRGGBB, где:
 +
::* Y = стиль окна:
 +
:::* Y=0 - тип I - окно фиксированных размеров
 +
:::* Y=1 - только определить область окна, ничего не рисовать
 +
:::* Y=2 - тип II - окно изменяемых размеров
 +
:::* Y=3 - окно со скином
 +
:::* Y=4 - окно со скином фиксированных размеров
 +
:::* остальные возможные значения (от 5 до 15) зарезервированы,
 +
::::вызов функции с такими Y игнорируется
 +
::* RR, GG, BB = соответственно красная, зеленая, синяя
 +
:::составляющие цвета рабочей области окна
 +
:::(игнорируется для стиля Y=1)
 +
::* X = DCBA (биты)
 +
:::* A = 1 - у окна есть заголовок; для стилей Y=3,4 адрес строки
 +
:::::::::заголовка задаётся в edi, для прочих стилей
 +
:::::::::используется подфункция 1 функции 71
 +
:::* B = 1 - координаты всех графических примитивов задаются
 +
:::::::::относительно клиентской области окна
 +
:::* C = 1 - не закрашивать рабочую область при отрисовке окна
 +
:::* D = 0 - нормальная заливка рабочей области, 1 - градиентная
 +
::Следующие параметры предназначены для окон типа I и II и
 +
::игнорируются для стилей Y=1,3:
 +
:* esi = 0xXYRRGGBB - цвет заголовка
 +
::* RR, GG, BB определяют сам цвет
 +
::* Y=0 - обычное окно, Y=1 - неперемещаемое окно (работает для всех стилей окон)
 +
::* X определяет градиент заголовка: X=0 - нет градиента,
 +
:::X=8 - обычный градиент,
 +
:::для окон типа II X=4 - негативный градиент
 +
::* прочие значения X и Y зарезервированы
 +
:* edi = 0x00RRGGBB - цвет рамки
 +
Возвращаемое значение:
 +
:* функция не возвращает значения
 +
Замечания:
 +
:* Положение и размеры окна устанавливаются при первом вызове
 +
::этой функции и игнорируются при последующих; для изменения
 +
::положения и/или размеров уже созданного окна используйте
 +
::67-ю функцию.
 +
:* Для окон стилей Y=3,4 с заголовком (A=1) строка заголовка
 +
::устанавливается при первом вызове этой функции и игнорируется при
 +
::последующих (точнее говоря, игнорируется после вызова
 +
::подфункции 2 функции 12 - конца перерисовки);
 +
::для изменения строки заголовка уже созданного окна используйте
 +
::подфункцию 1 функции 71.
 +
:* Если использовать окна соответствующих стилей, то положение
 +
::и/или размеры окна могут меняться пользователем.
 +
::Текущие положение и размеры могут быть получены вызовом функции 9.
 +
:* Окно должно умещаться на экране. Если переданные координаты
 +
::и размеры не удовлетворяют этому условию, то соответствующая
 +
::координата (или, возможно, обе) считается нулем, а если и это
 +
::не помогает, то соответствующий размер (или, возможно, оба)
 +
::устанавливается в размер экрана.
  
Для окон со скином определяет стандартные кнопки закрытия и минимизации.
+
::Далее обозначим xpos,ypos,xsize,ysize - значения, передаваемые
 +
::в ebx,ecx. Координаты приводятся относительно левого верхнего
 +
::угла окна, который, таким образом, задается как (0,0), координаты
 +
::правого нижнего угла суть (xsize,ysize).
 +
:* Размеры окна понимаются в смысле координат правого нижнего угла.
 +
::Это же относится и ко всем остальным функциям.
 +
::Это означает, что реальные размеры на 1 пиксель больше.
 +
:* Вид окна типа I:
 +
::* рисуется внешняя рамка цвета, указанного в edi,
 +
:::шириной 1 пиксель
 +
::* рисуется заголовок - прямоугольник с левым верхним углом (1,1)
 +
:::и правым нижним (xsize-1,min(25,ysize)) цвета, указанного в esi
 +
:::(с учетом градиента)
 +
::* если ysize>=26, то закрашивается рабочая область окна -
 +
:::прямоугольник с левым верхним углом (1,21) и правым нижним
 +
:::(xsize-1,ysize-1) (размерами (xsize-1)*(ysize-21)) - цветом,
 +
:::указанным в edx (с учетом градиента)
 +
::* если A=1 и строка заголовка установлена подфункцией 1
 +
:::функции 71, то она выводится в соответствующем месте заголовка
 +
:* Вид окна стиля Y=1:
 +
::* полностью определяется приложением
 +
:* Вид окна типа II:
 +
::* рисуется внешняя рамка шириной 1 пиксель "затенённого" цвета
 +
:::edi (все составляющие цвета уменьшаются в два раза)
 +
::* рисуется промежуточная рамка шириной 3 пикселя цвета edi
 +
::* рисуется внутренняя рамка шириной 1 пиксель
 +
:::"затенённого" цвета edi
 +
::* рисуется заголовок - прямоугольник с левым верхним углом (4,4)
 +
:::и правым нижним (xsize-4,min(20,ysize)) цвета, указанного в esi
 +
:::(с учетом градиента)
 +
::* если ysize>=26, то закрашивается рабочая область окна -
 +
:::прямоугольник с левым верхним углом (5,20) и правым нижним
 +
:::(xsize-5,ysize-5) - цветом, указанным в edx (с учетом градиента)
 +
::* если A=1 и строка заголовка установлена подфункцией 1
 +
:::функции 71, то она выводится в соответствующем месте заголовка
 +
:* Вид окна со скином:
 +
::* рисуется внешняя рамка шириной 1 пиксель
 +
:::цвета 'outer' из скина
 +
::* рисуется промежуточная рамка шириной 3 пикселя
 +
:::цвета 'frame' из скина
 +
::* рисуется внутренняя рамка шириной 1 пиксель
 +
:::цвета 'inner' из скина
 +
::* рисуется заголовок (по картинкам из скина) в прямоугольнике
 +
:::(0,0) - (xsize,_skinh-1)
 +
::* если ysize>=26, то закрашивается рабочая область окна -
 +
:::прямоугольник с левым верхним углом (5,_skinh) и правым нижним
 +
:::(xsize-5,ysize-5) - цветом, указанным в edx (с учетом градиента)
 +
::* определяются две стандартные кнопки: закрытия и минимизации
 +
:::(смотри функцию 8)
 +
::* если A=1 и в edi (ненулевой) указатель на строку заголовка,
 +
:::то она выводится в заголовке в месте, определяемом скином
 +
::* Значение переменной _skinh доступно как результат вызова
 +
:::подфункции 4 функции 48
  
'''Параметры:'''
 
* eax = 0 - номер функции
 
* ebx = [координата по оси x]*65536 + [размер по оси x]
 
* ecx = [координата по оси y]*65536 + [размер по оси y]
 
* edx = 0xXYRRGGBB, где:
 
 
** Y = стиль окна:
 
** Y=0 - тип I - окно фиксированных размеров
 
** Y=1 - только определить область окна, ничего не рисовать
 
** Y=2 - тип II - окно изменяемых размеров
 
** Y=3 - окно со скином
 
** Y=4 - окно со скином фиксированных размеров
 
** остальные возможные значения (от 5 до 15) зарезервированы, вызов функции с такими Y игнорируется
 
** RR, GG, BB = соответственно красная, зеленая, синяя составляющие цвета рабочей области окна (игнорируется для стиля Y=2)
 
 
** X = DCBA (биты)
 
** A = 1 - у окна есть заголовок; для стилей Y=3,4 адрес строки заголовка задаётся в edi, для прочих стилей используется подфункция 1 функции 71
 
** B = 1 - координаты всех графических примитивов задаются относительно клиентской области окна
 
** C = 1 - не закрашивать рабочую область при отрисовке окна
 
** D = 0 - нормальная заливка рабочей области, 1 - градиентная
 
 
Следующие параметры предназначены для окон типа I и II и игнорируются для стилей Y=1,3:
 
* esi = 0xXYRRGGBB - цвет заголовка
 
** RR, GG, BB определяют сам цвет
 
** Y=0 - обычное окно, Y=1 - неперемещаемое окно
 
** X определяет градиент заголовка: X=0 - нет градиента, X=8 - обычный градиент, для окон типа II X=4 - негативный градиент
 
** прочие значения X и Y зарезервированы
 
 
* edi = 0x00RRGGBB - цвет рамки
 
 
'''Возвращаемое значение:'''
 
* функция не возвращает значения
 
 
'''Замечания:'''
 
* Положение и размеры окна устанавливаются при первом вызове этой функции и игнорируются при последующих; для изменения положения и/или размеров уже созданного окна используйте 67-ю функцию.
 
* Для окон стилей Y=3,4 с заголовком (A=1) строка заголовка устанавливается при первом вызове этой функции и игнорируется при последующих (точнее говоря, игнорируется после вызова подфункции 2 функции 12 - конца перерисовки); для изменения строки заголовка уже созданного окна используйте подфункцию 1 функции 71.
 
* Если использовать окна соответствующих стилей, то положение и/или размеры окна могут меняться пользователем. Текущие положение и размеры могут быть получены вызовом функции 9.
 
* Окно должно умещаться на экране. Если переданные координаты и размеры не удовлетворяют этому условию, то соответствующая координата (или, возможно, обе) считается нулем, а если и это не помогает, то соответствующий размер (или, возможно, оба) устанавливается в размер экрана.
 
 
Далее обозначим xpos,ypos,xsize,ysize - значения, передаваемые в ebx,ecx.
 
Координаты приводятся относительно левого верхнего угла окна, который, таким образом, задается как (0,0),
 
координаты правого нижнего угла суть (xsize,ysize).
 
 
* Размеры окна понимаются в смысле координат правого нижнего угла.
 
Это же относится и ко всем остальным функциям.
 
Это означает, что реальные размеры на 1 пиксель больше.
 
* Вид окна типа I:
 
** рисуется внешняя рамка цвета, указанного в edi,шириной 1 пиксель
 
** рисуется заголовок - прямоугольник с левым верхним углом (1,1)и правым нижним (xsize-1,min(25,ysize)) цвета, указанного в esi (с учетом градиента)
 
** если ysize>=26, то закрашивается рабочая область окна - прямоугольник с левым верхним углом (1,21) и правым нижним (xsize-1,ysize-1) (размерами (xsize-1)*(ysize-21)) - цветом, указанным в edx (с учетом градиента)
 
** если A=1 и строка заголовка установлена подфункцией 1 функции 71, то она выводится в соответствующем месте заголовка
 
 
* Вид окна стиля Y=1:
 
** полностью определяется приложением
 
 
* Вид окна типа II:
 
** рисуется внешняя рамка шириной 1 пиксель "затенённого" цвета edi (все составляющие цвета уменьшаются в два раза)
 
** рисуется промежуточная рамка шириной 3 пикселя цвета edi
 
** рисуется внутренняя рамка шириной 1 пиксель "затенённого" цвета edi
 
** рисуется заголовок - прямоугольник с левым верхним углом (4,4) и правым нижним (xsize-4,min(20,ysize)) цвета, указанного в esi (с учетом градиента)
 
** если ysize>=26, то закрашивается рабочая область окна - прямоугольник с левым верхним углом (5,20) и правым нижним (xsize-5,ysize-5) - цветом, указанным в edx (с учетом градиента)
 
** если A=1 и строка заголовка установлена подфункцией 1 функции 71, то она выводится в соответствующем месте заголовка
 
 
 
* Вид окна со скином:
 
** рисуется внешняя рамка шириной 1 пиксель цвета 'outer' из скина
 
** рисуется промежуточная рамка шириной 3 пикселя цвета 'frame' из скина
 
** рисуется внутренняя рамка шириной 1 пиксель цвета 'inner' из скина
 
** рисуется заголовок (по картинкам из скина) в прямоугольнике (0,0) - (xsize,_skinh-1)
 
** если ysize>=26, то закрашивается рабочая область окна - прямоугольник с левым верхним углом (5,_skinh) и правым нижним (xsize-5,ysize-5) - цветом, указанным в edx (с учетом градиента)
 
** определяются две стандартные кнопки: закрытия и минимизации (смотри функцию 8)
 
** если A=1 и в edi (ненулевой) указатель на строку заголовка, то она выводится в заголовке в месте, определяемом скином
 
** Значение переменной _skinh доступно как результат вызова подфункции 4 функции 48
 
  
 +
'''Константы для регистров:'''
 +
::eax - SF_CREATE_WINDOW (0)
 +
{{System_functions}}
 
[[Category: SysCalls]]
 
[[Category: SysCalls]]
{{System_functions}}
 

Latest revision as of 16:54, 12 January 2016

Функция 0 - определить и нарисовать окно


Определяет окно приложения. Рисует рамку окна, заголовок и рабочую область. Для окон со скином определяет стандартные кнопки закрытия и минимизации. Параметры:

  • eax = 0 - номер функции
  • ebx = [координата по оси x]*65536 + [размер по оси x]
  • ecx = [координата по оси y]*65536 + [размер по оси y]
  • edx = 0xXYRRGGBB, где:
  • Y = стиль окна:
  • Y=0 - тип I - окно фиксированных размеров
  • Y=1 - только определить область окна, ничего не рисовать
  • Y=2 - тип II - окно изменяемых размеров
  • Y=3 - окно со скином
  • Y=4 - окно со скином фиксированных размеров
  • остальные возможные значения (от 5 до 15) зарезервированы,
вызов функции с такими Y игнорируется
  • RR, GG, BB = соответственно красная, зеленая, синяя
составляющие цвета рабочей области окна
(игнорируется для стиля Y=1)
  • X = DCBA (биты)
  • A = 1 - у окна есть заголовок; для стилей Y=3,4 адрес строки
заголовка задаётся в edi, для прочих стилей
используется подфункция 1 функции 71
  • B = 1 - координаты всех графических примитивов задаются
относительно клиентской области окна
  • C = 1 - не закрашивать рабочую область при отрисовке окна
  • D = 0 - нормальная заливка рабочей области, 1 - градиентная
Следующие параметры предназначены для окон типа I и II и
игнорируются для стилей Y=1,3:
  • esi = 0xXYRRGGBB - цвет заголовка
  • RR, GG, BB определяют сам цвет
  • Y=0 - обычное окно, Y=1 - неперемещаемое окно (работает для всех стилей окон)
  • X определяет градиент заголовка: X=0 - нет градиента,
X=8 - обычный градиент,
для окон типа II X=4 - негативный градиент
  • прочие значения X и Y зарезервированы
  • edi = 0x00RRGGBB - цвет рамки

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

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

Замечания:

  • Положение и размеры окна устанавливаются при первом вызове
этой функции и игнорируются при последующих; для изменения
положения и/или размеров уже созданного окна используйте
67-ю функцию.
  • Для окон стилей Y=3,4 с заголовком (A=1) строка заголовка
устанавливается при первом вызове этой функции и игнорируется при
последующих (точнее говоря, игнорируется после вызова
подфункции 2 функции 12 - конца перерисовки);
для изменения строки заголовка уже созданного окна используйте
подфункцию 1 функции 71.
  • Если использовать окна соответствующих стилей, то положение
и/или размеры окна могут меняться пользователем.
Текущие положение и размеры могут быть получены вызовом функции 9.
  • Окно должно умещаться на экране. Если переданные координаты
и размеры не удовлетворяют этому условию, то соответствующая
координата (или, возможно, обе) считается нулем, а если и это
не помогает, то соответствующий размер (или, возможно, оба)
устанавливается в размер экрана.
Далее обозначим xpos,ypos,xsize,ysize - значения, передаваемые
в ebx,ecx. Координаты приводятся относительно левого верхнего
угла окна, который, таким образом, задается как (0,0), координаты
правого нижнего угла суть (xsize,ysize).
  • Размеры окна понимаются в смысле координат правого нижнего угла.
Это же относится и ко всем остальным функциям.
Это означает, что реальные размеры на 1 пиксель больше.
  • Вид окна типа I:
  • рисуется внешняя рамка цвета, указанного в edi,
шириной 1 пиксель
  • рисуется заголовок - прямоугольник с левым верхним углом (1,1)
и правым нижним (xsize-1,min(25,ysize)) цвета, указанного в esi
(с учетом градиента)
  • если ysize>=26, то закрашивается рабочая область окна -
прямоугольник с левым верхним углом (1,21) и правым нижним
(xsize-1,ysize-1) (размерами (xsize-1)*(ysize-21)) - цветом,
указанным в edx (с учетом градиента)
  • если A=1 и строка заголовка установлена подфункцией 1
функции 71, то она выводится в соответствующем месте заголовка
  • Вид окна стиля Y=1:
  • полностью определяется приложением
  • Вид окна типа II:
  • рисуется внешняя рамка шириной 1 пиксель "затенённого" цвета
edi (все составляющие цвета уменьшаются в два раза)
  • рисуется промежуточная рамка шириной 3 пикселя цвета edi
  • рисуется внутренняя рамка шириной 1 пиксель
"затенённого" цвета edi
  • рисуется заголовок - прямоугольник с левым верхним углом (4,4)
и правым нижним (xsize-4,min(20,ysize)) цвета, указанного в esi
(с учетом градиента)
  • если ysize>=26, то закрашивается рабочая область окна -
прямоугольник с левым верхним углом (5,20) и правым нижним
(xsize-5,ysize-5) - цветом, указанным в edx (с учетом градиента)
  • если A=1 и строка заголовка установлена подфункцией 1
функции 71, то она выводится в соответствующем месте заголовка
  • Вид окна со скином:
  • рисуется внешняя рамка шириной 1 пиксель
цвета 'outer' из скина
  • рисуется промежуточная рамка шириной 3 пикселя
цвета 'frame' из скина
  • рисуется внутренняя рамка шириной 1 пиксель
цвета 'inner' из скина
  • рисуется заголовок (по картинкам из скина) в прямоугольнике
(0,0) - (xsize,_skinh-1)
  • если ysize>=26, то закрашивается рабочая область окна -
прямоугольник с левым верхним углом (5,_skinh) и правым нижним
(xsize-5,ysize-5) - цветом, указанным в edx (с учетом градиента)
  • определяются две стандартные кнопки: закрытия и минимизации
(смотри функцию 8)
  • если A=1 и в edi (ненулевой) указатель на строку заголовка,
то она выводится в заголовке в месте, определяемом скином
  • Значение переменной _skinh доступно как результат вызова
подфункции 4 функции 48


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

eax - SF_CREATE_WINDOW (0)