2.3.4.2.2 EmfMetafileHeaderExtension1 Record

The EmfMetafileHeaderExtension1 record is the header record used in the first extension to EMF metafiles. Following the EmfHeaderExtension1 field, the remaining fields are optional and can be present in any order.

Fields not specified in this section are specified in section 2.3.4 or 2.3.4.2.


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

Size

EmfHeader (80 bytes)

...

...

...

EmfHeaderExtension1

...

...

EmfDescriptionBuffer (variable, optional)

...

EmfPixelFormatBuffer (variable, optional)

...

EmfHeaderExtension1 (12 bytes): A HeaderExtension1 object (section 2.2.10), which specifies additional information about the image in the metafile.

EmfDescriptionBuffer (variable, optional): An array of bytes that contains the EMF description string, which is not required to be contiguous with the fixed-length part of this record. Thus, the undefined space field in this buffer is optional and MUST be ignored.


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

UndefinedSpace (variable, optional)

...

EmfDescription (variable)

...

EmfDescription (variable): A null-terminated Unicode UTF16-LE string of arbitrary length and content. Its location in the record and number of characters are specified by the offDescription and nDescription fields, respectively, in EmfHeader. If the value of either field is zero, no description string is present.

EmfPixelFormatBuffer (variable, optional): An array of bytes that contains the EMF pixel format descriptor. It is not required to be contiguous with the EmfHeaderExtension1 or EmfDescription fields. Thus, the undefined space field in this buffer is optional and MUST be ignored.


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

UndefinedSpace2 (variable, optional)

...

EmfPixelFormat (40 bytes)

...

...

...

EmfPixelFormat (40 bytes): A PixelFormatDescriptor object (section 2.2.22), which specifies the pixel format that was defined when the metafile was recorded. Its size and location in the record are specified by the cbPixelFormat and offPixelFormat fields, respectively, in EmfHeaderExtension1. If the value of either field is zero, no pixel format descriptor is present.

Note: No single structure definition can accurately represent every possible combination of optional fields. Therefore, the implementer is responsible for writing software that determines which fields are present in each metafile and for unmarshaling the contents of each field appropriately.

The value of the Size field can be used to distinguish between the different EMR_HEADER record types. See the flowchart in section 2.3.4.2 for details.