DirectDraw.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:262k
源码类别:

Delphi控件源码

开发平台:

Delphi

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