2.3.4.20 EmfPlusFillRects Record

The EmfPlusFillRects record specifies filling the interiors of 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

BrushId

Count

RectData (variable)

...

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

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

S

C

X

X

X

X

X

X

X

X

X

X

X

X

X

X

S (1 bit): This bit specifies the type of data in the BrushId field.

If set, BrushId specifies a color as an EmfPlusARGB object. If clear, BrushId contains the index of an EmfPlusBrush object in the EMF+ Object Table.

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.

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

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

0x0000001C ≤ value

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

Size = (Count * 0x00000008) + 0x00000014

0x00000024 ≤ value

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

Size = (Count * 0x00000010) + 0x00000014

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

0x00000010 ≤ value

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

 DataSize   = (Count * 0x00000008) + 0x00000008

0x00000018 ≤ value

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

 DataSize   = (Count * 0x00000010) + 0x00000008

BrushId (4 bytes): An unsigned integer that defines the brush, the content of which is determined by the S bit in the Flags field.

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

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.