home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
msjournl
/
msjv4_1b.arc
/
MACSL.ARC
/
PMGPI.H
< prev
next >
Wrap
C/C++ Source or Header
|
1988-09-16
|
53KB
|
1,539 lines
/***************************************************************************\
*
* Module Name: PMGPI.H
*
* OS/2 Presentation Manager GPI constants, types and function declarations
*
* Copyright (c) 1987 IBM Corporation
* Copyright (c) 1987 Microsoft Corporation
*
* =============================================================================
*
* The following symbols are used in this file for conditional sections.
*
* INCL_GPI Include all of the GPI
* INCL_GPICONTROL Basic PS control
* INCL_GPICORRELATION Picking, Boundary and Correlation
* INCL_GPISEGMENTS Segment Control and Drawing
* INCL_GPISEGEDITING Segment Editing via Elements
* INCL_GPITRANSFORMS Transform and Transform Conversion
* INCL_GPIPATHS Paths and Clipping with Paths
* INCL_GPILOGCOLORTABLE Logical Color Tables
* INCL_GPIPRIMITIVES Drawing Primitives and Primitive Attributes
* INCL_GPILCIDS Phyical and Logical Fonts with Lcids
* INCL_GPIBITMAPS Bitmaps and Pel Operations
* INCL_GPIREGIONS Regions and Clipping with Regions
* INCL_GPIMETAFILES Metafiles
* INCL_GPIERRORS defined if INCL_ERRORS defined
*
* There is a symbol used in this file called INCL_DDIDEFS. This is used to
* include only the definitions for the DDI. The programmer using the GPI
* can ignore this symbol
*
* There is a symbol used in this file called INCL_SAADEFS. This is used to
* include only the definitions for the SAA. The programmer using the GPI
* can ignore this symbol
*
\***************************************************************************/
#ifdef INCL_GPI /* include whole of the GPI */
#define INCL_GPICONTROL
#define INCL_GPICORRELATION
#define INCL_GPISEGMENTS
#define INCL_GPISEGEDITING
#define INCL_GPITRANSFORMS
#define INCL_GPIPATHS
#define INCL_GPILOGCOLORTABLE
#define INCL_GPIPRIMITIVES
#define INCL_GPILCIDS
#define INCL_GPIBITMAPS
#define INCL_GPIREGIONS
#define INCL_GPIMETAFILES
#endif /* INCL_GPI */
#ifdef INCL_ERRORS /* if errors are required then allow GPI errors */
#define INCL_GPIERRORS
#endif /* INCL_ERRORS */
#ifdef INCL_DDIDEFS /* if only DDI required then enable DDI part of GPI */
#define INCL_GPITRANSFORMS
#define INCL_GPIPATHS
#define INCL_GPILOGCOLORTABLE
#define INCL_GPIPRIMITIVES
#define INCL_GPILCIDS
#define INCL_GPIBITMAPS
#define INCL_GPIREGIONS
#define INCL_GPIERRORS
#endif /* INCL_DDIDEFS */
#ifdef INCL_SAADEFS /* if only SAA required then enable SAA part of GPI */
#define INCL_GPICONTROL
#define INCL_GPICORRELATION
#define INCL_GPISEGMENTS
#define INCL_GPITRANSFORMS
#define INCL_GPIPRIMITIVES
#define INCL_GPILCIDS
#define INCL_GPIMETAFILES
#define INCL_GPIERRORS
#endif /* INCL_SAADEFS */
/* General GPI return values */
#define GPI_ERROR 0L
#define GPI_OK 1L
#define GPI_ALTERROR (-1L)
/* fixed point number - implicit binary point between 2 and 3 hex digits */
typedef LONG FIXED; /* fx */
typedef FIXED FAR *PFIXED;
/* make FIXED number from SHORT integer part and USHORT fractional part */
#define MAKEFIXED(intpart,fractpart) MAKELONG(fractpart,intpart)
/* extract fractional part from a fixed quantity */
#define FIXEDFRAC(fx) (LOUSHORT(fx))
/* extract integer part from a fixed quantity */
#define FIXEDINT(fx) ((SHORT)HIUSHORT(fx))
/* structure for size parameters e.g. for GpiCreatePS */
typedef struct _SIZEL { /* sizl */
LONG cx;
LONG cy;
} SIZEL;
typedef SIZEL FAR *PSIZEL;
#ifndef INCL_SAADEFS
/* return code on GpiQueryLogColorTable and GpiQueryPel */
#define CLR_NOINDEX (-254L)
#endif /* no INCL_SAADEFS */
#ifdef INCL_GPICONTROL
/* units for GpiCreatePS and others */
#define PU_ARBITRARY 0x0004L
#define PU_PELS 0x0008L
#define PU_LOMETRIC 0x000CL
#define PU_HIMETRIC 0x0010L
#define PU_LOENGLISH 0x0014L
#define PU_HIENGLISH 0x0018L
#define PU_TWIPS 0x001CL
/* format for GpiCreatePS */
#define GPIF_DEFAULT 0L
#ifndef INCL_SAADEFS
#define GPIF_SHORT 0x0100L
#define GPIF_LONG 0x0200L
#endif /* no INCL_SAADEFS */
/* PS type for GpiCreatePS */
#define GPIT_NORMAL 0L
#ifndef INCL_SAADEFS
#define GPIT_MICRO 0x1000L
#endif /* no INCL_SAADEFS */
/* implicit associate flag for GpiCreatePS */
#define GPIA_NOASSOC 0L
#define GPIA_ASSOC 0x4000L
#ifndef INCL_SAADEFS
/* return error for GpiQueryDevice */
#define HDC_ERROR ((HDC)-1L)
#endif /* no INCL_SAADEFS */
/*** common GPICONTROL functions */
HPS APIENTRY GpiCreatePS( HAB, HDC, PSIZEL, ULONG );
BOOL APIENTRY GpiDestroyPS( HPS );
BOOL APIENTRY GpiAssociate( HPS, HDC );
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiRestorePS( HPS, LONG );
LONG APIENTRY GpiSavePS( HPS );
BOOL APIENTRY GpiErase( HPS );
HDC APIENTRY GpiQueryDevice( HPS );
#endif /* no INCL_SAADEFS */
#endif /* common GPICONTROL */
#ifdef INCL_GPICONTROL
/* options for GpiResetPS */
#define GRES_ATTRS 0x0001L
#define GRES_SEGMENTS 0x0002L
#define GRES_ALL 0x0004L
/* option masks for PS options used by GpiQueryPs */
#define PS_UNITS 0x00FCL
#define PS_FORMAT 0x0F00L
#define PS_TYPE 0x1000L
#define PS_MODE 0x2000L
#define PS_ASSOCIATE 0x4000L
#ifndef INCL_SAADEFS
/* error context returned by GpiErrorSegmentData */
#define GPIE_SEGMENT 0L
#define GPIE_ELEMENT 1L
#define GPIE_DATA 2L
/* control parameter for GpiSetDrawControl */
#define DCTL_ERASE 1L
#define DCTL_DISPLAY 2L
#define DCTL_BOUNDARY 3L
#define DCTL_DYNAMIC 4L
#define DCTL_CORRELATE 5L
/* constants for GpiSet/QueryDrawControl */
#define DCTL_ERROR -1L
#define DCTL_OFF 0L
#define DCTL_ON 1L
/* constants for GpiSet/QueryStopDraw */
#define SDW_ERROR -1L
#define SDW_OFF 0L
#define SDW_ON 1L
/* drawing for GpiSet/QueryDrawingMode */
#define DM_ERROR 0L
#define DM_DRAW 1L
#define DM_RETAIN 2L
#define DM_DRAWANDRETAIN 3L
#endif /* no INCL_SAADEFS */
/*** other GPICONTROL functions */
BOOL APIENTRY GpiResetPS( HPS, ULONG );
BOOL APIENTRY GpiSetPS( HPS, PSIZEL, ULONG );
ULONG APIENTRY GpiQueryPS( HPS, PSIZEL );
#ifndef INCL_SAADEFS
LONG APIENTRY GpiErrorSegmentData( HPS, PLONG, PLONG );
LONG APIENTRY GpiQueryDrawControl( HPS, LONG );
BOOL APIENTRY GpiSetDrawControl( HPS, LONG, LONG );
LONG APIENTRY GpiQueryDrawingMode( HPS );
BOOL APIENTRY GpiSetDrawingMode( HPS, LONG );
LONG APIENTRY GpiQueryStopDraw( HPS );
BOOL APIENTRY GpiSetStopDraw( HPS, LONG );
#endif /* no INCL_SAADEFS */
#endif /* non-common GPICONTROL */
#ifdef INCL_GPICORRELATION
/* options for GpiSetPickApertureSize */
#define PICKAP_DEFAULT 0L
#define PICKAP_REC 2L
/* type of correlation for GpiCorrelateChain */
#define PICKSEL_VISIBLE 0L
#define PICKSEL_ALL 1L
#ifndef INCL_SAADEFS
/* return code to indicate correlate hit(s) */
#define GPI_HITS 2L
#endif /* no INCL_SAADEFS */
/*** picking, correlation and boundary functions */
LONG APIENTRY GpiCorrelateChain( HPS, LONG, PPOINTL, LONG, LONG, PLONG );
BOOL APIENTRY GpiQueryTag( HPS, PLONG );
BOOL APIENTRY GpiSetTag( HPS, LONG );
BOOL APIENTRY GpiQueryPickApertureSize( HPS, PSIZEL );
BOOL APIENTRY GpiSetPickApertureSize( HPS, LONG, PSIZEL );
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiQueryPickAperturePosition( HPS, PPOINTL );
BOOL APIENTRY GpiSetPickAperturePosition( HPS, PPOINTL );
BOOL APIENTRY GpiQueryBoundaryData( HPS, PRECTL );
BOOL APIENTRY GpiResetBoundaryData( HPS );
LONG APIENTRY GpiCorrelateFrom( HPS, LONG, LONG, LONG, PPOINTL
, LONG, LONG, PLONG );
LONG APIENTRY GpiCorrelateSegment( HPS, LONG, LONG, PPOINTL
, LONG, LONG, PLONG );
#endif /* no INCL_SAADEFS */
#endif /* non-common_GPICORRELATION */
#ifdef INCL_GPISEGMENTS
/* data formats for GpiPutData and GpiGetData */
#define DFORM_NOCONV 0L
#ifndef INCL_SAADEFS
#define DFORM_S370SHORT 1L
#define DFORM_PCSHORT 2L
#define DFORM_PCLONG 4L
#endif /* no INCL_SAADEFS */
/* segment attributes used by GpiSet/QuerySegmentAttrs and others */
#define ATTR_ERROR (-1L)
#define ATTR_DETECTABLE 1L
#define ATTR_VISIBLE 2L
#define ATTR_CHAINED 6L
#ifndef INCL_SAADEFS
#define ATTR_DYNAMIC 8L
#define ATTR_FASTCHAIN 9L
#define ATTR_PROP_DETECTABLE 10L
#define ATTR_PROP_VISIBLE 11L
#endif /* no INCL_SAADEFS */
/* attribute on/off values */
#define ATTR_OFF 0L
#define ATTR_ON 1L
/* segment priority used by GpiSetSegmentPriority and others */
#define LOWER_PRI (-1L)
#define HIGHER_PRI 1L
/*** segment control functions */
BOOL APIENTRY GpiOpenSegment( HPS, LONG );
BOOL APIENTRY GpiCloseSegment( HPS );
BOOL APIENTRY GpiDeleteSegment( HPS, LONG );
LONG APIENTRY GpiQueryInitialSegmentAttrs( HPS, LONG );
BOOL APIENTRY GpiSetInitialSegmentAttrs( HPS, LONG, LONG );
LONG APIENTRY GpiQuerySegmentAttrs( HPS, LONG, LONG );
BOOL APIENTRY GpiSetSegmentAttrs( HPS, LONG, LONG, LONG );
LONG APIENTRY GpiQuerySegmentPriority( HPS, LONG, LONG );
BOOL APIENTRY GpiSetSegmentPriority( HPS, LONG, LONG, LONG );
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiDeleteSegments( HPS, LONG, LONG );
LONG APIENTRY GpiQuerySegmentNames( HPS, LONG, LONG, LONG, PLONG );
#endif /* no INCL_SAADEFS */
/*** draw functions for segments */
LONG APIENTRY GpiGetData( HPS, LONG, PLONG, LONG, LONG, PBYTE );
LONG APIENTRY GpiPutData( HPS, LONG, PLONG, PBYTE );
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiDrawChain( HPS );
BOOL APIENTRY GpiDrawFrom( HPS, LONG, LONG );
BOOL APIENTRY GpiDrawSegment( HPS, LONG );
BOOL APIENTRY GpiDrawDynamics( HPS );
BOOL APIENTRY GpiRemoveDynamics( HPS, LONG, LONG );
#endif /* no INCL_SAADEFS */
#endif /* non-common GPISEGMENTS */
#ifdef INCL_GPISEGEDITING
/* edit modes used by GpiSet/QueryEditMode */
#define SEGEM_ERROR 0L
#define SEGEM_INSERT 1L
#define SEGEM_REPLACE 2L
/*** segment editing by element functions */
BOOL APIENTRY GpiBeginElement( HPS, LONG, PSZ );
BOOL APIENTRY GpiEndElement( HPS );
BOOL APIENTRY GpiLabel( HPS, LONG );
LONG APIENTRY GpiElement( HPS, LONG, PSZ, LONG, PBYTE );
LONG APIENTRY GpiQueryElement( HPS, LONG, LONG, PBYTE );
BOOL APIENTRY GpiDeleteElement( HPS );
BOOL APIENTRY GpiDeleteElementRange( HPS, LONG, LONG );
BOOL APIENTRY GpiDeleteElementsBetweenLabels( HPS, LONG, LONG );
LONG APIENTRY GpiQueryEditMode( HPS );
BOOL APIENTRY GpiSetEditMode( HPS, LONG );
LONG APIENTRY GpiQueryElementPointer( HPS );
BOOL APIENTRY GpiSetElementPointer( HPS, LONG );
BOOL APIENTRY GpiOffsetElementPointer( HPS, LONG );
LONG APIENTRY GpiQueryElementType( HPS, PLONG, LONG, PSZ );
BOOL APIENTRY GpiSetElementPointerAtLabel( HPS, LONG );
#endif /* non-common GPISEGEDITING */
#ifdef INCL_GPITRANSFORMS
#ifndef INCL_SAADEFS
/* co-ordinates space for GpiConvert */
#define CVTC_WORLD 1L
#define CVTC_MODEL 2L
#define CVTC_DEFAULTPAGE 3L
#define CVTC_PAGE 4L
#define CVTC_DEVICE 5L
#endif /* no INCL_SAADEFS */
/* type of transformation for GpiSetSegmentTransformMatrix */
#define TRANSFORM_REPLACE 0L
#define TRANSFORM_ADD 1L
#define TRANSFORM_PREEMPT 2L
/* transform matrix */
typedef struct _MATRIXLF { /* matlf */
FIXED fxM11;
FIXED fxM12;
LONG lM13;
FIXED fxM21;
FIXED fxM22;
LONG lM23;
LONG lM31;
LONG lM32;
LONG lM33;
} MATRIXLF;
typedef MATRIXLF FAR *PMATRIXLF;
#ifndef INCL_DDIDEFS
/*** transform and transform conversion functions */
BOOL APIENTRY GpiQuerySegmentTransformMatrix( HPS, LONG, LONG, PMATRIXLF );
BOOL APIENTRY GpiSetSegmentTransformMatrix( HPS, LONG, LONG, PMATRIXLF, LONG );
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiConvert( HPS, LONG, LONG, LONG, PPOINTL );
BOOL APIENTRY GpiQueryModelTransformMatrix( HPS, LONG, PMATRIXLF );
BOOL APIENTRY GpiSetModelTransformMatrix( HPS, LONG, PMATRIXLF, LONG );
LONG APIENTRY GpiCallSegmentMatrix( HPS, LONG, LONG, PMATRIXLF, LONG );
BOOL APIENTRY GpiQueryDefaultViewMatrix( HPS, LONG, PMATRIXLF );
BOOL APIENTRY GpiSetDefaultViewMatrix( HPS, LONG, PMATRIXLF, LONG );
BOOL APIENTRY GpiQueryPageViewport( HPS, PRECTL );
BOOL APIENTRY GpiSetPageViewport( HPS, PRECTL );
BOOL APIENTRY GpiQueryViewingTransformMatrix( HPS, LONG, PMATRIXLF );
BOOL APIENTRY GpiSetViewingTransformMatrix( HPS, LONG, PMATRIXLF, LONG );
#endif /* no INCL_SAADEFS */
/*** general clipping functions */
BOOL APIENTRY GpiSetGraphicsField( HPS, PRECTL );
BOOL APIENTRY GpiQueryGraphicsField( HPS, PRECTL );
BOOL APIENTRY GpiSetViewingLimits( HPS, PRECTL );
BOOL APIENTRY GpiQueryViewingLimits( HPS, PRECTL );
#endif /* no INCL_DDIDEFS */
#endif /* non-common GPITRANSFORMS */
#ifdef INCL_GPIPATHS
#ifndef INCL_SAADEFS
/* modes for GpiModifyPath */
#define MPATH_STROKE 6L
/* modes for GpiFillPath */
#define FPATH_ALTERNATE 0L
#define FPATH_WINDING 2L
/* modes for GpiSetClipPath */
#define SCP_ALTERNATE 0L
#define SCP_WINDING 2L
#define SCP_AND 4L
#define SCP_RESET 0L
#ifndef INCL_DDIDEFS
/*** Path and Clip Path functions */
BOOL APIENTRY GpiBeginPath( HPS, LONG );
BOOL APIENTRY GpiEndPath( HPS );
BOOL APIENTRY GpiCloseFigure( HPS );
BOOL APIENTRY GpiModifyPath( HPS, LONG, LONG );
LONG APIENTRY GpiFillPath( HPS, LONG, LONG );
BOOL APIENTRY GpiSetClipPath( HPS, LONG, LONG );
LONG APIENTRY GpiStrokePath( HPS, LONG, ULONG );
#endif /* no INCL_DDIDEFS */
#endif /* no INCL_SAADEFS */
#endif /* non-common GPIPATHS */
#ifdef INCL_GPILOGCOLORTABLE
#ifndef INCL_SAADEFS
/* options for GpiCreateLogColorTable and others */
#define LCOL_RESET 0x0001L
#define LCOL_REALIZABLE 0x0002L
#define LCOL_PURECOLOR 0x0004L
/* format of logical lColor table for GpiCreateLogColorTable and others */
#define LCOLF_DEFAULT 0L
#define LCOLF_INDRGB 1L
#define LCOLF_CONSECRGB 2L
#define LCOLF_RGB 3L
/* options for GpiQueryRealColors and others */
#define LCOLOPT_REALIZED 0x0001L
#define LCOLOPT_INDEX 0x0002L
/* return codes from GpiQueryLogColorTable to indicate it is in RGB mode */
#define QLCT_ERROR (-1L)
#define QLCT_RGB (-2L)
/* GpiQueryLogColorTable index returned for colors not explicitly loaded */
#define QLCT_NOTLOADED (-1L)
/* return code on GpiQueryRealColours */
#define QRC_NOINDEX (-254L)
/* return codes for GpiQueryColorData */
#define QCD_LCT_FORMAT 0L
#define QCD_LCT_LOINDEX 1L
#define QCD_LCT_HIINDEX 2L
#ifndef INCL_DDIDEFS
/*** logical lColor table functions */
BOOL APIENTRY GpiCreateLogColorTable( HPS, ULONG, LONG, LONG, LONG, PLONG );
BOOL APIENTRY GpiRealizeColorTable( HPS );
BOOL APIENTRY GpiUnrealizeColorTable( HPS );
BOOL APIENTRY GpiQueryColorData( HPS, LONG, PLONG );
LONG APIENTRY GpiQueryLogColorTable( HPS, ULONG, LONG, LONG, PLONG );
LONG APIENTRY GpiQueryRealColors( HPS, ULONG, LONG, LONG, PLONG );
LONG APIENTRY GpiQueryNearestColor( HPS, ULONG, LONG );
LONG APIENTRY GpiQueryColorIndex( HPS, ULONG, LONG );
LONG APIENTRY GpiQueryRGBColor( HPS, ULONG, LONG );
#endif /* no INCL_DDIDEFS */
#endif /* no INCL_SAADEFS */
#endif /* non-common GPILOGCOLORTABLE */
#ifdef INCL_GPIPRIMITIVES
/* default color table indices */
#ifndef INCL_SAADEFS
#define CLR_FALSE (-5L)
#define CLR_TRUE (-4L)
#endif /* no INCL_SAADEFS */
#define CLR_ERROR (-255L)
#define CLR_DEFAULT (-3L)
#define CLR_WHITE (-2L)
#define CLR_BLACK (-1L)
#define CLR_BACKGROUND 0L
#define CLR_BLUE 1L
#define CLR_RED 2L
#define CLR_PINK 3L
#define CLR_GREEN 4L
#define CLR_CYAN 5L
#define CLR_YELLOW 6L
#define CLR_NEUTRAL 7L
#ifndef INCL_SAADEFS
#define CLR_DARKGRAY 8L
#define CLR_PALEBLUE 9L
#define CLR_PALERED 10L
#define CLR_PALEPINK 11L
#define CLR_DARKGREEN 12L
#define CLR_DARKCYAN 13L
#define CLR_BROWN 14L
#define CLR_PALEGRAY 15L
/* rgb colors */
#define RGB_ERROR (-255L)
#define RGB_BLACK 0x00000000L
#define RGB_BLUE 0x000000FFL
#define RGB_GREEN 0x0000FF00L
#define RGB_CYAN 0x0000FFFFL
#define RGB_RED 0x00FF0000L
#define RGB_PINK 0x00FF00FFL
#define RGB_YELLOW 0x00FFFF00L
#define RGB_WHITE 0x00FFFFFFL
#endif /* no INCL_SAADEFS */
/* control flags used by GpiBeginArea */
#define BA_NOBOUNDARY 0L
#define BA_BOUNDARY 0x0001L
#ifndef INCL_SAADEFS
#define BA_ALTERNATE 0L
#define BA_WINDING 0x0002L
/* fill options for GpiBox/GpiFullArc */
#define DRO_FILL 1L
#define DRO_OUTLINE 2L
#define DRO_OUTLINEFILL 3L
#endif /* no INCL_SAADEFS */
/* basic pattern symbols */
#define PATSYM_ERROR (-1L)
#define PATSYM_DEFAULT 0L
#define PATSYM_DENSE1 1L
#define PATSYM_DENSE2 2L
#define PATSYM_DENSE3 3L
#define PATSYM_DENSE4 4L
#define PATSYM_DENSE5 5L
#define PATSYM_DENSE6 6L
#define PATSYM_DENSE7 7L
#define PATSYM_DENSE8 8L
#define PATSYM_VERT 9L
#define PATSYM_HORIZ 10L
#define PATSYM_DIAG1 11L
#define PATSYM_DIAG2 12L
#define PATSYM_DIAG3 13L
#define PATSYM_DIAG4 14L
#define PATSYM_NOSHADE 15L
#define PATSYM_SOLID 16L
#define PATSYM_BLANK 64L
#ifndef INCL_SAADEFS
#define PATSYM_HALFTONE 17L
#endif /* no INCL_SAADEFS */
/* lcid values for GpiSet/QueryPattern and others */
#define LCID_ERROR (-1L)
#define LCID_DEFAULT 0L
#ifndef INCL_DDIDEFS
/*** global primitive functions */
BOOL APIENTRY GpiSetColor( HPS, LONG );
LONG APIENTRY GpiQueryColor( HPS );
/*** line primitive functions */
#ifndef INCL_SAADEFS
LONG APIENTRY GpiBox( HPS, LONG, PPOINTL, LONG, LONG );
#endif /* no INCL_SAADEFS */
BOOL APIENTRY GpiMove( HPS, PPOINTL );
LONG APIENTRY GpiLine( HPS, PPOINTL );
LONG APIENTRY GpiPolyLine( HPS, LONG, PPOINTL );
/*** area primitive functions */
BOOL APIENTRY GpiSetPattern( HPS, LONG );
LONG APIENTRY GpiQueryPattern( HPS );
BOOL APIENTRY GpiBeginArea( HPS, ULONG );
LONG APIENTRY GpiEndArea( HPS );
/*** character primitive functions */
LONG APIENTRY GpiCharString( HPS, LONG, PCH );
LONG APIENTRY GpiCharStringAt( HPS, PPOINTL, LONG, PCH );
#endif /* no INCL_DDIDEFS */
#endif /* common GPIPRIMTIVES */
#ifdef INCL_GPIPRIMITIVES
/* mode for GpiSetAttrMode */
#define AM_ERROR (-1L)
#define AM_PRESERVE 0L
#define AM_NOPRESERVE 1L
/* foreground mixes */
#define FM_ERROR (-1L)
#define FM_DEFAULT 0L
#define FM_OR 1L
#define FM_OVERPAINT 2L
#define FM_LEAVEALONE 5L
#ifndef INCL_SAADEFS
#define FM_XOR 4L
#define FM_AND 6L
#define FM_SUBTRACT 7L
#define FM_MASKSRCNOT 8L
#define FM_ZERO 9L
#define FM_NOTMERGESRC 10L
#define FM_NOTXORSRC 11L
#define FM_INVERT 12L
#define FM_MERGESRCNOT 13L
#define FM_NOTCOPYSRC 14L
#define FM_MERGENOTSRC 15L
#define FM_NOTMASKSRC 16L
#define FM_ONE 17L
#endif /* no INCL_SAADEFS */
/* background mixes */
#define BM_ERROR (-1L)
#define BM_DEFAULT 0L
#define BM_OVERPAINT 2L
#define BM_LEAVEALONE 5L
#ifndef INCL_SAADEFS
#define BM_OR 1L
#define BM_XOR 4L
#endif /* no INCL_SAADEFS */
/* basic line type styles */
#define LINETYPE_ERROR (-1L)
#define LINETYPE_DEFAULT 0L
#define LINETYPE_DOT 1L
#define LINETYPE_SHORTDASH 2L
#define LINETYPE_DASHDOT 3L
#define LINETYPE_DOUBLEDOT 4L
#define LINETYPE_LONGDASH 5L
#define LINETYPE_DASHDOUBLEDOT 6L
#define LINETYPE_SOLID 7L
#define LINETYPE_INVISIBLE 8L
#ifndef INCL_SAADEFS
#define LINETYPE_ALTERNATE 9L
#endif /* no INCL_SAADEFS */
/* cosmetic line widths */
#define LINEWIDTH_ERROR (-1L)
#define LINEWIDTH_DEFAULT 0L
#define LINEWIDTH_NORMAL 0x00010000L /* MAKEFIXED(1,0) */
#ifndef INCL_SAADEFS
/* actual line widths */
#define LINEWIDTHGEOM_ERROR (-1L)
/* line end styles */
#define LINEEND_ERROR (-1L)
#define LINEEND_DEFAULT 0L
#define LINEEND_FLAT 1L
#define LINEEND_SQUARE 2L
#define LINEEND_ROUND 3L
/* line join styles */
#define LINEJOIN_ERROR (-1L)
#define LINEJOIN_DEFAULT 0L
#define LINEJOIN_BEVEL 1L
#define LINEJOIN_ROUND 2L
#define LINEJOIN_MITRE 3L
#endif /* no INCL_SAADEFS */
/* charaction directions */
#define CHDIRN_ERROR (-1L)
#define CHDIRN_DEFAULT 0L
#define CHDIRN_LEFTRIGHT 1L
#define CHDIRN_TOPBOTTOM 2L
#define CHDIRN_RIGHTLEFT 3L
#define CHDIRN_BOTTOMTOP 4L
/* character modes */
#define CM_ERROR (-1L)
#define CM_DEFAULT 0L
#define CM_MODE1 1L
#define CM_MODE2 2L
#define CM_MODE3 3L
/* basic marker symbols */
#define MARKSYM_ERROR (-1L)
#define MARKSYM_DEFAULT 0L
#define MARKSYM_CROSS 1L
#define MARKSYM_PLUS 2L
#define MARKSYM_DIAMOND 3L
#define MARKSYM_SQUARE 4L
#define MARKSYM_SIXPOINTSTAR 5L
#define MARKSYM_EIGHTPOINTSTAR 6L
#define MARKSYM_SOLIDDIAMOND 7L
#define MARKSYM_SOLIDSQUARE 8L
#define MARKSYM_DOT 9L
#define MARKSYM_SMALLCIRCLE 10L
#define MARKSYM_BLANK 64L
#ifndef INCL_SAADEFS
/* formatting options for GpiCharStringPosAt */
#define CHS_OPAQUE 0x0001L
#define CHS_VECTOR 0x0002L
#define CHS_LEAVEPOS 0x0008L
#define CHS_CLIP 0x0010L
/* bundle codes for GpiSetAttributes and GpiQueryAttributes */
#define PRIM_LINE 1L
#define PRIM_CHAR 2L
#define PRIM_MARKER 3L
#define PRIM_AREA 4L
#define PRIM_IMAGE 5L
/* line bundle mask bits */
#define LBB_COLOR 0x0001L
#define LBB_MIX_MODE 0x0004L
#define LBB_WIDTH 0x0010L
#define LBB_GEOM_WIDTH 0x0020L
#define LBB_TYPE 0x0040L
#define LBB_END 0x0080L
#define LBB_JOIN 0x0100L
/* character bundle mask bits */
#define CBB_COLOR 0x0001L
#define CBB_BACK_COLOR 0x0002L
#define CBB_MIX_MODE 0x0004L
#define CBB_BACK_MIX_MODE 0x0008L
#define CBB_SET 0x0010L
#define CBB_MODE 0x0020L
#define CBB_BOX 0x0040L
#define CBB_ANGLE 0x0080L
#define CBB_SHEAR 0x0100L
#define CBB_DIRECTION 0x0200L
/* marker bundle mask bits */
#define MBB_COLOR 0x0001L
#define MBB_BACK_COLOR 0x0002L
#define MBB_MIX_MODE 0x0004L
#define MBB_BACK_MIX_MODE 0x0008L
#define MBB_SET 0x0010L
#define MBB_SYMBOL 0x0020L
#define MBB_BOX 0x0040L
/* pattern bundle mask bits */
#define ABB_COLOR 0x0001L
#define ABB_BACK_COLOR 0x0002L
#define ABB_MIX_MODE 0x0004L
#define ABB_BACK_MIX_MODE 0x0008L
#define ABB_SET 0x0010L
#define ABB_SYMBOL 0x0020L
#define ABB_REF_POINT 0x0040L
/* image bundle mask bits */
#define IBB_COLOR 0x0001L
#define IBB_BACK_COLOR 0x0002L
#define IBB_MIX_MODE 0x0004L
#define IBB_BACK_MIX_MODE 0x0008L
/* structure for GpiSetArcParams and GpiQueryArcParams */
typedef struct _ARCPARAMS { /* arcp */
LONG lP;
LONG lQ;
LONG lR;
LONG lS;
} ARCPARAMS;
typedef ARCPARAMS FAR *PARCPARAMS;
#endif /* no INCL_SAADEFS */
/* variation of SIZE used for FIXEDs */
typedef struct _SIZEF { /* sizfx */
FIXED cx;
FIXED cy;
} SIZEF;
typedef SIZEF FAR *PSIZEF;
/* structure for gradient parameters e.g. for GpiSetCharAngle */
typedef struct _GRADIENTL { /* gradl */
LONG x;
LONG y;
} GRADIENTL;
typedef GRADIENTL FAR *PGRADIENTL;
#ifndef INCL_SAADEFS
/* line bundle for GpiSetAttributes and GpiQueryAttributes */
typedef struct _LINEBUNDLE { /* lbnd */
LONG lColor;
LONG lReserved;
USHORT usMixMode;
USHORT usReserved;
FIXED fxWidth;
LONG lGeomWidth;
USHORT usType;
USHORT usEnd;
USHORT usJoin;
} LINEBUNDLE;
/* character bundle for GpiSetAttributes and GpiQueryAttributes */
typedef struct _CHARBUNDLE { /* cbnd */
LONG lColor;
LONG lBackColor;
USHORT usMixMode;
USHORT usBackMixMode;
USHORT usSet;
USHORT usPrecision;
SIZEF sizfxCell;
POINTL ptlAngle;
POINTL ptlShear;
USHORT usDirection;
} CHARBUNDLE;
/* marker bundle for GpiSetAttributes and GpiQueryAttributes */
typedef struct _MARKERBUNDLE { /* mbnd */
LONG lColor;
LONG lBackColor;
USHORT usMixMode;
USHORT usBackMixMode;
USHORT usSet;
USHORT usSymbol;
SIZEF sizfxCell;
} MARKERBUNDLE;
/* pattern bundle for GpiSetAttributes and GpiQueryAttributes */
typedef struct _AREABUNDLE { /* pbnd */
LONG lColor;
LONG lBackColor;
USHORT usMixMode;
USHORT usBackMixMode;
USHORT usSet;
USHORT usSymbol;
POINTL ptlRefPoint ;
} AREABUNDLE;
/* image bundle for GpiSetAttributes and GpiQueryAttributes */
typedef struct _IMAGEBUNDLE { /* ibmd */
LONG lColor;
LONG lBackColor;
USHORT usMixMode;
USHORT usBackMixMode;
} IMAGEBUNDLE;
/* pointer to any bundle used by GpiSet/QueryAttrs */
typedef PVOID PBUNDLE;
/* array indices for GpiQueryTextBox */
#define TXTBOX_TOPLEFT 0L
#define TXTBOX_BOTTOMLEFT 1L
#define TXTBOX_TOPRIGHT 2L
#define TXTBOX_BOTTOMRIGHT 3L
#define TXTBOX_CONCAT 4L
/* array count for GpiQueryTextBox */
#define TXTBOX_COUNT 5L
/* return codes for GpiPtVisible */
#define PVIS_ERROR 0L
#define PVIS_INVISIBLE 1L
#define PVIS_VISIBLE 2L
/* return codes for GpiRectVisible */
#define RVIS_ERROR 0L
#define RVIS_INVISIBLE 1L
#define RVIS_PARTIAL 2L
#define RVIS_VISIBLE 3L
#endif /* no INCL_SAADEFS */
#ifndef INCL_DDIDEFS
/*** attribute mode functions */
BOOL APIENTRY GpiSetAttrMode( HPS, LONG );
LONG APIENTRY GpiQueryAttrMode( HPS );
/*** bundle primitive functions */
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiSetAttrs( HPS, LONG, ULONG, ULONG, PBUNDLE );
LONG APIENTRY GpiQueryAttrs( HPS, LONG, ULONG, PBUNDLE );
#endif /* no INCL_SAADEFS */
/*** global primitive functions */
BOOL APIENTRY GpiSetBackColor( HPS, LONG );
LONG APIENTRY GpiQueryBackColor( HPS );
BOOL APIENTRY GpiSetMix( HPS, LONG );
LONG APIENTRY GpiQueryMix( HPS );
BOOL APIENTRY GpiSetBackMix( HPS, LONG );
LONG APIENTRY GpiQueryBackMix( HPS );
/*** line primitive functions */
BOOL APIENTRY GpiSetLineType( HPS, LONG );
LONG APIENTRY GpiQueryLineType( HPS );
BOOL APIENTRY GpiSetLineWidth( HPS, FIXED );
FIXED APIENTRY GpiQueryLineWidth( HPS );
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiSetLineWidthGeom( HPS, LONG );
LONG APIENTRY GpiQueryLineWidthGeom( HPS );
BOOL APIENTRY GpiSetLineEnd( HPS, LONG );
LONG APIENTRY GpiQueryLineEnd( HPS );
BOOL APIENTRY GpiSetLineJoin( HPS, LONG );
LONG APIENTRY GpiQueryLineJoin( HPS );
#endif /* no INCL_SAADEFS */
BOOL APIENTRY GpiSetCurrentPosition( HPS, PPOINTL );
BOOL APIENTRY GpiQueryCurrentPosition( HPS, PPOINTL );
/*** arc primitive functions */
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiSetArcParams( HPS, PARCPARAMS );
BOOL APIENTRY GpiQueryArcParams( HPS, PARCPARAMS );
LONG APIENTRY GpiPointArc( HPS, PPOINTL );
LONG APIENTRY GpiFullArc( HPS, LONG, FIXED );
LONG APIENTRY GpiPartialArc( HPS, PPOINTL, FIXED, FIXED, FIXED );
LONG APIENTRY GpiPolyFilletSharp( HPS, LONG, PPOINTL, PFIXED );
LONG APIENTRY GpiPolySpline( HPS, LONG, PPOINTL );
#endif /* no INCL_SAADEFS */
LONG APIENTRY GpiPolyFillet( HPS, LONG, PPOINTL );
/*** area primitive functions */
BOOL APIENTRY GpiSetPatternSet( HPS, LONG );
LONG APIENTRY GpiQueryPatternSet( HPS );
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiSetPatternRefPoint( HPS, PPOINTL );
BOOL APIENTRY GpiQueryPatternRefPoint( HPS, PPOINTL );
#endif /* no INCL_SAADEFS */
/*** character primitive functions */
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiQueryCharStringPos( HPS, ULONG, LONG, PCH, PLONG, PPOINTL );
BOOL APIENTRY GpiQueryCharStringPosAt( HPS, PPOINTL, ULONG, LONG, PCH, PLONG, PPOINTL );
#endif /* no INCL_SAADEFS */
BOOL APIENTRY GpiQueryTextBox( HPS, LONG, PCH, LONG, PPOINTL );
BOOL APIENTRY GpiQueryDefCharBox( HPS, PSIZEL );
BOOL APIENTRY GpiSetCharSet( HPS, LONG );
LONG APIENTRY GpiQueryCharSet( HPS );
BOOL APIENTRY GpiSetCharBox( HPS, PSIZEF );
BOOL APIENTRY GpiQueryCharBox( HPS, PSIZEF );
BOOL APIENTRY GpiSetCharAngle( HPS, PGRADIENTL );
BOOL APIENTRY GpiQueryCharAngle( HPS, PGRADIENTL );
BOOL APIENTRY GpiSetCharShear( HPS, PPOINTL );
BOOL APIENTRY GpiQueryCharShear( HPS, PPOINTL );
BOOL APIENTRY GpiSetCharDirection( HPS, LONG );
LONG APIENTRY GpiQueryCharDirection( HPS );
BOOL APIENTRY GpiSetCharMode( HPS, LONG );
LONG APIENTRY GpiQueryCharMode( HPS );
#ifndef INCL_SAADEFS
LONG APIENTRY GpiCharStringPos( HPS, PRECTL, ULONG, LONG, PCH, PLONG );
LONG APIENTRY GpiCharStringPosAt( HPS, PPOINTL, PRECTL
, ULONG, LONG, PCH ,PLONG );
#endif /* no INCL_SAADEFS */
/*** marker primitive functions */
BOOL APIENTRY GpiSetMarkerSet( HPS, LONG );
LONG APIENTRY GpiQueryMarkerSet( HPS );
BOOL APIENTRY GpiSetMarker( HPS, LONG );
LONG APIENTRY GpiQueryMarker( HPS );
BOOL APIENTRY GpiSetMarkerBox( HPS, PSIZEF );
BOOL APIENTRY GpiQueryMarkerBox( HPS, PSIZEF );
LONG APIENTRY GpiMarker( HPS, PPOINTL );
LONG APIENTRY GpiPolyMarker( HPS, LONG, PPOINTL );
/*** image primitive functions */
LONG APIENTRY GpiImage( HPS, LONG, PSIZEL, LONG, PBYTE );
/*** micellaneous primitive functions */
BOOL APIENTRY GpiPop( HPS, LONG );
#ifndef INCL_SAADEFS
LONG APIENTRY GpiPtVisible( HPS, PPOINTL );
LONG APIENTRY GpiRectVisible( HPS, PRECTL );
BOOL APIENTRY GpiComment( HPS, LONG, PBYTE );
#endif /* no INCL_SAADEFS */
#endif /* no INCL_DDIDEFS */
#endif /* non-common GPIPRIMITIVES */
#ifdef INCL_GPILCIDS
/* lcid type for GpiQuerySetIds */
#define LCIDT_FONT 6L
#ifndef INCL_SAADEFS
#define LCIDT_BITMAP 7L
/* constant used to delete all lcids by GpiDeleteSetId */
#define LCID_ALL (-1L)
#endif /* no INCL_SAADEFS */
/* kerning data returned by GpiQueryKerningPairs */
typedef struct _KERNINGPAIRS { /* krnpr */
SHORT sFirstChar;
SHORT sSecondChar;
SHORT sKerningAmount;
} KERNINGPAIRS;
typedef KERNINGPAIRS FAR *PKERNINGPAIRS;
#ifndef INCL_SAADEFS
/* options for GpiQueryFonts */
#define QF_PUBLIC 0x0001L
#define QF_PRIVATE 0x0002L
/* font file descriptions for GpiQueryFontFileDescriptions */
typedef CHAR FFDESCS[2][FACESIZE]; /* ffdescs */
typedef FFDESCS FAR *PFFDESCS;
#endif /* no INCL_SAADEFS */
#ifndef INCL_DDIDEFS
/*** physical and logical font functions */
BOOL APIENTRY GpiDeleteSetId( HPS, LONG );
LONG APIENTRY GpiQueryNumberSetIds( HPS );
BOOL APIENTRY GpiQuerySetIds( HPS, LONG, PLONG, PSTR8, PLONG );
BOOL APIENTRY GpiLoadFonts( HAB, PSZ );
BOOL APIENTRY GpiUnloadFonts( HAB, PSZ );
LONG APIENTRY GpiCreateLogFont( HPS, PSTR8, LONG, PFATTRS );
LONG APIENTRY GpiQueryFonts( HPS, ULONG, PSZ, PLONG, LONG, PFONTMETRICS );
BOOL APIENTRY GpiQueryFontMetrics( HPS, LONG, PFONTMETRICS );
LONG APIENTRY GpiQueryKerningPairs( HPS, LONG, PKERNINGPAIRS );
BOOL APIENTRY GpiQueryWidthTable( HPS, LONG, LONG, PLONG );
#ifndef INCL_SAADEFS
BOOL APIENTRY GpiSetCp( HPS, USHORT );
USHORT APIENTRY GpiQueryCp( HPS );
LONG APIENTRY GpiQueryFontFileDescriptions( HAB, PSZ, PLONG, PFFDESCS );
#endif /* no INCL_SAADEFS */
#endif /* no INCL_DDIDEFS */
#endif /* non-common GPILCIDS */
#ifdef INCL_GPIBITMAPS
/* rastor operations defined for GpiBitBlt */
#define ROP_SRCCOPY 0x00CCL
#define ROP_SRCPAINT 0x00EEL
#define ROP_SRCAND 0x0088L
#define ROP_SRCINVERT 0x0066L
#define ROP_SRCERASE 0x0044L
#define ROP_NOTSRCCOPY 0x0033L
#define ROP_NOTSRCERASE 0x0011L
#define ROP_MERGECOPY 0x00C0L
#define ROP_MERGEPAINT 0x00BBL
#define ROP_PATCOPY 0x00F0L
#define ROP_PATPAINT 0x00FBL
#define ROP_PATINVERT 0x005AL
#define ROP_DSTINVERT 0x0055L
#define ROP_ZERO 0x0000L
#define ROP_ONE 0x00FFL
/* Blt options for GpiBitBlt */
#define BBO_OR 0L
#define BBO_AND 1L
#define BBO_IGNORE 2L
/* error return for GpiSetBitmap */
#define HBM_ERROR ((HBITMAP)-1L)
#ifndef INCL_DDIDEFS
/*** bitmap and pel functions */
HBITMAP APIENTRY GpiLoadBitmap( HPS, USHORT, USHORT, LONG, LONG );
BOOL APIENTRY GpiDeleteBitmap( HBITMAP );
HBITMAP APIENTRY GpiSetBitmap( HPS, HBITMAP );
LONG APIENTRY GpiBitBlt( HPS, HPS, LONG, PPOINTL, LONG, LONG );
LONG APIENTRY GpiWCBitBlt( HPS, HBITMAP, LONG, PPOINTL, LONG, LONG );
#endif /* no INCL_DDIDEFS */
#endif /* common GPIBITMAPS */
#ifdef INCL_GPIBITMAPS
/* usage flags for GpiCreateBitmap */
#define CBM_INIT 0x0004L
/* bitmap parameterization used by GpiCreateBitmap and others */
typedef struct _BITMAPINFOHEADER { /* bmp */
ULONG cbFix;
USHORT cx;
USHORT cy;
USHORT cPlanes;
USHORT cBitCount;
} BITMAPINFOHEADER;
typedef BITMAPINFOHEADER FAR *PBITMAPINFOHEADER;
/* RGB data for _BITMAPINFO struct */
typedef struct _RGB { /* rgb */
BYTE bBlue;
BYTE bGreen;
BYTE bRed;
} RGB;
/* bitmap data used by GpiSetBitmapBits and others */
typedef struct _BITMAPINFO { /* bmi */
ULONG cbFix;
USHORT cx;
USHORT cy;
USHORT cPlanes;
USHORT cBitCount;
RGB argbColor[1];
} BITMAPINFO;
typedef BITMAPINFO FAR *PBITMAPINFO;
/* error return code for GpiSet/QueryBitmapBits */
#define BMB_ERROR (-1L)
#ifndef INCL_DDIDEFS
/*** bitmap and pel functions */
HBITMAP APIENTRY GpiCreateBitmap( HPS, PBITMAPINFOHEADER
, ULONG, PBYTE, PBITMAPINFO );
BOOL APIENTRY GpiSetBitmapDimension( HBITMAP, PSIZEL );
BOOL APIENTRY GpiQueryBitmapDimension( HBITMAP, PSIZEL );
BOOL APIENTRY GpiQueryDeviceBitmapFormats( HPS, LONG, PLONG );
BOOL APIENTRY GpiQueryBitmapParameters( HBITMAP, PBITMAPINFOHEADER );
LONG APIENTRY GpiQueryBitmapBits( HPS, LONG, LONG, PBYTE, PBITMAPINFO );
LONG APIENTRY GpiSetBitmapBits( HPS, LONG, LONG, PBYTE, PBITMAPINFO );
LONG APIENTRY GpiSetPel( HPS, PPOINTL );
LONG APIENTRY GpiQueryPel( HPS, PPOINTL );
BOOL APIENTRY GpiSetBitmapId( HPS, HBITMAP, LONG );
HBITMAP APIENTRY GpiQueryBitmapHandle( HPS, LONG );
#endif /* no INCL_DDIDEFS */
#endif /* non-common GPIBITMAPS */
#ifdef INCL_GPIREGIONS
/* options for GpiCombineRegion */
#define CRGN_OR 1L
#define CRGN_COPY 2L
#define CRGN_XOR 4L
#define CRGN_AND 6L
#define CRGN_DIFF 7L
/* usDirection of returned region data for GpiQueryRegionRects */
#define RECTDIR_LFRT_TOPBOT 1L
#define RECTDIR_RTLF_TOPBOT 2L
#define RECTDIR_LFRT_BOTTOP 3L
#define RECTDIR_RTLF_BOTTOP 4L
/* control data for GpiQueryRegionRects */
typedef struct _RGNRECT { /* rgnrc */
USHORT ircStart;
USHORT crc;
USHORT crcReturned;
USHORT usDirection;
} RGNRECT;
typedef RGNRECT FAR *PRGNRECT;
/* return code to indicate type of region for GpiCombineRegion and others */
#define RGN_ERROR 0L
#define RGN_NULL 1L
#define RGN_RECT 2L
#define RGN_COMPLEX 3L
/* return codes for GpiPtInRegion */
#define PRGN_ERROR 0L
#define PRGN_OUTSIDE 1L
#define PRGN_INSIDE 2L
/* return codes for GpiRectInRegion */
#define RRGN_ERROR 0L
#define RRGN_OUTSIDE 1L
#define RRGN_PARTIAL 2L
#define RRGN_INSIDE 3L
/* return codes for GpiEqualRegion */
#define EQRGN_ERROR 0L
#define EQRGN_NOTEQUAL 1L
#define EQRGN_EQUAL 2L
/* error return code for GpiSetRegion */
#define HRGN_ERROR ((HRGN)-1L)
#ifndef INCL_DDIDEFS
/*** main region functions */
HRGN APIENTRY GpiCreateRegion( HPS, LONG, PRECTL );
BOOL APIENTRY GpiSetRegion( HPS, HRGN, LONG, PRECTL );
BOOL APIENTRY GpiDestroyRegion( HPS, HRGN );
LONG APIENTRY GpiCombineRegion( HPS, HRGN, HRGN, HRGN, LONG );
LONG APIENTRY GpiEqualRegion( HPS, HRGN, HRGN );
BOOL APIENTRY GpiOffsetRegion( HPS, HRGN, PPOINTL );
LONG APIENTRY GpiPtInRegion( HPS, HRGN, PPOINTL );
LONG APIENTRY GpiRectInRegion( HPS, HRGN, PRECTL );
LONG APIENTRY GpiQueryRegionBox( HPS, HRGN, PRECTL );
BOOL APIENTRY GpiQueryRegionRects( HPS, HRGN, PRECTL, PRGNRECT, PRECTL );
LONG APIENTRY GpiPaintRegion( HPS, HRGN );
/*** clip region functions */
HRGN APIENTRY GpiSetClipRegion( HPS, HRGN );
HRGN APIENTRY GpiQueryClipRegion( HPS );
LONG APIENTRY GpiQueryClipBox( HPS, PRECTL );
LONG APIENTRY GpiIntersectClipRectangle( HPS, PRECTL );
LONG APIENTRY GpiExcludeClipRectangle( HPS, PRECTL );
LONG APIENTRY GpiOffsetClipRegion( HPS, PPOINTL );
#endif /* no INCL_DDIDEFS */
#endif /* non-common GPIREGIONS */
#ifdef INCL_GPIMETAFILES
#ifndef INCL_DDIDEFS
/* options for GpiPlayMetafile */
#define RS_DEFAULT 0L
#define RS_NODISCARD 1L
#define LC_DEFAULT 0L
#define LC_NOLOAD 1L
#define LC_LOADDISC 3L
#define LT_DEFAULT 0L
#define LT_NOMODIFY 1L
#ifndef INCL_SAADEFS
#define LT_ORIGINALVIEW 4L
#define RES_DEFAULT 0L
#define RES_NORESET 1L
#define RES_RESET 2L
#define SUP_DEFAULT 0L
#define SUP_NOSUPPRESS 1L
#define SUP_SUPPRESS 2L
#define CTAB_DEFAULT 0L
#define CTAB_NOMODIFY 1L
#define CTAB_REPLACE 3L
#define CREA_DEFAULT 0L
#define CREA_REALIZE 1L
#define CREA_NOREALIZE 2L
#define RSP_DEFAULT 0L
#define RSP_NODISCARD 1L
#endif /* no INCL_SAADEFS */
/*** metafile functions */
HMF APIENTRY GpiLoadMetaFile( HAB, PSZ );
LONG APIENTRY GpiPlayMetaFile( HPS, HMF, LONG, PLONG, PLONG, LONG, PSZ );
BOOL APIENTRY GpiSaveMetaFile( HMF, PSZ );
BOOL APIENTRY GpiDeleteMetaFile( HMF );
BOOL APIENTRY GpiAccessMetaFile( HMF );
#ifndef INCL_SAADEFS
HMF APIENTRY GpiCopyMetaFile( HMF );
LONG APIENTRY GpiQueryMetaFileLength( HMF );
BOOL APIENTRY GpiQueryMetaFileBits( HMF, LONG, LONG, PBYTE );
BOOL APIENTRY GpiSetMetaFileBits( HMF, LONG, LONG, PBYTE );
#endif /* no INCL_SAADEFS */
#endif /* no INCL_DDIDEFS */
#endif /* non-common GPIMETAFILES */
#ifdef INCL_GPIERRORS
/* AAB error codes for the GPI */
#define PMERR_OK 0x0000
#define PMERR_ALREADY_IN_AREA 0x2001
#define PMERR_ALREADY_IN_ELEMENT 0x2002
#define PMERR_ALREADY_IN_PATH 0x2003
#define PMERR_ALREADY_IN_SEG 0x2004
#define PMERR_AREA_INCOMPLETE 0x2005
#define PMERR_BASE_ERROR 0x2006
#define PMERR_BITBLT_LENGTH_EXCEEDED 0x2007
#define PMERR_BITMAP_IN_USE 0x2008
#define PMERR_BITMAP_IS_SELECTED 0x2009
#define PMERR_BITMAP_NOT_FOUND 0x200A
#define PMERR_BITMAP_NOT_SELECTED 0x200B
#define PMERR_BOUNDS_OVERFLOW 0x200C
#define PMERR_CALLED_SEG_IS_CHAINED 0x200D
#define PMERR_CALLED_SEG_IS_CURRENT 0x200E
#define PMERR_CALLED_SEG_NOT_FOUND 0x200F
#define PMERR_CANNOT_DELETE_ALL_DATA 0x2010
#define PMERR_CANNOT_REPLACE_ELEMENT_0 0x2011
#define PMERR_COL_TABLE_NOT_REALIZABLE 0x2012
#define PMERR_COL_TABLE_NOT_REALIZED 0x2013
#define PMERR_COORDINATE_OVERFLOW 0x2014
#define PMERR_CORR_FORMAT_MISMATCH 0x2015
#define PMERR_DATA_TOO_LONG 0x2016
#define PMERR_DC_IS_ASSOCIATED 0x2017
#define PMERR_DESC_STRING_TRUNCATED 0x2018
#define PMERR_DEVICE_DRIVER_ERROR_1 0x2019
#define PMERR_DEVICE_DRIVER_ERROR_2 0x201A
#define PMERR_DEVICE_DRIVER_ERROR_3 0x201B
#define PMERR_DEVICE_DRIVER_ERROR_4 0x201C
#define PMERR_DEVICE_DRIVER_ERROR_5 0x201D
#define PMERR_DEVICE_DRIVER_ERROR_6 0x201E
#define PMERR_DEVICE_DRIVER_ERROR_7 0x201F
#define PMERR_DEVICE_DRIVER_ERROR_8 0x2020
#define PMERR_DEVICE_DRIVER_ERROR_9 0x2021
#define PMERR_DEVICE_DRIVER_ERROR_10 0x2022
#define PMERR_DOSOPEN_FAILURE 0x2023
#define PMERR_DOSREAD_FAILURE 0x2024
#define PMERR_DRIVER_NOT_FOUND 0x2025
#define PMERR_DUP_SEG 0x2026
#define PMERR_DYNAMIC_SEG_SEQ_ERROR 0x2027
#define PMERR_DYNAMIC_SEG_ZERO_INV 0x2028
#define PMERR_ELEMENT_INCOMPLETE 0x2029
#define PMERR_ESC_CODE_NOT_SUPPORTED 0x202A
#define PMERR_EXCEEDS_MAX_SEG_LENGTH 0x202B
#define PMERR_FONT_AND_MODE_MISMATCH 0x202C
#define PMERR_FONT_FILE_NOT_LOADED 0x202D
#define PMERR_FONT_NOT_LOADED 0x202E
#define PMERR_FONT_TOO_BIG 0x202F
#define PMERR_ID_HAS_NO_BITMAP 0x2030
#define PMERR_IMAGE_INCOMPLETE 0x2031
#define PMERR_INCOMPAT_COLOR_FORMAT 0x2032
#define PMERR_INCOMPAT_COLOR_OPTIONS 0x2033
#define PMERR_INCOMPATIBLE_BITMAP 0x2034
#define PMERR_INCOMPATIBLE_METAFILE 0x2035
#define PMERR_INCORRECT_DC_TYPE 0x2036
#define PMERR_INSUFFICIENT_DISK_SPACE 0x2037
#define PMERR_INSUFFICIENT_MEMORY 0x2038
#define PMERR_INV_ANGLE_PARM 0x2039
#define PMERR_INV_ARC_CONTROL 0x203A
#define PMERR_INV_AREA_CONTROL 0x203B
#define PMERR_INV_ATTR_MODE 0x203C
#define PMERR_INV_BACKGROUND_COL_ATTR 0x203D
#define PMERR_INV_BACKGROUND_MIX_ATTR 0x203E
#define PMERR_INV_BITBLT_MIX 0x203F
#define PMERR_INV_BITBLT_STYLE 0x2040
#define PMERR_INV_BITMAP_DIMENSION 0x2041
#define PMERR_INV_BOX_CONTROL 0x2042
#define PMERR_INV_BOX_ROUNDING_PARM 0x2043
#define PMERR_INV_CHAR_ANGLE_ATTR 0x2044
#define PMERR_INV_CHAR_DIRECTION_ATTR 0x2045
#define PMERR_INV_CHAR_MODE_ATTR 0x2046
#define PMERR_INV_CHAR_POS_OPTIONS 0x2047
#define PMERR_INV_CHAR_SET_ATTR 0x2048
#define PMERR_INV_CHAR_SHEAR_ATTR 0x2049
#define PMERR_INV_CLIP_PATH_OPTIONS 0x204A
#define PMERR_INV_CODEPAGE 0x204B
#define PMERR_INV_COLOR_ATTR 0x204C
#define PMERR_INV_COLOR_DATA 0x204D
#define PMERR_INV_COLOR_FORMAT 0x204E
#define PMERR_INV_COLOR_INDEX 0x204F
#define PMERR_INV_COLOR_OPTIONS 0x2050
#define PMERR_INV_COLOR_START_INDEX 0x2051
#define PMERR_INV_COORD_OFFSET 0x2052
#define PMERR_INV_COORD_SPACE 0x2053
#define PMERR_INV_COORDINATE 0x2054
#define PMERR_INV_CORRELATE_DEPTH 0x2055
#define PMERR_INV_CORRELATE_TYPE 0x2056
#define PMERR_INV_DC_DATA 0x2057
#define PMERR_INV_DC_TYPE 0x2058
#define PMERR_INV_DEVICE_NAME 0x2059
#define PMERR_INV_DRAW_CONTROL 0x205A
#define PMERR_INV_DRAW_VALUE 0x205B
#define PMERR_INV_DRAWING_MODE 0x205C
#define PMERR_INV_DRIVER_DATA 0x205D
#define PMERR_INV_EDIT_MODE 0x205E
#define PMERR_INV_ELEMENT_OFFSET 0x205F
#define PMERR_INV_ELEMENT_POINTER 0x2060
#define PMERR_INV_ESC_CODE 0x2061
#define PMERR_INV_ESCAPE_DATA 0x2062
#define PMERR_INV_FILL_PATH_OPTIONS 0x2063
#define PMERR_INV_FIRST_CHAR 0x2064
#define PMERR_INV_FONT_ATTRS 0x2065
#define PMERR_INV_FONT_FILE_DATA 0x2066
#define PMERR_INV_FOR_THIS_DC_TYPE 0x2067
#define PMERR_INV_FORMAT_CONTROL 0x2068
#define PMERR_INV_FORMS_CODE 0x2069
#define PMERR_INV_GEOM_LINE_WIDTH_ATTR 0x206A
#define PMERR_INV_GETDATA_CONTROL 0x206B
#define PMERR_INV_GRAPHICS_FIELD 0x206C
#define PMERR_INV_HBITMAP 0x206D
#define PMERR_INV_HDC 0x206E
#define PMERR_INV_HMF 0x206F
#define PMERR_INV_HPS 0x2070
#define PMERR_INV_HRGN 0x2071
#define PMERR_INV_ID 0x2072
#define PMERR_INV_IMAGE_DATA_LENGTH 0x2073
#define PMERR_INV_IMAGE_DIMENSION 0x2074
#define PMERR_INV_IMAGE_FORMAT 0x2075
#define PMERR_INV_IN_AREA 0x2076
#define PMERR_INV_IN_CURRENT_EDIT_MODE 0x2077
#define PMERR_INV_IN_DRAW_MODE 0x2078
#define PMERR_INV_IN_ELEMENT 0x2079
#define PMERR_INV_IN_IMAGE 0x207A
#define PMERR_INV_IN_PATH 0x207B
#define PMERR_INV_IN_RETAIN_MODE 0x207C
#define PMERR_INV_IN_SEG 0x207D
#define PMERR_INV_IN_VECTOR_SYMBOL 0x207E
#define PMERR_INV_INFO_TABLE 0x207F
#define PMERR_INV_KERNING_FLAGS 0x2080
#define PMERR_INV_LENGTH_OR_COUNT 0x2081
#define PMERR_INV_LINE_END_ATTR 0x2082
#define PMERR_INV_LINE_JOIN_ATTR 0x2083
#define PMERR_INV_LINE_TYPE_ATTR 0x2084
#define PMERR_INV_LINE_WIDTH_ATTR 0x2085
#define PMERR_INV_LOGICAL_ADDRESS 0x2086
#define PMERR_INV_MARKER_BOX_ATTR 0x2087
#define PMERR_INV_MARKER_SET_ATTR 0x2088
#define PMERR_INV_MARKER_SYMBOL_ATTR 0x2089
#define PMERR_INV_MATRIX_ELEMENT 0x208A
#define PMERR_INV_MAX_HITS 0x208B
#define PMERR_INV_METAFILE 0x208C
#define PMERR_INV_METAFILE_LENGTH 0x208D
#define PMERR_INV_METAFILE_OFFSET 0x208E
#define PMERR_INV_MICROPS_DRAW_CONTROL 0x208F
#define PMERR_INV_MICROPS_FUNCTION 0x2090
#define PMERR_INV_MICROPS_ORDER 0x2091
#define PMERR_INV_MIX_ATTR 0x2092
#define PMERR_INV_MODE_FOR_OPEN_DYN 0x2093
#define PMERR_INV_MODE_FOR_REOPEN_SEG 0x2094
#define PMERR_INV_MODIFY_PATH_MODE 0x2095
#define PMERR_INV_MULTIPLIER 0x2096
#define PMERR_INV_OR_INCOMPAT_OPTIONS 0x2097
#define PMERR_INV_ORDER_LENGTH 0x2098
#define PMERR_INV_ORDERING_PARM 0x2099
#define PMERR_INV_OUTSIDE_DRAW_MODE 0x209A
#define PMERR_INV_PAGE_VIEWPORT 0x209B
#define PMERR_INV_PATH_ID 0x209C
#define PMERR_INV_PATH_MODE 0x209D
#define PMERR_INV_PATTERN_ATTR 0x209E
#define PMERR_INV_PATTERN_REF_PT_ATTR 0x209F
#define PMERR_INV_PATTERN_SET_ATTR 0x20A0
#define PMERR_INV_PATTERN_SET_FONT 0x20A1
#define PMERR_INV_PICK_APERTURE_OPTION 0x20A2
#define PMERR_INV_PICK_APERTURE_POSN 0x20A3
#define PMERR_INV_PICK_APERTURE_SIZE 0x20A4
#define PMERR_INV_PICK_NUMBER 0x20A5
#define PMERR_INV_PLAY_METAFILE_OPTION 0x20A6
#define PMERR_INV_PRIMITIVE_TYPE 0x20A7
#define PMERR_INV_PS_SIZE 0x20A8
#define PMERR_INV_PUTDATA_FORMAT 0x20A9
#define PMERR_INV_QUERY_ELEMENT_NO 0x20AA
#define PMERR_INV_RECT 0x20AB
#define PMERR_INV_REGION_CONTROL 0x20AC
#define PMERR_INV_REGION_MIX_MODE 0x20AD
#define PMERR_INV_REPLACE_MODE_FUNC 0x20AE
#define PMERR_INV_RESERVED_FIELD 0x20AF
#define PMERR_INV_RESET_OPTIONS 0x20B0
#define PMERR_INV_RGBCOLOR 0x20B1
#define PMERR_INV_SCAN_START 0x20B2
#define PMERR_INV_SEG_ATTR 0x20B3
#define PMERR_INV_SEG_ATTR_VALUE 0x20B4
#define PMERR_INV_SEG_CH_LENGTH 0x20B5
#define PMERR_INV_SEG_NAME 0x20B6
#define PMERR_INV_SEG_OFFSET 0x20B7
#define PMERR_INV_SETID 0x20B8
#define PMERR_INV_SHARPNESS_PARM 0x20B9
#define PMERR_INV_SOURCE_OFFSET 0x20BA
#define PMERR_INV_STOP_DRAW_VALUE 0x20BB
#define PMERR_INV_TRANSFORM_TYPE 0x20BC
#define PMERR_INV_USAGE_PARM 0x20BD
#define PMERR_INV_VIEWING_LIMITS 0x20BE
#define PMERR_KERNING_NOT_SUPPORTED 0x20BF
#define PMERR_LABEL_NOT_FOUND 0x20C0
#define PMERR_MATRIX_OVERFLOW 0x20C1
#define PMERR_METAFILE_IN_USE 0x20C2
#define PMERR_METAFILE_LIMIT_EXCEEDED 0x20C3
#define PMERR_NAME_STACK_FULL 0x20C4
#define PMERR_NO_BITMAP_SELECTED 0x20C5
#define PMERR_NO_CURRENT_ELEMENT 0x20C6
#define PMERR_NO_CURRENT_SEG 0x20C7
#define PMERR_NO_METAFILE_RECORD_HANDLE 0x20C8
#define PMERR_NOT_CREATED_BY_DEVOPENDC 0x20C9
#define PMERR_NOT_IN_AREA 0x20CA
#define PMERR_NOT_IN_DRAW_MODE 0x20CB
#define PMERR_NOT_IN_ELEMENT 0x20CC
#define PMERR_NOT_IN_IMAGE 0x20CD
#define PMERR_NOT_IN_PATH 0x20CE
#define PMERR_NOT_IN_RETAIN_MODE 0x20CF
#define PMERR_NOT_IN_SEG 0x20D0
#define PMERR_ORDER_TOO_BIG 0x20D1
#define PMERR_OTHER_SET_ID_REFS 0x20D2
#define PMERR_OVERRAN_SEG 0x20D3
#define PMERR_OWN_SET_ID_REFS 0x20D4
#define PMERR_PATH_INCOMPLETE 0x20D5
#define PMERR_PATH_LIMIT_EXCEEDED 0x20D6
#define PMERR_PATH_UNKNOWN 0x20D7
#define PMERR_PEL_IS_CLIPPED 0x20D8
#define PMERR_PEL_NOT_AVAILABLE 0x20D9
#define PMERR_PRIMITIVE_STACK_EMPTY 0x20DA
#define PMERR_PROLOG_ERROR 0x20DB
#define PMERR_PROLOG_SEG_ATTR_NOT_SET 0x20DC
#define PMERR_PS_BUSY 0x20DD
#define PMERR_PS_IS_ASSOCIATED 0x20DE
#define PMERR_REALIZE_NOT_SUPPORTED 0x20DF
#define PMERR_REGION_IS_CLIP_REGION 0x20E0
#define PMERR_RESOURCE_DEPLETION 0x20E1
#define PMERR_SEG_AND_REFSEG_ARE_SAME 0x20E2
#define PMERR_SEG_CALL_RECURSIVE 0x20E3
#define PMERR_SEG_CALL_STACK_EMPTY 0x20E4
#define PMERR_SEG_CALL_STACK_FULL 0x20E5
#define PMERR_SEG_IS_CURRENT 0x20E6
#define PMERR_SEG_NOT_CHAINED 0x20E7
#define PMERR_SEG_NOT_FOUND 0x20E8
#define PMERR_SEG_STORE_LIMIT_EXCEEDED 0x20E9
#define PMERR_SETID_IN_USE 0x20EA
#define PMERR_SETID_NOT_FOUND 0x20EB
#define PMERR_STARTDOC_NOT_ISSUED 0x20EC
#define PMERR_STOP_DRAW_OCCURRED 0x20ED
#define PMERR_TOO_MANY_METAFILES_IN_USE 0x20EE
#define PMERR_TRUNCATED_ORDER 0x20EF
#define PMERR_UNCHAINED_SEG_ZERO_INV 0x20F0
#define PMERR_UNSUPPORTED_ATTR 0x20F1
#define PMERR_UNSUPPORTED_ATTR_VALUE 0x20F2
#endif /* non-common GPIERRORS */