.pragma list(push, 0)
ifndef _WINDEF_
 include windef.inc
endif
ifndef _WINNT_
 include winnt.inc
endif
ifndef _INC_DCIDDI
define _INC_DCIDDI

DCICOMMAND		equ 3075
DCI_VERSION		equ 0x0100

DCICREATEPRIMARYSURFACE equ 1
DCICREATEOFFSCREENSURFACE equ 2
DCICREATEOVERLAYSURFACE equ 3
DCIENUMSURFACE		equ 4
DCIESCAPE		equ 5

DCI_OK			equ 0

DCI_FAIL_GENERIC	equ -1
DCI_FAIL_UNSUPPORTEDVERSION equ -2
DCI_FAIL_INVALIDSURFACE equ -3
DCI_FAIL_UNSUPPORTED	equ -4

DCI_ERR_CURRENTLYNOTAVAIL equ -5
DCI_ERR_INVALIDRECT	equ -6
DCI_ERR_UNSUPPORTEDFORMAT equ -7
DCI_ERR_UNSUPPORTEDMASK equ -8
DCI_ERR_TOOBIGHEIGHT	equ -9
DCI_ERR_TOOBIGWIDTH	equ -10
DCI_ERR_TOOBIGSIZE	equ -11
DCI_ERR_OUTOFMEMORY	equ -12
DCI_ERR_INVALIDPOSITION equ -13
DCI_ERR_INVALIDSTRETCH	equ -14
DCI_ERR_INVALIDCLIPLIST equ -15
DCI_ERR_SURFACEISOBSCURED equ -16
DCI_ERR_XALIGN		equ -17
DCI_ERR_YALIGN		equ -18
DCI_ERR_XYALIGN		equ -19
DCI_ERR_WIDTHALIGN	equ -20
DCI_ERR_HEIGHTALIGN	equ -21

DCI_STATUS_POINTERCHANGED equ 1
DCI_STATUS_STRIDECHANGED equ 2
DCI_STATUS_FORMATCHANGED equ 4
DCI_STATUS_SURFACEINFOCHANGED equ 8
DCI_STATUS_CHROMAKEYCHANGED equ 16
DCI_STATUS_WASSTILLDRAWING equ 32

DCI_SUCCESS macro error
	exitm<error !>= 0>
	endm

DCI_SURFACE_TYPE	equ 0x0000000F
DCI_PRIMARY		equ 0x00000000
DCI_OFFSCREEN		equ 0x00000001
DCI_OVERLAY		equ 0x00000002

DCI_VISIBLE		equ 0x00000010
DCI_CHROMAKEY		equ 0x00000020
DCI_1632_ACCESS		equ 0x00000040
DCI_DWORDSIZE		equ 0x00000080
DCI_DWORDALIGN		equ 0x00000100
DCI_WRITEONLY		equ 0x00000200
DCI_ASYNC		equ 0x00000400

DCI_CAN_STRETCHX	equ 0x00001000
DCI_CAN_STRETCHY	equ 0x00002000
DCI_CAN_STRETCHXY	equ (DCI_CAN_STRETCHX OR DCI_CAN_STRETCHY)

DCI_CAN_STRETCHXN	equ 0x00004000
DCI_CAN_STRETCHYN	equ 0x00008000
DCI_CAN_STRETCHXYN	equ (DCI_CAN_STRETCHXN OR DCI_CAN_STRETCHYN)

DCI_CANOVERLAY		equ 0x00010000

if (WINVER LT 0x0400)

ifndef RDH_RECTANGLES

RECTL			STRUC
left			sdword ?
top			sdword ?
right			sdword ?
bottom			sdword ?
RECTL			ENDS
PRECTL			typedef ptr RECTL
NPRECTL			typedef ptr RECTL
LPRECTL			typedef ptr RECTL
LPCRECTL		typedef ptr RECTL

RDH_RECTANGLES		equ 0

