Jump to content

GpiRectInRegion

From EDM2
Revision as of 22:05, 6 April 2025 by Iturbide (talk | contribs) (Created page with "This function checks whether any part of a rectangle lies within the specified region. ==Syntax== GpiRectInRegion(hps, hrgn, prclRect) ==Parameters== ; hps (HPS) - input : Presentation-space handle. : The region must be owned by the device identified by the currently associated device context. ; hrgn (HRGN) - input : Region handle. ; prclRect (PRECTL) - input : Test rectangle. : The rectangle is specified in device coordinates. ==Return Value== ; lInsid...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This function checks whether any part of a rectangle lies within the specified region.

Syntax

GpiRectInRegion(hps, hrgn, prclRect)

Parameters

hps (HPS) - input
Presentation-space handle.
The region must be owned by the device identified by the currently associated device context.
hrgn (HRGN) - input
Region handle.
prclRect (PRECTL) - input
Test rectangle.
The rectangle is specified in device coordinates.

Return Value

lInside (LONG) - returns
Inside and error indicators.
RRGN_OUTSIDE
Not in region
RRGN_PARTIAL
Some in region
RRGN_INSIDE
All in region
RRGN_ERROR
Error.

Remarks

It is invalid if the specified region is currently selected as the clip region (by GpiSetClipRegion).

Errors

Possible returns from WinGetLastError:

PMERR_INV_HPS (0x207F)
An invalid presentation-space handle was specified.
PMERR_PS_BUSY (0x20F4)
An attempt was made to access the presentation space from more than one thread simultaneously.
PMERR_INV_HRGN (0x2080)
An invalid region handle was specified.
PMERR_INV_COORDINATE (0x205B)
An invalid coordinate value was specified.
PMERR_INV_RECT (0x20BD)
An invalid rectangle parameter was specified.
PMERR_REGION_IS_CLIP_REGION (0x20F8)
An attempt was made to perform a region operation on a region that is selected as a clip region.
PMERR_HRGN_BUSY (0x2034)
An internal region busy error was detected. The region was locked by one thread during an attempt to access it from another thread.

Example Code

#define INCL_GPIREGIONS /* Or use INCL_GPI, INCL_PM, */
#include <os2.h>

HPS     hps;        /* Presentation-space handle. */
HRGN    hrgn;       /* Region handle. */
PRECTL  prclRect;   /* Test rectangle. */
LONG    lInside;    /* Inside and error indicators. */

lInside = GpiRectInRegion(hps, hrgn, prclRect);

In this example we check to see if a a rectangle is inside a region before we destroy the region.

#define INCL_GPIREGIONS
#include <OS2.H>

HPS hps; /* presentation-space handle. */
HRGN hrgn; /* region handle. */
PRECTL prclRect; /* test rectangle. */
LONG lInside; /* result. */

lInside = GpiRectInRegion(hps, hrgn, prclRect);

if (lInside == RRGN_OUTSIDE)
{
  GpiDestroyRegion(hps, hrgn);
}

Related Functions