Jump to content

GreCombineRectRegion: Difference between revisions

From EDM2
Created page with "GreCombineRectRegion combines a region with a rectangle to make a new region. If COM_TRANSFORM is not set, the function expects the point to be in device coordinates. The dest..."
(No difference)

Revision as of 18:51, 17 January 2020

GreCombineRectRegion combines a region with a rectangle to make a new region. If COM_TRANSFORM is not set, the function expects the point to be in device coordinates. The destination region can be the same as the source region. An error is raised if either of the regions specified is currently selected as the clip region. The source and destination regions must be of the same device class.

This function can be hooked by the presentation driver.

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

Syntax

GreCombineRectRegion(hdc, hrgnDst, prclRect, hrgnSrc, cmdMode, pInstance, lFunction);

Parameters

hdc (HDC) - input
Device context handle.
hrgnDst (HRGN) - input
Destination region handle.
prclRect (PRECTL) - input
Pointer to rectangle.
hrgnSrc (HRGN) - input
Region handle.
cmdMode (LONG) - input
Method of combination.
CRGN_OR
Union of hrgnSrc and prclRect.
CRGN_COPY
Uses prclRect only. The hrgnSrc parameter is ignored.
CRGN_XOR
Symmetric difference of hrgnSrc and prclRect.
CRGN_AND
Intersection of hrgnSrc and prclRect.
CRGN_DIFF
Uses hrgnSrc and not (prclRect).
pInstance (PVOID) - input
Pointer to instance data.
lFunction (ULONG) - input
High-order WORD=flags; low-order WORD=NGreCombineRectRegion.

Returns

rc (LONG) - returns
This function returns an integer (lComplexity) indicating the complexity of the new region:
  • RGN_ERROR
Error
  • RGN_NULL
Null region
  • RGN_RECT
Rectangular region
  • RGN_COMPLEX
Complex region (more than one rectangle)
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_HRGN_BUSY
  • PMERR_INSUFFICIENT_MEMORY
  • PMERR_INV_COORDINATE
  • PMERR_INV_HRGN
  • PMERR_INV_RECT
  • PMERR_INV_REGION_MIX_MODE
  • PMERR_REGION_IS_CLIP_REGION
Refer to the "Error Explanations" section in the Presentation Manager Programming Reference for further explanation.


Sample

#define INCL_GRE_REGIONS
#include <os2.h>

HDC       hdc;        /*  Device context handle. */
HRGN      hrgnDst;    /*  Destination region handle. */
PRECTL    prclRect;   /*  Pointer to rectangle. */
HRGN      hrgnSrc;    /*  Region handle. */
LONG      cmdMode;    /*  Method of combination. */
PVOID     pInstance;  /*  Pointer to instance data. */
ULONG     lFunction;  /*  High-order WORD=flags; low-order WORD=NGreCombineRectRegion. */
LONG      rc;

rc = GreCombineRectRegion(hdc, hrgnDst, prclRect, hrgnSrc, cmdMode, pInstance, lFunction);