Function 50 - set window shape.
Normal windows have rectangular shape. This function can give to
a window any shape. The shape is given by a set of points inside
the base rectangle belonging to a window. Position and coordinates
of the base rectangle are set by function 0
and changed by function 67.
Set shape data
Parameters:
- eax = 50 - function number
- ebx = 0 - subfunction number
- ecx = pointer to shape data (array of bytes 0/1)
Returned value:
- function does not return value
Set shape scale
Parameters:
- eax = 50 - function number
- ebx = 1 - subfunction number
- ecx sets a scale: each byte of data defines
(2^scale)*(2^scale) pixels
Returned value:
- function does not return value
Remarks:
- Default scale is 0 (scale factor is 1). If in the shape data
one byte corresponds to one pixel, there is no necessity
to set scale.
- Let's designate xsize = window width (in pixels), ysize = height;
pay attention, that they are one pixel more than defined by
functions 0, 67.
- On definition of scale xsize and ysize must be divisible
on 2^scale.
- Byte of data on offset 'a' must be 0/1 and defines belonging
to a window of square with the side 2^scale (if scale=0,
this is one pixel) and coordinates of the left upper corner
(a mod (xsize shr scale), a div (xsize shr scale))
- Data size: (xsize shr scale)*(ysize shr scale).
- Data must be presented in the memory and not change
after set of shape.
- The system views the shape data at every window redraw by
function 0.
- The call of subfunction 0 with NULL pointer results in return
to the rectangular shape.