GreSelectClipPath: Difference between revisions
Created page with "; Simulation support: This function is simulated by a handling routine in the graphics engine. GreSelectClipPath resets or modifies the currently selected clip path. This ..." |
mNo edit summary |
||
Line 1: | Line 1: | ||
; Simulation support: This function is simulated by a handling routine in the graphics engine. | ; Simulation support: This function is simulated by a handling routine in the graphics engine. | ||
GreSelectClipPath resets or modifies the currently selected clip path. | GreSelectClipPath resets or modifies the currently selected clip path. | ||
This function can be hooked by the presentation driver. | |||
==Syntax== | ==Syntax== | ||
fSuccess = GreSelectClipPath(hdc, idPath, flOptions, pInstance, lFunction) | fSuccess = GreSelectClipPath(hdc, idPath, flOptions, pInstance, lFunction) | ||
==Parameters== | ==Parameters== | ||
; hdc (HDC) - input | ;hdc (HDC) - input: Device context handle. | ||
: 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. | |||
; idPath (LONG) - input | ;flOptions (ULONG) - input: Option flags. | ||
: Path ID. | :The following flags determine the path mode: | ||
:* SCP_ALTERNATE (Default) Use alternate mode for intersection. | |||
When this is passed as 0, it indicates "no clipping". Otherwise, the new clip path is intersected with the existing clip path. | :* SCP_WINDING Use winding mode for intersection. | ||
:The following flags determine whether the new path replaces or intersects the initial path: | |||
; flOptions (ULONG) - input | ::SCP_AND Intersect the two clip paths. If idPath is not 1, this flag is invalid and the handling routine must log an error. | ||
: Option flags. | ::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. | |||
The following flags determine the path mode: | ::Other flags are reserved and must be 0. | ||
;pInstance (PVOID) - input: Pointer to instance data. | |||
* SCP_ALTERNATE (Default) Use alternate mode for intersection. | ;lFunction (ULONG) - input: High-order WORD=flags; low-order WORD=NGreSelectClipPath. | ||
* 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== | ==Return Code== | ||
; fSuccess (BOOL) - returns | ;fSuccess (BOOL) - returns:Return codes. | ||
: Return codes. | :This function returns BOOLEAN (fSuccess). | ||
* TRUE Successful | |||
This function returns BOOLEAN (fSuccess). | * 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: | |||
* TRUE Successful | * PMERR_BASE_ERROR | ||
* FALSE Error | * PMERR_BITMAP_NOT_SELECTED | ||
* PMERR_COORDINATE_OVERFLOW | |||
Possible Errors Detected: | * PMERR_DEV_FUNC_NOT_INSTALLED | ||
* PMERR_BASE_ERROR | * PMERR_HDC_BUSY | ||
* PMERR_BITMAP_NOT_SELECTED | * PMERR_HRGN_BUSY | ||
* PMERR_COORDINATE_OVERFLOW | * PMERR_INSUFFICIENT_MEMORY | ||
* PMERR_DEV_FUNC_NOT_INSTALLED | * PMERR_INV_CLIP_PATH_OPTIONS | ||
* PMERR_HDC_BUSY | * PMERR_INV_COLOR_DATA | ||
* PMERR_HRGN_BUSY | * PMERR_INV_COLOR_INDEX | ||
* PMERR_INSUFFICIENT_MEMORY | * PMERR_INV_COORD_SPACE | ||
* PMERR_INV_CLIP_PATH_OPTIONS | * PMERR_INV_COORDINATE | ||
* PMERR_INV_COLOR_DATA | * PMERR_INV_HDC | ||
* PMERR_INV_COLOR_INDEX | * PMERR_INV_HRGN | ||
* PMERR_INV_COORD_SPACE | * PMERR_INV_IN_AREA | ||
* PMERR_INV_COORDINATE | * PMERR_INV_IN_PATH | ||
* PMERR_INV_HDC | * PMERR_INV_LENGTH_OR_COUNT | ||
* PMERR_INV_HRGN | * PMERR_INV_PATH_ID | ||
* PMERR_INV_IN_AREA | * PMERR_INV_PICK_APERTURE_POSN | ||
* PMERR_INV_IN_PATH | * PMERR_INV_RECT | ||
* PMERR_INV_LENGTH_OR_COUNT | * PMERR_INV_REGION_CONTROL | ||
* PMERR_INV_PATH_ID | * PMERR_PATH_LIMIT_EXCEEDED | ||
* PMERR_INV_PICK_APERTURE_POSN | * PMERR_PATH_UNKNOWN | ||
* PMERR_INV_RECT | * PMERR_REGION_IS_CLIP_REGION | ||
* PMERR_INV_REGION_CONTROL | Refer to the "Error Explanations" section in the ''Presentation Manager Programming Reference'' for further explanation. | ||
* 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== | ==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. | 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== | ==Example Code== |
Latest revision as of 23:33, 23 March 2020
- 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
#define INCL_GRE_PATHS #include <os2.h> 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);