File:  [OS/2 SDKs] / pmsdk / include / pmgpi.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 12:28:36 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: pmsdk-1989, HEAD
Microsoft OS/2 SDK PM 02-24-1989

/***************************************************************************\
*
* Module Name: PMGPI.H
*
* OS/2 Presentation Manager GPI constants, types and function declarations
*
* Copyright (c) 1989  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_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
    #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;

/* fixed point number - implicit binary point between 1st and 2nd hex digits */
typedef  USHORT FIXED88;  /* fx88 */

/* fixed point signed number - implicit binary point between bits 14 and 13. */
/*                             Bit 15 is the sign bit.                       */
/*                             Thus 1.0 is represented by 16384 (0x4000)     */
/*                             and -1.0 is represented by -16384 (0xc000)    */
typedef  USHORT FIXED114; /* fx114 */

/* 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;

/* return code on GpiQueryLogColorTable,GpiQueryRealColors and GpiQueryPel */
#define CLR_NOINDEX  (-254L)

#if (defined(INCL_GPICONTROL) || !defined(INCL_NOCOMMON))

/* 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 );
BOOL APIENTRY GpiRestorePS( HPS, LONG );
LONG APIENTRY GpiSavePS( HPS );
BOOL APIENTRY GpiErase( HPS );

#ifndef INCL_SAADEFS
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

/* error context returned by GpiErrorSegmentData */
#define GPIE_SEGMENT    0L
#define GPIE_ELEMENT    1L
#define GPIE_DATA       2L

#ifndef INCL_SAADEFS

/* 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

#endif /* no INCL_SAADEFS */

/* drawing for GpiSet/QueryDrawingMode */
#define DM_ERROR         0L
#define DM_DRAW          1L
#define DM_RETAIN        2L
#define DM_DRAWANDRETAIN 3L

/*** other GPICONTROL functions */
BOOL  APIENTRY GpiResetPS( HPS, ULONG );

#ifndef INCL_SAADEFS

BOOL  APIENTRY GpiSetPS( HPS, PSIZEL, ULONG );

#endif /* no INCL_SAADEFS */

ULONG APIENTRY GpiQueryPS( HPS, PSIZEL );
LONG APIENTRY GpiErrorSegmentData( HPS, PLONG, PLONG );

#ifndef INCL_SAADEFS

LONG APIENTRY GpiQueryDrawControl( HPS, LONG );
BOOL APIENTRY GpiSetDrawControl( HPS, LONG, LONG );

#endif /* no INCL_SAADEFS */

LONG APIENTRY GpiQueryDrawingMode( HPS );
BOOL APIENTRY GpiSetDrawingMode( HPS, LONG );

#ifndef INCL_SAADEFS

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

/* return code to indicate correlate hit(s) */
#define GPI_HITS    2L

/*** 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 );

#endif /* no INCL_SAADEFS */

LONG APIENTRY GpiCorrelateFrom(  HPS, LONG, LONG, LONG, PPOINTL
                              , LONG, LONG, PLONG );
LONG APIENTRY GpiCorrelateSegment( HPS, LONG, LONG, PPOINTL
                                 , LONG, LONG, PLONG );

#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

#endif /* no INCL_SAADEFS */

#define ATTR_FASTCHAIN       9L
#define ATTR_PROP_DETECTABLE 10L
#define ATTR_PROP_VISIBLE    11L

/* 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 );
BOOL APIENTRY GpiDeleteSegments( HPS, LONG, LONG );
LONG APIENTRY GpiQuerySegmentNames( HPS, LONG, LONG, LONG, PLONG );

/*** draw functions for segments */
LONG APIENTRY GpiGetData( HPS, LONG, PLONG, LONG, LONG, PBYTE );
LONG APIENTRY GpiPutData( HPS, LONG, PLONG, PBYTE );
BOOL APIENTRY GpiDrawChain( HPS );
BOOL APIENTRY GpiDrawFrom( HPS, LONG, LONG );
BOOL APIENTRY GpiDrawSegment( HPS, LONG );

#ifndef INCL_SAADEFS

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

/* 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

/* 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 );
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 );

/*** 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

/* 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 );

#ifndef INCL_SAADEFS

LONG APIENTRY GpiStrokePath( HPS, LONG, ULONG );

#endif /* no INCL_SAADEFS */

#endif /* no INCL_DDIDEFS */

#endif /* non-common GPIPATHS */
#ifdef INCL_GPILOGCOLORTABLE

