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