ddraw.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:236k
源码类别:

模拟服务器

开发平台:

C/C++

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