/* 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

#ifndef INCL_SAADEFS

/* 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)

#endif /* no INCL_SAADEFS */

/* 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 );

#ifndef INCL_SAADEFS

LONG APIENTRY GpiQueryLogColorTable( HPS, ULONG, LONG, LONG, PLONG );

#endif /* no INCL_SAADEFS */

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 /* non-common GPILOGCOLORTABLE */
#if (defined(INCL_GPIPRIMITIVES) || !defined(INCL_NOCOMMON))

/* default color table indices */

#define CLR_FALSE               (-5L)
#define CLR_TRUE                (-4L)

#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

#define CLR_DARKGRAY            8L
#define CLR_DARKBLUE            9L
#define CLR_DARKRED            10L
#define CLR_DARKPINK           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

/* control flags used by GpiBeginArea */
#define BA_NOBOUNDARY   0L
#define BA_BOUNDARY     0x0001L

#ifndef INCL_SAADEFS
#define BA_ALTERNATE    0L
#define BA_WINDING      0x0002L

#endif /* no INCL_SAADEFS */

/* fill options for GpiBox/GpiFullArc */
#define DRO_FILL        1L
#define DRO_OUTLINE     2L
#define DRO_OUTLINEFILL 3L

/* 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 */
LONG APIENTRY GpiBox( HPS, LONG, PPOINTL, LONG, LONG );

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) */

/* 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

/* character 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

/* 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;

/* 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;

/* 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

#ifndef INCL_DDIDEFS

/*** attribute mode functions */
BOOL APIENTRY GpiSetAttrMode( HPS, LONG );
LONG APIENTRY GpiQueryAttrMode( HPS );
/*** bundle primitive functions */
BOOL APIENTRY GpiSetAttrs( HPS, LONG, ULONG, ULONG, PBUNDLE );
#ifndef INCL_SAADEFS

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

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

BOOL APIENTRY GpiSetCurrentPosition( HPS, PPOINTL );
BOOL APIENTRY GpiQueryCurrentPosition( HPS, PPOINTL );

/*** arc primitive functions */
BOOL APIENTRY GpiSetArcParams( HPS, PARCPARAMS );
BOOL APIENTRY GpiQueryArcParams( HPS, PARCPARAMS );

#ifndef INCL_SAADEFS

LONG APIENTRY GpiPointArc( HPS, PPOINTL );

#endif /* no INCL_SAADEFS */

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 );
LONG APIENTRY GpiPolyFillet( HPS, LONG, PPOINTL );

/*** area primitive functions */
BOOL APIENTRY GpiSetPatternSet( HPS, LONG );
LONG APIENTRY GpiQueryPatternSet( HPS );
BOOL APIENTRY GpiSetPatternRefPoint( HPS, PPOINTL );
BOOL APIENTRY GpiQueryPatternRefPoint( HPS, PPOINTL );

/*** character primitive functions */

BOOL APIENTRY GpiQueryCharStringPos( HPS, ULONG, LONG, PCH, PLONG, PPOINTL );
BOOL APIENTRY GpiQueryCharStringPosAt( HPS, PPOINTL, ULONG, LONG, PCH, PLONG, PPOINTL );
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 );
LONG APIENTRY GpiCharStringPos( HPS, PRECTL, ULONG, LONG, PCH, PLONG );
LONG APIENTRY GpiCharStringPosAt( HPS, PPOINTL, PRECTL
                                 , ULONG, LONG, PCH ,PLONG );

/*** 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 );
/*** miscellaneous primitive functions */
BOOL  APIENTRY GpiPop( HPS, LONG );
LONG APIENTRY GpiPtVisible( HPS, PPOINTL );
LONG APIENTRY GpiRectVisible( HPS, PRECTL );
BOOL  APIENTRY GpiComment( HPS, LONG, PBYTE );

#endif /* no INCL_DDIDEFS */

#endif /* non-common GPIPRIMITIVES */
#ifdef INCL_GPILCIDS

/* return codes from GpiCreateLogFont */
#define FONT_DEFAULT     1L
#define FONT_MATCH       2L

/* 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 */
#if (defined(INCL_GPIBITMAPS) || !defined(INCL_NOCOMMON))

/* 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, HMODULE, USHORT, LONG, LONG );
BOOL    APIENTRY GpiDeleteBitmap( HBITMAP );
HBITMAP APIENTRY GpiSetBitmap( HPS, HBITMAP );
LONG    APIENTRY GpiBitBlt( HPS, HPS, LONG, PPOINTL, LONG, ULONG );
LONG    APIENTRY GpiWCBitBlt( HPS, HBITMAP, LONG, PPOINTL, LONG, ULONG );

#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 */
LONG APIENTRY GpiSetClipRegion( HPS, HRGN, PHRGN );

