GreSelectClipPath


 * Simulation support: This function is simulated by a handling routine in the graphics engine.

GreSelectClipPath resets or modifies the currently selected clip path.

This function can be hooked by the presentation driver.

Syntax
fSuccess = GreSelectClipPath(hdc, idPath, flOptions, pInstance, lFunction);

Parameters

 * hdc (HDC) - input
 * Device context handle.


 * idPath (LONG) - input
 * Path ID.

When this is passed as 0, it indicates "no clipping". Otherwise, the new clip path is intersected with the existing clip path.


 * flOptions (ULONG) - input
 * Option flags.

The following flags determine the path mode:


 * SCP_ALTERNATE (Default) Use alternate mode for intersection.
 * SCP_WINDING Use winding mode for intersection.

The following flags determine whether the new path replaces or intersects the initial path:

SCP_AND Intersect the two clip paths. If idPath is not 1, this flag is invalid and the handling routine must log an error.

SCP_RESET (Default) Replace the initial clip path. If idPath is not 0, this flag is invalid and the handling routine must log an error.

SCP_EXCL Path is exclusive of bottom and right border in device coordinate.

Other flags are reserved and must be 0.


 * pInstance (PVOID) - input
 * Pointer to instance data.


 * lFunction (ULONG) - input
 * High-order WORD=flags; low-order WORD=NGreSelectClipPath.

Return Code

 * fSuccess (BOOL) - returns
 * Return codes.

This function returns BOOLEAN (fSuccess).


 * TRUE Successful
 * FALSE Error

Possible Errors Detected:  When an error is detected, the handling routine must call WinSetErrorInfo to post the condition. Error codes for conditions that the handling routine is expected to check include:
 * PMERR_BASE_ERROR
 * PMERR_BITMAP_NOT_SELECTED
 * PMERR_COORDINATE_OVERFLOW
 * PMERR_DEV_FUNC_NOT_INSTALLED
 * PMERR_HDC_BUSY
 * PMERR_HRGN_BUSY
 * PMERR_INSUFFICIENT_MEMORY
 * PMERR_INV_CLIP_PATH_OPTIONS
 * PMERR_INV_COLOR_DATA
 * PMERR_INV_COLOR_INDEX
 * PMERR_INV_COORD_SPACE
 * PMERR_INV_COORDINATE
 * PMERR_INV_HDC
 * PMERR_INV_HRGN
 * PMERR_INV_IN_AREA
 * PMERR_INV_IN_PATH
 * PMERR_INV_LENGTH_OR_COUNT
 * PMERR_INV_PATH_ID
 * PMERR_INV_PICK_APERTURE_POSN
 * PMERR_INV_RECT
 * PMERR_INV_REGION_CONTROL
 * PMERR_PATH_LIMIT_EXCEEDED
 * PMERR_PATH_UNKNOWN
 * PMERR_REGION_IS_CLIP_REGION

Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation.

Remarks
Before modifying the clip path, the handling routine must close all open figures in the path. The modified clip path consists of the areas common to both the old clip path and the figures in the specified path. When the constituent paths are defined, the modified clip path is bound in device coordinates and is used for all subsequent drawing, including filling. All of the boundaries of the area are considered to be part of the interior and are not clipped. Upon completion, the handling routine deletes the old clip path indicated by idPath, allowing a new path definition, which can coexist with the new clip path, to begin as required. Refer to function "GpiSetClipPath" in the Presentation Manager Programming Reference for further information.

Example Code
HDC     hdc;        /*  Device context handle. */ LONG    idPath;     /*  Path ID. */ ULONG   flOptions;  /*  Option flags. */ PVOID   pInstance;  /*  Pointer to instance data. */ ULONG   lFunction; BOOL    fSuccess;   /*  Return codes. */ fSuccess = GreSelectClipPath(hdc, idPath, flOptions, pInstance, lFunction);
 * 1) define INCL_GRE_PATHS
 * 2) include 