xref: /reactos/sdk/include/ddk/dciddi.h (revision c2c66aff)
1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the w64 mingw-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
10 extern "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