1 #ifndef __GRAPHICS_WINE_DDRAW_PRIVATE_H
2 #define __GRAPHICS_WINE_DDRAW_PRIVATE_H
7 /*****************************************************************************
8 * Predeclare the interface implementation structures
10 typedef struct IDirectDrawPaletteImpl IDirectDrawPaletteImpl;
11 typedef struct IDirectDrawClipperImpl IDirectDrawClipperImpl;
12 typedef struct IDirectDrawImpl IDirectDrawImpl;
13 typedef struct IDirectDraw2Impl IDirectDraw2Impl;
14 typedef struct IDirectDraw4Impl IDirectDraw4Impl;
15 typedef struct IDirectDrawSurfaceImpl IDirectDrawSurfaceImpl;
16 typedef struct IDirectDrawSurface3Impl IDirectDrawSurface2Impl;
17 typedef struct IDirectDrawSurface4Impl IDirectDrawSurface3Impl;
18 typedef struct IDirectDrawSurface4Impl IDirectDrawSurface4Impl;
19 typedef struct IDirectDrawColorControlImpl IDirectDrawColorControlImpl;
21 #include "d3d_private.h"
23 /*****************************************************************************
24 * IDirectDrawPalette implementation structure
26 struct IDirectDrawPaletteImpl
29 ICOM_VFIELD(IDirectDrawPalette);
31 /* IDirectDrawPalette fields */
32 IDirectDrawImpl* ddraw;
34 PALETTEENTRY palents[256];
36 /* This is to store the palette in 'screen format' */
37 int screen_palents[256];
40 /*****************************************************************************
41 * IDirectDrawClipper implementation structure
43 struct IDirectDrawClipperImpl
46 ICOM_VFIELD(IDirectDrawClipper);
49 /* IDirectDrawClipper fields */
53 /*****************************************************************************
54 * IDirectDraw implementation structure
56 struct _common_directdrawdata
58 DDPIXELFORMAT directdraw_pixelformat;
59 DDPIXELFORMAT screen_pixelformat;
61 void (*pixel_convert)(void *src, void *dst, DWORD width, DWORD height, LONG pitch, IDirectDrawPaletteImpl* palette);
62 void (*palette_convert)(LPPALETTEENTRY palent, void *screen_palette, DWORD start, DWORD count);
63 DWORD height,width; /* SetDisplayMode */
64 HWND mainWindow; /* SetCooperativeLevel */
66 /* This is for Wine's fake mainWindow.
67 We need it also in DGA mode to make some games (for example Monkey Island III work) */
75 struct _dga_directdrawdata
77 DWORD fb_width,fb_height,fb_banksize,fb_memsize;
82 struct _xlib_directdrawdata
85 int xshm_active, xshm_compl;
86 #endif /* defined(HAVE_LIBXXSHM) */
88 /* are these needed for anything? (draw_surf is the active surface)
89 IDirectDrawSurfaceImpl* surfs;
90 DWORD num_surfs, alloc_surfs, draw_surf; */
93 struct IDirectDrawImpl
96 ICOM_VFIELD(IDirectDraw);
98 /* IDirectDraw fields */
99 struct _common_directdrawdata d;
101 struct _xlib_directdrawdata xlib;
102 struct _dga_directdrawdata dga;
106 /*****************************************************************************
107 * IDirectDraw2 implementation structure
109 struct IDirectDraw2Impl
111 /* IUnknown fields */
112 ICOM_VFIELD(IDirectDraw2);
114 /* IDirectDraw2 fields */
115 struct _common_directdrawdata d;
117 struct _xlib_directdrawdata xlib;
118 struct _dga_directdrawdata dga;
122 /*****************************************************************************
123 * IDirectDraw4 implementation structure
125 struct IDirectDraw4Impl
127 /* IUnknown fields */
128 ICOM_VFIELD(IDirectDraw4);
130 /* IDirectDraw4 fields */
131 struct _common_directdrawdata d;
133 struct _xlib_directdrawdata xlib;
134 struct _dga_directdrawdata dga;
138 /*****************************************************************************
139 * IDirectDrawSurface implementation structure
141 struct _common_directdrawsurface
143 IDirectDrawPaletteImpl* palette;
144 IDirectDraw2Impl* ddraw;
146 struct _surface_chain *chain;
148 DDSURFACEDESC surface_desc;
150 /* For Get / Release DC methods */
156 /* Callback for loaded textures */
157 IDirect3DTexture2Impl* texture;
158 HRESULT WINAPI (*SetColorKey_cb)(IDirect3DTexture2Impl *texture, DWORD dwFlags, LPDDCOLORKEY ckey ) ;
160 /* Storage for attached device (void * as it can be either a Device or a Device2) */
164 struct _dga_directdrawsurface
169 struct _xlib_directdrawsurface
173 XShmSegmentInfo shminfo;
177 struct IDirectDrawSurfaceImpl
179 /* IUnknown fields */
180 ICOM_VFIELD(IDirectDrawSurface);
182 /* IDirectDrawSurface fields */
183 struct _common_directdrawsurface s;
185 struct _dga_directdrawsurface dga;
186 struct _xlib_directdrawsurface xlib;
188 LPDIRECTDRAWCLIPPER lpClipper;
191 /*****************************************************************************
192 * IDirectDrawSurface2 implementation structure
194 struct IDirectDrawSurface2Impl
196 /* IUnknown fields */
197 ICOM_VFIELD(IDirectDrawSurface2);
199 /* IDirectDrawSurface2 fields */
200 struct _common_directdrawsurface s;
202 struct _dga_directdrawsurface dga;
203 struct _xlib_directdrawsurface xlib;
205 LPDIRECTDRAWCLIPPER lpClipper;
208 /*****************************************************************************
209 * IDirectDrawSurface3 implementation structure
211 struct IDirectDrawSurface3Impl
213 /* IUnknown fields */
214 ICOM_VFIELD(IDirectDrawSurface3);
216 /* IDirectDrawSurface3 fields */
217 struct _common_directdrawsurface s;
219 struct _dga_directdrawsurface dga;
220 struct _xlib_directdrawsurface xlib;
222 LPDIRECTDRAWCLIPPER lpClipper;
225 /*****************************************************************************
226 * IDirectDrawSurface4 implementation structure
228 struct IDirectDrawSurface4Impl
230 /* IUnknown fields */
231 ICOM_VFIELD(IDirectDrawSurface4);
234 /* IDirectDrawSurface4 fields */
235 struct _common_directdrawsurface s;
237 struct _dga_directdrawsurface dga;
238 struct _xlib_directdrawsurface xlib;
240 LPDIRECTDRAWCLIPPER lpClipper;
243 struct _surface_chain {
244 IDirectDrawSurface4Impl **surfaces;
248 /*****************************************************************************
249 * IDirectDrawColorControl implementation structure
251 struct IDirectDrawColorControlImpl
253 /* IUnknown fields */
254 ICOM_VFIELD(IDirectDrawColorControl);
256 /* IDirectDrawColorControl fields */
261 #endif /* __GRAPHICS_WINE_DDRAW_PRIVATE_H */