2.2.1.6 EmfPlusPath Object

The EmfPlusPath object specifies a series of line and curve segments that form a graphics path. The order for Bezier data points is the start point, control point 1, control point 2, and end point. For more information see [MSDN-DrawBeziers].


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

Version

PathPointCount

PathPointFlags

PathPoints (variable)

...

PathPointTypes (variable)

...

AlignmentPadding (variable)

...

Version (4 bytes): An EmfPlusGraphicsVersion object (section 2.2.2.19) that specifies the version of operating system graphics that was used to create this object.

PathPointCount (4 bytes): An unsigned integer that specifies the number of points and associated point types that are defined by this object.

PathPointFlags (4 bytes): An unsigned integer that specifies how to interpret the points and associated point types that are defined by this object.


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

0

0

0

0

0

0

0

0

0

0

0

R

0

0

C

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

R (1 bit): If this flag is set, the C flag is undefined and MUST be ignored. The R flag specifies whether the PathPoints are relative or absolute locations in the coordinate space, and whether the PathPointTypes are run-length encoded. See PathPoints and PathPointTypes for details.

C (1 bit): If the R flag is clear, this flag specifies the type of objects in the PathPoints array. See PathPoints and PathPointTypes for details.

PathPoints (variable): An array of PathPointCount points that specify the path. The type of objects in this array is specified by the PathPointFlags field, as follows:

  • If the R flag is set, the points are relative locations specified by EmfPlusPointR objects (section 2.2.2.37).

  • If the R flag is clear and the C flag is set, the points are absolute locations specified by EmfPlusPoint objects (section 2.2.2.35).

  • If the R flag is clear and the C flag is clear, the points are absolute locations specified by EmfPlusPointF objects (section 2.2.2.36).

PathPointTypes (variable): An array of PathPointCount objects that specifies how the points in the PathPoints field are used to draw the path. The type of objects in this array is specified by the PathPointFlags field, as follows:

ยง If the R flag is set, the point types are specified by EmfPlusPathPointTypeRLE objects (section 2.2.2.32), which use run-length encoding (RLE) compression ([MS-WMF] section 3.1.6).

  • If the R flag is clear, the point types are specified by EmfPlusPathPointType objects (section 2.2.2.31).

AlignmentPadding (variable): An optional array of up to 3 bytes that pads the record so that its total size is a multiple of 4 bytes. This field MUST be ignored.

See section 2.2.1 for the specification of additional graphics objects.