ddraw.h
上传用户:henghua
上传日期:2007-11-14
资源大小:7655k
文件大小:240k
源码类别:

游戏引擎

开发平台:

Visual C++

  1.  */
  2. #define DDSCAPS2_DISCARDBACKBUFFER              0x10000000L
  3. /*
  4.  * Indicates that all surfaces in this creation chain should be given an alpha channel.
  5.  * This flag will be set on primary surface chains that may have no explicit pixel format
  6.  * (and thus take on the format of the current display mode).
  7.  * The driver should infer that all these surfaces have a format having an alpha channel.
  8.  * (e.g. assume D3DFMT_A8R8G8B8 if the display mode is x888.)
  9.  */
  10. #define DDSCAPS2_ENABLEALPHACHANNEL             0x20000000L
  11. /*
  12.  * Indicates that all surfaces in this creation chain is extended primary surface format.
  13.  * This flag will be set on extended primary surface chains that always have explicit pixel
  14.  * format and the pixel format is typically GDI (Graphics Device Interface) couldn't handle,
  15.  * thus only used with fullscreen application. (e.g. D3DFMT_A2R10G10B10 format)
  16.  */
  17. #define DDSCAPS2_EXTENDEDFORMATPRIMARY          0x40000000L
  18. /*
  19.  * Indicates that all surfaces in this creation chain is additional primary surface.
  20.  * This flag will be set on primary surface chains which must present on the adapter
  21.  * id provided on dwCaps4. Typically this will be used to create secondary primary surface
  22.  * on DualView display adapter.
  23.  */
  24. #define DDSCAPS2_ADDITIONALPRIMARY              0x80000000L
  25. /*
  26.  * This is a mask that indicates the set of bits that may be set
  27.  * at createsurface time to indicate number of samples per pixel
  28.  * when multisampling
  29.  */
  30. #define DDSCAPS3_MULTISAMPLE_MASK               0x0000001FL
  31. /*
  32.  * This is a mask that indicates the set of bits that may be set
  33.  * at createsurface time to indicate the quality level of rendering
  34.  * for the current number of samples per pixel
  35.  */
  36. #define DDSCAPS3_MULTISAMPLE_QUALITY_MASK       0x000000E0L
  37. #define DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT      5
  38. /*
  39.  * This bit is reserved for internal use 
  40.  */
  41. #define DDSCAPS3_RESERVED1                      0x00000100L
  42. /*
  43.  * This bit is reserved for internal use 
  44.  */
  45. #define DDSCAPS3_RESERVED2                      0x00000200L
  46. /*
  47.  * This indicates whether this surface has light-weight miplevels
  48.  */
  49. #define DDSCAPS3_LIGHTWEIGHTMIPMAP              0x00000400L
  50. /*
  51.  * This indicates that the mipsublevels for this surface are auto-generated
  52.  */
  53. #define DDSCAPS3_AUTOGENMIPMAP                  0x00000800L
  54. /*
  55.  * This indicates that the mipsublevels for this surface are auto-generated
  56.  */
  57. #define DDSCAPS3_DMAP                           0x00001000L
  58.  /****************************************************************************
  59.  *
  60.  * DIRECTDRAW DRIVER CAPABILITY FLAGS
  61.  *
  62.  ****************************************************************************/
  63. /*
  64.  * Display hardware has 3D acceleration.
  65.  */
  66. #define DDCAPS_3D                       0x00000001l
  67. /*
  68.  * Indicates that DirectDraw will support only dest rectangles that are aligned
  69.  * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
  70.  * READ ONLY.
  71.  */
  72. #define DDCAPS_ALIGNBOUNDARYDEST        0x00000002l
  73. /*
  74.  * Indicates that DirectDraw will support only source rectangles  whose sizes in
  75.  * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively.  READ ONLY.
  76.  */
  77. #define DDCAPS_ALIGNSIZEDEST            0x00000004l
  78. /*
  79.  * Indicates that DirectDraw will support only source rectangles that are aligned
  80.  * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
  81.  * READ ONLY.
  82.  */
  83. #define DDCAPS_ALIGNBOUNDARYSRC         0x00000008l
  84. /*
  85.  * Indicates that DirectDraw will support only source rectangles  whose sizes in
  86.  * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively.  READ ONLY.
  87.  */
  88. #define DDCAPS_ALIGNSIZESRC             0x00000010l
  89. /*
  90.  * Indicates that DirectDraw will create video memory surfaces that have a stride
  91.  * alignment equal to DIRECTDRAWCAPS.dwAlignStride.  READ ONLY.
  92.  */
  93. #define DDCAPS_ALIGNSTRIDE              0x00000020l
  94. /*
  95.  * Display hardware is capable of blt operations.
  96.  */
  97. #define DDCAPS_BLT                      0x00000040l
  98. /*
  99.  * Display hardware is capable of asynchronous blt operations.
  100.  */
  101. #define DDCAPS_BLTQUEUE                 0x00000080l
  102. /*
  103.  * Display hardware is capable of color space conversions during the blt operation.
  104.  */
  105. #define DDCAPS_BLTFOURCC                0x00000100l
  106. /*
  107.  * Display hardware is capable of stretching during blt operations.
  108.  */
  109. #define DDCAPS_BLTSTRETCH               0x00000200l
  110. /*
  111.  * Display hardware is shared with GDI.
  112.  */
  113. #define DDCAPS_GDI                      0x00000400l
  114. /*
  115.  * Display hardware can overlay.
  116.  */
  117. #define DDCAPS_OVERLAY                  0x00000800l
  118. /*
  119.  * Set if display hardware supports overlays but can not clip them.
  120.  */
  121. #define DDCAPS_OVERLAYCANTCLIP          0x00001000l
  122. /*
  123.  * Indicates that overlay hardware is capable of color space conversions during
  124.  * the overlay operation.
  125.  */
  126. #define DDCAPS_OVERLAYFOURCC            0x00002000l
  127. /*
  128.  * Indicates that stretching can be done by the overlay hardware.
  129.  */
  130. #define DDCAPS_OVERLAYSTRETCH           0x00004000l
  131. /*
  132.  * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
  133.  * other than the primary surface.
  134.  */
  135. #define DDCAPS_PALETTE                  0x00008000l
  136. /*
  137.  * Indicates that palette changes can be syncd with the veritcal refresh.
  138.  */
  139. #define DDCAPS_PALETTEVSYNC             0x00010000l
  140. /*
  141.  * Display hardware can return the current scan line.
  142.  */
  143. #define DDCAPS_READSCANLINE             0x00020000l
  144. /*
  145.  * This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete
  146.  */
  147. #define DDCAPS_RESERVED1                0x00040000l
  148. /*
  149.  * Display hardware is capable of generating a vertical blank interrupt.
  150.  */
  151. #define DDCAPS_VBI                      0x00080000l
  152. /*
  153.  * Supports the use of z buffers with blt operations.
  154.  */
  155. #define DDCAPS_ZBLTS                    0x00100000l
  156. /*
  157.  * Supports Z Ordering of overlays.
  158.  */
  159. #define DDCAPS_ZOVERLAYS                0x00200000l
  160. /*
  161.  * Supports color key
  162.  */
  163. #define DDCAPS_COLORKEY                 0x00400000l
  164. /*
  165.  * Supports alpha surfaces
  166.  */
  167. #define DDCAPS_ALPHA                    0x00800000l
  168. /*
  169.  * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
  170.  */
  171. #define DDCAPS_COLORKEYHWASSIST         0x01000000l
  172. /*
  173.  * no hardware support at all
  174.  */
  175. #define DDCAPS_NOHARDWARE               0x02000000l
  176. /*
  177.  * Display hardware is capable of color fill with bltter
  178.  */
  179. #define DDCAPS_BLTCOLORFILL             0x04000000l
  180. /*
  181.  * Display hardware is bank switched, and potentially very slow at
  182.  * random access to VRAM.
  183.  */
  184. #define DDCAPS_BANKSWITCHED             0x08000000l
  185. /*
  186.  * Display hardware is capable of depth filling Z-buffers with bltter
  187.  */
  188. #define DDCAPS_BLTDEPTHFILL             0x10000000l
  189. /*
  190.  * Display hardware is capable of clipping while bltting.
  191.  */
  192. #define DDCAPS_CANCLIP                  0x20000000l
  193. /*
  194.  * Display hardware is capable of clipping while stretch bltting.
  195.  */
  196. #define DDCAPS_CANCLIPSTRETCHED         0x40000000l
  197. /*
  198.  * Display hardware is capable of bltting to or from system memory
  199.  */
  200. #define DDCAPS_CANBLTSYSMEM             0x80000000l
  201.  /****************************************************************************
  202.  *
  203.  * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
  204.  *
  205.  ****************************************************************************/
  206. /*
  207.  * Display hardware is certified
  208.  */
  209. #define DDCAPS2_CERTIFIED              0x00000001l
  210. /*
  211.  * Driver cannot interleave 2D operations (lock and blt) to surfaces with
  212.  * Direct3D rendering operations between calls to BeginScene() and EndScene()
  213.  */
  214. #define DDCAPS2_NO2DDURING3DSCENE       0x00000002l
  215. /*
  216.  * Display hardware contains a video port
  217.  */
  218. #define DDCAPS2_VIDEOPORT               0x00000004l
  219. /*
  220.  * The overlay can be automatically flipped according to the video port
  221.  * VSYNCs, providing automatic doubled buffered display of video port
  222.  * data using an overlay
  223.  */
  224. #define DDCAPS2_AUTOFLIPOVERLAY         0x00000008l
  225. /*
  226.  * Overlay can display each field of interlaced data individually while
  227.  * it is interleaved in memory without causing jittery artifacts.
  228.  */
  229. #define DDCAPS2_CANBOBINTERLEAVED       0x00000010l
  230. /*
  231.  * Overlay can display each field of interlaced data individually while
  232.  * it is not interleaved in memory without causing jittery artifacts.
  233.  */
  234. #define DDCAPS2_CANBOBNONINTERLEAVED    0x00000020l
  235. /*
  236.  * The overlay surface contains color controls (brightness, sharpness, etc.)
  237.  */
  238. #define DDCAPS2_COLORCONTROLOVERLAY     0x00000040l
  239. /*
  240.  * The primary surface contains color controls (gamma, etc.)
  241.  */
  242. #define DDCAPS2_COLORCONTROLPRIMARY     0x00000080l
  243. /*
  244.  * RGBZ -> RGB supported for 16:16 RGB:Z
  245.  */
  246. #define DDCAPS2_CANDROPZ16BIT           0x00000100l
  247. /*
  248.  * Driver supports non-local video memory.
  249.  */
  250. #define DDCAPS2_NONLOCALVIDMEM          0x00000200l
  251. /*
  252.  * Dirver supports non-local video memory but has different capabilities for
  253.  * non-local video memory surfaces. If this bit is set then so must
  254.  * DDCAPS2_NONLOCALVIDMEM.
  255.  */
  256. #define DDCAPS2_NONLOCALVIDMEMCAPS      0x00000400l
  257. /*
  258.  * Driver neither requires nor prefers surfaces to be pagelocked when performing
  259.  * blts involving system memory surfaces
  260.  */
  261. #define DDCAPS2_NOPAGELOCKREQUIRED      0x00000800l
  262. /*
  263.  * Driver can create surfaces which are wider than the primary surface
  264.  */
  265. #define DDCAPS2_WIDESURFACES            0x00001000l
  266. /*
  267.  * Driver supports bob without using a video port by handling the
  268.  * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip.
  269.  */
  270. #define DDCAPS2_CANFLIPODDEVEN          0x00002000l
  271. /*
  272.  * Driver supports bob using hardware
  273.  */
  274. #define DDCAPS2_CANBOBHARDWARE          0x00004000l
  275. /*
  276.  * Driver supports bltting any FOURCC surface to another surface of the same FOURCC
  277.  */
  278. #define DDCAPS2_COPYFOURCC              0x00008000l
  279. /*
  280.  * Driver supports loadable gamma ramps for the primary surface
  281.  */
  282. #define DDCAPS2_PRIMARYGAMMA            0x00020000l
  283. /*
  284.  * Driver can render in windowed mode.
  285.  */
  286. #define DDCAPS2_CANRENDERWINDOWED       0x00080000l
  287. /*
  288.  * A calibrator is available to adjust the gamma ramp according to the
  289.  * physical display properties so that the result will be identical on
  290.  * all calibrated systems.
  291.  */
  292. #define DDCAPS2_CANCALIBRATEGAMMA       0x00100000l
  293. /*
  294.  * Indicates that the driver will respond to DDFLIP_INTERVALn flags
  295.  */
  296. #define DDCAPS2_FLIPINTERVAL            0x00200000l
  297. /*
  298.  * Indicates that the driver will respond to DDFLIP_NOVSYNC
  299.  */
  300. #define DDCAPS2_FLIPNOVSYNC             0x00400000l
  301. /*
  302.  * Driver supports management of video memory, if this flag is ON,
  303.  * driver manages the texture if requested with DDSCAPS2_TEXTUREMANAGE on
  304.  * DirectX manages the texture if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
  305.  */
  306. #define DDCAPS2_CANMANAGETEXTURE        0x00800000l
  307. /*
  308.  * The Direct3D texture manager uses this cap to decide whether to put managed
  309.  * surfaces in non-local video memory. If the cap is set, the texture manager will
  310.  * put managed surfaces in non-local vidmem. Drivers that cannot texture from
  311.  * local vidmem SHOULD NOT set this cap.
  312.  */
  313. #define DDCAPS2_TEXMANINNONLOCALVIDMEM  0x01000000l
  314. /*
  315.  * Indicates that the driver supports DX7 type of stereo in at least one mode (which may
  316.  * not necessarily be the current mode). Applications should use IDirectDraw7 (or higher)
  317.  * ::EnumDisplayModes and check the DDSURFACEDESC.ddsCaps.dwCaps2 field for the presence of
  318.  * DDSCAPS2_STEREOSURFACELEFT to check if a particular mode supports stereo. The application
  319.  * can also use IDirectDraw7(or higher)::GetDisplayMode to check the current mode.
  320.  */
  321. #define DDCAPS2_STEREO                  0x02000000L
  322. /*
  323.  * This caps bit is intended for internal DirectDraw use.
  324.  * -It is only valid if DDCAPS2_NONLOCALVIDMEMCAPS is set.
  325.  * -If this bit is set, then DDCAPS_CANBLTSYSMEM MUST be set by the driver (and
  326.  *  all the assoicated system memory blt caps must be correct).
  327.  * -It implies that the system->video blt caps in DDCAPS also apply to system to
  328.  *  nonlocal blts. I.e. the dwSVBCaps, dwSVBCKeyCaps, dwSVBFXCaps and dwSVBRops
  329.  *  members of DDCAPS (DDCORECAPS) are filled in correctly.
  330.  * -Any blt from system to nonlocal memory that matches these caps bits will
  331.  *  be passed to the driver.
  332.  *
  333.  * NOTE: This is intended to enable the driver itself to do efficient reordering
  334.  * of textures. This is NOT meant to imply that hardware can write into AGP memory.
  335.  * This operation is not currently supported.
  336.  */
  337. #define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL   0x04000000L
  338. /*
  339.  * was DDCAPS2_PUREHAL
  340.  */
  341. #define DDCAPS2_RESERVED1                     0x08000000L
  342. /*
  343.  * Driver supports management of video memory, if this flag is ON,
  344.  * driver manages the resource if requested with DDSCAPS2_TEXTUREMANAGE on
  345.  * DirectX manages the resource if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
  346.  */
  347. #define DDCAPS2_CANMANAGERESOURCE             0x10000000L
  348. /*
  349.  * Driver supports dynamic textures. This will allow the application to set
  350.  * D3DUSAGE_DYNAMIC (DDSCAPS2_HINTDYNAMIC for drivers) at texture create time.
  351.  * Video memory dynamic textures WILL be lockable by applications. It is
  352.  * expected that these locks will be very efficient (which implies that the
  353.  * driver should always maintain a linear copy, a pointer to which can be
  354.  * quickly handed out to the application).
  355.  */
  356. #define DDCAPS2_DYNAMICTEXTURES               0x20000000L
  357. /*
  358.  * Driver supports auto-generation of mipmaps.
  359.  */
  360. #define DDCAPS2_CANAUTOGENMIPMAP              0x40000000L
  361. /****************************************************************************
  362.  *
  363.  * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
  364.  *
  365.  ****************************************************************************/
  366. /*
  367.  * Supports alpha blending around the edge of a source color keyed surface.
  368.  * For Blt.
  369.  */
  370. #define DDFXALPHACAPS_BLTALPHAEDGEBLEND         0x00000001l
  371. /*
  372.  * Supports alpha information in the pixel format.  The bit depth of alpha
  373.  * information in the pixel format can be 1,2,4, or 8.  The alpha value becomes
  374.  * more opaque as the alpha value increases.  (0 is transparent.)
  375.  * For Blt.
  376.  */
  377. #define DDFXALPHACAPS_BLTALPHAPIXELS            0x00000002l
  378. /*
  379.  * Supports alpha information in the pixel format.  The bit depth of alpha
  380.  * information in the pixel format can be 1,2,4, or 8.  The alpha value
  381.  * becomes more transparent as the alpha value increases.  (0 is opaque.)
  382.  * This flag can only be set if DDCAPS_ALPHA is set.
  383.  * For Blt.
  384.  */
  385. #define DDFXALPHACAPS_BLTALPHAPIXELSNEG         0x00000004l
  386. /*
  387.  * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
  388.  * 1,2,4, or 8.  The alpha value becomes more opaque as the alpha value increases.
  389.  * (0 is transparent.)
  390.  * For Blt.
  391.  */
  392. #define DDFXALPHACAPS_BLTALPHASURFACES          0x00000008l
  393. /*
  394.  * The depth of the alpha channel data can range can be 1,2,4, or 8.
  395.  * The NEG suffix indicates that this alpha channel becomes more transparent
  396.  * as the alpha value increases. (0 is opaque.)  This flag can only be set if
  397.  * DDCAPS_ALPHA is set.
  398.  * For Blt.
  399.  */
  400. #define DDFXALPHACAPS_BLTALPHASURFACESNEG       0x00000010l
  401. /*
  402.  * Supports alpha blending around the edge of a source color keyed surface.
  403.  * For Overlays.
  404.  */
  405. #define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND     0x00000020l
  406. /*
  407.  * Supports alpha information in the pixel format.  The bit depth of alpha
  408.  * information in the pixel format can be 1,2,4, or 8.  The alpha value becomes
  409.  * more opaque as the alpha value increases.  (0 is transparent.)
  410.  * For Overlays.
  411.  */
  412. #define DDFXALPHACAPS_OVERLAYALPHAPIXELS        0x00000040l
  413. /*
  414.  * Supports alpha information in the pixel format.  The bit depth of alpha
  415.  * information in the pixel format can be 1,2,4, or 8.  The alpha value
  416.  * becomes more transparent as the alpha value increases.  (0 is opaque.)
  417.  * This flag can only be set if DDCAPS_ALPHA is set.
  418.  * For Overlays.
  419.  */
  420. #define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG     0x00000080l
  421. /*
  422.  * Supports alpha only surfaces.  The bit depth of an alpha only surface can be
  423.  * 1,2,4, or 8.  The alpha value becomes more opaque as the alpha value increases.
  424.  * (0 is transparent.)
  425.  * For Overlays.
  426.  */
  427. #define DDFXALPHACAPS_OVERLAYALPHASURFACES      0x00000100l
  428. /*
  429.  * The depth of the alpha channel data can range can be 1,2,4, or 8.
  430.  * The NEG suffix indicates that this alpha channel becomes more transparent
  431.  * as the alpha value increases. (0 is opaque.)  This flag can only be set if
  432.  * DDCAPS_ALPHA is set.
  433.  * For Overlays.
  434.  */
  435. #define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG   0x00000200l
  436. #if DIRECTDRAW_VERSION < 0x0600
  437. #endif  //DIRECTDRAW_VERSION
  438. /****************************************************************************
  439.  *
  440.  * DIRECTDRAW FX CAPABILITY FLAGS
  441.  *
  442.  ****************************************************************************/
  443. /*
  444.  * Uses arithmetic operations to stretch and shrink surfaces during blt
  445.  * rather than pixel doubling techniques.  Along the Y axis.
  446.  */
  447. #define DDFXCAPS_BLTARITHSTRETCHY       0x00000020l
  448. /*
  449.  * Uses arithmetic operations to stretch during blt
  450.  * rather than pixel doubling techniques.  Along the Y axis. Only
  451.  * works for x1, x2, etc.
  452.  */
  453. #define DDFXCAPS_BLTARITHSTRETCHYN      0x00000010l
  454. /*
  455.  * Supports mirroring left to right in blt.
  456.  */
  457. #define DDFXCAPS_BLTMIRRORLEFTRIGHT     0x00000040l
  458. /*
  459.  * Supports mirroring top to bottom in blt.
  460.  */
  461. #define DDFXCAPS_BLTMIRRORUPDOWN        0x00000080l
  462. /*
  463.  * Supports arbitrary rotation for blts.
  464.  */
  465. #define DDFXCAPS_BLTROTATION            0x00000100l
  466. /*
  467.  * Supports 90 degree rotations for blts.
  468.  */
  469. #define DDFXCAPS_BLTROTATION90          0x00000200l
  470. /*
  471.  * DirectDraw supports arbitrary shrinking of a surface along the
  472.  * x axis (horizontal direction) for blts.
  473.  */
  474. #define DDFXCAPS_BLTSHRINKX             0x00000400l
  475. /*
  476.  * DirectDraw supports integer shrinking (1x,2x,) of a surface
  477.  * along the x axis (horizontal direction) for blts.
  478.  */
  479. #define DDFXCAPS_BLTSHRINKXN            0x00000800l
  480. /*
  481.  * DirectDraw supports arbitrary shrinking of a surface along the
  482.  * y axis (horizontal direction) for blts.
  483.  */
  484. #define DDFXCAPS_BLTSHRINKY             0x00001000l
  485. /*
  486.  * DirectDraw supports integer shrinking (1x,2x,) of a surface
  487.  * along the y axis (vertical direction) for blts.
  488.  */
  489. #define DDFXCAPS_BLTSHRINKYN            0x00002000l
  490. /*
  491.  * DirectDraw supports arbitrary stretching of a surface along the
  492.  * x axis (horizontal direction) for blts.
  493.  */
  494. #define DDFXCAPS_BLTSTRETCHX            0x00004000l
  495. /*
  496.  * DirectDraw supports integer stretching (1x,2x,) of a surface
  497.  * along the x axis (horizontal direction) for blts.
  498.  */
  499. #define DDFXCAPS_BLTSTRETCHXN           0x00008000l
  500. /*
  501.  * DirectDraw supports arbitrary stretching of a surface along the
  502.  * y axis (horizontal direction) for blts.
  503.  */
  504. #define DDFXCAPS_BLTSTRETCHY            0x00010000l
  505. /*
  506.  * DirectDraw supports integer stretching (1x,2x,) of a surface
  507.  * along the y axis (vertical direction) for blts.
  508.  */
  509. #define DDFXCAPS_BLTSTRETCHYN           0x00020000l
  510. /*
  511.  * Uses arithmetic operations to stretch and shrink surfaces during
  512.  * overlay rather than pixel doubling techniques.  Along the Y axis
  513.  * for overlays.
  514.  */
  515. #define DDFXCAPS_OVERLAYARITHSTRETCHY   0x00040000l
  516. /*
  517.  * Uses arithmetic operations to stretch surfaces during
  518.  * overlay rather than pixel doubling techniques.  Along the Y axis
  519.  * for overlays. Only works for x1, x2, etc.
  520.  */
  521. #define DDFXCAPS_OVERLAYARITHSTRETCHYN  0x00000008l
  522. /*
  523.  * DirectDraw supports arbitrary shrinking of a surface along the
  524.  * x axis (horizontal direction) for overlays.
  525.  */
  526. #define DDFXCAPS_OVERLAYSHRINKX         0x00080000l
  527. /*
  528.  * DirectDraw supports integer shrinking (1x,2x,) of a surface
  529.  * along the x axis (horizontal direction) for overlays.
  530.  */
  531. #define DDFXCAPS_OVERLAYSHRINKXN        0x00100000l
  532. /*
  533.  * DirectDraw supports arbitrary shrinking of a surface along the
  534.  * y axis (horizontal direction) for overlays.
  535.  */
  536. #define DDFXCAPS_OVERLAYSHRINKY         0x00200000l
  537. /*
  538.  * DirectDraw supports integer shrinking (1x,2x,) of a surface
  539.  * along the y axis (vertical direction) for overlays.
  540.  */
  541. #define DDFXCAPS_OVERLAYSHRINKYN        0x00400000l
  542. /*
  543.  * DirectDraw supports arbitrary stretching of a surface along the
  544.  * x axis (horizontal direction) for overlays.
  545.  */
  546. #define DDFXCAPS_OVERLAYSTRETCHX        0x00800000l
  547. /*
  548.  * DirectDraw supports integer stretching (1x,2x,) of a surface
  549.  * along the x axis (horizontal direction) for overlays.
  550.  */
  551. #define DDFXCAPS_OVERLAYSTRETCHXN       0x01000000l
  552. /*
  553.  * DirectDraw supports arbitrary stretching of a surface along the
  554.  * y axis (horizontal direction) for overlays.
  555.  */
  556. #define DDFXCAPS_OVERLAYSTRETCHY        0x02000000l
  557. /*
  558.  * DirectDraw supports integer stretching (1x,2x,) of a surface
  559.  * along the y axis (vertical direction) for overlays.
  560.  */
  561. #define DDFXCAPS_OVERLAYSTRETCHYN       0x04000000l
  562. /*
  563.  * DirectDraw supports mirroring of overlays across the vertical axis
  564.  */
  565. #define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l
  566. /*
  567.  * DirectDraw supports mirroring of overlays across the horizontal axis
  568.  */
  569. #define DDFXCAPS_OVERLAYMIRRORUPDOWN    0x10000000l
  570. /*
  571.  * DirectDraw supports deinterlacing of overlay surfaces
  572.  */
  573. #define DDFXCAPS_OVERLAYDEINTERLACE 0x20000000l
  574. /*
  575.  * Driver can do alpha blending for blits.
  576.  */
  577. #define DDFXCAPS_BLTALPHA               0x00000001l
  578. /*
  579.  * Driver can do surface-reconstruction filtering for warped blits.
  580.  */
  581. #define DDFXCAPS_BLTFILTER              DDFXCAPS_BLTARITHSTRETCHY
  582. /*
  583.  * Driver can do alpha blending for overlays.
  584.  */
  585. #define DDFXCAPS_OVERLAYALPHA           0x00000004l
  586. /*
  587.  * Driver can do surface-reconstruction filtering for warped overlays.
  588.  */
  589. #define DDFXCAPS_OVERLAYFILTER          DDFXCAPS_OVERLAYARITHSTRETCHY
  590. /****************************************************************************
  591.  *
  592.  * DIRECTDRAW STEREO VIEW CAPABILITIES
  593.  *
  594.  ****************************************************************************/
  595. /*
  596.  * This flag used to be DDSVCAPS_ENIGMA, which is now obsolete
  597.  */
  598. #define DDSVCAPS_RESERVED1              0x00000001l
  599. /*
  600.  * This flag used to be DDSVCAPS_FLICKER, which is now obsolete
  601.  */
  602. #define DDSVCAPS_RESERVED2              0x00000002l
  603. /*
  604.  * This flag used to be DDSVCAPS_REDBLUE, which is now obsolete
  605.  */
  606. #define DDSVCAPS_RESERVED3              0x00000004l
  607. /*
  608.  * This flag used to be DDSVCAPS_SPLIT, which is now obsolete
  609.  */
  610. #define DDSVCAPS_RESERVED4              0x00000008l
  611. /*
  612.  * The stereo view is accomplished with switching technology
  613.  */
  614. #define DDSVCAPS_STEREOSEQUENTIAL       0x00000010L
  615. /****************************************************************************
  616.  *
  617.  * DIRECTDRAWPALETTE CAPABILITIES
  618.  *
  619.  ****************************************************************************/
  620. /*
  621.  * Index is 4 bits.  There are sixteen color entries in the palette table.
  622.  */
  623. #define DDPCAPS_4BIT                    0x00000001l
  624. /*
  625.  * Index is onto a 8 bit color index.  This field is only valid with the
  626.  * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
  627.  * surface is in 8bpp. Each color entry is one byte long and is an index
  628.  * into destination surface's 8bpp palette.
  629.  */
  630. #define DDPCAPS_8BITENTRIES             0x00000002l
  631. /*
  632.  * Index is 8 bits.  There are 256 color entries in the palette table.
  633.  */
  634. #define DDPCAPS_8BIT                    0x00000004l
  635. /*
  636.  * Indicates that this DIRECTDRAWPALETTE should use the palette color array
  637.  * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
  638.  * object.
  639.  * This flag is obsolete. DirectDraw always initializes the color array from
  640.  * the lpDDColorArray parameter. The definition remains for source-level
  641.  * compatibility.
  642.  */
  643. #define DDPCAPS_INITIALIZE              0x00000000l
  644. /*
  645.  * This palette is the one attached to the primary surface.  Changing this
  646.  * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
  647.  * and supported.
  648.  */
  649. #define DDPCAPS_PRIMARYSURFACE          0x00000010l
  650. /*
  651.  * This palette is the one attached to the primary surface left.  Changing
  652.  * this table has immediate effect on the display for the left eye unless
  653.  * DDPSETPAL_VSYNC is specified and supported.
  654.  */
  655. #define DDPCAPS_PRIMARYSURFACELEFT      0x00000020l
  656. /*
  657.  * This palette can have all 256 entries defined
  658.  */
  659. #define DDPCAPS_ALLOW256                0x00000040l
  660. /*
  661.  * This palette can have modifications to it synced with the monitors
  662.  * refresh rate.
  663.  */
  664. #define DDPCAPS_VSYNC                   0x00000080l
  665. /*
  666.  * Index is 1 bit.  There are two color entries in the palette table.
  667.  */
  668. #define DDPCAPS_1BIT                    0x00000100l
  669. /*
  670.  * Index is 2 bit.  There are four color entries in the palette table.
  671.  */
  672. #define DDPCAPS_2BIT                    0x00000200l
  673. /*
  674.  * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value
  675.  */
  676. #define DDPCAPS_ALPHA                   0x00000400l
  677. /****************************************************************************
  678.  *
  679.  * DIRECTDRAWPALETTE SETENTRY CONSTANTS
  680.  *
  681.  ****************************************************************************/
  682. /****************************************************************************
  683.  *
  684.  * DIRECTDRAWPALETTE GETENTRY CONSTANTS
  685.  *
  686.  ****************************************************************************/
  687. /* 0 is the only legal value */
  688. /****************************************************************************
  689.  *
  690.  * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS
  691.  *
  692.  ****************************************************************************/
  693. /*
  694.  * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData
  695.  * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this
  696.  * pointer and Release when the private data is destroyed. This includes when
  697.  * the surface or palette is destroyed before such priovate data is destroyed.
  698.  */
  699. #define DDSPD_IUNKNOWNPOINTER           0x00000001L
  700. /*
  701.  * Private data is only valid for the current state of the object,
  702.  * as determined by the uniqueness value.
  703.  */
  704. #define DDSPD_VOLATILE                  0x00000002L
  705. /****************************************************************************
  706.  *
  707.  * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
  708.  *
  709.  ****************************************************************************/
  710. /****************************************************************************
  711.  *
  712.  * DIRECTDRAW BITDEPTH CONSTANTS
  713.  *
  714.  * NOTE:  These are only used to indicate supported bit depths.   These
  715.  * are flags only, they are not to be used as an actual bit depth.   The
  716.  * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
  717.  * bit depths in a surface or for changing the display mode.
  718.  *
  719.  ****************************************************************************/
  720. /*
  721.  * 1 bit per pixel.
  722.  */
  723. #define DDBD_1                  0x00004000l
  724. /*
  725.  * 2 bits per pixel.
  726.  */
  727. #define DDBD_2                  0x00002000l
  728. /*
  729.  * 4 bits per pixel.
  730.  */
  731. #define DDBD_4                  0x00001000l
  732. /*
  733.  * 8 bits per pixel.
  734.  */
  735. #define DDBD_8                  0x00000800l
  736. /*
  737.  * 16 bits per pixel.
  738.  */
  739. #define DDBD_16                 0x00000400l
  740. /*
  741.  * 24 bits per pixel.
  742.  */
  743. #define DDBD_24                 0X00000200l
  744. /*
  745.  * 32 bits per pixel.
  746.  */
  747. #define DDBD_32                 0x00000100l
  748. /****************************************************************************
  749.  *
  750.  * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
  751.  *
  752.  ****************************************************************************/
  753. /*
  754.  * Set if the structure contains a color space.  Not set if the structure
  755.  * contains a single color key.
  756.  */
  757. #define DDCKEY_COLORSPACE       0x00000001l
  758. /*
  759.  * Set if the structure specifies a color key or color space which is to be
  760.  * used as a destination color key for blt operations.
  761.  */
  762. #define DDCKEY_DESTBLT          0x00000002l
  763. /*
  764.  * Set if the structure specifies a color key or color space which is to be
  765.  * used as a destination color key for overlay operations.
  766.  */
  767. #define DDCKEY_DESTOVERLAY      0x00000004l
  768. /*
  769.  * Set if the structure specifies a color key or color space which is to be
  770.  * used as a source color key for blt operations.
  771.  */
  772. #define DDCKEY_SRCBLT           0x00000008l
  773. /*
  774.  * Set if the structure specifies a color key or color space which is to be
  775.  * used as a source color key for overlay operations.
  776.  */
  777. #define DDCKEY_SRCOVERLAY       0x00000010l
  778. /****************************************************************************
  779.  *
  780.  * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
  781.  *
  782.  ****************************************************************************/
  783. /*
  784.  * Supports transparent blting using a color key to identify the replaceable
  785.  * bits of the destination surface for RGB colors.
  786.  */
  787. #define DDCKEYCAPS_DESTBLT                      0x00000001l
  788. /*
  789.  * Supports transparent blting using a color space to identify the replaceable
  790.  * bits of the destination surface for RGB colors.
  791.  */
  792. #define DDCKEYCAPS_DESTBLTCLRSPACE              0x00000002l
  793. /*
  794.  * Supports transparent blting using a color space to identify the replaceable
  795.  * bits of the destination surface for YUV colors.
  796.  */
  797. #define DDCKEYCAPS_DESTBLTCLRSPACEYUV           0x00000004l
  798. /*
  799.  * Supports transparent blting using a color key to identify the replaceable
  800.  * bits of the destination surface for YUV colors.
  801.  */
  802. #define DDCKEYCAPS_DESTBLTYUV                   0x00000008l
  803. /*
  804.  * Supports overlaying using colorkeying of the replaceable bits of the surface
  805.  * being overlayed for RGB colors.
  806.  */
  807. #define DDCKEYCAPS_DESTOVERLAY                  0x00000010l
  808. /*
  809.  * Supports a color space as the color key for the destination for RGB colors.
  810.  */
  811. #define DDCKEYCAPS_DESTOVERLAYCLRSPACE          0x00000020l
  812. /*
  813.  * Supports a color space as the color key for the destination for YUV colors.
  814.  */
  815. #define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV       0x00000040l
  816. /*
  817.  * Supports only one active destination color key value for visible overlay
  818.  * surfaces.
  819.  */
  820. #define DDCKEYCAPS_DESTOVERLAYONEACTIVE         0x00000080l
  821. /*
  822.  * Supports overlaying using colorkeying of the replaceable bits of the
  823.  * surface being overlayed for YUV colors.
  824.  */
  825. #define DDCKEYCAPS_DESTOVERLAYYUV               0x00000100l
  826. /*
  827.  * Supports transparent blting using the color key for the source with
  828.  * this surface for RGB colors.
  829.  */
  830. #define DDCKEYCAPS_SRCBLT                       0x00000200l
  831. /*
  832.  * Supports transparent blting using a color space for the source with
  833.  * this surface for RGB colors.
  834.  */
  835. #define DDCKEYCAPS_SRCBLTCLRSPACE               0x00000400l
  836. /*
  837.  * Supports transparent blting using a color space for the source with
  838.  * this surface for YUV colors.
  839.  */
  840. #define DDCKEYCAPS_SRCBLTCLRSPACEYUV            0x00000800l
  841. /*
  842.  * Supports transparent blting using the color key for the source with
  843.  * this surface for YUV colors.
  844.  */
  845. #define DDCKEYCAPS_SRCBLTYUV                    0x00001000l
  846. /*
  847.  * Supports overlays using the color key for the source with this
  848.  * overlay surface for RGB colors.
  849.  */
  850. #define DDCKEYCAPS_SRCOVERLAY                   0x00002000l
  851. /*
  852.  * Supports overlays using a color space as the source color key for
  853.  * the overlay surface for RGB colors.
  854.  */
  855. #define DDCKEYCAPS_SRCOVERLAYCLRSPACE           0x00004000l
  856. /*
  857.  * Supports overlays using a color space as the source color key for
  858.  * the overlay surface for YUV colors.
  859.  */
  860. #define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV        0x00008000l
  861. /*
  862.  * Supports only one active source color key value for visible
  863.  * overlay surfaces.
  864.  */
  865. #define DDCKEYCAPS_SRCOVERLAYONEACTIVE          0x00010000l
  866. /*
  867.  * Supports overlays using the color key for the source with this
  868.  * overlay surface for YUV colors.
  869.  */
  870. #define DDCKEYCAPS_SRCOVERLAYYUV                0x00020000l
  871. /*
  872.  * there are no bandwidth trade-offs for using colorkey with an overlay
  873.  */
  874. #define DDCKEYCAPS_NOCOSTOVERLAY                0x00040000l
  875. /****************************************************************************
  876.  *
  877.  * DIRECTDRAW PIXELFORMAT FLAGS
  878.  *
  879.  ****************************************************************************/
  880. /*
  881.  * The surface has alpha channel information in the pixel format.
  882.  */
  883. #define DDPF_ALPHAPIXELS                        0x00000001l
  884. /*
  885.  * The pixel format contains alpha only information
  886.  */
  887. #define DDPF_ALPHA                              0x00000002l
  888. /*
  889.  * The FourCC code is valid.
  890.  */
  891. #define DDPF_FOURCC                             0x00000004l
  892. /*
  893.  * The surface is 4-bit color indexed.
  894.  */
  895. #define DDPF_PALETTEINDEXED4                    0x00000008l
  896. /*
  897.  * The surface is indexed into a palette which stores indices
  898.  * into the destination surface's 8-bit palette.
  899.  */
  900. #define DDPF_PALETTEINDEXEDTO8                  0x00000010l
  901. /*
  902.  * The surface is 8-bit color indexed.
  903.  */
  904. #define DDPF_PALETTEINDEXED8                    0x00000020l
  905. /*
  906.  * The RGB data in the pixel format structure is valid.
  907.  */
  908. #define DDPF_RGB                                0x00000040l
  909. /*
  910.  * The surface will accept pixel data in the format specified
  911.  * and compress it during the write.
  912.  */
  913. #define DDPF_COMPRESSED                         0x00000080l
  914. /*
  915.  * The surface will accept RGB data and translate it during
  916.  * the write to YUV data.  The format of the data to be written
  917.  * will be contained in the pixel format structure.  The DDPF_RGB
  918.  * flag will be set.
  919.  */
  920. #define DDPF_RGBTOYUV                           0x00000100l
  921. /*
  922.  * pixel format is YUV - YUV data in pixel format struct is valid
  923.  */
  924. #define DDPF_YUV                                0x00000200l
  925. /*
  926.  * pixel format is a z buffer only surface
  927.  */
  928. #define DDPF_ZBUFFER                            0x00000400l
  929. /*
  930.  * The surface is 1-bit color indexed.
  931.  */
  932. #define DDPF_PALETTEINDEXED1                    0x00000800l
  933. /*
  934.  * The surface is 2-bit color indexed.
  935.  */
  936. #define DDPF_PALETTEINDEXED2                    0x00001000l
  937. /*
  938.  * The surface contains Z information in the pixels
  939.  */
  940. #define DDPF_ZPIXELS                            0x00002000l
  941. /*
  942.  * The surface contains stencil information along with Z
  943.  */
  944. #define DDPF_STENCILBUFFER                      0x00004000l
  945. /*
  946.  * Premultiplied alpha format -- the color components have been
  947.  * premultiplied by the alpha component.
  948.  */
  949. #define DDPF_ALPHAPREMULT                       0x00008000l
  950. /*
  951.  * Luminance data in the pixel format is valid.
  952.  * Use this flag for luminance-only or luminance+alpha surfaces,
  953.  * the bit depth is then ddpf.dwLuminanceBitCount.
  954.  */
  955. #define DDPF_LUMINANCE                          0x00020000l
  956. /*
  957.  * Luminance data in the pixel format is valid.
  958.  * Use this flag when hanging luminance off bumpmap surfaces,
  959.  * the bit mask for the luminance portion of the pixel is then
  960.  * ddpf.dwBumpLuminanceBitMask
  961.  */
  962. #define DDPF_BUMPLUMINANCE                      0x00040000l
  963. /*
  964.  * Bump map dUdV data in the pixel format is valid.
  965.  */
  966. #define DDPF_BUMPDUDV                           0x00080000l
  967. /*===========================================================================
  968.  *
  969.  *
  970.  * DIRECTDRAW CALLBACK FLAGS
  971.  *
  972.  *
  973.  *==========================================================================*/
  974. /****************************************************************************
  975.  *
  976.  * DIRECTDRAW ENUMSURFACES FLAGS
  977.  *
  978.  ****************************************************************************/
  979. /*
  980.  * Enumerate all of the surfaces that meet the search criterion.
  981.  */
  982. #define DDENUMSURFACES_ALL                      0x00000001l
  983. /*
  984.  * A search hit is a surface that matches the surface description.
  985.  */
  986. #define DDENUMSURFACES_MATCH                    0x00000002l
  987. /*
  988.  * A search hit is a surface that does not match the surface description.
  989.  */
  990. #define DDENUMSURFACES_NOMATCH                  0x00000004l
  991. /*
  992.  * Enumerate the first surface that can be created which meets the search criterion.
  993.  */
  994. #define DDENUMSURFACES_CANBECREATED             0x00000008l
  995. /*
  996.  * Enumerate the surfaces that already exist that meet the search criterion.
  997.  */
  998. #define DDENUMSURFACES_DOESEXIST                0x00000010l
  999. /****************************************************************************
  1000.  *
  1001.  * DIRECTDRAW SETDISPLAYMODE FLAGS
  1002.  *
  1003.  ****************************************************************************/
  1004. /*
  1005.  * The desired mode is a standard VGA mode
  1006.  */
  1007. #define DDSDM_STANDARDVGAMODE                   0x00000001l
  1008. /****************************************************************************
  1009.  *
  1010.  * DIRECTDRAW ENUMDISPLAYMODES FLAGS
  1011.  *
  1012.  ****************************************************************************/
  1013. /*
  1014.  * Enumerate Modes with different refresh rates.  EnumDisplayModes guarantees
  1015.  * that a particular mode will be enumerated only once.  This flag specifies whether
  1016.  * the refresh rate is taken into account when determining if a mode is unique.
  1017.  */
  1018. #define DDEDM_REFRESHRATES                      0x00000001l
  1019. /*
  1020.  * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA
  1021.  * modes such as mode 0x13 in addition to the usual ModeX modes (which are always
  1022.  * enumerated if the application has previously called SetCooperativeLevel with the
  1023.  * DDSCL_ALLOWMODEX flag set).
  1024.  */
  1025. #define DDEDM_STANDARDVGAMODES                  0x00000002L
  1026. /****************************************************************************
  1027.  *
  1028.  * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
  1029.  *
  1030.  ****************************************************************************/
  1031. /*
  1032.  * Exclusive mode owner will be responsible for the entire primary surface.
  1033.  * GDI can be ignored. used with DD
  1034.  */
  1035. #define DDSCL_FULLSCREEN                        0x00000001l
  1036. /*
  1037.  * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
  1038.  */
  1039. #define DDSCL_ALLOWREBOOT                       0x00000002l
  1040. /*
  1041.  * prevents DDRAW from modifying the application window.
  1042.  * prevents DDRAW from minimize/restore the application window on activation.
  1043.  */
  1044. #define DDSCL_NOWINDOWCHANGES                   0x00000004l
  1045. /*
  1046.  * app wants to work as a regular Windows application
  1047.  */
  1048. #define DDSCL_NORMAL                            0x00000008l
  1049. /*
  1050.  * app wants exclusive access
  1051.  */
  1052. #define DDSCL_EXCLUSIVE                         0x00000010l
  1053. /*
  1054.  * app can deal with non-windows display modes
  1055.  */
  1056. #define DDSCL_ALLOWMODEX                        0x00000040l
  1057. /*
  1058.  * this window will receive the focus messages
  1059.  */
  1060. #define DDSCL_SETFOCUSWINDOW                    0x00000080l
  1061. /*
  1062.  * this window is associated with the DDRAW object and will
  1063.  * cover the screen in fullscreen mode
  1064.  */
  1065. #define DDSCL_SETDEVICEWINDOW                   0x00000100l
  1066. /*
  1067.  * app wants DDRAW to create a window to be associated with the
  1068.  * DDRAW object
  1069.  */
  1070. #define DDSCL_CREATEDEVICEWINDOW                0x00000200l
  1071. /*
  1072.  * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D
  1073.  * take the global crtisec more frequently.
  1074.  */
  1075. #define DDSCL_MULTITHREADED                     0x00000400l
  1076. /*
  1077.  * App specifies that it would like to keep the FPU set up for optimal Direct3D
  1078.  * performance (single precision and exceptions disabled) so Direct3D
  1079.  * does not need to explicitly set the FPU each time. This is assumed by
  1080.  * default in DirectX 7. See also DDSCL_FPUPRESERVE
  1081.  */
  1082. #define DDSCL_FPUSETUP                          0x00000800l
  1083. /*
  1084.  * App specifies that it needs either double precision FPU or FPU exceptions
  1085.  * enabled. This makes Direct3D explicitly set the FPU state eah time it is
  1086.  * called. Setting the flag will reduce Direct3D performance. The flag is
  1087.  * assumed by default in DirectX 6 and earlier. See also DDSCL_FPUSETUP
  1088.  */
  1089. #define DDSCL_FPUPRESERVE                          0x00001000l
  1090. /****************************************************************************
  1091.  *
  1092.  * DIRECTDRAW BLT FLAGS
  1093.  *
  1094.  ****************************************************************************/
  1095. /*
  1096.  * Use the alpha information in the pixel format or the alpha channel surface
  1097.  * attached to the destination surface as the alpha channel for this blt.
  1098.  */
  1099. #define DDBLT_ALPHADEST                         0x00000001l
  1100. /*
  1101.  * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
  1102.  * for the destination surface for this blt.
  1103.  */
  1104. #define DDBLT_ALPHADESTCONSTOVERRIDE            0x00000002l
  1105. /*
  1106.  * The NEG suffix indicates that the destination surface becomes more
  1107.  * transparent as the alpha value increases. (0 is opaque)
  1108.  */
  1109. #define DDBLT_ALPHADESTNEG                      0x00000004l
  1110. /*
  1111.  * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
  1112.  * channel for the destination for this blt.
  1113.  */
  1114. #define DDBLT_ALPHADESTSURFACEOVERRIDE          0x00000008l
  1115. /*
  1116.  * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
  1117.  * for the edges of the image that border the color key colors.
  1118.  */
  1119. #define DDBLT_ALPHAEDGEBLEND                    0x00000010l
  1120. /*
  1121.  * Use the alpha information in the pixel format or the alpha channel surface
  1122.  * attached to the source surface as the alpha channel for this blt.
  1123.  */
  1124. #define DDBLT_ALPHASRC                          0x00000020l
  1125. /*
  1126.  * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
  1127.  * for the source for this blt.
  1128.  */
  1129. #define DDBLT_ALPHASRCCONSTOVERRIDE             0x00000040l
  1130. /*
  1131.  * The NEG suffix indicates that the source surface becomes more transparent
  1132.  * as the alpha value increases. (0 is opaque)
  1133.  */
  1134. #define DDBLT_ALPHASRCNEG                       0x00000080l
  1135. /*
  1136.  * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
  1137.  * for the source for this blt.
  1138.  */
  1139. #define DDBLT_ALPHASRCSURFACEOVERRIDE           0x00000100l
  1140. /*
  1141.  * Do this blt asynchronously through the FIFO in the order received.  If
  1142.  * there is no room in the hardware FIFO fail the call.
  1143.  */
  1144. #define DDBLT_ASYNC                             0x00000200l
  1145. /*
  1146.  * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
  1147.  * to fill the destination rectangle on the destination surface with.
  1148.  */
  1149. #define DDBLT_COLORFILL                         0x00000400l
  1150. /*
  1151.  * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
  1152.  * to use for the blt.
  1153.  */
  1154. #define DDBLT_DDFX                              0x00000800l
  1155. /*
  1156.  * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
  1157.  * that are not part of the Win32 API.
  1158.  */
  1159. #define DDBLT_DDROPS                            0x00001000l
  1160. /*
  1161.  * Use the color key associated with the destination surface.
  1162.  */
  1163. #define DDBLT_KEYDEST                           0x00002000l
  1164. /*
  1165.  * Use the dckDestColorkey field in the DDBLTFX structure as the color key
  1166.  * for the destination surface.
  1167.  */
  1168. #define DDBLT_KEYDESTOVERRIDE                   0x00004000l
  1169. /*
  1170.  * Use the color key associated with the source surface.
  1171.  */
  1172. #define DDBLT_KEYSRC                            0x00008000l
  1173. /*
  1174.  * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
  1175.  * for the source surface.
  1176.  */
  1177. #define DDBLT_KEYSRCOVERRIDE                    0x00010000l
  1178. /*
  1179.  * Use the dwROP field in the DDBLTFX structure for the raster operation
  1180.  * for this blt.  These ROPs are the same as the ones defined in the Win32 API.
  1181.  */
  1182. #define DDBLT_ROP                               0x00020000l
  1183. /*
  1184.  * Use the dwRotationAngle field in the DDBLTFX structure as the angle
  1185.  * (specified in 1/100th of a degree) to rotate the surface.
  1186.  */
  1187. #define DDBLT_ROTATIONANGLE                     0x00040000l
  1188. /*
  1189.  * Z-buffered blt using the z-buffers attached to the source and destination
  1190.  * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
  1191.  * z-buffer opcode.
  1192.  */
  1193. #define DDBLT_ZBUFFER                           0x00080000l
  1194. /*
  1195.  * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
  1196.  * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
  1197.  * for the destination.
  1198.  */
  1199. #define DDBLT_ZBUFFERDESTCONSTOVERRIDE          0x00100000l
  1200. /*
  1201.  * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
  1202.  * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
  1203.  * respectively for the destination.
  1204.  */
  1205. #define DDBLT_ZBUFFERDESTOVERRIDE               0x00200000l
  1206. /*
  1207.  * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
  1208.  * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
  1209.  * for the source.
  1210.  */
  1211. #define DDBLT_ZBUFFERSRCCONSTOVERRIDE           0x00400000l
  1212. /*
  1213.  * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
  1214.  * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
  1215.  * respectively for the source.
  1216.  */
  1217. #define DDBLT_ZBUFFERSRCOVERRIDE                0x00800000l
  1218. /*
  1219.  * wait until the device is ready to handle the blt
  1220.  * this will cause blt to not return DDERR_WASSTILLDRAWING
  1221.  */
  1222. #define DDBLT_WAIT                              0x01000000l
  1223. /*
  1224.  * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
  1225.  * to fill the destination rectangle on the destination Z-buffer surface
  1226.  * with.
  1227.  */
  1228. #define DDBLT_DEPTHFILL                         0x02000000l
  1229. /*
  1230.  * Return immediately (with DDERR_WASSTILLDRAWING) if the device is not
  1231.  * ready to schedule the blt at the time Blt() is called.
  1232.  */
  1233. #define DDBLT_DONOTWAIT                         0x08000000l
  1234. /*
  1235.  * These flags indicate a presentation blt (i.e. a blt
  1236.  * that moves surface contents from an offscreen back buffer to the primary
  1237.  * surface). The driver is not allowed to "queue"  more than three such blts.
  1238.  * The "end" of the presentation blt is indicated, since the
  1239.  * blt may be clipped, in which case the runtime will call the driver with 
  1240.  * several blts. All blts (even if not clipped) are tagged with DDBLT_PRESENTATION
  1241.  * and the last (even if not clipped) additionally with DDBLT_LAST_PRESENTATION.
  1242.  * Thus the true rule is that the driver must not schedule a DDBLT_PRESENTATION
  1243.  * blt if there are 3 or more DDBLT_PRESENTLAST blts in the hardware pipe.
  1244.  * If there are such blts in the pipe, the driver should return DDERR_WASSTILLDRAWING
  1245.  * until the oldest queued DDBLT_LAST_PRESENTATION blts has been retired (i.e. the
  1246.  * pixels have been actually written to the primary surface). Once the oldest blt
  1247.  * has been retired, the driver is free to schedule the current blt.
  1248.  * The goal is to provide a mechanism whereby the device's hardware queue never
  1249.  * gets more than 3 frames ahead of the frames being generated by the application.
  1250.  * When excessive queueing occurs, applications become unusable because the application
  1251.  * visibly lags user input, and such problems make windowed interactive applications impossible.
  1252.  * Some drivers may not have sufficient knowledge of their hardware's FIFO to know
  1253.  * when a certain blt has been retired. Such drivers should code cautiously, and 
  1254.  * simply not allow any frames to be queued at all. DDBLT_LAST_PRESENTATION should cause
  1255.  * such drivers to return DDERR_WASSTILLDRAWING until the accelerator is completely
  1256.  * finished- exactly as if the application had called Lock on the source surface
  1257.  * before calling Blt. 
  1258.  * In other words, the driver is allowed and encouraged to 
  1259.  * generate as much latency as it can, but never more than 3 frames worth.
  1260.  * Implementation detail: Drivers should count blts against the SOURCE surface, not
  1261.  * against the primary surface. This enables multiple parallel windowed application
  1262.  * to function more optimally.
  1263.  * This flag is passed only to DX8 or higher drivers.
  1264.  *
  1265.  * APPLICATIONS DO NOT SET THESE FLAGS. THEY ARE SET BY THE DIRECTDRAW RUNTIME.
  1266.  * 
  1267.  */
  1268. #define DDBLT_PRESENTATION                      0x10000000l
  1269. #define DDBLT_LAST_PRESENTATION                 0x20000000l
  1270. /*
  1271.  * If DDBLT_EXTENDED_FLAGS is set, then the driver should re-interpret
  1272.  * other flags according to the definitions that follow.
  1273.  * For example, bit 0 (0x00000001L) means DDBLT_ALPHADEST, unless
  1274.  * DDBLT_EXTENDED_FLAGS is also set, in which case bit 0 means
  1275.  * DDBLT_EXTENDED_LINEAR_CONTENT.
  1276.  * Only DirectX9 and higher drivers will be given extended blt flags.
  1277.  * Only flags explicitly mentioned here should be re-interpreted.
  1278.  * All other flags retain their original meanings.
  1279.  *
  1280.  * List of re-interpreted flags:
  1281.  *
  1282.  * Bit Hex value   New meaning                                  old meaning
  1283.  * ---------------------------------------------------------------
  1284.  *  2  0x00000004  DDBLT_EXTENDED_LINEAR_CONTENT                DDBLT_ALPHADESTNEG
  1285.  *  4  0x00000010  DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR    DDBLT_ALPHAEDGEBLEND
  1286.  *
  1287.  *
  1288.  * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED
  1289.  * FOR USE BY THE DIRECT3D RUNTIME.
  1290.  */
  1291. #define DDBLT_EXTENDED_FLAGS                    0x40000000l
  1292. /*
  1293.  * EXTENDED FLAG. SEE DEFINITION OF DDBLT_EXTENDED_FLAGS.
  1294.  * This flag indidcates that the source surface contains content in a
  1295.  * linear color space. The driver may perform gamma correction to the
  1296.  * desktop color space (i.e. sRGB, gamma 2.2) as part of this blt.
  1297.  * If the device can perform such a conversion as part of the copy,
  1298.  * the driver should also set D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION
  1299.  *
  1300.  * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED
  1301.  * FOR USE BY THE DIRECT3D RUNTIME. Use IDirect3DSwapChain9::Present
  1302.  * and specify D3DPRESENT_LINEAR_CONTENT in order to use this functionality.
  1303.  */ 
  1304. #define DDBLT_EXTENDED_LINEAR_CONTENT           0x00000004l
  1305. /****************************************************************************
  1306.  *
  1307.  * BLTFAST FLAGS
  1308.  *
  1309.  ****************************************************************************/
  1310. #define DDBLTFAST_NOCOLORKEY                    0x00000000
  1311. #define DDBLTFAST_SRCCOLORKEY                   0x00000001
  1312. #define DDBLTFAST_DESTCOLORKEY                  0x00000002
  1313. #define DDBLTFAST_WAIT                          0x00000010
  1314. #define DDBLTFAST_DONOTWAIT                     0x00000020
  1315. /****************************************************************************
  1316.  *
  1317.  * FLIP FLAGS
  1318.  *
  1319.  ****************************************************************************/
  1320. #define DDFLIP_WAIT                          0x00000001L
  1321. /*
  1322.  * Indicates that the target surface contains the even field of video data.
  1323.  * This flag is only valid with an overlay surface.
  1324.  */
  1325. #define DDFLIP_EVEN                          0x00000002L
  1326. /*
  1327.  * Indicates that the target surface contains the odd field of video data.
  1328.  * This flag is only valid with an overlay surface.
  1329.  */
  1330. #define DDFLIP_ODD                           0x00000004L
  1331. /*
  1332.  * Causes DirectDraw to perform the physical flip immediately and return
  1333.  * to the application. Typically, what was the front buffer but is now the back
  1334.  * buffer will still be visible (depending on timing) until the next vertical
  1335.  * retrace. Subsequent operations involving the two flipped surfaces will
  1336.  * not check to see if the physical flip has finished (i.e. will not return
  1337.  * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)).
  1338.  * This allows an application to perform Flips at a higher frequency than the
  1339.  * monitor refresh rate, but may introduce visible artifacts.
  1340.  * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set,
  1341.  * DDFLIP_NOVSYNC has no effect.
  1342.  */
  1343. #define DDFLIP_NOVSYNC                       0x00000008L
  1344. /*
  1345.  * Flip Interval Flags. These flags indicate how many vertical retraces to wait between
  1346.  * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each
  1347.  * surface involved in the flip until the specified number of vertical retraces has
  1348.  * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set,
  1349.  * DDFLIP_INTERVALn has no effect.
  1350.  */
  1351. /*
  1352.  * DirectDraw will flip on every other vertical sync
  1353.  */
  1354. #define DDFLIP_INTERVAL2                     0x02000000L
  1355. /*
  1356.  * DirectDraw will flip on every third vertical sync
  1357.  */
  1358. #define DDFLIP_INTERVAL3                     0x03000000L
  1359. /*
  1360.  * DirectDraw will flip on every fourth vertical sync
  1361.  */
  1362. #define DDFLIP_INTERVAL4                     0x04000000L
  1363. /*
  1364.  * DirectDraw will flip and display a main stereo surface
  1365.  */
  1366. #define DDFLIP_STEREO                        0x00000010L
  1367. /*
  1368.  * On IDirectDrawSurface7 and higher interfaces, the default is DDFLIP_WAIT. If you wish
  1369.  * to override the default and use time when the accelerator is busy (as denoted by
  1370.  * the DDERR_WASSTILLDRAWING return code) then use DDFLIP_DONOTWAIT.
  1371.  */
  1372. #define DDFLIP_DONOTWAIT                     0x00000020L
  1373. /****************************************************************************
  1374.  *
  1375.  * DIRECTDRAW SURFACE OVERLAY FLAGS
  1376.  *
  1377.  ****************************************************************************/
  1378. /*
  1379.  * Use the alpha information in the pixel format or the alpha channel surface
  1380.  * attached to the destination surface as the alpha channel for the
  1381.  * destination overlay.
  1382.  */
  1383. #define DDOVER_ALPHADEST                        0x00000001l
  1384. /*
  1385.  * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
  1386.  * destination alpha channel for this overlay.
  1387.  */
  1388. #define DDOVER_ALPHADESTCONSTOVERRIDE           0x00000002l
  1389. /*
  1390.  * The NEG suffix indicates that the destination surface becomes more
  1391.  * transparent as the alpha value increases.
  1392.  */
  1393. #define DDOVER_ALPHADESTNEG                     0x00000004l
  1394. /*
  1395.  * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
  1396.  * channel destination for this overlay.
  1397.  */
  1398. #define DDOVER_ALPHADESTSURFACEOVERRIDE         0x00000008l
  1399. /*
  1400.  * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
  1401.  * channel for the edges of the image that border the color key colors.
  1402.  */
  1403. #define DDOVER_ALPHAEDGEBLEND                   0x00000010l
  1404. /*
  1405.  * Use the alpha information in the pixel format or the alpha channel surface
  1406.  * attached to the source surface as the source alpha channel for this overlay.
  1407.  */
  1408. #define DDOVER_ALPHASRC                         0x00000020l
  1409. /*
  1410.  * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
  1411.  * alpha channel for this overlay.
  1412.  */
  1413. #define DDOVER_ALPHASRCCONSTOVERRIDE            0x00000040l
  1414. /*
  1415.  * The NEG suffix indicates that the source surface becomes more transparent
  1416.  * as the alpha value increases.
  1417.  */
  1418. #define DDOVER_ALPHASRCNEG                      0x00000080l
  1419. /*
  1420.  * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
  1421.  * source for this overlay.
  1422.  */
  1423. #define DDOVER_ALPHASRCSURFACEOVERRIDE          0x00000100l
  1424. /*
  1425.  * Turn this overlay off.
  1426.  */
  1427. #define DDOVER_HIDE                             0x00000200l
  1428. /*
  1429.  * Use the color key associated with the destination surface.
  1430.  */
  1431. #define DDOVER_KEYDEST                          0x00000400l
  1432. /*
  1433.  * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
  1434.  * for the destination surface
  1435.  */
  1436. #define DDOVER_KEYDESTOVERRIDE                  0x00000800l
  1437. /*
  1438.  * Use the color key associated with the source surface.
  1439.  */
  1440. #define DDOVER_KEYSRC                           0x00001000l
  1441. /*
  1442.  * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
  1443.  * for the source surface.
  1444.  */
  1445. #define DDOVER_KEYSRCOVERRIDE                   0x00002000l
  1446. /*
  1447.  * Turn this overlay on.
  1448.  */
  1449. #define DDOVER_SHOW                             0x00004000l
  1450. /*
  1451.  * Add a dirty rect to an emulated overlayed surface.
  1452.  */
  1453. #define DDOVER_ADDDIRTYRECT                     0x00008000l
  1454. /*
  1455.  * Redraw all dirty rects on an emulated overlayed surface.
  1456.  */
  1457. #define DDOVER_REFRESHDIRTYRECTS                0x00010000l
  1458. /*
  1459.  * Redraw the entire surface on an emulated overlayed surface.
  1460.  */
  1461. #define DDOVER_REFRESHALL                      0x00020000l
  1462. /*
  1463.  * Use the overlay FX flags to define special overlay FX
  1464.  */
  1465. #define DDOVER_DDFX                             0x00080000l
  1466. /*
  1467.  * Autoflip the overlay when ever the video port autoflips
  1468.  */
  1469. #define DDOVER_AUTOFLIP                         0x00100000l
  1470. /*
  1471.  * Display each field of video port data individually without
  1472.  * causing any jittery artifacts
  1473.  */
  1474. #define DDOVER_BOB                              0x00200000l
  1475. /*
  1476.  * Indicates that bob/weave decisions should not be overridden by other
  1477.  * interfaces.
  1478.  */
  1479. #define DDOVER_OVERRIDEBOBWEAVE                 0x00400000l
  1480. /*
  1481.  * Indicates that the surface memory is composed of interleaved fields.
  1482.  */
  1483. #define DDOVER_INTERLEAVED                      0x00800000l
  1484. /*
  1485.  * Indicates that bob will be performed using hardware rather than
  1486.  * software or emulated.
  1487.  */
  1488. #define DDOVER_BOBHARDWARE                      0x01000000l
  1489. /*
  1490.  * Indicates that overlay FX structure contains valid ARGB scaling factors.
  1491.  */
  1492. #define DDOVER_ARGBSCALEFACTORS                 0x02000000l
  1493. /*
  1494.  * Indicates that ARGB scaling factors can be degraded to fit driver capabilities.
  1495.  */
  1496. #define DDOVER_DEGRADEARGBSCALING               0x04000000l
  1497. /****************************************************************************
  1498.  *
  1499.  * DIRECTDRAWSURFACE LOCK FLAGS
  1500.  *
  1501.  ****************************************************************************/
  1502. /*
  1503.  * The default.  Set to indicate that Lock should return a valid memory pointer
  1504.  * to the top of the specified rectangle.  If no rectangle is specified then a
  1505.  * pointer to the top of the surface is returned.
  1506.  */
  1507. #define DDLOCK_SURFACEMEMORYPTR                 0x00000000L     // default
  1508. /*
  1509.  * Set to indicate that Lock should wait until it can obtain a valid memory
  1510.  * pointer before returning.  If this bit is set, Lock will never return
  1511.  * DDERR_WASSTILLDRAWING.
  1512.  */
  1513. #define DDLOCK_WAIT                             0x00000001L
  1514. /*
  1515.  * Set if an event handle is being passed to Lock.  Lock will trigger the event
  1516.  * when it can return the surface memory pointer requested.
  1517.  */
  1518. #define DDLOCK_EVENT                            0x00000002L
  1519. /*
  1520.  * Indicates that the surface being locked will only be read from.
  1521.  */
  1522. #define DDLOCK_READONLY                         0x00000010L
  1523. /*
  1524.  * Indicates that the surface being locked will only be written to
  1525.  */
  1526. #define DDLOCK_WRITEONLY                        0x00000020L
  1527. /*
  1528.  * Indicates that a system wide lock should not be taken when this surface
  1529.  * is locked. This has several advantages (cursor responsiveness, ability
  1530.  * to call more Windows functions, easier debugging) when locking video
  1531.  * memory surfaces. However, an application specifying this flag must
  1532.  * comply with a number of conditions documented in the help file.
  1533.  * Furthermore, this flag cannot be specified when locking the primary.
  1534.  */
  1535. #define DDLOCK_NOSYSLOCK                        0x00000800L
  1536. /*
  1537.  * Used only with Direct3D Vertex Buffer Locks. Indicates that no vertices
  1538.  * that were referred to in Draw*PrimtiveVB calls since the start of the
  1539.  * frame (or the last lock without this flag) will be modified during the
  1540.  * lock. This can be useful when one is only appending data to the vertex
  1541.  * buffer
  1542.  */
  1543. #define DDLOCK_NOOVERWRITE                      0x00001000L
  1544. /*
  1545.  * Indicates that no assumptions will be made about the contents of the
  1546.  * surface or vertex buffer during this lock.
  1547.  * This enables two things:
  1548.  * -    Direct3D or the driver may provide an alternative memory
  1549.  *      area as the vertex buffer. This is useful when one plans to clear the
  1550.  *      contents of the vertex buffer and fill in new data.
  1551.  * -    Drivers sometimes store surface data in a re-ordered format.
  1552.  *      When the application locks the surface, the driver is forced to un-re-order
  1553.  *      the surface data before allowing the application to see the surface contents.
  1554.  *      This flag is a hint to the driver that it can skip the un-re-ordering process
  1555.  *      since the application plans to overwrite every single pixel in the surface
  1556.  *      or locked rectangle (and so erase any un-re-ordered pixels anyway).
  1557.  *      Applications should always set this flag when they intend to overwrite the entire
  1558.  *      surface or locked rectangle.
  1559.  */
  1560. #define DDLOCK_DISCARDCONTENTS                  0x00002000L
  1561.  /*
  1562.   * DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS
  1563.   */
  1564. #define DDLOCK_OKTOSWAP                         0x00002000L
  1565. /*
  1566.  * On IDirectDrawSurface7 and higher interfaces, the default is DDLOCK_WAIT. If you wish
  1567.  * to override the default and use time when the accelerator is busy (as denoted by
  1568.  * the DDERR_WASSTILLDRAWING return code) then use DDLOCK_DONOTWAIT.
  1569.  */
  1570. #define DDLOCK_DONOTWAIT                        0x00004000L
  1571. /*
  1572.  * This indicates volume texture lock with front and back specified.
  1573.  */
  1574. #define DDLOCK_HASVOLUMETEXTUREBOXRECT          0x00008000L
  1575. /*
  1576.  * This indicates that the driver should not update dirty rect information for this lock.
  1577.  */
  1578. #define DDLOCK_NODIRTYUPDATE                    0x00010000L
  1579. /****************************************************************************
  1580.  *
  1581.  * DIRECTDRAWSURFACE PAGELOCK FLAGS
  1582.  *
  1583.  ****************************************************************************/
  1584. /*
  1585.  * No flags defined at present
  1586.  */
  1587. /****************************************************************************
  1588.  *
  1589.  * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
  1590.  *
  1591.  ****************************************************************************/
  1592. /*
  1593.  * No flags defined at present
  1594.  */
  1595. /****************************************************************************
  1596.  *
  1597.  * DIRECTDRAWSURFACE BLT FX FLAGS
  1598.  *
  1599.  ****************************************************************************/
  1600. /*
  1601.  * If stretching, use arithmetic stretching along the Y axis for this blt.
  1602.  */
  1603. #define DDBLTFX_ARITHSTRETCHY                   0x00000001l
  1604. /*
  1605.  * Do this blt mirroring the surface left to right.  Spin the
  1606.  * surface around its y-axis.
  1607.  */
  1608. #define DDBLTFX_MIRRORLEFTRIGHT                 0x00000002l
  1609. /*
  1610.  * Do this blt mirroring the surface up and down.  Spin the surface
  1611.  * around its x-axis.
  1612.  */
  1613. #define DDBLTFX_MIRRORUPDOWN                    0x00000004l
  1614. /*
  1615.  * Schedule this blt to avoid tearing.
  1616.  */
  1617. #define DDBLTFX_NOTEARING                       0x00000008l
  1618. /*
  1619.  * Do this blt rotating the surface one hundred and eighty degrees.
  1620.  */
  1621. #define DDBLTFX_ROTATE180                       0x00000010l
  1622. /*
  1623.  * Do this blt rotating the surface two hundred and seventy degrees.
  1624.  */
  1625. #define DDBLTFX_ROTATE270                       0x00000020l
  1626. /*
  1627.  * Do this blt rotating the surface ninety degrees.
  1628.  */
  1629. #define DDBLTFX_ROTATE90                        0x00000040l
  1630. /*
  1631.  * Do this z blt using dwZBufferLow and dwZBufferHigh as  range values
  1632.  * specified to limit the bits copied from the source surface.
  1633.  */
  1634. #define DDBLTFX_ZBUFFERRANGE                    0x00000080l
  1635. /*
  1636.  * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
  1637.  * before comparing it with the desting z values.
  1638.  */
  1639. #define DDBLTFX_ZBUFFERBASEDEST                 0x00000100l
  1640. /****************************************************************************
  1641.  *
  1642.  * DIRECTDRAWSURFACE OVERLAY FX FLAGS
  1643.  *
  1644.  ****************************************************************************/
  1645. /*
  1646.  * If stretching, use arithmetic stretching along the Y axis for this overlay.
  1647.  */
  1648. #define DDOVERFX_ARITHSTRETCHY                  0x00000001l
  1649. /*
  1650.  * Mirror the overlay across the vertical axis
  1651.  */
  1652. #define DDOVERFX_MIRRORLEFTRIGHT                0x00000002l
  1653. /*
  1654.  * Mirror the overlay across the horizontal axis
  1655.  */
  1656. #define DDOVERFX_MIRRORUPDOWN                   0x00000004l
  1657. /*
  1658.  * Deinterlace the overlay, if possible
  1659.  */
  1660. #define DDOVERFX_DEINTERLACE                    0x00000008l
  1661. /****************************************************************************
  1662.  *
  1663.  * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
  1664.  *
  1665.  ****************************************************************************/
  1666. /*
  1667.  * return when the vertical blank interval begins
  1668.  */
  1669. #define DDWAITVB_BLOCKBEGIN                     0x00000001l
  1670. /*
  1671.  * set up an event to trigger when the vertical blank begins
  1672.  */
  1673. #define DDWAITVB_BLOCKBEGINEVENT                0x00000002l
  1674. /*
  1675.  * return when the vertical blank interval ends and display begins
  1676.  */
  1677. #define DDWAITVB_BLOCKEND                       0x00000004l
  1678. /****************************************************************************
  1679.  *
  1680.  * DIRECTDRAW GETFLIPSTATUS FLAGS
  1681.  *
  1682.  ****************************************************************************/
  1683. /*
  1684.  * is it OK to flip now?
  1685.  */
  1686. #define DDGFS_CANFLIP                   0x00000001l
  1687. /*
  1688.  * is the last flip finished?
  1689.  */
  1690. #define DDGFS_ISFLIPDONE                0x00000002l
  1691. /****************************************************************************
  1692.  *
  1693.  * DIRECTDRAW GETBLTSTATUS FLAGS
  1694.  *
  1695.  ****************************************************************************/
  1696. /*
  1697.  * is it OK to blt now?
  1698.  */
  1699. #define DDGBS_CANBLT                    0x00000001l
  1700. /*
  1701.  * is the blt to the surface finished?
  1702.  */
  1703. #define DDGBS_ISBLTDONE                 0x00000002l
  1704. /****************************************************************************
  1705.  *
  1706.  * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
  1707.  *
  1708.  ****************************************************************************/
  1709. /*
  1710.  * Enumerate overlays back to front.
  1711.  */
  1712. #define DDENUMOVERLAYZ_BACKTOFRONT      0x00000000l
  1713. /*
  1714.  * Enumerate overlays front to back
  1715.  */
  1716. #define DDENUMOVERLAYZ_FRONTTOBACK      0x00000001l
  1717. /****************************************************************************
  1718.  *
  1719.  * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
  1720.  *
  1721.  ****************************************************************************/
  1722. /*
  1723.  * Send overlay to front
  1724.  */
  1725. #define DDOVERZ_SENDTOFRONT             0x00000000l
  1726. /*
  1727.  * Send overlay to back
  1728.  */
  1729. #define DDOVERZ_SENDTOBACK              0x00000001l
  1730. /*
  1731.  * Move Overlay forward
  1732.  */
  1733. #define DDOVERZ_MOVEFORWARD             0x00000002l
  1734. /*
  1735.  * Move Overlay backward
  1736.  */
  1737. #define DDOVERZ_MOVEBACKWARD            0x00000003l
  1738. /*
  1739.  * Move Overlay in front of relative surface
  1740.  */
  1741. #define DDOVERZ_INSERTINFRONTOF         0x00000004l
  1742. /*
  1743.  * Move Overlay in back of relative surface
  1744.  */
  1745. #define DDOVERZ_INSERTINBACKOF          0x00000005l
  1746. /****************************************************************************
  1747.  *
  1748.  * DIRECTDRAW SETGAMMARAMP FLAGS
  1749.  *
  1750.  ****************************************************************************/
  1751. /*
  1752.  * Request calibrator to adjust the gamma ramp according to the physical
  1753.  * properties of the display so that the result should appear identical
  1754.  * on all systems.
  1755.  */
  1756. #define DDSGR_CALIBRATE                        0x00000001L
  1757. /****************************************************************************
  1758.  *
  1759.  * DIRECTDRAW STARTMODETEST FLAGS
  1760.  *
  1761.  ****************************************************************************/
  1762. /*
  1763.  * Indicates that the mode being tested has passed
  1764.  */
  1765. #define DDSMT_ISTESTREQUIRED                   0x00000001L
  1766. /****************************************************************************
  1767.  *
  1768.  * DIRECTDRAW EVALUATEMODE FLAGS
  1769.  *
  1770.  ****************************************************************************/
  1771. /*
  1772.  * Indicates that the mode being tested has passed
  1773.  */
  1774. #define DDEM_MODEPASSED                        0x00000001L
  1775. /*
  1776.  * Indicates that the mode being tested has failed
  1777.  */
  1778. #define DDEM_MODEFAILED                        0x00000002L
  1779. /*===========================================================================
  1780.  *
  1781.  *
  1782.  * DIRECTDRAW RETURN CODES
  1783.  *
  1784.  * The return values from DirectDraw Commands and Surface that return an HRESULT
  1785.  * are codes from DirectDraw concerning the results of the action
  1786.  * requested by DirectDraw.
  1787.  *
  1788.  *==========================================================================*/
  1789. /*
  1790.  * Status is OK
  1791.  *
  1792.  * Issued by: DirectDraw Commands and all callbacks
  1793.  */
  1794. #define DD_OK                                   S_OK
  1795. #define DD_FALSE                                S_FALSE
  1796. /****************************************************************************
  1797.  *
  1798.  * DIRECTDRAW ENUMCALLBACK RETURN VALUES
  1799.  *
  1800.  * EnumCallback returns are used to control the flow of the DIRECTDRAW and
  1801.  * DIRECTDRAWSURFACE object enumerations.   They can only be returned by
  1802.  * enumeration callback routines.
  1803.  *
  1804.  ****************************************************************************/
  1805. /*
  1806.  * stop the enumeration
  1807.  */
  1808. #define DDENUMRET_CANCEL                        0
  1809. /*
  1810.  * continue the enumeration
  1811.  */
  1812. #define DDENUMRET_OK                            1
  1813. /****************************************************************************
  1814.  *
  1815.  * DIRECTDRAW ERRORS
  1816.  *
  1817.  * Errors are represented by negative values and cannot be combined.
  1818.  *
  1819.  ****************************************************************************/
  1820. /*
  1821.  * This object is already initialized
  1822.  */
  1823. #define DDERR_ALREADYINITIALIZED                MAKE_DDHRESULT( 5 )
  1824. /*
  1825.  * This surface can not be attached to the requested surface.
  1826.  */
  1827. #define DDERR_CANNOTATTACHSURFACE               MAKE_DDHRESULT( 10 )
  1828. /*
  1829.  * This surface can not be detached from the requested surface.
  1830.  */
  1831. #define DDERR_CANNOTDETACHSURFACE               MAKE_DDHRESULT( 20 )
  1832. /*
  1833.  * Support is currently not available.
  1834.  */
  1835. #define DDERR_CURRENTLYNOTAVAIL                 MAKE_DDHRESULT( 40 )
  1836. /*
  1837.  * An exception was encountered while performing the requested operation
  1838.  */
  1839. #define DDERR_EXCEPTION                         MAKE_DDHRESULT( 55 )
  1840. /*
  1841.  * Generic failure.
  1842.  */
  1843. #define DDERR_GENERIC                           E_FAIL
  1844. /*
  1845.  * Height of rectangle provided is not a multiple of reqd alignment
  1846.  */
  1847. #define DDERR_HEIGHTALIGN                       MAKE_DDHRESULT( 90 )
  1848. /*
  1849.  * Unable to match primary surface creation request with existing
  1850.  * primary surface.
  1851.  */
  1852. #define DDERR_INCOMPATIBLEPRIMARY               MAKE_DDHRESULT( 95 )
  1853. /*
  1854.  * One or more of the caps bits passed to the callback are incorrect.
  1855.  */
  1856. #define DDERR_INVALIDCAPS                       MAKE_DDHRESULT( 100 )
  1857. /*
  1858.  * DirectDraw does not support provided Cliplist.
  1859.  */
  1860. #define DDERR_INVALIDCLIPLIST                   MAKE_DDHRESULT( 110 )
  1861. /*
  1862.  * DirectDraw does not support the requested mode
  1863.  */
  1864. #define DDERR_INVALIDMODE                       MAKE_DDHRESULT( 120 )
  1865. /*
  1866.  * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
  1867.  */
  1868. #define DDERR_INVALIDOBJECT                     MAKE_DDHRESULT( 130 )
  1869. /*
  1870.  * One or more of the parameters passed to the callback function are
  1871.  * incorrect.
  1872.  */
  1873. #define DDERR_INVALIDPARAMS                     E_INVALIDARG
  1874. /*
  1875.  * pixel format was invalid as specified
  1876.  */
  1877. #define DDERR_INVALIDPIXELFORMAT                MAKE_DDHRESULT( 145 )
  1878. /*
  1879.  * Rectangle provided was invalid.
  1880.  */
  1881. #define DDERR_INVALIDRECT                       MAKE_DDHRESULT( 150 )
  1882. /*
  1883.  * Operation could not be carried out because one or more surfaces are locked
  1884.  */
  1885. #define DDERR_LOCKEDSURFACES                    MAKE_DDHRESULT( 160 )
  1886. /*
  1887.  * There is no 3D present.
  1888.  */
  1889. #define DDERR_NO3D                              MAKE_DDHRESULT( 170 )
  1890. /*
  1891.  * Operation could not be carried out because there is no alpha accleration
  1892.  * hardware present or available.
  1893.  */
  1894. #define DDERR_NOALPHAHW                         MAKE_DDHRESULT( 180 )
  1895. /*
  1896.  * Operation could not be carried out because there is no stereo
  1897.  * hardware present or available.
  1898.  */
  1899. #define DDERR_NOSTEREOHARDWARE          MAKE_DDHRESULT( 181 )
  1900. /*
  1901.  * Operation could not be carried out because there is no hardware
  1902.  * present which supports stereo surfaces
  1903.  */
  1904. #define DDERR_NOSURFACELEFT                             MAKE_DDHRESULT( 182 )
  1905. /*
  1906.  * no clip list available
  1907.  */
  1908. #define DDERR_NOCLIPLIST                        MAKE_DDHRESULT( 205 )
  1909. /*
  1910.  * Operation could not be carried out because there is no color conversion
  1911.  * hardware present or available.
  1912.  */
  1913. #define DDERR_NOCOLORCONVHW                     MAKE_DDHRESULT( 210 )
  1914. /*
  1915.  * Create function called without DirectDraw object method SetCooperativeLevel
  1916.  * being called.
  1917.  */
  1918. #define DDERR_NOCOOPERATIVELEVELSET             MAKE_DDHRESULT( 212 )
  1919. /*
  1920.  * Surface doesn't currently have a color key
  1921.  */
  1922. #define DDERR_NOCOLORKEY                        MAKE_DDHRESULT( 215 )
  1923. /*
  1924.  * Operation could not be carried out because there is no hardware support
  1925.  * of the dest color key.
  1926.  */
  1927. #define DDERR_NOCOLORKEYHW                      MAKE_DDHRESULT( 220 )
  1928. /*
  1929.  * No DirectDraw support possible with current display driver
  1930.  */
  1931. #define DDERR_NODIRECTDRAWSUPPORT               MAKE_DDHRESULT( 222 )
  1932. /*
  1933.  * Operation requires the application to have exclusive mode but the
  1934.  * application does not have exclusive mode.
  1935.  */
  1936. #define DDERR_NOEXCLUSIVEMODE                   MAKE_DDHRESULT( 225 )
  1937. /*
  1938.  * Flipping visible surfaces is not supported.
  1939.  */
  1940. #define DDERR_NOFLIPHW                          MAKE_DDHRESULT( 230 )
  1941. /*
  1942.  * There is no GDI present.
  1943.  */
  1944. #define DDERR_NOGDI                             MAKE_DDHRESULT( 240 )
  1945. /*
  1946.  * Operation could not be carried out because there is no hardware present
  1947.  * or available.
  1948.  */
  1949. #define DDERR_NOMIRRORHW                        MAKE_DDHRESULT( 250 )
  1950. /*
  1951.  * Requested item was not found
  1952.  */
  1953. #define DDERR_NOTFOUND                          MAKE_DDHRESULT( 255 )
  1954. /*
  1955.  * Operation could not be carried out because there is no overlay hardware
  1956.  * present or available.
  1957.  */
  1958. #define DDERR_NOOVERLAYHW                       MAKE_DDHRESULT( 260 )
  1959. /*
  1960.  * Operation could not be carried out because the source and destination
  1961.  * rectangles are on the same surface and overlap each other.
  1962.  */
  1963. #define DDERR_OVERLAPPINGRECTS                  MAKE_DDHRESULT( 270 )
  1964. /*
  1965.  * Operation could not be carried out because there is no appropriate raster
  1966.  * op hardware present or available.
  1967.  */
  1968. #define DDERR_NORASTEROPHW                      MAKE_DDHRESULT( 280 )
  1969. /*
  1970.  * Operation could not be carried out because there is no rotation hardware
  1971.  * present or available.
  1972.  */
  1973. #define DDERR_NOROTATIONHW                      MAKE_DDHRESULT( 290 )
  1974. /*
  1975.  * Operation could not be carried out because there is no hardware support
  1976.  * for stretching
  1977.  */
  1978. #define DDERR_NOSTRETCHHW                       MAKE_DDHRESULT( 310 )
  1979. /*
  1980.  * DirectDrawSurface is not in 4 bit color palette and the requested operation
  1981.  * requires 4 bit color palette.
  1982.  */
  1983. #define DDERR_NOT4BITCOLOR                      MAKE_DDHRESULT( 316 )
  1984. /*
  1985.  * DirectDrawSurface is not in 4 bit color index palette and the requested
  1986.  * operation requires 4 bit color index palette.
  1987.  */
  1988. #define DDERR_NOT4BITCOLORINDEX                 MAKE_DDHRESULT( 317 )
  1989. /*
  1990.  * DirectDraw Surface is not in 8 bit color mode and the requested operation
  1991.  * requires 8 bit color.
  1992.  */
  1993. #define DDERR_NOT8BITCOLOR                      MAKE_DDHRESULT( 320 )
  1994. /*
  1995.  * Operation could not be carried out because there is no texture mapping
  1996.  * hardware present or available.
  1997.  */
  1998. #define DDERR_NOTEXTUREHW                       MAKE_DDHRESULT( 330 )
  1999. /*
  2000.  * Operation could not be carried out because there is no hardware support
  2001.  * for vertical blank synchronized operations.
  2002.  */
  2003. #define DDERR_NOVSYNCHW                         MAKE_DDHRESULT( 335 )
  2004. /*
  2005.  * Operation could not be carried out because there is no hardware support
  2006.  * for zbuffer blting.
  2007.  */
  2008. #define DDERR_NOZBUFFERHW                       MAKE_DDHRESULT( 340 )
  2009. /*
  2010.  * Overlay surfaces could not be z layered based on their BltOrder because
  2011.  * the hardware does not support z layering of overlays.
  2012.  */
  2013. #define DDERR_NOZOVERLAYHW                      MAKE_DDHRESULT( 350 )
  2014. /*
  2015.  * The hardware needed for the requested operation has already been
  2016.  * allocated.
  2017.  */
  2018. #define DDERR_OUTOFCAPS                         MAKE_DDHRESULT( 360 )
  2019. /*
  2020.  * DirectDraw does not have enough memory to perform the operation.
  2021.  */
  2022. #define DDERR_OUTOFMEMORY                       E_OUTOFMEMORY
  2023. /*
  2024.  * DirectDraw does not have enough memory to perform the operation.
  2025.  */
  2026. #define DDERR_OUTOFVIDEOMEMORY                  MAKE_DDHRESULT( 380 )
  2027. /*
  2028.  * hardware does not support clipped overlays
  2029.  */
  2030. #define DDERR_OVERLAYCANTCLIP                   MAKE_DDHRESULT( 382 )
  2031. /*
  2032.  * Can only have ony color key active at one time for overlays
  2033.  */
  2034. #define DDERR_OVERLAYCOLORKEYONLYONEACTIVE      MAKE_DDHRESULT( 384 )
  2035. /*
  2036.  * Access to this palette is being refused because the palette is already
  2037.  * locked by another thread.
  2038.  */
  2039. #define DDERR_PALETTEBUSY                       MAKE_DDHRESULT( 387 )
  2040. /*
  2041.  * No src color key specified for this operation.
  2042.  */
  2043. #define DDERR_COLORKEYNOTSET                    MAKE_DDHRESULT( 400 )
  2044. /*
  2045.  * This surface is already attached to the surface it is being attached to.
  2046.  */
  2047. #define DDERR_SURFACEALREADYATTACHED            MAKE_DDHRESULT( 410 )
  2048. /*
  2049.  * This surface is already a dependency of the surface it is being made a
  2050.  * dependency of.
  2051.  */
  2052. #define DDERR_SURFACEALREADYDEPENDENT           MAKE_DDHRESULT( 420 )
  2053. /*
  2054.  * Access to this surface is being refused because the surface is already
  2055.  * locked by another thread.
  2056.  */
  2057. #define DDERR_SURFACEBUSY                       MAKE_DDHRESULT( 430 )
  2058. /*
  2059.  * Access to this surface is being refused because no driver exists
  2060.  * which can supply a pointer to the surface.
  2061.  * This is most likely to happen when attempting to lock the primary
  2062.  * surface when no DCI provider is present.
  2063.  * Will also happen on attempts to lock an optimized surface.
  2064.  */
  2065. #define DDERR_CANTLOCKSURFACE                   MAKE_DDHRESULT( 435 )
  2066. /*
  2067.  * Access to Surface refused because Surface is obscured.
  2068.  */
  2069. #define DDERR_SURFACEISOBSCURED                 MAKE_DDHRESULT( 440 )
  2070. /*
  2071.  * Access to this surface is being refused because the surface is gone.
  2072.  * The DIRECTDRAWSURFACE object representing this surface should
  2073.  * have Restore called on it.
  2074.  */
  2075. #define DDERR_SURFACELOST                       MAKE_DDHRESULT( 450 )
  2076. /*
  2077.  * The requested surface is not attached.
  2078.  */
  2079. #define DDERR_SURFACENOTATTACHED                MAKE_DDHRESULT( 460 )
  2080. /*
  2081.  * Height requested by DirectDraw is too large.
  2082.  */
  2083. #define DDERR_TOOBIGHEIGHT                      MAKE_DDHRESULT( 470 )
  2084. /*
  2085.  * Size requested by DirectDraw is too large --  The individual height and
  2086.  * width are OK.
  2087.  */
  2088. #define DDERR_TOOBIGSIZE                        MAKE_DDHRESULT( 480 )
  2089. /*
  2090.  * Width requested by DirectDraw is too large.
  2091.  */
  2092. #define DDERR_TOOBIGWIDTH                       MAKE_DDHRESULT( 490 )
  2093. /*
  2094.  * Action not supported.
  2095.  */
  2096. #define DDERR_UNSUPPORTED                       E_NOTIMPL
  2097. /*
  2098.  * Pixel format requested is unsupported by DirectDraw
  2099.  */
  2100. #define DDERR_UNSUPPORTEDFORMAT                 MAKE_DDHRESULT( 510 )
  2101. /*
  2102.  * Bitmask in the pixel format requested is unsupported by DirectDraw
  2103.  */
  2104. #define DDERR_UNSUPPORTEDMASK                   MAKE_DDHRESULT( 520 )
  2105. /*
  2106.  * The specified stream contains invalid data
  2107.  */
  2108. #define DDERR_INVALIDSTREAM                     MAKE_DDHRESULT( 521 )
  2109. /*
  2110.  * vertical blank is in progress
  2111.  */
  2112. #define DDERR_VERTICALBLANKINPROGRESS           MAKE_DDHRESULT( 537 )
  2113. /*
  2114.  * Informs DirectDraw that the previous Blt which is transfering information
  2115.  * to or from this Surface is incomplete.
  2116.  */
  2117. #define DDERR_WASSTILLDRAWING                   MAKE_DDHRESULT( 540 )
  2118. /*
  2119.  * The specified surface type requires specification of the COMPLEX flag
  2120.  */
  2121. #define DDERR_DDSCAPSCOMPLEXREQUIRED            MAKE_DDHRESULT( 542 )
  2122. /*
  2123.  * Rectangle provided was not horizontally aligned on reqd. boundary
  2124.  */
  2125. #define DDERR_XALIGN                            MAKE_DDHRESULT( 560 )
  2126. /*
  2127.  * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
  2128.  * identifier.
  2129.  */
  2130. #define DDERR_INVALIDDIRECTDRAWGUID             MAKE_DDHRESULT( 561 )
  2131. /*
  2132.  * A DirectDraw object representing this driver has already been created
  2133.  * for this process.
  2134.  */
  2135. #define DDERR_DIRECTDRAWALREADYCREATED          MAKE_DDHRESULT( 562 )
  2136. /*
  2137.  * A hardware only DirectDraw object creation was attempted but the driver
  2138.  * did not support any hardware.
  2139.  */
  2140. #define DDERR_NODIRECTDRAWHW                    MAKE_DDHRESULT( 563 )
  2141. /*
  2142.  * this process already has created a primary surface
  2143.  */
  2144. #define DDERR_PRIMARYSURFACEALREADYEXISTS       MAKE_DDHRESULT( 564 )
  2145. /*
  2146.  * software emulation not available.
  2147.  */
  2148. #define DDERR_NOEMULATION                       MAKE_DDHRESULT( 565 )
  2149. /*
  2150.  * region passed to Clipper::GetClipList is too small.
  2151.  */
  2152. #define DDERR_REGIONTOOSMALL                    MAKE_DDHRESULT( 566 )
  2153. /*
  2154.  * an attempt was made to set a clip list for a clipper objec that
  2155.  * is already monitoring an hwnd.
  2156.  */
  2157. #define DDERR_CLIPPERISUSINGHWND                MAKE_DDHRESULT( 567 )
  2158. /*
  2159.  * No clipper object attached to surface object
  2160.  */
  2161. #define DDERR_NOCLIPPERATTACHED                 MAKE_DDHRESULT( 568 )
  2162. /*
  2163.  * Clipper notification requires an HWND or
  2164.  * no HWND has previously been set as the CooperativeLevel HWND.
  2165.  */
  2166. #define DDERR_NOHWND                            MAKE_DDHRESULT( 569 )
  2167. /*
  2168.  * HWND used by DirectDraw CooperativeLevel has been subclassed,
  2169.  * this prevents DirectDraw from restoring state.
  2170.  */
  2171. #define DDERR_HWNDSUBCLASSED                    MAKE_DDHRESULT( 570 )
  2172. /*
  2173.  * The CooperativeLevel HWND has already been set.
  2174.  * It can not be reset while the process has surfaces or palettes created.
  2175.  */
  2176. #define DDERR_HWNDALREADYSET                    MAKE_DDHRESULT( 571 )
  2177. /*
  2178.  * No palette object attached to this surface.
  2179.  */
  2180. #define DDERR_NOPALETTEATTACHED                 MAKE_DDHRESULT( 572 )
  2181. /*
  2182.  * No hardware support for 16 or 256 color palettes.
  2183.  */
  2184. #define DDERR_NOPALETTEHW                       MAKE_DDHRESULT( 573 )
  2185. /*
  2186.  * If a clipper object is attached to the source surface passed into a
  2187.  * BltFast call.
  2188.  */
  2189. #define DDERR_BLTFASTCANTCLIP                   MAKE_DDHRESULT( 574 )
  2190. /*
  2191.  * No blter.
  2192.  */
  2193. #define DDERR_NOBLTHW                           MAKE_DDHRESULT( 575 )
  2194. /*
  2195.  * No DirectDraw ROP hardware.
  2196.  */
  2197. #define DDERR_NODDROPSHW                        MAKE_DDHRESULT( 576 )
  2198. /*
  2199.  * returned when GetOverlayPosition is called on a hidden overlay
  2200.  */
  2201. #define DDERR_OVERLAYNOTVISIBLE                 MAKE_DDHRESULT( 577 )
  2202. /*
  2203.  * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
  2204.  * has never been called on to establish a destionation.
  2205.  */
  2206. #define DDERR_NOOVERLAYDEST                     MAKE_DDHRESULT( 578 )
  2207. /*
  2208.  * returned when the position of the overlay on the destionation is no longer
  2209.  * legal for that destionation.
  2210.  */
  2211. #define DDERR_INVALIDPOSITION                   MAKE_DDHRESULT( 579 )
  2212. /*
  2213.  * returned when an overlay member is called for a non-overlay surface
  2214.  */
  2215. #define DDERR_NOTAOVERLAYSURFACE                MAKE_DDHRESULT( 580 )
  2216. /*
  2217.  * An attempt was made to set the cooperative level when it was already
  2218.  * set to exclusive.
  2219.  */
  2220. #define DDERR_EXCLUSIVEMODEALREADYSET           MAKE_DDHRESULT( 581 )
  2221. /*
  2222.  * An attempt has been made to flip a surface that is not flippable.
  2223.  */
  2224. #define DDERR_NOTFLIPPABLE                      MAKE_DDHRESULT( 582 )
  2225. /*
  2226.  * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
  2227.  * created.
  2228.  */
  2229. #define DDERR_CANTDUPLICATE                     MAKE_DDHRESULT( 583 )
  2230. /*
  2231.  * Surface was not locked.  An attempt to unlock a surface that was not
  2232.  * locked at all, or by this process, has been attempted.
  2233.  */
  2234. #define DDERR_NOTLOCKED                         MAKE_DDHRESULT( 584 )
  2235. /*
  2236.  * Windows can not create any more DCs, or a DC was requested for a paltte-indexed
  2237.  * surface when the surface had no palette AND the display mode was not palette-indexed
  2238.  * (in this case DirectDraw cannot select a proper palette into the DC)
  2239.  */
  2240. #define DDERR_CANTCREATEDC                      MAKE_DDHRESULT( 585 )
  2241. /*
  2242.  * No DC was ever created for this surface.
  2243.  */
  2244. #define DDERR_NODC                              MAKE_DDHRESULT( 586 )
  2245. /*
  2246.  * This surface can not be restored because it was created in a different
  2247.  * mode.
  2248.  */
  2249. #define DDERR_WRONGMODE                         MAKE_DDHRESULT( 587 )
  2250. /*
  2251.  * This surface can not be restored because it is an implicitly created
  2252.  * surface.
  2253.  */
  2254. #define DDERR_IMPLICITLYCREATED                 MAKE_DDHRESULT( 588 )
  2255. /*
  2256.  * The surface being used is not a palette-based surface
  2257.  */
  2258. #define DDERR_NOTPALETTIZED                     MAKE_DDHRESULT( 589 )
  2259. /*
  2260.  * The display is currently in an unsupported mode
  2261.  */
  2262. #define DDERR_UNSUPPORTEDMODE                   MAKE_DDHRESULT( 590 )
  2263. /*
  2264.  * Operation could not be carried out because there is no mip-map
  2265.  * texture mapping hardware present or available.
  2266.  */
  2267. #define DDERR_NOMIPMAPHW                        MAKE_DDHRESULT( 591 )
  2268. /*
  2269.  * The requested action could not be performed because the surface was of
  2270.  * the wrong type.
  2271.  */
  2272. #define DDERR_INVALIDSURFACETYPE                MAKE_DDHRESULT( 592 )
  2273. /*
  2274.  * Device does not support optimized surfaces, therefore no video memory optimized surfaces
  2275.  */
  2276. #define DDERR_NOOPTIMIZEHW                      MAKE_DDHRESULT( 600 )
  2277. /*
  2278.  * Surface is an optimized surface, but has not yet been allocated any memory
  2279.  */
  2280. #define DDERR_NOTLOADED                         MAKE_DDHRESULT( 601 )
  2281. /*
  2282.  * Attempt was made to create or set a device window without first setting
  2283.  * the focus window
  2284.  */
  2285. #define DDERR_NOFOCUSWINDOW                     MAKE_DDHRESULT( 602 )
  2286. /*
  2287.  * Attempt was made to set a palette on a mipmap sublevel
  2288.  */
  2289. #define DDERR_NOTONMIPMAPSUBLEVEL               MAKE_DDHRESULT( 603 )
  2290. /*
  2291.  * A DC has already been returned for this surface. Only one DC can be
  2292.  * retrieved per surface.
  2293.  */
  2294. #define DDERR_DCALREADYCREATED                  MAKE_DDHRESULT( 620 )
  2295. /*
  2296.  * An attempt was made to allocate non-local video memory from a device
  2297.  * that does not support non-local video memory.
  2298.  */
  2299. #define DDERR_NONONLOCALVIDMEM                  MAKE_DDHRESULT( 630 )
  2300. /*
  2301.  * The attempt to page lock a surface failed.
  2302.  */
  2303. #define DDERR_CANTPAGELOCK                      MAKE_DDHRESULT( 640 )
  2304. /*
  2305.  * The attempt to page unlock a surface failed.
  2306.  */
  2307. #define DDERR_CANTPAGEUNLOCK                    MAKE_DDHRESULT( 660 )
  2308. /*
  2309.  * An attempt was made to page unlock a surface with no outstanding page locks.
  2310.  */
  2311. #define DDERR_NOTPAGELOCKED                     MAKE_DDHRESULT( 680 )
  2312. /*
  2313.  * There is more data available than the specified buffer size could hold
  2314.  */
  2315. #define DDERR_MOREDATA                          MAKE_DDHRESULT( 690 )
  2316. /*
  2317.  * The data has expired and is therefore no longer valid.
  2318.  */
  2319. #define DDERR_EXPIRED                           MAKE_DDHRESULT( 691 )
  2320. /*
  2321.  * The mode test has finished executing.
  2322.  */
  2323. #define DDERR_TESTFINISHED                      MAKE_DDHRESULT( 692 )
  2324. /*
  2325.  * The mode test has switched to a new mode.
  2326.  */
  2327. #define DDERR_NEWMODE                           MAKE_DDHRESULT( 693 )
  2328. /*
  2329.  * D3D has not yet been initialized.
  2330.  */
  2331. #define DDERR_D3DNOTINITIALIZED                 MAKE_DDHRESULT( 694 )
  2332. /*
  2333.  * The video port is not active
  2334.  */
  2335. #define DDERR_VIDEONOTACTIVE                    MAKE_DDHRESULT( 695 )
  2336. /*
  2337.  * The monitor does not have EDID data.
  2338.  */
  2339. #define DDERR_NOMONITORINFORMATION              MAKE_DDHRESULT( 696 )
  2340. /*
  2341.  * The driver does not enumerate display mode refresh rates.
  2342.  */
  2343. #define DDERR_NODRIVERSUPPORT                   MAKE_DDHRESULT( 697 )
  2344. /*
  2345.  * Surfaces created by one direct draw device cannot be used directly by
  2346.  * another direct draw device.
  2347.  */
  2348. #define DDERR_DEVICEDOESNTOWNSURFACE            MAKE_DDHRESULT( 699 )
  2349. /*
  2350.  * An attempt was made to invoke an interface member of a DirectDraw object
  2351.  * created by CoCreateInstance() before it was initialized.
  2352.  */
  2353. #define DDERR_NOTINITIALIZED                    CO_E_NOTINITIALIZED
  2354. /* Alpha bit depth constants */
  2355. #ifdef __cplusplus
  2356. };
  2357. #endif
  2358. #ifdef ENABLE_NAMELESS_UNION_PRAGMA
  2359. #pragma warning(default:4201)
  2360. #endif
  2361. #endif //__DDRAW_INCLUDED__