Like the AUTORADIOBUTTON, the parent of a RADIOBUTTON style button
[wine] / dlls / ddraw / ddraw_private.h
1 #ifndef __WINE_DLLS_DDRAW_DDRAW_PRIVATE_H
2 #define __WINE_DLLS_DDRAW_DDRAW_PRIVATE_H
3
4 /* MAY NOT CONTAIN X11 or DGA specific includes/defines/structs! */
5
6 #include "wtypes.h"
7 #include "winbase.h"
8 #include "wingdi.h"
9 #include "winuser.h"
10 #include "ddraw.h"
11
12 static const char WINE_UNUSED *ddProp = "WINE_DDRAW_Property";
13
14 /****************************************************************************
15  * This is the main DirectDraw driver interface. It is supposed to be called
16  * only from the base functions and only used by those. It should neither be
17  * be called nor used within the interfaces.
18  */
19 typedef struct ddraw_driver {
20         LPGUID  guid;           /*under which we are referenced and enumerated*/
21         CHAR    type[20];       /* type, usually "display" */
22         CHAR    name[40];       /* name, like "WINE Foobar DirectDraw Driver" */
23         int     preference;     /* how good we are. dga might get 100, xlib 50*/
24         HRESULT (*createDDRAW)(LPDIRECTDRAW*); /* also check if arg is NULL */
25 } ddraw_driver;
26
27 extern void ddraw_register_driver(ddraw_driver*);
28
29 /*****************************************************************************
30  * The implementation structures. They must not contain driver specific stuff.
31  * 
32  * For private data the "LPVOID private" pointer should be used.
33  */
34
35 typedef struct IDirectDrawImpl  IDirectDrawImpl;
36 typedef struct IDirectDraw2Impl IDirectDraw2Impl;
37 typedef struct IDirectDraw3Impl IDirectDraw3Impl;
38 typedef struct IDirectDraw4Impl IDirectDraw4Impl;
39 typedef struct IDirectDrawPaletteImpl   IDirectDrawPaletteImpl;
40 typedef struct IDirectDrawClipperImpl   IDirectDrawClipperImpl;
41
42 typedef struct IDirectDrawSurfaceImpl IDirectDrawSurfaceImpl;
43 typedef struct IDirectDrawSurface2Impl IDirectDrawSurface2Impl;
44 typedef struct IDirectDrawSurface4Impl IDirectDrawSurface4Impl;
45
46
47 extern struct ICOM_VTABLE(IDirectDrawClipper)   ddclipvt;
48 extern struct ICOM_VTABLE(IDirectDrawPalette)   ddraw_ddpalvt;
49
50 /*****************************************************************************
51  * IDirectDraw implementation structure
52  */
53 struct _common_directdrawdata
54 {
55     DDPIXELFORMAT directdraw_pixelformat;
56     DDPIXELFORMAT screen_pixelformat;
57
58     int           pixmap_depth;
59     void (*pixel_convert)(void *src, void *dst, DWORD width, DWORD height, LONG pitch, IDirectDrawPaletteImpl *palette);
60     void (*palette_convert)(LPPALETTEENTRY palent, void *screen_palette, DWORD start, DWORD count);
61     DWORD         height,width; /* set by SetDisplayMode */
62     HWND          mainWindow;   /* set by SetCooperativeLevel */
63
64     /* This is for the fake mainWindow */
65     ATOM          winclass;
66     HWND          window;
67     PAINTSTRUCT   ps;
68     int           paintable;
69 };
70
71 /*****************************************************************************
72  * IDirectDraw implementation structure
73  * 
74  * Note: All the IDirectDraw*Impl structures _MUST_ have IDENTICAL layout,
75  *       since we reuse functions across interface versions.
76  */
77 struct IDirectDrawImpl
78 {
79     /* IUnknown fields */
80     ICOM_VFIELD(IDirectDraw);
81     DWORD                               ref;
82     /* IDirectDraw fields */
83     struct _common_directdrawdata       d;
84     LPVOID                              private;
85 };
86 extern HRESULT WINAPI IDirectDrawImpl_SetDisplayMode(
87         LPDIRECTDRAW iface,DWORD width,DWORD height,DWORD depth
88 );
89 /*
90  * IDirectDraw2 implementation structure
91  */
92 struct IDirectDraw2Impl
93 {
94     /* IUnknown fields */
95     ICOM_VFIELD(IDirectDraw2);
96     DWORD                               ref;
97
98     /* IDirectDraw2 fields */
99     struct _common_directdrawdata       d;
100     LPVOID                              private;
101 };
102 extern HRESULT WINAPI IDirectDraw2Impl_DuplicateSurface(
103         LPDIRECTDRAW2 iface,LPDIRECTDRAWSURFACE src,LPDIRECTDRAWSURFACE *dst
104 );
105 extern HRESULT WINAPI IDirectDraw2Impl_SetCooperativeLevel(
106         LPDIRECTDRAW2 iface,HWND hwnd,DWORD cooplevel
107 );
108 extern HRESULT WINAPI IDirectDraw2Impl_GetCaps(
109         LPDIRECTDRAW2 iface,LPDDCAPS caps1,LPDDCAPS caps2
110 ) ;
111 extern HRESULT WINAPI IDirectDraw2Impl_CreateClipper(
112     LPDIRECTDRAW2 iface,DWORD x,LPDIRECTDRAWCLIPPER *lpddclip,LPUNKNOWN lpunk
113 );
114 extern HRESULT WINAPI common_IDirectDraw2Impl_CreatePalette(
115     IDirectDraw2Impl* This,DWORD dwFlags,LPPALETTEENTRY palent,
116     IDirectDrawPaletteImpl **lpddpal,LPUNKNOWN lpunk,int *psize
117 );
118 extern HRESULT WINAPI IDirectDraw2Impl_CreatePalette(
119     LPDIRECTDRAW2 iface,DWORD dwFlags,LPPALETTEENTRY palent,LPDIRECTDRAWPALETTE *lpddpal,LPUNKNOWN lpunk
120 );
121 extern HRESULT WINAPI IDirectDraw2Impl_RestoreDisplayMode(LPDIRECTDRAW2 iface);
122 extern HRESULT WINAPI IDirectDraw2Impl_WaitForVerticalBlank(
123         LPDIRECTDRAW2 iface,DWORD x,HANDLE h
124 );
125 extern ULONG WINAPI IDirectDraw2Impl_AddRef(LPDIRECTDRAW2 iface);
126 extern ULONG WINAPI IDirectDraw2Impl_Release(LPDIRECTDRAW2 iface);
127 extern HRESULT WINAPI IDirectDraw2Impl_QueryInterface(
128         LPDIRECTDRAW2 iface,REFIID refiid,LPVOID *obj
129 );
130 extern HRESULT WINAPI IDirectDraw2Impl_GetVerticalBlankStatus(
131         LPDIRECTDRAW2 iface,BOOL *status
132 );
133 extern HRESULT WINAPI IDirectDraw2Impl_EnumDisplayModes(
134         LPDIRECTDRAW2 iface,DWORD dwFlags,LPDDSURFACEDESC lpddsfd,LPVOID context,LPDDENUMMODESCALLBACK modescb
135 );
136 extern HRESULT WINAPI IDirectDraw2Impl_GetDisplayMode(
137         LPDIRECTDRAW2 iface,LPDDSURFACEDESC lpddsfd
138 );
139 extern HRESULT WINAPI IDirectDraw2Impl_FlipToGDISurface(LPDIRECTDRAW2 iface);
140 extern HRESULT WINAPI IDirectDraw2Impl_GetMonitorFrequency(
141     LPDIRECTDRAW2 iface,LPDWORD freq
142 );
143 extern HRESULT WINAPI IDirectDraw2Impl_GetFourCCCodes(
144     LPDIRECTDRAW2 iface,LPDWORD x,LPDWORD y
145 );
146 extern HRESULT WINAPI IDirectDraw2Impl_EnumSurfaces(
147     LPDIRECTDRAW2 iface,DWORD x,LPDDSURFACEDESC ddsfd,LPVOID context,
148     LPDDENUMSURFACESCALLBACK ddsfcb
149 );
150 extern HRESULT WINAPI IDirectDraw2Impl_Compact( LPDIRECTDRAW2 iface );
151 extern HRESULT WINAPI IDirectDraw2Impl_GetGDISurface(
152     LPDIRECTDRAW2 iface, LPDIRECTDRAWSURFACE *lplpGDIDDSSurface
153 );
154 extern HRESULT WINAPI IDirectDraw2Impl_GetScanLine(
155     LPDIRECTDRAW2 iface, LPDWORD lpdwScanLine
156 );
157 extern HRESULT WINAPI IDirectDraw2Impl_Initialize(LPDIRECTDRAW2 iface, GUID *lpGUID);
158 extern HRESULT WINAPI IDirectDraw2Impl_SetDisplayMode(
159     LPDIRECTDRAW2 iface,DWORD width,DWORD height,DWORD depth,
160     DWORD dwRefreshRate, DWORD dwFlags
161 );
162 extern HRESULT WINAPI IDirectDraw2Impl_GetAvailableVidMem(
163         LPDIRECTDRAW2 iface,LPDDSCAPS ddscaps,LPDWORD total,LPDWORD free
164 );
165 extern HRESULT common_off_screen_CreateSurface(
166         IDirectDraw2Impl* This,IDirectDrawSurfaceImpl* lpdsf
167 );
168
169 /*
170  * IDirectDraw4 implementation structure
171  */
172 struct IDirectDraw4Impl
173 {
174     /* IUnknown fields */
175     ICOM_VFIELD(IDirectDraw4);
176     DWORD                               ref;
177     /* IDirectDraw4 fields */
178     struct _common_directdrawdata       d;
179     LPVOID                              private;
180 };
181 extern HRESULT WINAPI IDirectDraw4Impl_GetSurfaceFromDC(
182         LPDIRECTDRAW4 iface, HDC hdc, LPDIRECTDRAWSURFACE *lpDDS
183 );
184 extern HRESULT WINAPI IDirectDraw4Impl_RestoreAllSurfaces(LPDIRECTDRAW4 iface);
185 extern HRESULT WINAPI IDirectDraw4Impl_TestCooperativeLevel(LPDIRECTDRAW4 iface);
186 extern HRESULT WINAPI IDirectDraw4Impl_GetDeviceIdentifier(LPDIRECTDRAW4 iface,
187                                                     LPDDDEVICEIDENTIFIER lpdddi,
188                                                     DWORD dwFlags
189 );
190
191 /*****************************************************************************
192  * IDirectDrawPalette implementation structure
193  */
194 struct IDirectDrawPaletteImpl
195 {
196     /* IUnknown fields */
197     ICOM_VFIELD(IDirectDrawPalette);
198     DWORD               ref;
199
200     /* IDirectDrawPalette fields */
201     IDirectDrawImpl*            ddraw;  /* direct draw, no referencecount */
202     PALETTEENTRY        palents[256];
203
204     /* This is to store the palette in 'screen format' */
205     int                 screen_palents[256];
206     LPVOID              private;
207 };
208 extern HRESULT WINAPI IDirectDrawPaletteImpl_GetEntries(LPDIRECTDRAWPALETTE,DWORD,DWORD,DWORD,LPPALETTEENTRY);
209 extern HRESULT WINAPI IDirectDrawPaletteImpl_SetEntries(LPDIRECTDRAWPALETTE,DWORD,DWORD,DWORD,LPPALETTEENTRY);
210 extern ULONG WINAPI IDirectDrawPaletteImpl_Release(LPDIRECTDRAWPALETTE);
211 extern ULONG WINAPI IDirectDrawPaletteImpl_AddRef(LPDIRECTDRAWPALETTE);
212 extern HRESULT WINAPI IDirectDrawPaletteImpl_Initialize(LPDIRECTDRAWPALETTE,LPDIRECTDRAW,DWORD,LPPALETTEENTRY);
213 extern HRESULT WINAPI IDirectDrawPaletteImpl_GetCaps(LPDIRECTDRAWPALETTE,LPDWORD);
214 extern HRESULT WINAPI IDirectDrawPaletteImpl_QueryInterface(LPDIRECTDRAWPALETTE,REFIID,LPVOID *);
215
216 extern HRESULT WINAPI common_IDirectDraw2Impl_CreatePalette(
217     IDirectDraw2Impl* This,DWORD dwFlags,LPPALETTEENTRY palent,
218     IDirectDrawPaletteImpl **lpddpal,LPUNKNOWN lpunk,int *psize
219 );
220
221 /*****************************************************************************
222  * IDirectDrawClipper implementation structure
223  */
224 struct IDirectDrawClipperImpl
225 {
226     /* IUnknown fields */
227     ICOM_VFIELD(IDirectDrawClipper);
228     DWORD                            ref;
229
230     /* IDirectDrawClipper fields */
231     HWND hWnd;
232 };
233
234 /*****************************************************************************
235  * IDirectDrawSurface implementation structure
236  */
237 struct IDirect3DTexture2Impl;
238 struct _common_directdrawsurface
239 {
240     IDirectDrawPaletteImpl*     palette;
241     IDirectDraw2Impl*           ddraw;
242
243     struct _surface_chain       *chain;
244
245     DDSURFACEDESC               surface_desc;
246
247     /* For Get / Release DC methods */
248     HBITMAP                     DIBsection;
249     void                        *bitmap_data;
250     HDC                         hdc;
251     HGDIOBJ                     holdbitmap;
252     LPDIRECTDRAWCLIPPER         lpClipper;
253     
254     /* Callback for loaded textures */
255     struct IDirect3DTexture2Impl*       texture;
256     HRESULT WINAPI              (*SetColorKey_cb)(struct IDirect3DTexture2Impl *texture, DWORD dwFlags, LPDDCOLORKEY ckey ) ; 
257 };
258 extern IDirectDrawSurface4Impl* _common_find_flipto(IDirectDrawSurface4Impl* This,IDirectDrawSurface4Impl* flipto);
259
260 struct IDirectDrawSurfaceImpl
261 {
262     /* IUnknown fields */
263     ICOM_VFIELD(IDirectDrawSurface);
264     DWORD                            ref;
265
266     /* IDirectDrawSurface fields */
267     struct _common_directdrawsurface    s;
268     LPVOID private;
269 };
270
271 /*****************************************************************************
272  * IDirectDrawSurface2 implementation structure
273  */
274 struct IDirectDrawSurface2Impl
275 {
276     /* IUnknown fields */
277     ICOM_VFIELD(IDirectDrawSurface2);
278     DWORD                             ref;
279     /* IDirectDrawSurface2 fields */
280     struct _common_directdrawsurface    s;
281     LPVOID private;
282 };
283
284 /*****************************************************************************
285  * IDirectDrawSurface3 implementation structure
286  */
287 struct IDirectDrawSurface3Impl
288 {
289     /* IUnknown fields */
290     ICOM_VFIELD(IDirectDrawSurface3);
291     DWORD                             ref;
292     /* IDirectDrawSurface3 fields */
293     struct _common_directdrawsurface    s;
294     LPVOID private;
295 };
296
297 /*****************************************************************************
298  * IDirectDrawSurface4 implementation structure
299  */
300 struct IDirectDrawSurface4Impl
301 {
302     /* IUnknown fields */
303     ICOM_VFIELD(IDirectDrawSurface4);
304     DWORD                             ref;
305
306     /* IDirectDrawSurface4 fields */
307     struct _common_directdrawsurface    s;
308     LPVOID private;
309 } ;
310
311 struct _surface_chain {
312         IDirectDrawSurface4Impl **surfaces;
313         int                     nrofsurfaces;
314 };
315 extern HRESULT common_off_screen_CreateSurface(IDirectDraw2Impl* This,IDirectDrawSurfaceImpl* lpdsf);
316 extern HRESULT WINAPI IDirectDrawSurface4Impl_Lock(LPDIRECTDRAWSURFACE4 iface,LPRECT lprect,LPDDSURFACEDESC lpddsd,DWORD flags, HANDLE hnd);
317 extern HRESULT WINAPI IDirectDrawSurface4Impl_Unlock( LPDIRECTDRAWSURFACE4 iface,LPVOID surface);
318 extern HRESULT WINAPI IDirectDrawSurface4Impl_Blt(LPDIRECTDRAWSURFACE4 iface,LPRECT rdst,LPDIRECTDRAWSURFACE4 src,LPRECT rsrc,DWORD dwFlags,LPDDBLTFX lpbltfx);
319 extern HRESULT WINAPI IDirectDrawSurface4Impl_BltFast(LPDIRECTDRAWSURFACE4 iface,DWORD dstx,DWORD dsty,LPDIRECTDRAWSURFACE4 src,LPRECT rsrc,DWORD trans);
320 extern HRESULT WINAPI IDirectDrawSurface4Impl_BltBatch(LPDIRECTDRAWSURFACE4 iface,LPDDBLTBATCH ddbltbatch,DWORD x,DWORD y);
321 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetCaps(LPDIRECTDRAWSURFACE4 iface,LPDDSCAPS caps);
322 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetSurfaceDesc(LPDIRECTDRAWSURFACE4 iface,LPDDSURFACEDESC ddsd);
323 extern ULONG WINAPI IDirectDrawSurface4Impl_AddRef(LPDIRECTDRAWSURFACE4 iface);
324 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetAttachedSurface(LPDIRECTDRAWSURFACE4 iface,LPDDSCAPS lpddsd,LPDIRECTDRAWSURFACE4 *lpdsf);
325 extern HRESULT WINAPI IDirectDrawSurface4Impl_Initialize(LPDIRECTDRAWSURFACE4 iface,LPDIRECTDRAW ddraw,LPDDSURFACEDESC lpdsfd);
326 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetPixelFormat(LPDIRECTDRAWSURFACE4 iface,LPDDPIXELFORMAT pf);
327 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetBltStatus(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags);
328 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetOverlayPosition(LPDIRECTDRAWSURFACE4 iface,LPLONG x1,LPLONG x2);
329 extern HRESULT WINAPI IDirectDrawSurface4Impl_SetClipper(LPDIRECTDRAWSURFACE4 iface,LPDIRECTDRAWCLIPPER lpClipper);
330 extern HRESULT WINAPI IDirectDrawSurface4Impl_AddAttachedSurface(LPDIRECTDRAWSURFACE4 iface,LPDIRECTDRAWSURFACE4 surf);
331 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetDC(LPDIRECTDRAWSURFACE4 iface,HDC* lphdc);
332 extern HRESULT WINAPI IDirectDrawSurface4Impl_ReleaseDC(LPDIRECTDRAWSURFACE4 iface,HDC hdc);
333 extern HRESULT WINAPI IDirectDrawSurface4Impl_QueryInterface(LPDIRECTDRAWSURFACE4 iface,REFIID refiid,LPVOID *obj);
334 extern HRESULT WINAPI IDirectDrawSurface4Impl_IsLost(LPDIRECTDRAWSURFACE4 iface);
335 extern HRESULT WINAPI IDirectDrawSurface4Impl_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE4 iface,LPVOID context,LPDDENUMSURFACESCALLBACK esfcb);
336 extern HRESULT WINAPI IDirectDrawSurface4Impl_Restore(LPDIRECTDRAWSURFACE4 iface);
337 extern HRESULT WINAPI IDirectDrawSurface4Impl_SetColorKey(LPDIRECTDRAWSURFACE4 iface, DWORD dwFlags, LPDDCOLORKEY ckey);
338 extern HRESULT WINAPI IDirectDrawSurface4Impl_AddOverlayDirtyRect(LPDIRECTDRAWSURFACE4 iface,LPRECT lpRect);
339 extern HRESULT WINAPI IDirectDrawSurface4Impl_DeleteAttachedSurface(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags,LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface);
340 extern HRESULT WINAPI IDirectDrawSurface4Impl_EnumOverlayZOrders(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpfnCallback);
341 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetClipper(LPDIRECTDRAWSURFACE4 iface,LPDIRECTDRAWCLIPPER* lplpDDClipper);
342 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetColorKey(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);
343 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetFlipStatus(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags);
344 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetPalette(LPDIRECTDRAWSURFACE4 iface,LPDIRECTDRAWPALETTE* lplpDDPalette);
345 extern HRESULT WINAPI IDirectDrawSurface4Impl_SetOverlayPosition(LPDIRECTDRAWSURFACE4 iface,LONG lX,LONG lY);
346 extern HRESULT WINAPI IDirectDrawSurface4Impl_UpdateOverlay(LPDIRECTDRAWSURFACE4 iface,LPRECT lpSrcRect,LPDIRECTDRAWSURFACE4 lpDDDestSurface,LPRECT lpDestRect,DWORD dwFlags,LPDDOVERLAYFX lpDDOverlayFx);
347 extern HRESULT WINAPI IDirectDrawSurface4Impl_UpdateOverlayDisplay(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags);
348 extern HRESULT WINAPI IDirectDrawSurface4Impl_UpdateOverlayZOrder(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags,LPDIRECTDRAWSURFACE4 lpDDSReference);
349 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetDDInterface(LPDIRECTDRAWSURFACE4 iface,LPVOID* lplpDD);
350 extern HRESULT WINAPI IDirectDrawSurface4Impl_PageLock(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags);
351 extern HRESULT WINAPI IDirectDrawSurface4Impl_PageUnlock(LPDIRECTDRAWSURFACE4 iface,DWORD dwFlags);
352 extern HRESULT WINAPI IDirectDrawSurface4Impl_SetSurfaceDesc(LPDIRECTDRAWSURFACE4 iface,LPDDSURFACEDESC lpDDSD,DWORD dwFlags);
353 extern HRESULT WINAPI IDirectDrawSurface4Impl_SetPrivateData(LPDIRECTDRAWSURFACE4 iface,REFGUID guidTag,LPVOID lpData,DWORD cbSize,DWORD dwFlags);
354 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetPrivateData(LPDIRECTDRAWSURFACE4 iface,REFGUID guidTag,LPVOID lpBuffer,LPDWORD lpcbBufferSize);
355 extern HRESULT WINAPI IDirectDrawSurface4Impl_FreePrivateData(LPDIRECTDRAWSURFACE4 iface,REFGUID guidTag);
356 extern HRESULT WINAPI IDirectDrawSurface4Impl_GetUniquenessValue(LPDIRECTDRAWSURFACE4 iface,LPDWORD lpValue);
357 extern HRESULT WINAPI IDirectDrawSurface4Impl_ChangeUniquenessValue(LPDIRECTDRAWSURFACE4 iface);
358
359 extern void _common_IDirectDrawImpl_SetDisplayMode(IDirectDrawImpl* This);
360
361 /* Get DDSCAPS of surface (shortcutmacro) */
362 #define SDDSCAPS(iface) ((iface)->s.surface_desc.ddsCaps.dwCaps)
363 /* Get the number of bytes per pixel for a given surface */
364 #define PFGET_BPP(pf) (pf.dwFlags&DDPF_PALETTEINDEXED8?1:(pf.u.dwRGBBitCount/8))
365 #define GET_BPP(desc) PFGET_BPP(desc.ddpfPixelFormat)
366
367 extern int _common_depth_to_pixelformat(DWORD depth, DDPIXELFORMAT *pixelformat,DDPIXELFORMAT *screen_pixelformat, int *pix_depth);
368
369 typedef struct {
370     unsigned short      bpp,depth;
371     unsigned int        rmask,gmask,bmask;
372 } ConvertMode;
373
374 typedef struct {
375     void (*pixel_convert)(void *src, void *dst, DWORD width, DWORD height, LONG pitch, IDirectDrawPaletteImpl* palette);
376     void (*palette_convert)(LPPALETTEENTRY palent, void *screen_palette, DWORD start, DWORD count);
377 } ConvertFuncs;
378
379 typedef struct {
380     ConvertMode screen, dest;
381     ConvertFuncs funcs;
382 } Convert;
383
384 extern Convert ModeEmulations[5];
385 extern int _common_depth_to_pixelformat(
386         DWORD depth,DDPIXELFORMAT *pixelformat,
387         DDPIXELFORMAT *screen_pixelformat, int *pix_depth
388 );
389
390 extern HRESULT create_direct3d(LPVOID *obj,IDirectDraw2Impl*);
391 extern HRESULT create_direct3d2(LPVOID *obj,IDirectDraw2Impl*);
392
393 /******************************************************************************
394  * Debugging / Flags output functions
395  */
396 extern void _dump_DDBLTFX(DWORD flagmask);
397 extern void _dump_DDBLTFAST(DWORD flagmask);
398 extern void _dump_DDBLT(DWORD flagmask);
399 extern void _dump_DDSCAPS(void *in);
400 extern void _dump_pixelformat_flag(DWORD flagmask);
401 extern void _dump_paletteformat(DWORD dwFlags);
402 extern void _dump_pixelformat(void *in);
403 extern void _dump_colorkeyflag(DWORD ck);
404 extern void _dump_surface_desc(DDSURFACEDESC *lpddsd);
405 extern void _dump_cooperativelevel(DWORD cooplevel);
406 extern void _dump_surface_desc(DDSURFACEDESC *lpddsd);
407 extern void _dump_DDCOLORKEY(void *in);
408 #endif /* __WINE_DLLS_DDRAW_DDRAW_PRIVATE_H */