2.2.9.1.2.1.11 Fast-Path Large Pointer Update (TS_FP_LARGEPOINTERATTRIBUTE)

The TS_FP_LARGEPOINTERATTRIBUTE structure is used to transport mouse pointer shapes larger than 96x96 pixels in size.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

updateHeader

compressionFlags (optional)

size

xorBpp

cacheIndex

hotSpot

width

height

lengthAndMask

lengthXorMask

xorMaskData (variable)

...

andMaskData (variable)

...

pad (optional)

updateHeader (1 byte): An 8-bit, unsigned integer. The format of this field is the same as the updateHeader byte field specified in the Fast-Path Update (section 2.2.9.1.2.1) structure. The updateCode bitfield (4 bits in size) MUST be set to FASTPATH_UPDATETYPE_LARGE_POINTER (12).

compressionFlags (1 byte): An 8-bit, unsigned integer. The format of this optional field (as well as the possible values) is the same as the compressionFlags field specified in the Fast-Path Update structure.

size (2 bytes): A 16-bit, unsigned integer. The format of this field (as well as the possible values) is the same as the size field specified in the Fast-Path Update structure.

xorBpp (2 bytes): A 16-bit, unsigned integer. The color depth in bits-per-pixel of the XOR mask contained in the xorMaskData field.

cacheIndex (2 bytes): A 16-bit, unsigned integer. The zero-based cache entry in the pointer cache in which to store the pointer image. The number of cache entries is specified using the Pointer Capability Set (section 2.2.7.1.5).

hotSpot (4 bytes): A Point (section 2.2.9.1.1.4.1) structure containing the x-coordinates and y-coordinates of the pointer hotspot.

width (2 bytes): A 16-bit, unsigned integer. The width of the pointer in pixels. The maximum allowed pointer width is 384 pixels.

height (2 bytes): A 16-bit, unsigned integer. The height of the pointer in pixels. The maximum allowed pointer height is 384 pixels.

lengthAndMask (4 bytes):  A 32-bit, unsigned integer. The size in bytes of the andMaskData field.

lengthXorMask (4 bytes):  A 32-bit, unsigned integer. The size in bytes of the xorMaskData field.

xorMaskData (variable): A variable-length array of bytes. Contains the 24-bpp, bottom-up XOR mask scan-line data. The XOR mask is padded to a 2-byte boundary for each encoded scan-line. For example, if a 3x3 pixel cursor is being sent, then each scan-line will consume 10 bytes (3 pixels per scan-line multiplied by 3 bytes per pixel, rounded up to the next even number of bytes).

andMaskData (variable): A variable-length array of bytes. Contains the 1-bpp, bottom-up AND mask scan-line data. The AND mask is padded to a 2-byte boundary for each encoded scan-line. For example, if a 7x7 pixel cursor is being sent, then each scan-line will consume 2 bytes (7 pixels per scan-line multiplied by 1 byte per pixel, rounded up to the next even number of bytes).

pad (1 byte): An optional 8-bit, unsigned integer used for padding. Values in this field MUST be ignored.