2.3.4.13 EmfPlusDrawRects Record

The EmfPlusDrawRects record specifies drawing a series of rectangles.


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

Type

Flags

Size

DataSize

Count

RectData (variable)

...

Type (2 bytes): An unsigned integer that identifies this record type as EmfPlusDrawRects from the RecordType enumeration. The value MUST be 0x400B.

Flags (2 bytes): An unsigned integer that provides information about how the operation is to be performed, and about the structure of the record.


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

X

C

X

X

X

X

X

X

ObjectID

X (1 bit): Reserved and MUST be ignored.

C (1 bit): This bit indicates whether the data in the RectData field is compressed.

If set, RectData contains an EmfPlusRect object. If clear, RectData contains an EmfPlusRectF object.

ObjectID (1 byte): The index of an EmfPlusPen object in the EMF+ Object Table to draw the rectangles. The value MUST be zero to 63, inclusive.

Size (4 bytes): An unsigned integer that specifies the 32-bit-aligned number of bytes in the entire record, including the 12-byte record header and record-specific data.

At least 1 RectData array element MUST be specified in this record.

Value

Meaning

0x00000018 ≤ value

If the C bit is set in the Flags field, Size MUST be computed as follows:

 Size   = (Count * 0x00000008) + 0x00000010

0x00000020 ≤ value

If the C bit is clear in the Flags field, Size MUST be computed as follows:

 Size   = (Count * 0x00000010) + 0x00000010

DataSize (4 bytes): An unsigned integer that specifies the 32-bit-aligned number of bytes of record-specific data that follows.

At least 1 RectData array element MUST be specified in this record.

Value

Meaning

0x0000000C ≤ value

If the C bit is set in the Flags field, DataSize MUST be computed as follows:

 DataSize   = (Count * 0x00000008) + 0x00000004

0x00000014 ≤ value

If the C bit is clear in the Flags field, DataSize MUST be computed as follows:

 DataSize   = (Count * 0x00000010) + 0x00000004

Count (4 bytes): An unsigned integer that specifies the number of rectangles in the RectData member.

RectData (variable): An array of either an EmfPlusRect or EmfPlusRectF objects of Count length that defines the rectangle data.

See section 2.3.4 for the specification of additional drawing record types.