home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / h / ddi.h < prev    next >
Text File  |  1999-03-15  |  21KB  |  564 lines

  1. /*****************************************************************************
  2.  *
  3.  * SOURCE FILE NAME = DDI.H
  4.  *
  5.  * DESCRIPTIVE NAME = Video and Printer DDI Structures and defines
  6.  *
  7.  * Copyright : COPYRIGHT IBM CORPORATION, 1993
  8.  *             LICENSED MATERIAL - PROGRAM PROPERTY OF IBM
  9.  *             REFER TO COPYRIGHT INSTRUCTION FORM#G120-2083
  10.  *             RESTRICTED MATERIALS OF IBM
  11.  *             IBM CONFIDENTIAL
  12.  *
  13.  * ==========================================================================
  14.  *
  15.  * The folowing symbols are used in this file for conditional sections.
  16.  *
  17.  *   #define:                To include:
  18.  *
  19.  *   INCL_VMANDDI            Include all VMI interface definitions
  20.  *   INCL_VMANWIN            Include VMAN to VDD interface definitions
  21.  *   INCL_VMANHELP           Include VMAN Helper definitions and prototypes
  22.  *
  23.  * ==========================================================================
  24.  *
  25.  * VERSION = V2.1
  26.  *
  27.  * DESCRIPTION
  28.  *      This file contains all of the defines and
  29.  *      data structures that are shared between the
  30.  *      video manager and the translation layers.
  31.  *
  32.  * FUNCTIONS
  33.  *
  34.  * NOTES
  35.  *
  36.  * STRUCTURES
  37.  *
  38.  * EXTERNAL REFERENCES
  39.  *
  40.  * EXTERNAL FUNCTIONS
  41.  *
  42.  * CHANGE ACTIVITY =
  43.  *  DATE      FLAG        APAR   CHANGE DESCRIPTION
  44.  *  --------  ----------  -----  --------------------------------------
  45.  *  mm/dd/yy  @Vr.mpppxx  xxxxx  xxxxxxx
  46.  *
  47.  ****************************************************************************/
  48.  
  49. /* NOINC */
  50. #ifndef DDI_INCLUDED
  51. /* INC */
  52.  
  53.   #define DDI_INCLUDED
  54.  
  55.   /**  Possible return codes from the individual DDI's
  56.   */
  57.   #define RC_SUCCESS                   0
  58.   #define RC_SIMULATE                  1
  59.   #define RC_UNSUPPORTED               2
  60.   #define RC_ERROR                     3
  61.   #define RC_ERROR_IN_BACKGROUND       4
  62.   #define RC_ERROR_NO_HANDLE           5
  63.   #define RC_ERROR_RESOURCE_NOT_FOUND  6
  64.   #define RC_ERROR_INVALID_PARAMETER   7
  65.   #define RC_ERROR_OUT_OF_MEMORY       8
  66.   #define RC_DISABLED                  9
  67.   #define RC_ENABLED                   10
  68.  
  69.  
  70.   /*
  71.   **  Defines and structures for the GHI_CMD_BITBLT DDI
  72.   */
  73.   typedef struct _BMAPINFO {        /* bmapinfo */
  74.      ULONG  ulLength;
  75.      ULONG  ulType;
  76.      ULONG  ulWidth;
  77.      ULONG  ulHeight;
  78.      ULONG  ulBpp;
  79.      ULONG  ulBytesPerLine;
  80.      PBYTE  pBits;
  81.   } BMAPINFO;
  82.   typedef BMAPINFO  *PBMAPINFO;
  83.  
  84.   typedef struct _BLTRECT {         /* bltrect */
  85.      ULONG  ulXOrg;
  86.      ULONG  ulYOrg;
  87.      ULONG  ulXExt;
  88.      ULONG  ulYExt;
  89.   } BLTRECT;
  90.   typedef BLTRECT  *PBLTRECT;
  91.  
  92.   /*
  93.   **  Defines for the ulType field of the BMAPINFO data structure
  94.   */
  95.   #define BMAP_VRAM            0x00000000
  96.   #define BMAP_MEMORY          0x00000001
  97.   #define BMAP_BANKED          0x00000010
  98.   #define BMAP_VERTICAL_SCAN   0x10000000
  99.   #define BMAP_FOCAFONT        0x20000000
  100.  
  101.   /* Bank info passed to SD from GRE2VMAN       */
  102.   /* Passed in Overloaded 2nd function param    */
  103.   #define TYPE_GRDBNKINFO     0x00000001
  104.   #define TYPE_CMYKINFO       0x00000002
  105.  
  106.   typedef struct _GRDBNKINFO {       /* gbi */
  107.      ULONG ulLength;                 /* denotes length of ver. x                   */
  108.      ULONG ulType;                   /* 2nd parameter structure type               */
  109.      ULONG ulAperture;               /* Aperture Size for banked devices           */
  110.      ULONG ulGID;                    /* Graphics Adapter ID used by VMAN           */
  111.      ULONG ulCurrBank;               /* Current bank (to avoid unnecessary change) */
  112.      ULONG ulReserved;               /* System Reserved ulong                      */
  113.      PFN   pfnBankSwitch;            /* Function Pointer to Bank Switching Routine */
  114.      PVOID pvReserved;               /* System Reserved Pointer                    */
  115.   }  GRDBNKINFO;
  116.   typedef GRDBNKINFO *PGRDBNKINFO;
  117.  
  118.   #define CMYK_DEVICE          0x00000002
  119.   #define CMY_ONLY             0x00000004
  120.   #define CMYK_INTERLEAVE      0x00000008
  121.  
  122.   typedef struct _BITBLTINFO {      /* bitbltinfo */
  123.      ULONG        ulLength;
  124.      ULONG        ulBltFlags;
  125.      ULONG        cBlits;
  126.      ULONG        ulROP;
  127.      ULONG        ulMonoBackROP;
  128.      ULONG        ulSrcFGColor;
  129.      ULONG        ulSrcBGColor;
  130.      ULONG        ulPatFGColor;
  131.      ULONG        ulPatBGColor;
  132.      PBYTE        abColors;
  133.      PBMAPINFO    pSrcBmapInfo;
  134.      PBMAPINFO    pDstBmapInfo;
  135.      PBMAPINFO    pPatBmapInfo;
  136.      PPOINTL      aptlSrcOrg;
  137.      PPOINTL      aptlPatOrg;
  138.      PBLTRECT     abrDst;
  139.      PRECTL       prclSrcBounds;    /* incl/excl bounds. */
  140.      PRECTL       prclDstBounds;    /* incl/excl bounds. */
  141.   } BITBLTINFO;
  142.   typedef BITBLTINFO *PBITBLTINFO;
  143.  
  144.   /*
  145.   ** Defines for ulBltFlags field of the BITBLTINFO data structure
  146.   **
  147.   ** The default state of the flags are as follows:
  148.   **
  149.   ** DIRECTION      = Left to right - top to bottom
  150.   ** TRANSPARENCY   = NONE
  151.   ** PATTERN STYLE  = UNKNOWN
  152.   ** BACKGROUND ROP = INVALID
  153.   */
  154.  
  155.   #define BF_DEFAULT_STATE          0x00000000  // blt dir X and Y positive.
  156.  
  157.   #define BF_DIR_X_NEGATIVE         0x00000001
  158.   #define BF_DIR_RIGHT_LEFT         BF_DIR_X_NEGATIVE
  159.  
  160.   #define BF_DIR_Y_NEGATIVE         0x00000002
  161.   #define BF_DIR_BOTTOM_TOP         BF_DIR_Y_NEGATIVE
  162.  
  163.   #define BF_ROP_INCL_SRC           0x00000004
  164.   #define BF_ROP_INCL_PAT           0x00000008
  165.  
  166.   #define BF_SRC_TRANSPARENT        0x00000010
  167.   #define BF_DST_TRANSPARENT        0x00000020
  168.   #define BF_PAT_TRANSPARENT        0x00000040
  169.  
  170.   #define BF_PAT_SOLID              0x00000080
  171.   #define BF_PAT_HOLLOW             0x00000100
  172.  
  173.   #define BF_APPLY_BACK_ROP         0x00000200
  174.  
  175.   #define BF_SRC_MONOINVERT         0x00000400
  176.   #define BF_PAT_MONOINVERT         0x00000800
  177.   #define BF_DST_MONOINVERT         0x00020000
  178.  
  179.   #define BF_SRC_BITS_EXTERNAL      0x00001000
  180.  
  181.   #define BF_LAST_BLT               0x00002000
  182.   #define BF_SRC_Y_FLIP             0x00004000
  183.  
  184.   #define BF_SRC_X_FLIP             0x00008000
  185.   #define BF_SRC_VERTICAL_SCAN      0x00010000
  186.  
  187.   /*
  188.   **  Defines and structures for the GHI_CMD_LINE DDI
  189.   */
  190.   typedef struct _LINEPACK {           /* linepack */
  191.      ULONG            ulStyleStep;
  192.      ULONG            ulStyleValue;
  193.      ULONG            ulFlags;
  194.      struct _LINEPACK * plpkNext;
  195.      ULONG            ulAbsDeltaX;
  196.      ULONG            ulAbsDeltaY;
  197.      POINTL           ptlClipStart;
  198.      POINTL           ptlClipEnd;
  199.      POINTL           ptlStart;
  200.      POINTL           ptlEnd;
  201.      LONG             lClipStartError; /* Bresenham error at the clip start.*/
  202.                                        /* not valid for horizontal or       */
  203.                                        /* vertical lines.                   */
  204.   } LINEPACK;    /* lpk */
  205.   typedef LINEPACK  *PLINEPACK;   /* plpk */
  206.  
  207.  
  208.   /*
  209.   **  Defines for the ulFlags field of the LINEPACK/LINEINFO2 data structure
  210.   */
  211.   #define LINE_DO_FIRST_PEL      0x00000002
  212.   #define LINE_DIR_Y_POSITIVE    0x00000004
  213.   #define LINE_HORIZONTAL        0x00000008
  214.   #define LINE_X_MAJOR           0x00000010
  215.   #define LINE_DIR_X_POSITIVE    0x00000020
  216.   #define LINE_VERTICAL          0x00001000
  217.   #define LINE_STYLE_X_MAJOR     0x00002000
  218.   #define LINE_DO_LAST_PEL       0x00004000
  219.   #define LINE_MONO_INVERT       0x00008000  /* need to set for the first              */
  220.                                              /* line only, if required.                */
  221.   #define LINE_START_CLIP        0x00010000  /* first line in LINEINFO2 is clipped     */
  222.   #define LINE_END_CLIP          0x00020000  /* last line in LINEINFO2 is clipped      */
  223.   #define LINE_Y_FLIP            0x00040000  /* flip Y for all lines in LINEINFO2      */
  224.   #define LINE_ALL_RADIAL        0x00080000  /* all lines in LINEINFO2 are vertical    */
  225.                                              /* or horizontal or 45/135/225/315 degree */
  226.   #define LINE_DISJOINT          0x00100000  /* disjoint lines                         */
  227.  
  228.   /*  Line drawing
  229.   **
  230.   **    The line starts from ptlStart and ends at ptlEnd(inclusive).
  231.   **    The device can do the Bresenham either from ptlStart or
  232.   **    from the ptlClipStart using the lClipStartError and
  233.   **    will only set the pels from ptlClipStart to ptlClipEnd(inclusive).
  234.   **
  235.   **  ulAbsDeltaX :
  236.   **    absolute (ptlStart.x - ptlEnd.x)
  237.   **
  238.   **  ulAbsDeltaY :
  239.   **    absolute (ptlStart.y - ptlEnd.y)
  240.   **
  241.   **  lClipStartError:
  242.   **
  243.   **    This is the standard Bresenham error at the clipped start point.
  244.   **    This is calculated from the initial error at the start point and
  245.   **    the error increments for major step and diagonal step.
  246.   **
  247.   **    The initial error and the error increments are:
  248.   **
  249.   **    MAX           = maximum (ulAbsDeltaX, ulAbsDeltaY)
  250.   **    MIN           = minimum (ulAbsDeltaX, ulAbsDeltaY)
  251.   **    Major Inc.    = Increment to the error for
  252.   **                    stepping along the major axis.
  253.   **                  = 2 * MIN
  254.   **    Diagonal Inc. = Increment to the error for
  255.   **                    stepping along the major and minor axis.
  256.   **                  = 2 * MIN - 2 * MAX
  257.   **    Initial error = Error at the start point.
  258.   **                  = 2 * MIN - MAX  if LINE_DIR_X_POSITIVE is on
  259.   **                  = 2 * MIN - MAX - 1 if LINE_DIR_X_POSITIVE is off.
  260.   **
  261.   **   Horizontal and vertical lines.
  262.   **      The line is drawn from the clipped start to clipped end.
  263.   **      The lClipStartError will not be given.
  264.   **
  265.   **   First pel consideration.
  266.   **      Set the the first pel at the ptlStart (not ptlClipStart) only
  267.   **      if LINE_DO_FIRST_PEL is set and the first pel is not clipped out.
  268.   **
  269.   **   Last pel consideration.
  270.   **      Set the the last pel at the ptlEnd (not ptlClipEnd) only
  271.   **      if LINE_DO_LAST_PEL is set and the last pel is not clipped out.
  272.   **
  273.   **
  274.   **   Styling.
  275.   **      Lines are styled using the ulStyleMask, ulStyleStep and ulStyleValue.
  276.   **
  277.   **      ulStyleMask:
  278.   **         A 32 bit style mask.
  279.   **
  280.   **      ulStyleStep:
  281.   **         The value to be added to ulStyleValue
  282.   **         on each pel stepped along the style major direction.
  283.   **
  284.   **      ulStyleValue:
  285.   **         The style value at the current pel.
  286.   **         it is composed of an error value and a mask position as :
  287.   **
  288.   **         ┌────────────────────────────────────────────────────┐
  289.   **         │    high word   │  3 bits  │  5 bits  │   8 bits    │
  290.   **         └────────────────────────────────────────────────────┘
  291.   **         │    not used    │ not used │ mask pos │ error value │
  292.   **
  293.   **      Error Value :
  294.   **         Error value at the current pel.
  295.   **
  296.   **      Mask Position :
  297.   **         Bit position of the ulStyleMask.
  298.   **         if this bit is on,
  299.   **            set the current pel to the ulFGColor through usForeROP,
  300.   **         otherwise
  301.   **            set the current pel to the ulBGColor through usBackRop
  302.   **
  303.   */
  304.   typedef struct _LINEINFO {        /* linfo */
  305.      ULONG          ulLength;
  306.      ULONG          ulType;
  307.      ULONG          ulStyleMask;
  308.      ULONG          cLines;
  309.      ULONG          ulFGColor;
  310.      ULONG          ulBGColor;
  311.      USHORT         usForeROP;
  312.      USHORT         usBackROP;
  313.      PBMAPINFO      pDstBmapInfo;
  314.      PLINEPACK      alpkLinePack;
  315.      PRECTL         prclBounds;     /* incl/incl bounds. */
  316.   } LINEINFO;      /* linfo */
  317.   typedef  LINEINFO *PLINEINFO;     /* plinfo */
  318.  
  319.   typedef struct _LINEINFO2 {       /* linfo2 */
  320.      ULONG          ulLength;       /* same as lineinfo */
  321.      ULONG          ulType;         /* same as lineinfo */
  322.      ULONG          ulStyleMask;    /* same as lineinfo */
  323.      ULONG          cLines;         /* same as lineinfo */
  324.      ULONG          ulFGColor;      /* same as lineinfo */
  325.      ULONG          ulBGColor;      /* same as lineinfo */
  326.      USHORT         usForeROP;      /* same as lineinfo */
  327.      USHORT         usBackROP;      /* same as lineinfo */
  328.      PBMAPINFO      pDstBmapInfo;   /* same as lineinfo */
  329.      ULONG          ulFlags;        /* LINE_* see above */
  330.      ULONG          ulXYStyleStep;  /* low byte of low word: x style, high byte of low word: y style */
  331.      PULONG         pulStyleValue;  /* style value at start point */
  332.      POINTL         ptlOrigin;      /* origin           */
  333.      PPOINTL        pptlStart;      /* start point      */
  334.      PPOINTL        pptlLines;      /* points array     */
  335.      POINTL         ptlClipStart;   /* clipped start point if it is clipped */
  336.      POINTL         ptlClipEnd;     /* clipped end point if it is clipped   */
  337.      LONG           lClipStartError;/* Bresenham error at the clip start.   */
  338.                                     /* for first line.                      */
  339.                                     /* not valid for horizontal or          */
  340.                                     /* vertical lines.                      */
  341.      PRECTL         prclBounds;     /* incl/incl bounds.*/
  342.  
  343.   } LINEINFO2;      /* linfo2 */
  344.   typedef  LINEINFO2 *PLINEINFO2;   /* plinfo2 */
  345.  
  346.   /*
  347.   **  Defines for the ulType field of the LINEINFO data structure
  348.   */
  349.   #define LINE_SOLID       0x01
  350.   #define LINE_INVISIBLE   0x02
  351.   #define LINE_ALTERNATE   0x03
  352.  
  353.  
  354.   /*
  355.   ** Defines for 2 way Line ROPS
  356.   */
  357.                                     /* PATTERN = 0xC and DEST = 0xA */
  358.   #define LR_ZERO               0   /* 0x0                          */
  359.   #define LR_INVERTMERGEPAT     1   /* ~(LR_DEST | LR_PATTERN)      */
  360.   #define LR_MASKINVERTPAT      2   /* (~LR_PATTERN) & LR_DEST      */
  361.   #define LR_INVERTCOPYPAT      3   /* ~LR_PATTERN                  */
  362.   #define LR_MASKPATINVERT      4   /* (~LR_DEST) & LR_PATTERN      */
  363.   #define LR_INVERT             5   /* ~LR_DEST                     */
  364.   #define LR_XORPAT             6   /* LR_DEST ^ LR_PATTERN         */
  365.   #define LR_INVERTMASKPAT      7   /* ~(LR_DEST & LR_PATTERN)      */
  366.   #define LR_MASKPAT            8   /* LR_DEST & LR_PATTERN         */
  367.   #define LR_INVERTXORPAT       9   /* ~(LR_DEST ^ LR_PATTERN)      */
  368.   #define LR_LEAVEALONE        10   /* LR_DEST                      */
  369.   #define LR_MERGEINVERTPAT    11   /* (~LR_PATTERN) | LR_DEST      */
  370.   #define LR_PATCOPY           12   /* LR_PATTERN                   */
  371.   #define LR_MERGEPATINVERT    13   /* (~LR_DEST) | LR_PATTERN      */
  372.   #define LR_MERGEPAT          14   /* LR_PATTERN | LR_DEST         */
  373.   #define LR_ONE               15   /* 0x0F                         */
  374.  
  375.   /*
  376.   **  Defines and structures for the TextBlt
  377.   */
  378.   typedef struct _GLYPHINFO {                  /* glphyinfo */
  379.           char      bAspace;
  380.           char      bBspace;
  381.           char      bCspace;
  382.           char      bPad;
  383.           BMAPINFO  bmapinfo;
  384.   } GLYPHINFO;                                /* glyphinfo */
  385.   typedef GLYPHINFO *PGLYPHINFO;              /* pglyphinfo */
  386.  
  387.  
  388.   typedef struct _GLBTBL {                     /* glbtbl */
  389.           PGLYPHINFO          pGlyphInfo[1];   // Up to 256 entries per table
  390.   } GLBTBL;
  391.   typedef GLBTBL *PGLBTBL;
  392.  
  393.   typedef struct _GHBTBL {                     /* ghbtbl */
  394.           PGLBTBL             pglbTbl[1];      // Up to 256 entries per table
  395.   } GHBTBL;
  396.   typedef GHBTBL *PGHBTBL;
  397.  
  398.   // A subset of FontInfo ( pmddi.h ) for TextBlt
  399.   typedef struct _DEVFONTINFO {                      /* dfi */
  400.           ULONG                  ulFntCnt;           // Maximum glyphs contained in this font.
  401.           ULONG                  fFontInfo;          // Flags
  402.           ULONG                  ulEngTag;           // Renderer Tag - i.e. 'GRE'
  403.           ULONG                  ulUniqueFntID;
  404.           ULONG                  ulMaxHeight;
  405.           ULONG                  ulMaxWidth;
  406.           PGHBTBL                pghbTbl;
  407.           ULONG                  ulHalfWidth;
  408.           CHAR                   szGlyphlist[16];
  409.           ULONG                  ulReserved1;
  410.           ULONG                  ulReserved2;
  411.   } DEVFONTINFO;
  412.   typedef DEVFONTINFO *PDEVFONTINFO;
  413.  
  414.   #define  GRETAG     ('G' + ('R'<<8) + ('E'<<16) + ('_'<<24))    // "GRE_"
  415.   #define  WINTAG     ('W' + ('I'<<8) + ('N'<<16) + ('_'<<24))    // "WIN_"
  416.  
  417.   #define  DFI_FIXED_FONT        0x00000001
  418.   #define  DFI_DBCS_FONT         0x00000002
  419.  
  420.   typedef struct _TEXTBLTINFO {                /* tbi */
  421.           ULONG               ulLength;
  422.           ULONG               flOptions;
  423.           ULONG               lGlyphCnt;
  424.           PLONG               pGlyphIndices;
  425.           ULONG               ulFGMix;
  426.           ULONG               ulBGMix;
  427.           ULONG               ulFGColor;
  428.           ULONG               ulBGColor;
  429.           PBMAPINFO           pDstBmapInfo;
  430.           PDEVFONTINFO        pDevFntInfo;
  431.           ULONG               ulClpCnt;        // Non Clipping Drivers Ignore
  432.           PBLTRECT            abrClipRects;    // Non Clipping Drivers Ignore
  433.           PPOINTL             aptlSrcOrg;      // Clipping Drivers Ignore
  434.           PBLTRECT            abrDst;          // Clipping Drivers Ignore .ulXExt & ulYExt
  435.   } TEXTBLTINFO;
  436.   typedef TEXTBLTINFO *PTEXTBLTINFO;
  437.  
  438.  
  439.   /*
  440.   **  Defines and structures for the GHI_CMD_PALETTE
  441.   */
  442.   typedef struct _HWPALETTEINFO { /* hwpaletteinfo */
  443.      ULONG  ulLength;
  444.      ULONG  fFlags;               /* Get/Set palette                      */
  445.      ULONG  ulStartIndex;         /*                                      */
  446.      ULONG  ulNumEntries;         /*                                      */
  447.      PRGB2  pRGBs;                /*                                      */
  448.   } HWPALETTEINFO;
  449.   typedef HWPALETTEINFO *PHWPALETTEINFO;
  450.  
  451.   #define PALETTE_GET             0x0001
  452.   #define PALETTE_SET             0x0002
  453.  
  454.   /*
  455.   **  Defines and structures for the GHI_CMD_MOVEPTR DDI
  456.   */
  457.   typedef struct _HWMOVEPTRIN {     /* hwmoveptrin */
  458.      ULONG  ulLength;
  459.      POINTL ptlPos;
  460.   } HWMOVEPTRIN;
  461.   typedef HWMOVEPTRIN *PHWMOVEPTRIN;
  462.  
  463.  
  464.   /*
  465.   **  Defines and structures for the GHI_CMD_SETPTR DDI
  466.   */
  467.   typedef struct _HWSETPTRIN {      /* hwsetptrin */
  468.      ULONG  ulLength;
  469.      PBYTE  pbANDMask;
  470.      PBYTE  pbXORMask;
  471.      PBYTE  pbBits;
  472.      ULONG  ulBpp;
  473.      ULONG  ulWidth;
  474.      ULONG  ulHeight;
  475.      POINTL ptlHotspot;
  476.   } HWSETPTRIN;
  477.   typedef HWSETPTRIN *PHWSETPTRIN;
  478.  
  479.   typedef struct _HWSETPTROUT {      /* hwsetptrout */
  480.      ULONG ulLength;
  481.      ULONG ulStatus;
  482.   } HWSETPTROUT;
  483.   typedef HWSETPTROUT *PHWSETPTROUT;
  484.  
  485.   /*
  486.   ** Defines for the ulStatus field of the HWSETPTROUT structure
  487.   */
  488.   #define POINTER_VISIBLE       0x0001
  489.   #define POINTER_COLOR         0x0002
  490.  
  491.   /*
  492.   ** This flag is set by the GRADD if the pointer just set in
  493.   ** via the GHI_CMD_SETPTR command is not a hardware sprite.
  494.   ** VMAN uses this flag to determine whether it must remove
  495.   ** the pointer on drawing operations that overlap the pointer.
  496.   */
  497.   #define POINTER_SOFTWARE      0x0004
  498.  
  499.   /*
  500.   ** This flag is set by the GRADD if the pointer just set in
  501.   ** via the GHI_CMD_SETPTR command does not require serialization
  502.   ** with the normal drawing operations.  This flag will typically
  503.   ** be set if GRADD is using a hardware sprite, since moving
  504.   ** a sprite often only requires changing registers which do not
  505.   ** effect the drawing engine. When this flag is set, pointer
  506.   ** movement performance is drastically improved.
  507.   */
  508.   #define POINTER_FAST          0x0008
  509.  
  510.   /*
  511.   **  Defines and structures for the GHI_CMD_SHOWPTR DDI
  512.   */
  513.  
  514.   typedef struct _HWSHOWPTRIN {     /* hwshowptrin */
  515.      ULONG ulLength;
  516.      BOOL  fShow;
  517.   } HWSHOWPTRIN;
  518.   typedef HWSHOWPTRIN *PHWSHOWPTRIN;
  519.  
  520.   /*
  521.   **  Defines and structures for the GHI_CMD_REQUESTHW command
  522.   */
  523.   /*
  524.   ** Defines for the ulFlags field of HWREQIN
  525.   */
  526.   #define REQUEST_HW               0x1
  527.   #define REQUEST_SEM_ONLY         0x2
  528.  
  529.   typedef struct _HWREQIN {        /* hwreqin */
  530.      ULONG  ulLength;
  531.      ULONG  ulFlags;
  532.      ULONG  cScrChangeRects;
  533.      PRECTL arectlScreen;
  534.   } HWREQIN;
  535.   typedef HWREQIN *PHWREQIN;
  536.  
  537.  
  538.   /*
  539.   **  Defines and structures for the GHI_CMD_BANK command
  540.   */
  541.   typedef struct _HWBANKIN {       /* hwbankin  */
  542.      ULONG  ulLength;
  543.      ULONG  ulFlags;               /* Get/Set bank */
  544.      ULONG  ulBank;                /* Bank number  */
  545.   } HWBANKIN;
  546.   typedef HWBANKIN *PHWBANKIN;
  547.  
  548.   /*
  549.   **  Defines for the ulFlags field of the HWBANKIN data structure.
  550.   */
  551.   #define BANK_SET                     1
  552.   #define BANK_GET                     2
  553.  
  554.   typedef struct _HWBANKOUT {      /* hwbankout */
  555.      ULONG  ulLength;
  556.      ULONG  ulBank;                /* Bank number  */
  557.   } HWBANKOUT;
  558.   typedef HWBANKOUT *PHWBANKOUT;
  559.  
  560. /* NOINC */
  561. #endif /* DDI_INCLUDED */
  562. /* INC */
  563.  
  564.