RGNDATAHEADER		STRUC
dwSize			dd ?
iType			dd ?
nCount			dd ?
nRgnSize		dd ?
rcBound			RECTL <>
RGNDATAHEADER		ENDS
PRGNDATAHEADER		typedef ptr RGNDATAHEADER
NPRGNDATAHEADER		typedef ptr RGNDATAHEADER
LPRGNDATAHEADER		typedef ptr RGNDATAHEADER
LPCRGNDATAHEADER	typedef ptr RGNDATAHEADER

RGNDATA			STRUC
rdh			RGNDATAHEADER <>
Buffer			sbyte 1 dup(?)
RGNDATA			ENDS
PRGNDATA		typedef ptr RGNDATA
NPRGNDATA		typedef ptr RGNDATA
LPRGNDATA		typedef ptr RGNDATA
LPCRGNDATA		typedef ptr RGNDATA

endif
endif

DCIRVAL			typedef SINT

DCICMD			STRUC
dwCommand		dd ?
dwParam1		dd ?
dwParam2		dd ?
dwVersion		dd ?
dwReserved		dd ?
DCICMD			ENDS

DCICREATEINPUT		STRUC
cmd			DCICMD <>
dwCompression		dd ?
dwMask			dd 3 dup(?)
dwWidth			dd ?
dwHeight		dd ?
dwDCICaps		dd ?
dwBitCount		dd ?
lpSurface		PVOID ?
DCICREATEINPUT		ENDS
LPDCICREATEINPUT	typedef ptr DCICREATEINPUT

DCISURFACEINFO		STRUC
dwSize			dd ?
dwDCICaps		dd ?
dwCompression		dd ?
dwMask			dd 3 dup(?)
dwWidth			dd ?
dwHeight		dd ?
lStride			dd ?
dwBitCount		dd ?
dwOffSurface		ULONG_PTR ?
wSelSurface		dw ?
wReserved		dw ?
dwReserved1		dd ?
dwReserved2		dd ?
dwReserved3		dd ?
BeginAccess		PVOID ?
EndAccess		PVOID ?
DestroySurface		PVOID ?
DCISURFACEINFO		ENDS
LPDCISURFACEINFO	typedef ptr DCISURFACEINFO

CALLBACK(ENUM_CALLBACK, lpSurfaceInfo:LPDCISURFACEINFO, lpContext:PVOID)

DCIENUMINPUT		STRUC
cmd			DCICMD <>
rSrc			RECT <>
rDst			RECT <>
EnumCallback		ENUM_CALLBACK ?
lpContext		PVOID ?
DCIENUMINPUT		ENDS
LPDCIENUMINPUT		typedef ptr DCIENUMINPUT

DCIPRIMARY		typedef DCISURFACEINFO
LPDCIPRIMARY		typedef ptr DCISURFACEINFO

DCIOFFSCREEN		STRUC
dciInfo			DCISURFACEINFO <>
Draw			PVOID ?
SetClipList		PVOID ?
SetDestination		PVOID ?
DCIOFFSCREEN		ENDS
LPDCIOFFSCREEN		typedef ptr DCIOFFSCREEN

DCIOVERLAY		STRUC
dciInfo			DCISURFACEINFO <>
dwChromakeyValue	dd ?
dwChromakeyMask		dd ?
DCIOVERLAY		ENDS
LPDCIOVERLAY		typedef ptr DCIOVERLAY

ifndef YVU9
YVU9			equ mmioFOURCC('Y','V','U','9')
endif
ifndef Y411
Y411			equ mmioFOURCC('Y','4','1','1')
endif
ifndef YUY2
YUY2			equ mmioFOURCC('Y','U','Y','2')
endif
ifndef YVYU
YVYU			equ mmioFOURCC('Y','V','Y','U')
endif
ifndef UYVY
UYVY			equ mmioFOURCC('U','Y','V','Y')
endif
ifndef Y211
Y211			equ mmioFOURCC('Y','2','1','1')
endif

endif
.pragma list(pop)
