Updated.
[wine] / dlls / ddraw / dsurface / main.h
1 /* Copyright 2000 TransGaming Technologies Inc. */
2
3 #ifndef DDRAW_DSURFACE_MAIN_H_INCLUDED
4 #define DDRAW_DSURFACE_MAIN_H_INCLUDED
5
6 #include "ddraw_private.h"
7
8 /* Support for IDirectDrawSurface7::Set/Get/FreePrivateData. I don't think
9  * anybody uses it for much so a good implementation is optional. */
10 typedef struct PrivateData
11 {
12     struct PrivateData* next;
13     struct PrivateData* prev;
14
15     GUID tag;
16     DWORD flags; /* DDSPD_* */
17     DWORD uniqueness_value;
18
19     union
20     {
21         LPVOID data;
22         LPUNKNOWN object;
23     } ptr;
24
25     DWORD size;
26 } PrivateData;
27
28 /* Non-interface functions */
29 HRESULT
30 Main_DirectDrawSurface_Construct(IDirectDrawSurfaceImpl* This,
31                                  IDirectDrawImpl* pDD,
32                                  const DDSURFACEDESC2* pDDSD);
33 void Main_DirectDrawSurface_ForceDestroy(IDirectDrawSurfaceImpl* This);
34
35 void
36 Main_DirectDrawSurface_final_release(IDirectDrawSurfaceImpl* This);
37 BOOL
38 Main_DirectDrawSurface_attach(IDirectDrawSurfaceImpl *This,
39                               IDirectDrawSurfaceImpl *to);
40 BOOL Main_DirectDrawSurface_detach(IDirectDrawSurfaceImpl *This);
41 void
42 Main_DirectDrawSurface_lock_update(IDirectDrawSurfaceImpl* This,
43                                    LPCRECT pRect);
44 void
45 Main_DirectDrawSurface_unlock_update(IDirectDrawSurfaceImpl* This,
46                                      LPCRECT pRect);
47 void
48 Main_DirectDrawSurface_lose_surface(IDirectDrawSurfaceImpl* This);
49 void
50 Main_DirectDrawSurface_set_palette(IDirectDrawSurfaceImpl* This,
51                                    IDirectDrawPaletteImpl* pal);
52 void
53 Main_DirectDrawSurface_update_palette(IDirectDrawSurfaceImpl* This,
54                                       IDirectDrawPaletteImpl* pal,
55                                       DWORD dwStart, DWORD dwCount,
56                                       LPPALETTEENTRY palent);
57 HWND
58 Main_DirectDrawSurface_get_display_window(IDirectDrawSurfaceImpl* This);
59
60 void Main_DirectDrawSurface_flip_data(IDirectDrawSurfaceImpl* front,
61                                       IDirectDrawSurfaceImpl* back);
62
63 #define CHECK_LOST(This)                                        \
64         do {                                                    \
65                 if (This->lost) return DDERR_SURFACELOST;       \
66         } while (0)
67
68 #define CHECK_TEXTURE(This)                                     \
69         do {                                                    \
70                 if (!(This->surface_desc.ddsCaps.dwCaps2        \
71                       & DDSCAPS2_TEXTUREMANAGE))                \
72                         return DDERR_INVALIDOBJECT;             \
73         } while (0)
74
75 #define LOCK_OBJECT(This) do { } while (0)
76 #define UNLOCK_OBJECT(This) do { } while (0)
77
78 /* IDirectDrawSurface7 (partial) implementation */
79 ULONG WINAPI
80 Main_DirectDrawSurface_AddRef(LPDIRECTDRAWSURFACE7 iface);
81 ULONG WINAPI
82 Main_DirectDrawSurface_Release(LPDIRECTDRAWSURFACE7 iface);
83 HRESULT WINAPI
84 Main_DirectDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE7 iface, REFIID riid,
85                                       LPVOID* ppObj);
86 HRESULT WINAPI
87 Main_DirectDrawSurface_AddAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
88                                           LPDIRECTDRAWSURFACE7 pAttach);
89 HRESULT WINAPI
90 Main_DirectDrawSurface_AddOverlayDirtyRect(LPDIRECTDRAWSURFACE7 iface,
91                                            LPRECT pRect);
92 HRESULT WINAPI
93 Main_DirectDrawSurface_BltBatch(LPDIRECTDRAWSURFACE7 iface,
94                                 LPDDBLTBATCH pBatch, DWORD dwCount,
95                                 DWORD dwFlags);
96 HRESULT WINAPI
97 Main_DirectDrawSurface_ChangeUniquenessValue(LPDIRECTDRAWSURFACE7 iface);
98 HRESULT WINAPI
99 Main_DirectDrawSurface_DeleteAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
100                                              DWORD dwFlags,
101                                              LPDIRECTDRAWSURFACE7 pAttach);
102 HRESULT WINAPI
103 Main_DirectDrawSurface_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE7 iface,
104                                             LPVOID context,
105                                             LPDDENUMSURFACESCALLBACK7 cb);
106 HRESULT WINAPI
107 Main_DirectDrawSurface_EnumOverlayZOrders(LPDIRECTDRAWSURFACE7 iface,
108                                           DWORD dwFlags, LPVOID context,
109                                           LPDDENUMSURFACESCALLBACK7 cb);
110 HRESULT WINAPI
111 Main_DirectDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface,
112                             LPDIRECTDRAWSURFACE7 override, DWORD dwFlags);
113 HRESULT WINAPI
114 Main_DirectDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7 iface,
115                                        REFGUID tag);
116 HRESULT WINAPI
117 Main_DirectDrawSurface_GetAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
118                                           LPDDSCAPS2 pCaps,
119                                           LPDIRECTDRAWSURFACE7* ppSurface);
120 HRESULT WINAPI
121 Main_DirectDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface,
122                                     DWORD dwFlags);
123 HRESULT WINAPI
124 Main_DirectDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7 iface,
125                                LPDDSCAPS2 pCaps);
126 HRESULT WINAPI
127 Main_DirectDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7 iface,
128                                   LPDIRECTDRAWCLIPPER* ppClipper);
129 HRESULT WINAPI
130 Main_DirectDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface,
131                                    DWORD dwFlags, LPDDCOLORKEY pCKey);
132 HRESULT WINAPI
133 Main_DirectDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC);
134 HRESULT WINAPI
135 Main_DirectDrawSurface_GetDDInterface(LPDIRECTDRAWSURFACE7 iface,
136                                       LPVOID* pDD);
137 HRESULT WINAPI
138 Main_DirectDrawSurface_GetFlipStatus(LPDIRECTDRAWSURFACE7 iface,
139                                      DWORD dwFlags);
140 HRESULT WINAPI
141 Main_DirectDrawSurface_GetLOD(LPDIRECTDRAWSURFACE7 iface,
142                               LPDWORD pdwMaxLOD);
143 HRESULT WINAPI
144 Main_DirectDrawSurface_GetOverlayPosition(LPDIRECTDRAWSURFACE7 iface,
145                                           LPLONG pX, LPLONG pY);
146 HRESULT WINAPI
147 Main_DirectDrawSurface_GetPalette(LPDIRECTDRAWSURFACE7 iface,
148                                   LPDIRECTDRAWPALETTE* ppPalette);
149 HRESULT WINAPI
150 Main_DirectDrawSurface_GetPixelFormat(LPDIRECTDRAWSURFACE7 iface,
151                                       LPDDPIXELFORMAT pDDPixelFormat);
152 HRESULT WINAPI
153 Main_DirectDrawSurface_GetPriority(LPDIRECTDRAWSURFACE7 iface,
154                                    LPDWORD pdwPriority);
155 HRESULT WINAPI
156 Main_DirectDrawSurface_GetPrivateData(LPDIRECTDRAWSURFACE7 iface, REFGUID tag,
157                                       LPVOID pBuffer, LPDWORD pcbBufferSize);
158 HRESULT WINAPI
159 Main_DirectDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface,
160                                       LPDDSURFACEDESC2 pDDSD);
161 HRESULT WINAPI
162 Main_DirectDrawSurface_GetUniquenessValue(LPDIRECTDRAWSURFACE7 iface,
163                                           LPDWORD pValue);
164 HRESULT WINAPI
165 Main_DirectDrawSurface_Initialize(LPDIRECTDRAWSURFACE7 iface,
166                                   LPDIRECTDRAW pDD, LPDDSURFACEDESC2 pDDSD);
167 HRESULT WINAPI
168 Main_DirectDrawSurface_IsLost(LPDIRECTDRAWSURFACE7 iface);
169 HRESULT WINAPI
170 Main_DirectDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
171                             LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE h);
172 HRESULT WINAPI
173 Main_DirectDrawSurface_PageLock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
174 HRESULT WINAPI
175 Main_DirectDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
176 HRESULT WINAPI
177 Main_DirectDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7 iface, HDC hDC);
178 HRESULT WINAPI
179 Main_DirectDrawSurface_SetClipper(LPDIRECTDRAWSURFACE7 iface,
180                                   LPDIRECTDRAWCLIPPER pDDClipper);
181 HRESULT WINAPI
182 Main_DirectDrawSurface_SetColorKey(LPDIRECTDRAWSURFACE7 iface,
183                                    DWORD dwFlags, LPDDCOLORKEY pCKey);
184 HRESULT WINAPI
185 Main_DirectDrawSurface_SetLOD(LPDIRECTDRAWSURFACE7 iface, DWORD dwMaxLOD);
186 HRESULT WINAPI
187 Main_DirectDrawSurface_SetOverlayPosition(LPDIRECTDRAWSURFACE7 iface,
188                                           LONG X, LONG Y);
189 HRESULT WINAPI
190 Main_DirectDrawSurface_SetPalette(LPDIRECTDRAWSURFACE7 iface,
191                                   LPDIRECTDRAWPALETTE pPalette);
192 HRESULT WINAPI
193 Main_DirectDrawSurface_SetPriority(LPDIRECTDRAWSURFACE7 iface,
194                                    DWORD dwPriority);
195 HRESULT WINAPI
196 Main_DirectDrawSurface_SetPrivateData(LPDIRECTDRAWSURFACE7 iface,
197                                       REFGUID tag, LPVOID pData,
198                                       DWORD cbSize, DWORD dwFlags);
199 HRESULT WINAPI
200 Main_DirectDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);
201 HRESULT WINAPI
202 Main_DirectDrawSurface_UpdateOverlay(LPDIRECTDRAWSURFACE7 iface,
203                                      LPRECT pSrcRect,
204                                      LPDIRECTDRAWSURFACE7 pDstSurface,
205                                      LPRECT pDstRect, DWORD dwFlags,
206                                      LPDDOVERLAYFX pFX);
207 HRESULT WINAPI
208 Main_DirectDrawSurface_UpdateOverlayDisplay(LPDIRECTDRAWSURFACE7 iface,
209                                             DWORD dwFlags);
210 HRESULT WINAPI
211 Main_DirectDrawSurface_UpdateOverlayZOrder(LPDIRECTDRAWSURFACE7 iface,
212                                            DWORD dwFlags,
213                                            LPDIRECTDRAWSURFACE7 pDDSRef);
214
215 #endif