To assist vector devices in filling complex areas, their drivers can call the engine functions, listed in the following table, that create, modify, and enumerate a path. The driver has access to paths through the PATHOBJ structure.
| GDI Path Service Function | Description |
|---|---|
| EngCreatePath | Allocates a path for the driver's temporary use. The driver should delete this path before returning to GDI from its current drawing call. |
| EngDeletePath | Deletes a path allocated by the EngCreatePath function. |
| PATHOBJ_bCloseFigure | Closes a path (for filling) by drawing a line back to the starting point. |
| PATHOBJ_bEnum | Retrieves the next PATHDATA record from a path. Each record describes all or part of a subpath. |
| PATHOBJ_bEnumClipLines | Enumerates clipped line segments from a path. |
| PATHOBJ_bMoveTo | Changes the current position in a PATHOBJ-defined path. |
| PATHOBJ_bPolyBezierTo | Draws Bezier curves (cubic splines) in a PATHOBJ-defined path. |
| PATHOBJ_bPolyLineTo | Draws lines in a PATHOBJ-defined path. |
| PATHOBJ_vEnumStart | Notifies a PATHOBJ that the driver will begin calling PATHOBJ_bEnum to enumerate the curves in the specified path. This function must be called in case of an enumeration restart. |
| PATHOBJ_vEnumStartClipLines | Allows the driver to ask for lines to be clipped against a CLIPOBJ clip region is more complex than a single rectangle. |
| PATHOBJ_vGetBounds | Returns a bounding rectangle for the path. |