| #ifndef __GRAPHICS_WINE_DDRAW_PRIVATE_H |
| #define __GRAPHICS_WINE_DDRAW_PRIVATE_H |
| |
| #include "ddraw.h" |
| #include "winuser.h" |
| |
| /***************************************************************************** |
| * Predeclare the interface implementation structures |
| */ |
| typedef struct IDirectDrawPaletteImpl IDirectDrawPaletteImpl; |
| typedef struct IDirectDrawClipperImpl IDirectDrawClipperImpl; |
| typedef struct IDirectDrawImpl IDirectDrawImpl; |
| typedef struct IDirectDraw2Impl IDirectDraw2Impl; |
| typedef struct IDirectDraw4Impl IDirectDraw4Impl; |
| typedef struct IDirectDrawSurfaceImpl IDirectDrawSurfaceImpl; |
| typedef struct IDirectDrawSurface3Impl IDirectDrawSurface2Impl; |
| typedef struct IDirectDrawSurface4Impl IDirectDrawSurface3Impl; |
| typedef struct IDirectDrawSurface4Impl IDirectDrawSurface4Impl; |
| typedef struct IDirectDrawColorControlImpl IDirectDrawColorControlImpl; |
| |
| #include "d3d_private.h" |
| |
| /***************************************************************************** |
| * IDirectDrawPalette implementation structure |
| */ |
| struct IDirectDrawPaletteImpl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDrawPalette)* lpvtbl; |
| DWORD ref; |
| /* IDirectDrawPalette fields */ |
| IDirectDrawImpl* ddraw; |
| Colormap cm; |
| PALETTEENTRY palents[256]; |
| int installed; |
| /* This is to store the palette in 'screen format' */ |
| int screen_palents[256]; |
| }; |
| |
| /***************************************************************************** |
| * IDirectDrawClipper implementation structure |
| */ |
| struct IDirectDrawClipperImpl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDrawClipper)* lpvtbl; |
| DWORD ref; |
| /* IDirectDrawClipper fields */ |
| /* none */ |
| }; |
| |
| /***************************************************************************** |
| * IDirectDraw implementation structure |
| */ |
| struct _common_directdrawdata |
| { |
| DDPIXELFORMAT directdraw_pixelformat; |
| DDPIXELFORMAT screen_pixelformat; |
| int pixmap_depth; |
| void (*pixel_convert)(void *src, void *dst, DWORD width, DWORD height, LONG pitch, IDirectDrawPaletteImpl* palette); |
| void (*palette_convert)(LPPALETTEENTRY palent, void *screen_palette, DWORD start, DWORD count); |
| DWORD height,width; /* SetDisplayMode */ |
| HWND mainWindow; /* SetCooperativeLevel */ |
| |
| /* This is for Wine's fake mainWindow. |
| We need it also in DGA mode to make some games (for example Monkey Island III work) */ |
| ATOM winclass; |
| HWND window; |
| Window drawable; |
| PAINTSTRUCT ps; |
| int paintable; |
| }; |
| |
| struct _dga_directdrawdata |
| { |
| DWORD fb_width,fb_height,fb_banksize,fb_memsize; |
| void* fb_addr; |
| unsigned int vpmask; |
| }; |
| |
| struct _xlib_directdrawdata |
| { |
| #ifdef HAVE_LIBXXSHM |
| int xshm_active; |
| #endif /* defined(HAVE_LIBXXSHM) */ |
| |
| /* are these needed for anything? (draw_surf is the active surface) |
| IDirectDrawSurfaceImpl* surfs; |
| DWORD num_surfs, alloc_surfs, draw_surf; */ |
| }; |
| |
| struct IDirectDrawImpl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDraw)* lpvtbl; |
| DWORD ref; |
| /* IDirectDraw fields */ |
| struct _common_directdrawdata d; |
| union { |
| struct _xlib_directdrawdata xlib; |
| struct _dga_directdrawdata dga; |
| } e; |
| }; |
| |
| /***************************************************************************** |
| * IDirectDraw2 implementation structure |
| */ |
| struct IDirectDraw2Impl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDraw2)* lpvtbl; |
| DWORD ref; |
| /* IDirectDraw2 fields */ |
| struct _common_directdrawdata d; |
| union { |
| struct _xlib_directdrawdata xlib; |
| struct _dga_directdrawdata dga; |
| } e; |
| }; |
| |
| /***************************************************************************** |
| * IDirectDraw4 implementation structure |
| */ |
| struct IDirectDraw4Impl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDraw4)* lpvtbl; |
| DWORD ref; |
| /* IDirectDraw4 fields */ |
| struct _common_directdrawdata d; |
| union { |
| struct _xlib_directdrawdata xlib; |
| struct _dga_directdrawdata dga; |
| } e; |
| }; |
| |
| /***************************************************************************** |
| * IDirectDrawSurface implementation structure |
| */ |
| struct _common_directdrawsurface |
| { |
| IDirectDrawPaletteImpl* palette; |
| IDirectDraw2Impl* ddraw; |
| IDirectDrawSurface4Impl* backbuffer; |
| |
| DDSURFACEDESC surface_desc; |
| |
| /* Callback for loaded textures */ |
| IDirect3DTexture2Impl* texture; |
| HRESULT WINAPI (*SetColorKey_cb)(IDirect3DTexture2Impl *texture, DWORD dwFlags, LPDDCOLORKEY ckey ) ; |
| }; |
| |
| struct _dga_directdrawsurface |
| { |
| DWORD fb_height; |
| }; |
| |
| struct _xlib_directdrawsurface |
| { |
| XImage *image; |
| #ifdef HAVE_LIBXXSHM |
| XShmSegmentInfo shminfo; |
| #endif |
| }; |
| |
| struct IDirectDrawSurfaceImpl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDrawSurface)* lpvtbl; |
| DWORD ref; |
| /* IDirectDrawSurface fields */ |
| struct _common_directdrawsurface s; |
| union { |
| struct _dga_directdrawsurface dga; |
| struct _xlib_directdrawsurface xlib; |
| } t; |
| }; |
| |
| /***************************************************************************** |
| * IDirectDrawSurface2 implementation structure |
| */ |
| struct IDirectDrawSurface2Impl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDrawSurface2)* lpvtbl; |
| DWORD ref; |
| /* IDirectDrawSurface2 fields */ |
| struct _common_directdrawsurface s; |
| union { |
| struct _dga_directdrawsurface dga; |
| struct _xlib_directdrawsurface xlib; |
| } t; |
| }; |
| |
| /***************************************************************************** |
| * IDirectDrawSurface3 implementation structure |
| */ |
| struct IDirectDrawSurface3Impl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDrawSurface3)* lpvtbl; |
| DWORD ref; |
| /* IDirectDrawSurface3 fields */ |
| struct _common_directdrawsurface s; |
| union { |
| struct _dga_directdrawsurface dga; |
| struct _xlib_directdrawsurface xlib; |
| } t; |
| }; |
| |
| /***************************************************************************** |
| * IDirectDrawSurface4 implementation structure |
| */ |
| struct IDirectDrawSurface4Impl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDrawSurface4)* lpvtbl; |
| DWORD ref; |
| /* IDirectDrawSurface4 fields */ |
| struct _common_directdrawsurface s; |
| union { |
| struct _dga_directdrawsurface dga; |
| struct _xlib_directdrawsurface xlib; |
| } t; |
| } ; |
| |
| /***************************************************************************** |
| * IDirectDrawColorControl implementation structure |
| */ |
| struct IDirectDrawColorControlImpl |
| { |
| /* IUnknown fields */ |
| ICOM_VTABLE(IDirectDrawColorControl)* lpvtbl; |
| DWORD ref; |
| /* IDirectDrawColorControl fields */ |
| /* none */ |
| }; |
| |
| |
| #endif /* __GRAPHICS_WINE_DDRAW_PRIVATE_H */ |