The DrvStrokeAndFillPath function strokes (outlines) and fills a path concurrently.
BOOL
DrvStrokeAndFillPath(
IN SURFOBJ *pso,
IN PATHOBJ *ppo,
IN CLIPOBJ *pco,
IN XFORMOBJ *pxo,
IN BRUSHOBJ *pboStroke,
IN LINEATTRS *plineattrs,
IN BRUSHOBJ *pboFill,
IN POINTL *pptlBrushOrg,
IN MIX mixFill,
IN FLONG flOptions
);
The return value is TRUE if the driver is able to fill the path. Otherwise, if GDI should instead fill the path, the return value is FALSE. If an error occurs, the return value is DDI_ERROR, and an error code is logged.
Declared in winddi.h. Include winddi.h.
If a wide line is used for stroking, the filled area must be reduced to compensate.
The driver can return FALSE if the path or the clipping is too complex for the device to handle; in that case, GDI converts to a simpler call. For example, if the device driver has set the GCAPS_BEZIERS flag in the flGraphicsCaps member of the DEVINFO structure and then receives a path with Bezier curves, it can return FALSE; GDI will then convert the Bezier curves to lines and call DrvStrokeAndFillPath again. If the device driver returns FALSE again, GDI will further simplify the call, making calls to DrvStrokePath and DrvFillPath, or to DrvBitBlt, depending on the mix and width of the lines making up the path.
The mix mode defines how the incoming pattern should be mixed with the data already on the device surface. The MIX data type consists of two ROP2 values packed into a single ULONG. The low-order byte defines the foreground raster operation; the high-order byte defines the background raster operation. For more information about raster operation codes, see the Platform SDK documentation.
CLIPOBJ, DrvFillPath, DrvStrokePath, DrvBitBlt, LINEATTRS, PATHOBJ, SURFOBJ, XFORMOBJ