1 #ifndef __GRAPHICS_WINE_DDRAW_PRIVATE_H
2 #define __GRAPHICS_WINE_DDRAW_PRIVATE_H
6 #ifdef HAVE_LIBXXF86DGA2
7 #include "ts_xf86dga2.h"
8 #endif /* defined(HAVE_LIBXXF86DGA2) */
13 /*****************************************************************************
14 * Predeclare the interface implementation structures
16 typedef struct IDirectDrawPaletteImpl IDirectDrawPaletteImpl
;
17 typedef struct IDirectDrawClipperImpl IDirectDrawClipperImpl
;
18 typedef struct IDirectDrawImpl IDirectDrawImpl
;
19 typedef struct IDirectDraw2Impl IDirectDraw2Impl
;
20 typedef struct IDirectDraw4Impl IDirectDraw4Impl
;
21 typedef struct IDirectDrawSurfaceImpl IDirectDrawSurfaceImpl
;
22 typedef struct IDirectDrawSurface3Impl IDirectDrawSurface2Impl
;
23 typedef struct IDirectDrawSurface4Impl IDirectDrawSurface3Impl
;
24 typedef struct IDirectDrawSurface4Impl IDirectDrawSurface4Impl
;
25 typedef struct IDirectDrawColorControlImpl IDirectDrawColorControlImpl
;
27 #include "d3d_private.h"
29 /*****************************************************************************
30 * IDirectDrawPalette implementation structure
32 struct IDirectDrawPaletteImpl
35 ICOM_VFIELD(IDirectDrawPalette
);
37 /* IDirectDrawPalette fields */
38 IDirectDrawImpl
* ddraw
;
40 PALETTEENTRY palents
[256];
42 /* This is to store the palette in 'screen format' */
43 int screen_palents
[256];
46 /*****************************************************************************
47 * IDirectDrawClipper implementation structure
49 struct IDirectDrawClipperImpl
52 ICOM_VFIELD(IDirectDrawClipper
);
55 /* IDirectDrawClipper fields */
59 /*****************************************************************************
60 * IDirectDraw implementation structure
62 struct _common_directdrawdata
64 DDPIXELFORMAT directdraw_pixelformat
;
65 DDPIXELFORMAT screen_pixelformat
;
67 void (*pixel_convert
)(void *src
, void *dst
, DWORD width
, DWORD height
, LONG pitch
, IDirectDrawPaletteImpl
* palette
);
68 void (*palette_convert
)(LPPALETTEENTRY palent
, void *screen_palette
, DWORD start
, DWORD count
);
69 DWORD height
,width
; /* SetDisplayMode */
70 HWND mainWindow
; /* SetCooperativeLevel */
72 /* This is for Wine's fake mainWindow.
73 We need it also in DGA mode to make some games (for example Monkey Island III work) */
81 struct _dga_directdrawdata
83 DWORD fb_width
,fb_height
,fb_memsize
;
86 #ifdef HAVE_LIBXXF86DGA2
89 #endif /* define(HAVE_LIBXXF86DGA2) */
92 struct _xlib_directdrawdata
95 int xshm_active
, xshm_compl
;
96 #endif /* defined(HAVE_LIBXXSHM) */
98 /* are these needed for anything? (draw_surf is the active surface)
99 IDirectDrawSurfaceImpl* surfs;
100 DWORD num_surfs, alloc_surfs, draw_surf; */
103 struct IDirectDrawImpl
105 /* IUnknown fields */
106 ICOM_VFIELD(IDirectDraw
);
108 /* IDirectDraw fields */
109 struct _common_directdrawdata d
;
111 struct _xlib_directdrawdata xlib
;
112 struct _dga_directdrawdata dga
;
116 /*****************************************************************************
117 * IDirectDraw2 implementation structure
119 struct IDirectDraw2Impl
121 /* IUnknown fields */
122 ICOM_VFIELD(IDirectDraw2
);
124 /* IDirectDraw2 fields */
125 struct _common_directdrawdata d
;
127 struct _xlib_directdrawdata xlib
;
128 struct _dga_directdrawdata dga
;
132 /*****************************************************************************
133 * IDirectDraw4 implementation structure
135 struct IDirectDraw4Impl
137 /* IUnknown fields */
138 ICOM_VFIELD(IDirectDraw4
);
140 /* IDirectDraw4 fields */
141 struct _common_directdrawdata d
;
143 struct _xlib_directdrawdata xlib
;
144 struct _dga_directdrawdata dga
;
148 /*****************************************************************************
149 * IDirectDrawSurface implementation structure
151 struct _common_directdrawsurface
153 IDirectDrawPaletteImpl
* palette
;
154 IDirectDraw2Impl
* ddraw
;
156 struct _surface_chain
*chain
;
158 DDSURFACEDESC surface_desc
;
160 /* For Get / Release DC methods */
166 /* Callback for loaded textures */
167 IDirect3DTexture2Impl
* texture
;
168 HRESULT
WINAPI (*SetColorKey_cb
)(IDirect3DTexture2Impl
*texture
, DWORD dwFlags
, LPDDCOLORKEY ckey
) ;
170 /* Storage for attached device (void * as it can be either a Device or a Device2) */
174 struct _dga_directdrawsurface
179 struct _xlib_directdrawsurface
183 XShmSegmentInfo shminfo
;
187 struct IDirectDrawSurfaceImpl
189 /* IUnknown fields */
190 ICOM_VFIELD(IDirectDrawSurface
);
192 /* IDirectDrawSurface fields */
193 struct _common_directdrawsurface s
;
195 struct _dga_directdrawsurface dga
;
196 struct _xlib_directdrawsurface xlib
;
198 LPDIRECTDRAWCLIPPER lpClipper
;
201 /*****************************************************************************
202 * IDirectDrawSurface2 implementation structure
204 struct IDirectDrawSurface2Impl
206 /* IUnknown fields */
207 ICOM_VFIELD(IDirectDrawSurface2
);
209 /* IDirectDrawSurface2 fields */
210 struct _common_directdrawsurface s
;
212 struct _dga_directdrawsurface dga
;
213 struct _xlib_directdrawsurface xlib
;
215 LPDIRECTDRAWCLIPPER lpClipper
;
218 /*****************************************************************************
219 * IDirectDrawSurface3 implementation structure
221 struct IDirectDrawSurface3Impl
223 /* IUnknown fields */
224 ICOM_VFIELD(IDirectDrawSurface3
);
226 /* IDirectDrawSurface3 fields */
227 struct _common_directdrawsurface s
;
229 struct _dga_directdrawsurface dga
;
230 struct _xlib_directdrawsurface xlib
;
232 LPDIRECTDRAWCLIPPER lpClipper
;
235 /*****************************************************************************
236 * IDirectDrawSurface4 implementation structure
238 struct IDirectDrawSurface4Impl
240 /* IUnknown fields */
241 ICOM_VFIELD(IDirectDrawSurface4
);
244 /* IDirectDrawSurface4 fields */
245 struct _common_directdrawsurface s
;
247 struct _dga_directdrawsurface dga
;
248 struct _xlib_directdrawsurface xlib
;
250 LPDIRECTDRAWCLIPPER lpClipper
;
253 struct _surface_chain
{
254 IDirectDrawSurface4Impl
**surfaces
;
258 /*****************************************************************************
259 * IDirectDrawColorControl implementation structure
261 struct IDirectDrawColorControlImpl
263 /* IUnknown fields */
264 ICOM_VFIELD(IDirectDrawColorControl
);
266 /* IDirectDrawColorControl fields */
271 #endif /* __GRAPHICS_WINE_DDRAW_PRIVATE_H */