GreArc

From EDM2
Jump to: navigation, search

GreArc draws an arc through three points. These are the current position and the two points specified in the data structure. Upon completion, the current position is the third point of the arc.

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

Syntax

 GreArc(hdc, paptlPoint, pInstance, lFunction);

Parameters

hdc (HDC) - input 
Device context handle.
paptlPoint (PPOINTL) - input 
Pointer to ArcData array.

Pointer to an array of POINTL structures giving the mid- and end-points of the arc. If the mid-point is coincident with the start or end point, a straight line is drawn from the start point to the end point. If COM_TRANSFORM is not set, the function expects the array of points to be in screen coordinates.

x X-coordinate of point
y Y-coordinate of point
pInstance (PVOID) - input 
Pointer to instance data.
lFunction (ULONG) - input 
High-order WORD=flags; low order WORD=NGreArc.

Returns

rc (LONG) - returns 
On completion, this function returns an integer (cHits) indicating, where appropriate, whether correlation hits were detected.
GPI_OK : Successful. GPI_HITS Successful with correlation hit (returned by display drivers when the correlation flag is ON and a hit is detected)
GPI_ERROR : 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_INV_COLOR_DATA
PMERR_INV_COLOR_INDEX
PMERR_INV_COORD_SPACE
PMERR_INV_HDC
PMERR_INV_IN_AREA
PMERR_INV_IN_PATH
PMERR_INV_LENGTH_OR_COUNT
PMERR_INV_MATRIX_ELEMENT
PMERR_INV_PICK_APERTURE_POSN
PMERR_INV_RECT
PMERR_PATH_LIMIT_EXCEEDED
PMERR_PATH_UNKNOWN

Refer to the "Error Explanations" section for further explanation.

Remarks

If GreArc is used within a path definition or an area definition to continue a figure following a GreBoxxxx or GreFullArcxxx function, the error PMERR_INV_NESTED_FIGURES is posted. This is because the GreBoxxxx and GreFullArcxxx functions generate a closed figure within an area or path definition.

Example Code

This function can be hooked by the presentation driver.

#define INCL_GRE_ARCS
#include <os2.h>

HDC       hdc; /* Device context handle. */
PPOINTL   paptlPoint; /* Pointer to ArcData array. */
PVOID     pInstance; /* Pointer to instance data. */
ULONG     lFunction; /* High-order WORD=flags; low order WORD=NGreArc. */
LONG      rc;

rc = GreArc(hdc, paptlPoint, pInstance, lFunction);

Related Functions