Jump to content

GreSelectClipPath: Difference between revisions

From EDM2
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 ..."
 
Ak120 (talk | contribs)
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.


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:   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_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);