1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _INC_DCIDDI
7#define _INC_DCIDDI
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#define DCICOMMAND 3075
14#define DCI_VERSION 0x0100
15
16#define DCICREATEPRIMARYSURFACE 1
17#define DCICREATEOFFSCREENSURFACE 2
18#define DCICREATEOVERLAYSURFACE 3
19#define DCIENUMSURFACE 4
20#define DCIESCAPE 5
21
22#define DCI_OK 0
23#define DCI_FAIL_GENERIC -1
24#define DCI_FAIL_UNSUPPORTEDVERSION -2
25#define DCI_FAIL_INVALIDSURFACE -3
26#define DCI_FAIL_UNSUPPORTED -4
27
28#define DCI_ERR_CURRENTLYNOTAVAIL -5
29#define DCI_ERR_INVALIDRECT -6
30#define DCI_ERR_UNSUPPORTEDFORMAT -7
31#define DCI_ERR_UNSUPPORTEDMASK -8
32#define DCI_ERR_TOOBIGHEIGHT -9
33#define DCI_ERR_TOOBIGWIDTH -10
34#define DCI_ERR_TOOBIGSIZE -11
35#define DCI_ERR_OUTOFMEMORY -12
36#define DCI_ERR_INVALIDPOSITION -13
37#define DCI_ERR_INVALIDSTRETCH -14
38#define DCI_ERR_INVALIDCLIPLIST -15
39#define DCI_ERR_SURFACEISOBSCURED -16
40#define DCI_ERR_XALIGN -17
41#define DCI_ERR_YALIGN -18
42#define DCI_ERR_XYALIGN -19
43#define DCI_ERR_WIDTHALIGN -20
44#define DCI_ERR_HEIGHTALIGN -21
45
46#define DCI_STATUS_POINTERCHANGED 1
47#define DCI_STATUS_STRIDECHANGED 2
48#define DCI_STATUS_FORMATCHANGED 4
49#define DCI_STATUS_SURFACEINFOCHANGED 8
50#define DCI_STATUS_CHROMAKEYCHANGED 16
51#define DCI_STATUS_WASSTILLDRAWING 32
52
53#define DCI_SUCCESS(error) (((DCIRVAL)error) >= 0)
54
55#define DCI_SURFACE_TYPE 0x0000000F
56#define DCI_PRIMARY 0x00000000
57#define DCI_OFFSCREEN 0x00000001
58#define DCI_OVERLAY 0x00000002
59#define DCI_VISIBLE 0x00000010
60#define DCI_CHROMAKEY 0x00000020
61#define DCI_1632_ACCESS 0x00000040
62#define DCI_DWORDSIZE 0x00000080
63#define DCI_DWORDALIGN 0x00000100
64#define DCI_WRITEONLY 0x00000200
65#define DCI_ASYNC 0x00000400
66
67#define DCI_CAN_STRETCHX 0x00001000
68#define DCI_CAN_STRETCHY 0x00002000
69#define DCI_CAN_STRETCHXY (DCI_CAN_STRETCHX | DCI_CAN_STRETCHY)
70
71#define DCI_CAN_STRETCHXN 0x00004000
72#define DCI_CAN_STRETCHYN 0x00008000
73#define DCI_CAN_STRETCHXYN (DCI_CAN_STRETCHXN | DCI_CAN_STRETCHYN)
74
75#define DCI_CANOVERLAY 0x00010000
76
77  typedef int DCIRVAL;
78
79  typedef struct _DCICMD {
80    DWORD dwCommand;
81    DWORD dwParam1;
82    DWORD dwParam2;
83    DWORD dwVersion;
84    DWORD dwReserved;
85  } DCICMD;
86
87  typedef struct _DCICREATEINPUT {
88    DCICMD cmd;
89    DWORD dwCompression;
90    DWORD dwMask[3];
91    DWORD dwWidth;
92    DWORD dwHeight;
93    DWORD dwDCICaps;
94    DWORD dwBitCount;
95    LPVOID lpSurface;
96  } DCICREATEINPUT,*LPDCICREATEINPUT;
97
98  typedef struct _DCISURFACEINFO {
99    DWORD dwSize;
100    DWORD dwDCICaps;
101    DWORD dwCompression;
102    DWORD dwMask[3];
103    DWORD dwWidth;
104    DWORD dwHeight;
105    LONG lStride;
106    DWORD dwBitCount;
107    ULONG_PTR dwOffSurface;
108    WORD wSelSurface;
109    WORD wReserved;
110    DWORD dwReserved1;
111    DWORD dwReserved2;
112    DWORD dwReserved3;
113    DCIRVAL (CALLBACK *BeginAccess) (LPVOID,LPRECT);
114    void (CALLBACK *EndAccess) (LPVOID);
115    void (CALLBACK *DestroySurface) (LPVOID);
116  } DCISURFACEINFO,*LPDCISURFACEINFO;
117
118  typedef void (*ENUM_CALLBACK)(LPDCISURFACEINFO lpSurfaceInfo,LPVOID lpContext);
119
120  typedef struct _DCIENUMINPUT {
121    DCICMD cmd;
122    RECT rSrc;
123    RECT rDst;
124    void (CALLBACK *EnumCallback)(LPDCISURFACEINFO,LPVOID);
125    LPVOID lpContext;
126  } DCIENUMINPUT,*LPDCIENUMINPUT;
127
128  typedef DCISURFACEINFO DCIPRIMARY,*LPDCIPRIMARY;
129
130  typedef struct _DCIOFFSCREEN {
131    DCISURFACEINFO dciInfo;
132    DCIRVAL (CALLBACK *Draw) (LPVOID);
133    DCIRVAL (CALLBACK *SetClipList) (LPVOID,LPRGNDATA);
134    DCIRVAL (CALLBACK *SetDestination) (LPVOID,LPRECT,LPRECT);
135  } DCIOFFSCREEN,*LPDCIOFFSCREEN;
136
137  typedef struct _DCIOVERLAY {
138    DCISURFACEINFO dciInfo;
139    DWORD dwChromakeyValue;
140    DWORD dwChromakeyMask;
141  } DCIOVERLAY,*LPDCIOVERLAY;
142
143#ifndef YVU9
144#define YVU9 mmioFOURCC('Y','V','U','9')
145#endif
146#ifndef Y411
147#define Y411 mmioFOURCC('Y','4','1','1')
148#endif
149#ifndef YUY2
150#define YUY2 mmioFOURCC('Y','U','Y','2')
151#endif
152#ifndef YVYU
153#define YVYU mmioFOURCC('Y','V','Y','U')
154#endif
155#ifndef UYVY
156#define UYVY mmioFOURCC('U','Y','V','Y')
157#endif
158#ifndef Y211
159#define Y211 mmioFOURCC('Y','2','1','1')
160#endif
161
162#ifdef __cplusplus
163}
164#endif
165#endif
166