Updated.
[wine] / dlls / ddraw / dsurface / dibtexture.h
1 /* Copyright 2000 TransGaming Technologies Inc. */
2
3 #ifndef DDRAW_DSURFACE_DIBTEXTURE_H_INCLUDED
4 #define DDRAW_DSURFACE_DIBTEXTURE_H_INCLUDED
5
6 #define DIBTEXTURE_PRIV(surf) \
7         ((DIBTexture_DirectDrawSurfaceImpl*)(surf->private))
8
9 #define DIBTEXTURE_PRIV_VAR(name,surf) \
10         DIBTexture_DirectDrawSurfaceImpl* name = DIBTEXTURE_PRIV(surf)
11
12 /* We add a spot for 3D drivers to store some private data. A cleaner
13  * solution would be to use SetPrivateData, but it's much too slow. */
14 union DIBTexture_data
15 {
16     int i;
17     void* p;
18 };
19
20 struct DIBTexture_DirectDrawSurfaceImpl_Part
21 {
22     union DIBTexture_data data;
23 };
24
25 typedef struct
26 {
27     struct DIB_DirectDrawSurfaceImpl_Part dib;
28     struct DIBTexture_DirectDrawSurfaceImpl_Part dibtexture;
29 } DIBTexture_DirectDrawSurfaceImpl;
30
31 HRESULT
32 DIBTexture_DirectDrawSurface_Construct(IDirectDrawSurfaceImpl* This,
33                                        IDirectDrawImpl* pDD,
34                                        const DDSURFACEDESC2* pDDSD);
35
36 HRESULT
37 DIBTexture_DirectDrawSurface_Create(IDirectDrawImpl *pDD,
38                                     const DDSURFACEDESC2 *pDDSD,
39                                     LPDIRECTDRAWSURFACE7 *ppSurf,
40                                     IUnknown *pUnkOuter);
41
42 void DIBTexture_DirectDrawSurface_final_release(IDirectDrawSurfaceImpl* This);
43
44 HRESULT
45 DIBTexture_DirectDrawSurface_duplicate_surface(IDirectDrawSurfaceImpl* This,
46                                                LPDIRECTDRAWSURFACE7* ppDup);
47
48 #endif