CAPABILITY FLAGS

These flags are used to describe the capabilities of a given surface. All flags are bit flags and some combinations are legal. A DCI Provider is expected to fill the dwDCICaps field of the DCISURFACEINFO structure with the combination of flags that describes the surface. A DCI Client can fill the dwDCICaps field of the DCICREATEINPUT structure to describe the surface that it wants created.

DCI_PRIMARY

Indicates that surface is the primary display surface. This flag cannot be combined with DCI_OFFSCREEN or DCI_OVERLAY.

DCI_OFFSCREEN

Indicates that surface is an off screen display surface. This flag cannot be combined with DCI_PRIMARY or DCI_OVERLAY.

DCI_OVERLAY

Indicates that surface is an overlay surface. This flag cannot be combined with DCI_PRIMARY or DCI_OFFSCREEN.

DCI_VISIBLE

Indicates that the surface is directly visible. All data written to this surface will be immediately visible. This flag can be combined with DCI_OFFSCREEN to indicate that data from the off screen surface is automatically made visible on the primary display surface. A DCI Client must not use this surface for double buffering.

DCI_CHROMAKEY

Indicates that mechanism for overlaying is chromakeying. This flag informs the DCI Client that the dwChromakeyValue field holds valid information. This flag must be combined with DCI_OVERLAY.

DCI_1632_ACCESS

This flag means that a bank switch handler has been installed for this surface. The surface memory must be accessed via the provided selector only. Huge pointer selector arithmetic is invalid.

DCI_DWORDSIZE

Indicates that the DCI Provider supports only destination rectangles whose sizes are DWORD multiples.

DCI_DWORDALIGN

Indicates that the DCI Provider will supports only destination rectangles that are aligned on DWORD boundaries on the screen.

DCI_WRITEONLY

Indicates that only writes are permitted to the surface. Read accesses from the surface may or may not generate a protection fault, but the results of a read from this surface will not be meaningful.

DCI_ASYNC

This flag indicates that the surface is being copied to the screen asynchronously. If the an OffScreen surface has this capability, the Draw callback will return immediately and the data will be copied when possible.

If this flag is combined with DCI_VSYNCH, the Draw callback will return immediately but the data will not be copied until the next VBI.

DCI_VSYNCH

This flag indicates that the surface is being copied to the screen on each VBI. If an offscreen surface has this capability, the Draw callback will copy the surface data to the screen on the next Vsynch signal and then return.

If this flag is combined with DCI_ASYNCH, the Draw callback will return immediately but the data will not be copied until the next VBI.

DCI_CAN_STRETCHX

This flag indicates that the DCI provider supports only stretching an image along the x axis (horizontal direction). Any vertical stretching required will have to be performed by the DCI Client. This flag is valid only for offscreen surfaces.

DCI_CAN_STRETCHY

This flag indicates that the DCI provider supports only stretching an image along the y axis (vertical direction). Any horizontal stretching required will have to be performed by the DCI Client. This flag is valid only for offscreen surfaces.

DCI_CAN_STRETCHXY

This flag indicates that the DCI Provider is capable of stretching the surface arbitrarily. The support promised is not guaranteed. A stretch request may still be rejected.

This flag only indicates capabilities of a surface. It does not indicate that stretching is active. This flag is valid only for offscreen surfaces.

DCI_CAN_STRETCHXN

This flag indicates that the DCI Provider supports only stretching an image in integer multiples along the x axis (horizontal direction). The support promised is not guaranteed. A stretch request may still be rejected.

This flag only indicates capabilities of a surface. It does not indicate that stretching is active. This flag is valid only for offscreen surfaces.

DCI_CAN_STRETCHYN

This flag indicates that the DCI Provider supports only stretching an image in integer multiples in the x axis (horizontal direction). The support promised is not guaranteed. A stretch request may still be rejected.

This flag only indicates capabilities of a surface. It does not indicate that stretching is active. This flag is valid only for offscreen surfaces.

DCI_CAN_STRETCHXYN

This flag indicates that the DCI Provider is capable of stretching the surface in integer multiples along both the x and y axes. The support promised is not guaranteed. A stretch request may still be rejected.

This flag only indicates capabilities of a surface. It does not indicate that stretching is active. This flag is valid only for offscreen surfaces.

DCI_CANOVERLAY

DCI Provider promises support for controlling overlay of an offscreen surface with the onscreen surface. Access to the Overlay Control Buffer is provided by the DCICreateOverlay call.

This flag only indicates capabilities of a surface. It does not indicate that overlay is active. This flag is valid only for offscreen surfaces.

This mechanism is not an alternate for window overlap management. DCI Providers that support window overlap management must do so by supporting the SetDestination callback of offscreen surfaces.