#ifndef INCL_SAADEFS

HRGN APIENTRY GpiQueryClipRegion( HPS );
LONG APIENTRY GpiQueryClipBox( HPS, PRECTL );

#endif /* no INCL_SAADEFS */

LONG APIENTRY GpiIntersectClipRectangle( HPS, PRECTL );
LONG APIENTRY GpiExcludeClipRectangle( HPS, PRECTL );

#ifndef INCL_SAADEFS

LONG APIENTRY GpiOffsetClipRegion( HPS, PPOINTL );

#endif /* no INCL_SAADEFS */

#endif /* no INCL_DDIDEFS */

#endif /* non-common GPIREGIONS */
#ifdef INCL_GPIMETAFILES

#ifndef INCL_DDIDEFS

/* constants for index values of options array for GpiPlayMetafile */
#define PMF_SEGBASE            0
#define PMF_LOADTYPE           1
#define PMF_RESOLVE            2
#define PMF_LCIDS              3
#define PMF_RESET              4
#define PMF_SUPPRESS           5
#define PMF_COLORTABLES        6
#define PMF_COLORREALIZABLE    7

/* 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 );

HMF   APIENTRY GpiCopyMetaFile( HMF );
LONG  APIENTRY GpiQueryMetaFileLength( HMF );
BOOL  APIENTRY GpiQueryMetaFileBits( HMF, LONG, LONG, PBYTE );

#ifndef INCL_SAADEFS

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_DEV_FUNC_NOT_INSTALLED       0x2023
#define PMERR_DOSOPEN_FAILURE              0x2024
#define PMERR_DOSREAD_FAILURE              0x2025
#define PMERR_DRIVER_NOT_FOUND             0x2026
#define PMERR_DUP_SEG                      0x2027
#define PMERR_DYNAMIC_SEG_SEQ_ERROR        0x2028
#define PMERR_DYNAMIC_SEG_ZERO_INV         0x2029
#define PMERR_ELEMENT_INCOMPLETE           0x202A
#define PMERR_ESC_CODE_NOT_SUPPORTED       0x202B
#define PMERR_EXCEEDS_MAX_SEG_LENGTH       0x202C
#define PMERR_FONT_AND_MODE_MISMATCH       0x202D
#define PMERR_FONT_FILE_NOT_LOADED         0x202E
#define PMERR_FONT_NOT_LOADED              0x202F
#define PMERR_FONT_TOO_BIG                 0x2030
#define PMERR_HARDWARE_INIT_FAILURE        0x2031
#define PMERR_HBITMAP_BUSY                 0x2032
#define PMERR_HDC_BUSY                     0x2033
#define PMERR_HRGN_BUSY                    0x2034
#define PMERR_HUGE_FONTS_NOT_SUPPORTED     0x2035
#define PMERR_ID_HAS_NO_BITMAP             0x2036
#define PMERR_IMAGE_INCOMPLETE             0x2037
#define PMERR_INCOMPAT_COLOR_FORMAT        0x2038
#define PMERR_INCOMPAT_COLOR_OPTIONS       0x2039
#define PMERR_INCOMPATIBLE_BITMAP          0x203A
#define PMERR_INCOMPATIBLE_METAFILE        0x203B
#define PMERR_INCORRECT_DC_TYPE            0x203C
#define PMERR_INSUFFICIENT_DISK_SPACE      0x203D
#define PMERR_INSUFFICIENT_MEMORY          0x203E
#define PMERR_INV_ANGLE_PARM               0x203F
#define PMERR_INV_ARC_CONTROL              0x2040
#define PMERR_INV_AREA_CONTROL             0x2041
#define PMERR_INV_ARC_POINTS               0x2042
#define PMERR_INV_ATTR_MODE                0x2043
#define PMERR_INV_BACKGROUND_COL_ATTR      0x2044
#define PMERR_INV_BACKGROUND_MIX_ATTR      0x2045
#define PMERR_INV_BITBLT_MIX               0x2046
#define PMERR_INV_BITBLT_STYLE             0x2047
#define PMERR_INV_BITMAP_DIMENSION         0x2048
#define PMERR_INV_BOX_CONTROL              0x2049
#define PMERR_INV_BOX_ROUNDING_PARM        0x204A
#define PMERR_INV_CHAR_ANGLE_ATTR          0x204B
#define PMERR_INV_CHAR_DIRECTION_ATTR      0x204C
#define PMERR_INV_CHAR_MODE_ATTR           0x204D
#define PMERR_INV_CHAR_POS_OPTIONS         0x204E
#define PMERR_INV_CHAR_SET_ATTR            0x204F
#define PMERR_INV_CHAR_SHEAR_ATTR          0x2050
#define PMERR_INV_CLIP_PATH_OPTIONS        0x2051
#define PMERR_INV_CODEPAGE                 0x2052
#define PMERR_INV_COLOR_ATTR               0x2053
#define PMERR_INV_COLOR_DATA               0x2054
#define PMERR_INV_COLOR_FORMAT             0x2055
#define PMERR_INV_COLOR_INDEX              0x2056
#define PMERR_INV_COLOR_OPTIONS            0x2057
#define PMERR_INV_COLOR_START_INDEX        0x2058
#define PMERR_INV_COORD_OFFSET             0x2059
#define PMERR_INV_COORD_SPACE              0x205A
#define PMERR_INV_COORDINATE               0x205B
#define PMERR_INV_CORRELATE_DEPTH          0x205C
#define PMERR_INV_CORRELATE_TYPE           0x205D
#define PMERR_INV_CURSOR_BITMAP            0x205E
#define PMERR_INV_DC_DATA                  0x205F
#define PMERR_INV_DC_TYPE                  0x2060
#define PMERR_INV_DEVICE_NAME              0x2061
#define PMERR_INV_DEV_MODES_OPTIONS        0x2062
#define PMERR_INV_DRAW_CONTROL             0x2063
#define PMERR_INV_DRAW_VALUE               0x2064
#define PMERR_INV_DRAWING_MODE             0x2065
#define PMERR_INV_DRIVER_DATA              0x2066
#define PMERR_INV_DRIVER_NAME              0x2067
#define PMERR_INV_DRAW_BORDER_OPTION       0x2068
#define PMERR_INV_EDIT_MODE                0x2069
#define PMERR_INV_ELEMENT_OFFSET           0x206A
#define PMERR_INV_ELEMENT_POINTER          0x206B
#define PMERR_INV_END_PATH_OPTIONS         0x206C
#define PMERR_INV_ESC_CODE                 0x206D
#define PMERR_INV_ESCAPE_DATA              0x206E
#define PMERR_INV_EXTENDED_LCID            0x206F
#define PMERR_INV_FILL_PATH_OPTIONS        0x2070
#define PMERR_INV_FIRST_CHAR               0x2071
#define PMERR_INV_FONT_ATTRS               0x2072
#define PMERR_INV_FONT_FILE_DATA           0x2073
#define PMERR_INV_FOR_THIS_DC_TYPE         0x2074
#define PMERR_INV_FORMAT_CONTROL           0x2075
#define PMERR_INV_FORMS_CODE               0x2076
#define PMERR_INV_FONTDEF                  0x2077
#define PMERR_INV_GEOM_LINE_WIDTH_ATTR     0x2078
#define PMERR_INV_GETDATA_CONTROL          0x2079
#define PMERR_INV_GRAPHICS_FIELD           0x207A
#define PMERR_INV_HBITMAP                  0x207B
#define PMERR_INV_HDC                      0x207C
#define PMERR_INV_HJOURNAL                 0x207D
#define PMERR_INV_HMF                      0x207E
#define PMERR_INV_HPS                      0x207F
#define PMERR_INV_HRGN                     0x2080
#define PMERR_INV_ID                       0x2081
#define PMERR_INV_IMAGE_DATA_LENGTH        0x2082
#define PMERR_INV_IMAGE_DIMENSION          0x2083
#define PMERR_INV_IMAGE_FORMAT             0x2084
#define PMERR_INV_IN_AREA                  0x2085
#define PMERR_INV_IN_CALLED_SEG            0x2086
#define PMERR_INV_IN_CURRENT_EDIT_MODE     0x2087
#define PMERR_INV_IN_DRAW_MODE             0x2088
#define PMERR_INV_IN_ELEMENT               0x2089
#define PMERR_INV_IN_IMAGE                 0x208A
#define PMERR_INV_IN_PATH                  0x208B
#define PMERR_INV_IN_RETAIN_MODE           0x208C
#define PMERR_INV_IN_SEG                   0x208D
#define PMERR_INV_IN_VECTOR_SYMBOL         0x208E
#define PMERR_INV_INFO_TABLE               0x208F
#define PMERR_INV_JOURNAL_OPTION           0x2090
#define PMERR_INV_KERNING_FLAGS            0x2091
#define PMERR_INV_LENGTH_OR_COUNT          0x2092
#define PMERR_INV_LINE_END_ATTR            0x2093
#define PMERR_INV_LINE_JOIN_ATTR           0x2094
#define PMERR_INV_LINE_TYPE_ATTR           0x2095
#define PMERR_INV_LINE_WIDTH_ATTR          0x2096
#define PMERR_INV_LOGICAL_ADDRESS          0x2097
#define PMERR_INV_MARKER_BOX_ATTR          0x2098
#define PMERR_INV_MARKER_SET_ATTR          0x2099
#define PMERR_INV_MARKER_SYMBOL_ATTR       0x209A
#define PMERR_INV_MATRIX_ELEMENT           0x209B
#define PMERR_INV_MAX_HITS                 0x209C
#define PMERR_INV_METAFILE                 0x209D
#define PMERR_INV_METAFILE_LENGTH          0x209E
#define PMERR_INV_METAFILE_OFFSET          0x209F
#define PMERR_INV_MICROPS_DRAW_CONTROL     0x20A0
#define PMERR_INV_MICROPS_FUNCTION         0x20A1
#define PMERR_INV_MICROPS_ORDER            0x20A2
#define PMERR_INV_MIX_ATTR                 0x20A3
#define PMERR_INV_MODE_FOR_OPEN_DYN        0x20A4
#define PMERR_INV_MODE_FOR_REOPEN_SEG      0x20A5
#define PMERR_INV_MODIFY_PATH_MODE         0x20A6
#define PMERR_INV_MULTIPLIER               0x20A7
#define PMERR_INV_NESTED_FIGURES           0x20A8
#define PMERR_INV_OR_INCOMPAT_OPTIONS      0x20A9
#define PMERR_INV_ORDER_LENGTH             0x20AA
#define PMERR_INV_ORDERING_PARM            0x20AB
#define PMERR_INV_OUTSIDE_DRAW_MODE        0x20AC
#define PMERR_INV_PAGE_VIEWPORT            0x20AD
#define PMERR_INV_PATH_ID                  0x20AE
#define PMERR_INV_PATH_MODE                0x20AF
#define PMERR_INV_PATTERN_ATTR             0x20B0
#define PMERR_INV_PATTERN_REF_PT_ATTR      0x20B1
#define PMERR_INV_PATTERN_SET_ATTR         0x20B2
#define PMERR_INV_PATTERN_SET_FONT         0x20B3
#define PMERR_INV_PICK_APERTURE_OPTION     0x20B4
#define PMERR_INV_PICK_APERTURE_POSN       0x20B5
#define PMERR_INV_PICK_APERTURE_SIZE       0x20B6
#define PMERR_INV_PICK_NUMBER              0x20B7
#define PMERR_INV_PLAY_METAFILE_OPTION     0x20B8
#define PMERR_INV_PRIMITIVE_TYPE           0x20B9
#define PMERR_INV_PS_SIZE                  0x20BA
#define PMERR_INV_PUTDATA_FORMAT           0x20BB
#define PMERR_INV_QUERY_ELEMENT_NO         0x20BC
#define PMERR_INV_RECT                     0x20BD
#define PMERR_INV_REGION_CONTROL           0x20BE
#define PMERR_INV_REGION_MIX_MODE          0x20BF
#define PMERR_INV_REPLACE_MODE_FUNC        0x20C0
#define PMERR_INV_RESERVED_FIELD           0x20C1
#define PMERR_INV_RESET_OPTIONS            0x20C2
#define PMERR_INV_RGBCOLOR                 0x20C3
#define PMERR_INV_SCAN_START               0x20C4
#define PMERR_INV_SEG_ATTR                 0x20C5
#define PMERR_INV_SEG_ATTR_VALUE           0x20C6
#define PMERR_INV_SEG_CH_LENGTH            0x20C7
#define PMERR_INV_SEG_NAME                 0x20C8
#define PMERR_INV_SEG_OFFSET               0x20C9
#define PMERR_INV_SETID                    0x20CA
#define PMERR_INV_SETID_TYPE               0x20CB
#define PMERR_INV_SET_VIEWPORT_OPTION      0x20CC
#define PMERR_INV_SHARPNESS_PARM           0x20CD
#define PMERR_INV_SOURCE_OFFSET            0x20CE
#define PMERR_INV_STOP_DRAW_VALUE          0x20CF
#define PMERR_INV_TRANSFORM_TYPE           0x20D0
#define PMERR_INV_USAGE_PARM               0x20D1
#define PMERR_INV_VIEWING_LIMITS           0x20D2
#define PMERR_JFILE_BUSY                   0x20D3
#define PMERR_JNL_FUNC_DATA_TOO_LONG       0x20D4
#define PMERR_KERNING_NOT_SUPPORTED        0x20D5
#define PMERR_LABEL_NOT_FOUND              0x20D6
#define PMERR_MATRIX_OVERFLOW              0x20D7
#define PMERR_METAFILE_INTERNAL_ERROR      0x20D8
#define PMERR_METAFILE_IN_USE              0x20D9
#define PMERR_METAFILE_LIMIT_EXCEEDED      0x20DA
#define PMERR_NAME_STACK_FULL              0x20DB
#define PMERR_NOT_CREATED_BY_DEVOPENDC     0x20DC
#define PMERR_NOT_IN_AREA                  0x20DD
#define PMERR_NOT_IN_DRAW_MODE             0x20DE
#define PMERR_NOT_IN_ELEMENT               0x20DF
#define PMERR_NOT_IN_IMAGE                 0x20E0
#define PMERR_NOT_IN_PATH                  0x20E1
#define PMERR_NOT_IN_RETAIN_MODE           0x20E2
#define PMERR_NOT_IN_SEG                   0x20E3
#define PMERR_NO_BITMAP_SELECTED           0x20E4
#define PMERR_NO_CURRENT_ELEMENT           0x20E5
#define PMERR_NO_CURRENT_SEG               0x20E6
#define PMERR_NO_METAFILE_RECORD_HANDLE    0x20E7
#define PMERR_ORDER_TOO_BIG                0x20E8
#define PMERR_OTHER_SET_ID_REFS            0x20E9
#define PMERR_OVERRAN_SEG                  0x20EA
#define PMERR_OWN_SET_ID_REFS              0x20EB
#define PMERR_PATH_INCOMPLETE              0x20EC
#define PMERR_PATH_LIMIT_EXCEEDED          0x20ED
#define PMERR_PATH_UNKNOWN                 0x20EE
#define PMERR_PEL_IS_CLIPPED               0x20EF
#define PMERR_PEL_NOT_AVAILABLE            0x20F0
#define PMERR_PRIMITIVE_STACK_EMPTY        0x20F1
#define PMERR_PROLOG_ERROR                 0x20F2
#define PMERR_PROLOG_SEG_ATTR_NOT_SET      0x20F3
#define PMERR_PS_BUSY                      0x20F4
#define PMERR_PS_IS_ASSOCIATED             0x20F5
#define PMERR_RAM_JNL_FILE_TOO_SMALL       0x20F6
#define PMERR_REALIZE_NOT_SUPPORTED        0x20F7
#define PMERR_REGION_IS_CLIP_REGION        0x20F8
#define PMERR_RESOURCE_DEPLETION           0x20F9
#define PMERR_SEG_AND_REFSEG_ARE_SAME      0x20FA
#define PMERR_SEG_CALL_RECURSIVE           0x20FB
#define PMERR_SEG_CALL_STACK_EMPTY         0x20FC
#define PMERR_SEG_CALL_STACK_FULL          0x20FD
#define PMERR_SEG_IS_CURRENT               0x20FE
#define PMERR_SEG_NOT_CHAINED              0x20FF
#define PMERR_SEG_NOT_FOUND                0x2100
#define PMERR_SEG_STORE_LIMIT_EXCEEDED     0x2101
#define PMERR_SETID_IN_USE                 0x2102
#define PMERR_SETID_NOT_FOUND              0x2103
#define PMERR_STARTDOC_NOT_ISSUED          0x2104
#define PMERR_STOP_DRAW_OCCURRED           0x2105
#define PMERR_TOO_MANY_METAFILES_IN_USE    0x2106
#define PMERR_TRUNCATED_ORDER              0x2107
#define PMERR_UNCHAINED_SEG_ZERO_INV       0x2108
#define PMERR_UNSUPPORTED_ATTR             0x2109
#define PMERR_UNSUPPORTED_ATTR_VALUE       0x210A

#endif /* non-common GPIERRORS */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.