home *** CD-ROM | disk | FTP | other *** search
/ The Developer Connection…ice Driver Kit for OS/2 3 / DEV3-D1.ISO / devtools / os2tk21j / cplus / os2h / pmddi.h__ / pmddi.h
Encoding:
C/C++ Source or Header  |  1993-04-29  |  23.7 KB  |  865 lines

  1. /****************************** Module Header ******************************\
  2. *
  3. * Module Name: PMDDI.H
  4. *
  5. * OS/2 Presentation Manager entry points, macros, and types for the
  6. * Graphics Engine.
  7. *
  8. * Copyright (c) International Business Machines Corporation 1981, 1988-1992
  9. *
  10. * ===========================================================================
  11. *
  12. * The following symbols are used in this file for conditional sections.
  13. *
  14. *   #define:                To include:
  15. *
  16. *   INCL_DDIGRE             don't want OS2DEF, PMGPI, and PMDEV included
  17. *   INCL_DDIDEFS            don't want the above, but do want GRE structs
  18. *
  19. * It is expected that callers of the Engine will want to define INCL_DDIGRE
  20. * and possibly INCL_DDIDEFS.  The Engine itself and device drivers define
  21. * neither of these.
  22. *
  23. * Further defines must be made to specify which of the GRE function macros
  24. * should be defined.
  25. *
  26. *   #define:                To include:
  27. *
  28. *   INCL_GREALL           All of the following
  29. *   INCL_GRE_ARCS         Arcs functions
  30. *   INCL_GRE_BITMAPS      Bitmap functions
  31. *   INCL_GRE_CLIP            etc...
  32. *   INCL_GRE_COLORTABLE
  33. *   INCL_GRE_DCS
  34. *   INCL_GRE_DEVICE
  35. *   INCL_GRE_DEVMISC
  36. *   INCL_GRE_DEVSUPPORT
  37. *   INCL_GRE_FONTS
  38. *   INCL_GRE_JOURNALING
  39. *   INCL_GRE_LCID
  40. *   INCL_GRE_LINES
  41. *   INCL_GRE_MARKERS
  42. *   INCL_GRE_PALETTE
  43. *   INCL_GRE_PATHS
  44. *   INCL_GRE_PICK
  45. *   INCL_GRE_POLYGON
  46. *   INCL_GRE_REGIONS
  47. *   INCL_GRE_SCANS
  48. *   INCL_GRE_SETID
  49. *   INCL_GRE_STRINGS
  50. *   INCL_GRE_XFORMS
  51. *
  52. * ===========================================================================
  53. *
  54. * Comments at the end of each typedef line give the name tags used in
  55. * the assembler include version of this file.
  56. *
  57. * The assembler include version of this file excludes lines between NOINC
  58. * and INC comments.
  59. *
  60. \***************************************************************************/
  61. /* NOINC */
  62.    #pragma info( none )
  63.    #ifndef __CHKHDR__
  64.       #pragma info( none )
  65.    #endif
  66.    #pragma info( restore )
  67. #ifdef __cplusplus
  68.       extern "C" {
  69. #endif
  70. /* INC */
  71.  
  72. #define DDI_INCLUDED
  73.  
  74.  
  75. #ifdef INCL_GREALL
  76.    #define INCL_GRE_ARCS
  77.    #define INCL_GRE_BITMAPS
  78.    #define INCL_GRE_CLIP
  79.    #define INCL_GRE_COLORTABLE
  80.    #define INCL_GRE_DCS
  81.    #define INCL_GRE_DEVICE
  82.    #define INCL_GRE_DEVMISC
  83.    #define INCL_GRE_DEVSUPPORT
  84.    #define INCL_GRE_FONTS
  85.    #define INCL_GRE_JOURNALING
  86.    #define INCL_GRE_LCID
  87.    #define INCL_GRE_LINES
  88.    #define INCL_GRE_MARKERS
  89.    #define INCL_GRE_PALETTE
  90.    #define INCL_GRE_PATHS
  91.    #define INCL_GRE_PICK
  92.    #define INCL_GRE_POLYGON
  93.    #define INCL_GRE_REGIONS
  94.    #define INCL_GRE_SCANS
  95.    #define INCL_GRE_SCREEN
  96.    #define INCL_GRE_SETID
  97.    #define INCL_GRE_STRINGS
  98.    #define INCL_GRE_XFORMS
  99. #endif /* INCL_GREALL */
  100.  
  101. #ifdef INCL_GRE_DEVMISC
  102.    #define INCL_GRE_DEVMISC1
  103.    #define INCL_GRE_DEVMISC2
  104.    #define INCL_GRE_DEVMISC3
  105. #endif  /* INCL_GRE_DEVMISC */
  106.  
  107.  
  108. /*** Engine dispatch tables ************************************************/
  109.  
  110. #define MAXTABLEENTRIES        223
  111. #define NUMBEROFMAJORFUN       MAXTABLEENTRIES
  112. #define NUMBEROFMINORFUN       86
  113.  
  114. typedef struct _DISPATCHER    /* dr */
  115. {
  116.    PFN    pfnTblEntry[MAXTABLEENTRIES];
  117. } DISPATCHER;
  118. typedef DISPATCHER *PDISPATCHER;
  119.  
  120. typedef struct _FUNINFOTABLE    /* fit */
  121. {
  122.    BYTE   FunInfo_00[NUMBEROFMAJORFUN];
  123.    BYTE   FunInfo_02[NUMBEROFMINORFUN];
  124. } FUNINFOTABLE;
  125. typedef FUNINFOTABLE *PFUNINFOTABLE;
  126.  
  127. /*** exported Engine DDI functions *****************************************/
  128.  
  129. LONG  APIENTRY SetDriverInfo(ULONG hDrv,
  130.                              LHANDLE hEng,
  131.                              ULONG ulIndex,
  132.                              HDC hdc);
  133.  
  134. LONG  APIENTRY GetDriverInfo(LHANDLE hEng,
  135.                              ULONG ulIndex,
  136.                              HDC hdc);
  137.  
  138. LONG  APIENTRY PostDeviceModes(PDRIVDATA pDrvData,
  139.                                PCSZ pszDrvName,
  140.                                PCSZ pszDevName,
  141.                                PCSZ pszPrtName,
  142.                                ULONG ulOptions);
  143.  
  144. BOOL  APIENTRY GreInitialize(VOID);
  145.  
  146. ULONG APIENTRY SSAllocMem(PVOID ppAddr,
  147.                           ULONG ulSize,
  148.                           ULONG ulReserved);
  149.  
  150. ULONG APIENTRY SSFreeMem(PVOID pAddr);
  151.  
  152. /*** define common types in the Engine and DDI *****************************/
  153.  
  154. typedef struct _RECTS   /* rcs */
  155. {
  156.    POINTS pts1;
  157.    POINTS pts2;
  158. } RECTS;
  159. typedef RECTS *PRECTS;
  160.  
  161. /* NOINC */
  162. #ifndef POINTFX_DEFINED
  163.    #define POINTFX_DEFINED
  164.    /* INC */
  165.    typedef struct _POINTFX   /* ptfx */
  166.    {
  167.       FIXED x;
  168.       FIXED y;
  169.    } POINTFX;
  170.    typedef POINTFX *PPOINTFX;
  171.    /* NOINC */
  172. #endif
  173. /* INC */
  174.  
  175. typedef struct _RECTFX   /* rcfx */
  176. {
  177.    POINTFX ptfx1;
  178.    POINTFX ptfx2;
  179. } RECTFX;
  180. typedef RECTFX *PRECTFX;
  181.  
  182. typedef struct _XFORM   /* xform */
  183. {
  184.    FIXED fxM11;
  185.    FIXED fxM12;
  186.    FIXED fxM21;
  187.    FIXED fxM22;
  188.    LONG  lM41;
  189.    LONG  lM42;
  190. } XFORM;
  191. typedef XFORM *PXFORM;
  192.  
  193. typedef LONG LCID;      /* locally-coded id */
  194. typedef LCID *PLCID;
  195. typedef LONG PHID;      /* path id */
  196. typedef ULONG HDEVPAL;
  197.  
  198. #ifdef INCL_GRE_HFONT
  199.    typedef LHANDLE HFONT;       /* font handle */
  200. #endif /* INCL_GRE_HFONT */
  201.  
  202. #ifdef INCL_DDICOMFLAGS
  203.    #define COM_DRAW16                      0x00000001L
  204.    #define COM_BOUND16                     0x00000002L
  205.    #define COM_CORRELATE16                 0x00000004L
  206.    #define COM_ALT_BOUND16                 0x00000008L
  207.    #define COM_AREA16                      0x00000010L
  208.    #define COM_PATH16                      0x00000020L
  209.    #define COM_TRANSFORM16                 0x00000040L
  210.    #define COM_RECORDING16                 0x00000080L
  211.    #define COM_DEVICE16                    0x00000100L
  212.    #define COM_SCR_BOUND16                 0x00000200L
  213.    #define COM_PRECLIP16                   0x04000000L
  214.  
  215.    #define COM_DRAW                        0x00010000L
  216.    #define COM_BOUND                       0x00020000L
  217.    #define COM_CORRELATE                   0x00040000L
  218.    #define COM_ALT_BOUND                   0x00080000L
  219.    #define COM_AREA                        0x00100000L
  220.    #define COM_PATH                        0x00200000L
  221.    #define COM_TRANSFORM                   0x00400000L
  222.    #define COM_RECORDING                   0x00800000L
  223.    #define COM_DEVICE                      0x01000000L
  224.    #define COM_SCR_BOUND                   0x02000000L
  225.    #define COM_PRECLIP                     0x04000000L
  226. #endif /* INCL_DDICOMFLAGS */
  227.  
  228. #ifdef INCL_GRE_ARCS
  229.  
  230.    /* BoxBoundary */
  231.    /* BoxInterior */
  232.    /* BoxBoth */
  233.  
  234.    typedef struct _BOXPARAMS      /* boxp */
  235.    {
  236.       POINTL ptl;
  237.       SIZEL  sizl;
  238.    } BOXPARAMS;
  239.    typedef BOXPARAMS *PBOXPARAMS;
  240. #endif /* INCL_GRE_ARCS */
  241.  
  242. #ifdef INCL_GRE_CLIP
  243.  
  244.    /* CopyClipRegion */
  245.  
  246.    #define COPYCRGN_ALLINTERSECT        0L
  247.    #define COPYCRGN_VISRGN              1L
  248.    #define COPYCRGN_CLIPRGN             2L
  249.  
  250.    /* SetupDC */
  251.  
  252.    #define SETUPDC_VISRGN               0x00000001L
  253.    #define SETUPDC_ORIGIN               0x00000002L
  254.    #define SETUPDC_ACCUMBOUNDSON        0x00000004L
  255.    #define SETUPDC_ACCUMBOUNDSOFF       0x00000008L
  256.    #define SETUPDC_RECALCCLIP           0x00000010L
  257.    #define SETUPDC_SETOWNER             0x00000020L
  258.    #define SETUPDC_CLEANDC              0x00000040L
  259.  
  260. #endif /* INCL_GRE_CLIP */
  261.  
  262. #ifdef INCL_GRE_XFORMS
  263.  
  264.    /* QueryViewportSize */
  265.    typedef struct _VIEWPORTSIZE   /* vs */
  266.    {
  267.       ULONG cx;
  268.       ULONG cy;
  269.    } VIEWPORTSIZE;
  270.    typedef VIEWPORTSIZE *PVIEWPORTSIZE;
  271.  
  272. #endif /* INCL_GRE_XFORMS */
  273.  
  274. #ifdef INCL_GRE_DEVSUPPORT
  275.  
  276.    /* Constants for GreInitializeAttributes */
  277.  
  278.    #define INAT_DEFAULTATTRIBUTES       1L
  279.    #define INAT_CURRENTATTRIBUTES       2L
  280.  
  281.    /* InvalidateVisRegion */
  282.  
  283.    typedef struct _DC_BLOCK   /* ivr */
  284.    {
  285.       ULONG hdc;
  286.       ULONG hddc;
  287.    } DC_BLOCK;
  288.    typedef DC_BLOCK *PDC_BLOCK;
  289.  
  290. #endif /* INCL_GRE_DEVSUPPORT */
  291.  
  292. #ifdef INCL_DDIMISC
  293.  
  294.    /* Display information resource structure (RT_DISPLAYINFO) */
  295.    typedef struct _DISPLAYINFO           /* dspinfo */
  296.    {
  297.       USHORT cb;
  298.       SHORT cxIcon;
  299.       SHORT cyIcon;
  300.       SHORT cxPointer;
  301.       SHORT cyPointer;
  302.       SHORT cxBorder;
  303.       SHORT cyBorder;
  304.       SHORT cxHSlider;
  305.       SHORT cyVSlider;
  306.       SHORT cxSizeBorder;
  307.       SHORT cySizeBorder;
  308.       SHORT cxDeviceAlign;
  309.       SHORT cyDeviceAlign;
  310.    } DISPLAYINFO;
  311.    typedef DISPLAYINFO *PDISPLAYINFO;
  312.  
  313.    /* Parameters for the DC Enable function */
  314.  
  315.    typedef struct _DENPARAMS   /* den */
  316.    {
  317.       ULONG ulStateInfo;
  318.       ULONG ulType;
  319.       ULONG ulHDC;
  320.    } DENPARAMS;
  321.    typedef DENPARAMS *PDENPARAMS;
  322.  
  323.  
  324.    typedef struct _STYLERATIO   /* sr */
  325.    {
  326.       BYTE dx;
  327.       BYTE dy;
  328.    } STYLERATIO;
  329.    typedef STYLERATIO *PSTYLERATIO;
  330.  
  331.    /* Options flags for SetGlobalAttribute */
  332.  
  333.    #define GATTR_DEFAULT                   1L
  334.  
  335.    /* Attribute Types for SetGlobalAttribute */
  336.  
  337.    #define ATYPE_COLOR                     1L
  338.    #define ATYPE_BACK_COLOR                2L
  339.    #define ATYPE_MIX_MODE                  3L
  340.    #define ATYPE_BACK_MIX_MODE             4L
  341.  
  342.    /* Options for CharStringPos */
  343.  
  344.    #define CHS_START_XY                    0x00000020L
  345.    #define CHS_ATTR_INFO                   0x00000040L
  346.  
  347.    typedef struct _CSP_INFO   /* csp */
  348.    {
  349.       LONG  cSize;
  350.       LONG  lColor;
  351.       LONG  lBackColor;
  352.    } CSP_INFO;
  353.    typedef CSP_INFO *PCSP_INFO;
  354.  
  355.    /* Set/GetProcessControl */
  356.  
  357.    #define PCTL_DRAW                       0x00000001L
  358.    #define PCTL_BOUND                      0x00000002L
  359.    #define PCTL_CORRELATE                  0x00000004L
  360.    #define PCTL_USERBOUNDS                 0x00000008L
  361.    #define PCTL_AREA                       0x00000010L
  362.  
  363.    /* ResetBounds */
  364.  
  365.    #define RB_GPI                          0x00000001L
  366.    #define RB_USER                         0x00000002L
  367.  
  368.    /* GetBoundsData */
  369.  
  370.    #define GBD_GPI                         0L
  371.    #define GBD_USER                        1L
  372.  
  373.    /* EndArea Cancel Option */
  374.  
  375.    #define EA_DRAW                         0x00000000L
  376.    #define EA_CANCEL                       0x00000001L
  377.  
  378.    /* Bitblt Style */
  379.  
  380.    #define BLTMODE_SRC_BITMAP              0x00010000L
  381.    #define BLTMODE_ATTRS_PRES              0x00020000L
  382.    #define BBO_TARGWORLD                   0x00000100L
  383.  
  384.    typedef struct _BITBLTPARAMETERS   /* bbp */
  385.    {
  386.       RECTL rclTarg;
  387.       RECTL rclSrc;
  388.    } BITBLTPARAMETERS;
  389.    typedef BITBLTPARAMETERS *PBITBLTPARAMETERS;
  390.  
  391.    typedef struct _BITBLTATTRS   /* bba */
  392.    {
  393.       LONG cSize;
  394.       LONG lColor;
  395.       LONG lBackColor;
  396.    } BITBLTATTRS;
  397.    typedef BITBLTATTRS *PBITBLTATTRS;
  398.  
  399.    /* LCIDs */
  400.  
  401.    #define LCID_AVIO_1                     (-2L)
  402.    #define LCID_AVIO_2                     (-3L)
  403.    #define LCID_AVIO_3                     (-4L)
  404.    #define LCID_BITMAP_ID_REQUEST          (-5L)
  405.  
  406.    #define LCID_RANGE_GPI                  1L
  407.    #define LCID_RANGE_AVIO                 2L
  408.    #define LCID_RANGE_BOTH                 3L
  409.    #define LCID_GRAPHICS_MIN               1
  410.    #define LCID_GRAPHICS_MAX               254
  411.  
  412.    #define LCIDT_NONE                      0L
  413.  
  414.    /* ResetDC */
  415.  
  416.    #define RDC_RGBMODE                     0x1L
  417.    #define RDC_SETOWNERTOSHELL             0x2L
  418.  
  419.    /* SetRandomXform */
  420.  
  421.    #define SX_UNITY                        0L
  422.    #define SX_CAT_AFTER                    1L
  423.    #define SX_CAT_BEFORE                   2L
  424.    #define SX_OVERWRITE                    3L
  425.  
  426.    /* transform accelerators                    */
  427.    /*  These bits are only valid if the MATRIX_SIMPLE bit is set.           */
  428.    /*  The X and Y negate flags are only meaningful if MATRIX_UNITS is set.*/
  429.  
  430.    #define MATRIX_SIMPLE            0x0001L  /* two entries are zero */
  431.    #define MATRIX_UNITS             0x0002L  /* all entries are +1 or -1 */
  432.    #define MATRIX_XY_EXCHANGE       0x0004L  /* zeros are on the diagonal*/
  433.    #define MATRIX_X_NEGATE          0x0008L  /* X is hit by negative */
  434.    #define MATRIX_Y_NEGATE          0x0010L  /* Y is hit by negative */
  435.    #define MATRIX_TRANSLATION       0x0020L  /* non-zero translation */
  436.  
  437.    /* NotifyClipChange */
  438.  
  439.    #define NCC_CLEANDC              0x0002L  /* clear DC dirty bit */
  440.  
  441.    /* NotifyTransformChange */
  442.  
  443.    typedef struct _NOTIFYTRANSFORMDATA   /* ntd */
  444.    {
  445.       ULONG  usType;
  446.       XFORM  xform;
  447.    } NOTIFYTRANSFORMDATA;
  448.    typedef NOTIFYTRANSFORMDATA *PNOTIFYTRANSFORMDATA;
  449.  
  450.    /* ColorTable */
  451.  
  452.    #define LCOL_SYSCOLORS           0x0010L
  453.  
  454.  
  455.    /* query device caps */
  456.  
  457.    typedef struct _QCDARRAY   /* qcd */
  458.    {
  459.       LONG    iFormat;
  460.       LONG    iSmallest;
  461.       LONG    iLargest;
  462.       LONG    cAvailable;
  463.       LONG    cSpecifiable;
  464.       LONG    iMax;
  465.    } QCDARRAY;
  466.    typedef QCDARRAY *PQCDARRAY;
  467.  
  468.    #define CAPS_MIX_OR                  0x00000001L
  469.    #define CAPS_MIX_COPY                0x00000002L
  470.    #define CAPS_MIX_UNDERPAINT          0x00000004L
  471.    #define CAPS_MIX_XOR                 0x00000008L
  472.    #define CAPS_MIX_INVISIBLE           0x00000010L
  473.    #define CAPS_MIX_AND                 0x00000020L
  474.    #define CAPS_MIX_OTHER               0x00000040L
  475.  
  476.    #define CAPS_DEV_FONT_SIM_BOLD       1L      /* for CAPS_DEVICE_FONT_SIM */
  477.    #define CAPS_DEV_FONT_SIM_ITALIC     2L
  478.    #define CAPS_DEV_FONT_SIM_UNDERSCORE 4L
  479.    #define CAPS_DEV_FONT_SIM_STRIKEOUT  8L
  480.  
  481.    #define CAPS_BACKMIX_OR              0x00000001L
  482.    #define CAPS_BACKMIX_COPY            0x00000002L
  483.    #define CAPS_BACKMIX_UNDERPAINT      0x00000004L
  484.    #define CAPS_BACKMIX_XOR             0x00000008L
  485.    #define CAPS_BACKMIX_INVISIBLE       0x00000010L
  486.  
  487.  
  488.    /*#define CAPS_RASTER_BITBLT         0x00000001L defined in pmdev.h */
  489.    /*#define CAPS_RASTER_BANDING        0x00000002L */
  490.    /*#define CAPS_RASTER_STRETCHBLT     0x00000004L */
  491.    /*#define CAPS_RASTER_SETPEL         0x00000010L */
  492.    #define CAPS_FONT_OUTLINE_MANAGE     16L
  493.    #define CAPS_FONT_IMAGE_MANAGE       32L
  494.    #define SFONT_RASTER                 100
  495.    #define SFONT_OUTLINE                101
  496.    #define FONT              1000       /* must not conflict with RT_XXX */
  497.    /* constants in BSEDOS.H */
  498.  
  499.    /* DCCaps */
  500.  
  501.    #define DCCAPS_LINE                  0x0100
  502.    #define DCCAPS_CURVE                 0x0200
  503.    #define DCCAPS_AREA                  0x0400
  504.    #define DCCAPS_MARKER                0x0800
  505.    #define DCCAPS_TEXT                  0x1000
  506.  
  507.    /* DeviceDeleteBitmap */
  508.    #define BITMAP_USAGE_TRANSLATE       0x0004
  509.  
  510.    /* DeleteBitmap return structure */
  511.    typedef struct _DELETERETURN   /* dr */
  512.    {
  513.       ULONG      pInfo;
  514.       ULONG      pBits;
  515.    } DELETERETURN;
  516.    typedef DELETERETURN *PDELETERETURN;
  517.  
  518.    /* Short Line Header */
  519.  
  520.    #define SLH_FORMAT_IS_16_DOT_16 1
  521.    #define PSL_YMAJOR 0x8000    /* bit mask for usStyle */
  522.  
  523.    typedef struct _SHORTLINEHEADER   /* slh */
  524.    {
  525.       ULONG  ulStyle;
  526.       ULONG  ulFormat;
  527.       POINTL ptlStart;
  528.       POINTL ptlStop;
  529.       LONG   lxLeft;
  530.       LONG   lxRight;
  531.       struct _SHORTLINEHEADER *pslhNext;
  532.       struct _SHORTLINEHEADER *pslhPrev;
  533.    } SHORTLINEHEADER;
  534.    typedef SHORTLINEHEADER *PSHORTLINEHEADER;
  535.    /* Short Line */
  536.  
  537.    typedef struct _SHORTLINE   /* sl */
  538.    {
  539.       SHORTLINEHEADER slh;
  540.       LONG      ax[1];
  541.    } SHORTLINE;
  542.    typedef SHORTLINE *PSHORTLINE;
  543.  
  544.    /* Bounding rectangle for subpaths. */
  545.  
  546.    typedef struct _BRECTL          /* brctl */
  547.    {
  548.       POINTL ptl1;
  549.       POINTL ptl2;
  550.    } BRECTL;
  551.    typedef BRECTL *PBRECTL;
  552.  
  553.    typedef struct _RLEHDR   /* rle */
  554.    {
  555.       LONG     lType;
  556.       BRECTL   brectlBounds;
  557.       PVOID    pRLE;
  558.    } RLEHDR;
  559.    typedef RLEHDR *PRLEHDR;
  560.  
  561.  
  562.    typedef struct _SCANDATA   /* sd */
  563.    {
  564.       PSHORTLINE pslFirstLeft;
  565.       PSHORTLINE pslLastLeft;
  566.       PSHORTLINE pslFirstRight;
  567.       PSHORTLINE pslLastRight;
  568.       ULONG      c;
  569.       RECTL      rclBound;
  570.    } SCANDATA;
  571.    typedef SCANDATA *PSCANDATA;
  572.  
  573.    /* Index for Set/GetDriverInfo */
  574.  
  575.    #define DI_HDC                      0x00000000L
  576.    #define DI_HBITMAP                  0x00000001L
  577.  
  578. #endif  /* INCL_DDIMISC */
  579.  
  580. #ifdef INCL_DDIMISC2
  581.  
  582.    /* RealizeFont */
  583.  
  584.    #define REALIZE_FONT                 1   /* To be removed */
  585.    #define REALIZE_ENGINE_FONT          2
  586.    #define DELETE_FONT                  3
  587.  
  588.    #define RF_DEVICE_FONT               1
  589.    #define RF_LOAD_ENGINE_FONT          2
  590.    #define RF_DELETE_FONT               3
  591.    #define RF_DELETE_ENGINE_FONT        4
  592.  
  593. #endif  /* INCL_DDIMISC2 */
  594.  
  595. #ifdef INCL_DDIBUNDLES
  596.  
  597.    /* Device Line Bundle */
  598.  
  599.    typedef struct _LINEDEFS   /* ldef */
  600.    {
  601.       ULONG      defType;
  602.    } LINEDEFS;
  603.    typedef LINEDEFS *PLINDEFS;
  604.  
  605.    typedef struct _DLINEBUNDLE   /* dlbnd */
  606.    {
  607.       LONG       cAttr;
  608.       LONG       cDefs;
  609.       LINEBUNDLE lbnd;
  610.       LINEDEFS   ldef;
  611.    } DLINEBUNDLE;
  612.    typedef DLINEBUNDLE *PDLINEBUNDLE;
  613.  
  614.    /* Device Area Bundle */
  615.  
  616.    typedef struct _AREADEFS   /* adef */
  617.    {
  618.       ULONG      defSet;
  619.       ULONG      fFlags;
  620.       ULONG      CodePage;
  621.    } AREADEFS;
  622.    typedef AREADEFS *PAREADEFS;
  623.  
  624.    typedef struct _DAREABUNDLE   /* dabnd */
  625.    {
  626.       LONG       cAttr;
  627.       LONG       cDefs;
  628.       AREABUNDLE abnd;
  629.       AREADEFS   adef;
  630.    } DAREABUNDLE;
  631.    typedef DAREABUNDLE *PDAREABUNDLE;
  632.  
  633.    /* Device Character Bundle */
  634.  
  635.    typedef struct _CHARDEFS   /* cdef */
  636.    {
  637.       ULONG      defSet;
  638.       ULONG      fFlags;
  639.       ULONG      CodePage;
  640.       ULONG      charSpacing;
  641.    } CHARDEFS;
  642.    typedef CHARDEFS *PCHARDEFS;
  643.  
  644.    typedef struct _DCHARBUNDLE   /* dcbnd */
  645.    {
  646.       LONG       cAttr;
  647.       LONG       cDefs;
  648.       CHARBUNDLE cbnd;
  649.       CHARDEFS   cdef;
  650.    } DCHARBUNDLE;
  651.    typedef DCHARBUNDLE *PDCHARBUNDLE;
  652.  
  653.    /* Device Image Bundle */
  654.  
  655.    #ifdef BOGUS
  656.       typedef struct _IMAGEDEFS   /* idef */
  657.       {
  658.       } IMAGEDEFS;
  659.    #endif       /* BOGUS */
  660.  
  661.    typedef struct _DIMAGEBUNDLE   /* dibnd */
  662.    {
  663.       LONG       cAttr;
  664.       LONG       cDefs;
  665.       IMAGEBUNDLE ibnd;
  666.       /* IMAGEDEFS     idef; */
  667.    } DIMAGEBUNDLE;
  668.    typedef DIMAGEBUNDLE *PDIMAGEBUNDLE;
  669.  
  670.    /* Device Marker Bundle */
  671.  
  672.    typedef struct _MARKERDEFS   /* mdef */
  673.    {
  674.       ULONG      defSet;
  675.       ULONG      fFlags;
  676.       ULONG      CodePage;
  677.    } MARKERDEFS;
  678.    typedef MARKERDEFS *PMARKERDEFS;
  679.  
  680.    typedef struct _DMARKERBUNDLE   /* dmbnd */
  681.    {
  682.       LONG       cAttr;
  683.       LONG       cDefs;
  684.       MARKERBUNDLE mbnd;
  685.       MARKERDEFS   mdef;
  686.    } DMARKERBUNDLE;
  687.    typedef DMARKERBUNDLE *PDMARKERBUNDLE;
  688.  
  689.  
  690. #endif /* INCL_DDIBUNDLES */
  691.  
  692. #ifdef INCL_DDIFONTSTRUCS
  693.    #include <pmfont.h>
  694. #endif /* INCL_DDIFONTSTRUCS */
  695.  
  696. #ifdef INCL_DDIBITMAPFILE
  697.    #include <pmbitmap.h>
  698. #endif /* INCL_DDIBITMAPFILE */
  699.  
  700. #ifdef INCL_DDIPATHS
  701.    /* Curve types */
  702.  
  703.    #define CURVE_IDENTIFIER             0x43
  704.    #define LINE_IDENTIFIER              0x4C
  705.    #define CURVE_DO_FIRST_PEL           0x0002
  706.  
  707.    typedef struct _CURVE   /* cv */
  708.    {
  709.       BYTE        bIdent;             /*  1    1  */
  710.       BYTE        bType;              /*  1    2  */
  711.       USHORT      usReserved;         /*  2    4  */
  712.       ULONG       flStyle;            /*  4    8  */
  713.       ULONG       fl;                 /*  4   12  */
  714.       struct      _CURVE *pcvNext;    /*  4   16  */
  715.       struct      _CURVE *pcvPrev;    /*  4   20  */
  716.       struct      _CURVE *pcvAttrs;   /*  4   24  */
  717.       POINTFX     ptfxA;              /*  8   32  */
  718.       POINTFX     ptfxC;              /*  8   40  */
  719.       BYTE        Reserved2[28];      /* 28   68  */
  720.    } CURVE;
  721.    typedef CURVE *PCURVE;
  722.  
  723.    typedef struct _LINE   /* ln */
  724.    {
  725.       BYTE        bIdent;             /*  1    1  */
  726.       BYTE        bType;              /*  1    2  */
  727.       USHORT      usReserved;         /*  2    4  */
  728.       ULONG       flStyle;            /*  4    8  */
  729.       ULONG       fl;                 /*  4   12  */
  730.       PCURVE      pcvNext;            /*  4   16  */
  731.       PCURVE      pcvPrev;            /*  4   20  */
  732.       PCURVE      pcvAttrs;           /*  4   24  */
  733.       POINTFX     ptfxA;              /*  8   32  */
  734.       POINTFX     ptfxC;              /*  8   40  */
  735.       POINTL      ptlA;               /*  8   48  */
  736.       POINTL      ptlC;               /*  8   56  */
  737.       FIXED       fxRslope;           /*  4   60  */
  738.       BYTE        Reserved1[8];       /*  8   68  */
  739.    } LINE;
  740.    typedef LINE *PLINE;
  741.  
  742. #endif  /* INCL_DDIPATHS */
  743.  
  744. #ifdef INCL_GRE_JOURNALING
  745.    #define JNL_TEMP_FILE            0x00000001L
  746.    #define JNL_PERM_FILE            0x00000002L
  747.    #define JNL_ENGINERAM_FILE       0x00000004L
  748.    #define JNL_USERRAM_FILE         0x00000008L
  749.    #define JNL_DRAW_OPTIMIZATION    0x00000010L
  750.    #define JNL_BOUNDS_OPTIMIZATION  0x00000020L
  751. #endif  /* INCL_GRE_JOURNALING */
  752.  
  753.  
  754. #ifdef INCL_GRE_DEVICE
  755.  
  756.    /* QueryDeviceBitmaps */
  757.  
  758.    typedef struct _BITMAPFORMAT   /* bmf */
  759.    {
  760.       ULONG cPlanes;
  761.       ULONG cBitCount;
  762.    } BITMAPFORMAT;
  763.    typedef BITMAPFORMAT *PBITMAPFORMAT;
  764.  
  765. #endif /* INCL_GRE_DEVICE */
  766.  
  767. #ifdef INCL_GRE_PALETTE
  768.  
  769.    typedef struct _PALETTEINFOHEADER   /* palinfohdr */
  770.    {
  771.       ULONG  flCmd;         /* options from creation                   */
  772.       ULONG  ulFormat;      /* specifies format of entries at creation */
  773.       ULONG  cclr;          /* number of elements supplied at creation */
  774.    } PALETTEINFOHEADER;
  775.    typedef PALETTEINFOHEADER *NPPALETTEINFOHEADER;
  776.    typedef PALETTEINFOHEADER *PPALETTEINFOHEADER;
  777.  
  778.    typedef struct _PALETTEINFO   /* palinfo */
  779.    {
  780.       ULONG  flCmd;         /* options from creation                   */
  781.       ULONG  ulFormat;      /* specifies format of entries at creation */
  782.       ULONG  cclr;          /* number of elements supplied at creation */
  783.       RGB2   argb[1];       /* the palette entries                     */
  784.    } PALETTEINFO;
  785.    typedef PALETTEINFO *NPPALETTEINFO;
  786.    typedef PALETTEINFO *PPALETTEINFO;
  787.  
  788.    /* flType values for RealizePalette */
  789.    #define RP_BACKGROUND                0
  790.    #define RP_FOREGROUND                1
  791.    #define RP_DEFAULTSCHANGED           2
  792.  
  793. #endif
  794.  
  795. #ifdef INCL_GRE_BITMAPS
  796.    #define LR_CLIPPED   2
  797.    #define LR_NOTBORDER 0
  798.    #define LR_BORDER    1
  799.    #define LR_LEFT      2
  800.    #define LR_RIGHT     4
  801. #endif
  802.  
  803. /* Flags  for GreOutlinePath */
  804. #define OPTH_NO_CLIPPING_REQD         0x0001L
  805. #define OPTH_QRY_PATH_POINTS          0x0002L
  806.  
  807. /*** 32-bit cursor/pointer stuff ******************************/
  808. typedef struct _MCDESCRIPTION   /* mcdesc */
  809. {
  810.    PVOID    pMoveCursor;
  811.    ULONG    ulCodeLength;
  812.    PVOID    pCursorData;
  813.    ULONG    ulDataLength;
  814. }  MCDESCRIPTION;
  815. typedef MCDESCRIPTION *PMCDESCRIPTION;
  816.  
  817. typedef struct _WINCURSORDATA   /* winmc */
  818. {
  819.    ULONG      pMoveCursor;
  820.    ULONG      pMoveCursorAlias;
  821.    ULONG      pCursorData;
  822.    ULONG      pCursorDataAlias;
  823.    ULONG      ulRoutineType;
  824.    HMODULE    hModDisplay;
  825.    PVOID      pWCThunkCode;
  826.    ULONG      ulThunkLen;
  827.    USHORT     usR0CS;
  828.    USHORT     usR0DS;
  829. }  WINCURSORDATA;
  830. typedef WINCURSORDATA *PWINCURSORDATA;
  831.  
  832. #define MC_32BIT   32
  833. #define MC_16BIT   16
  834.  
  835. #ifdef INCL_GRE_SCREEN
  836.  
  837.    /* GetScreenBits */
  838.  
  839.    typedef LHANDLE   HSCA;     /* hsca */
  840.    typedef HSCA *PHSCA;
  841.  
  842.    #define GSB_OPT_4BPP    0x0000L
  843.    #define GSB_OPT_8BPP    0x0001L
  844.    #define GSB_OPT_16BPP   0x0002L
  845.    #define GSB_OPT_LINEAR  0x0000L
  846.    #define GSB_OPT_PLANAR  0x0008L
  847.    #define GSB_OPT_HRGN    0x0010L
  848.  
  849. #endif /* INCL_GRE_SCREEN */
  850.  
  851. #include <pmddim.h>
  852.  
  853. /* NOINC */
  854. #ifdef __cplusplus
  855.         }
  856. #endif
  857.    #pragma info( none )
  858.    #ifndef __CHKHDR__
  859.       #pragma info( restore )
  860.    #endif
  861.    #pragma info( restore )
  862. /* INC */
  863.  
  864. /**************************** end of file **********************************/
  865.