1 /* Copyright 2000 TransGaming Technologies Inc. */
3 #ifndef DDRAW_DSURFACE_MAIN_H_INCLUDED
4 #define DDRAW_DSURFACE_MAIN_H_INCLUDED
6 #include "ddraw_private.h"
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
12 struct PrivateData* next;
13 struct PrivateData* prev;
16 DWORD flags; /* DDSPD_* */
17 DWORD uniqueness_value;
28 /* Non-interface functions */
30 Main_DirectDrawSurface_Construct(IDirectDrawSurfaceImpl* This,
32 const DDSURFACEDESC2* pDDSD);
33 void Main_DirectDrawSurface_ForceDestroy(IDirectDrawSurfaceImpl* This);
36 Main_DirectDrawSurface_final_release(IDirectDrawSurfaceImpl* This);
38 Main_DirectDrawSurface_attach(IDirectDrawSurfaceImpl *This,
39 IDirectDrawSurfaceImpl *to);
40 BOOL Main_DirectDrawSurface_detach(IDirectDrawSurfaceImpl *This);
42 Main_DirectDrawSurface_lock_update(IDirectDrawSurfaceImpl* This,
45 Main_DirectDrawSurface_unlock_update(IDirectDrawSurfaceImpl* This,
48 Main_DirectDrawSurface_lose_surface(IDirectDrawSurfaceImpl* This);
50 Main_DirectDrawSurface_set_palette(IDirectDrawSurfaceImpl* This,
51 IDirectDrawPaletteImpl* pal);
53 Main_DirectDrawSurface_update_palette(IDirectDrawSurfaceImpl* This,
54 IDirectDrawPaletteImpl* pal,
55 DWORD dwStart, DWORD dwCount,
56 LPPALETTEENTRY palent);
58 Main_DirectDrawSurface_get_display_window(IDirectDrawSurfaceImpl* This);
60 void Main_DirectDrawSurface_flip_data(IDirectDrawSurfaceImpl* front,
61 IDirectDrawSurfaceImpl* back);
63 #define CHECK_LOST(This) \
65 if (This->lost) return DDERR_SURFACELOST; \
68 #define CHECK_TEXTURE(This) \
70 if (!(This->surface_desc.ddsCaps.dwCaps2 \
71 & DDSCAPS2_TEXTUREMANAGE)) \
72 return DDERR_INVALIDOBJECT; \
75 #define LOCK_OBJECT(This) do { } while (0)
76 #define UNLOCK_OBJECT(This) do { } while (0)
78 /* IDirectDrawSurface7 (partial) implementation */
80 Main_DirectDrawSurface_AddRef(LPDIRECTDRAWSURFACE7 iface);
82 Main_DirectDrawSurface_Release(LPDIRECTDRAWSURFACE7 iface);
84 Main_DirectDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE7 iface, REFIID riid,
87 Main_DirectDrawSurface_AddAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
88 LPDIRECTDRAWSURFACE7 pAttach);
90 Main_DirectDrawSurface_AddOverlayDirtyRect(LPDIRECTDRAWSURFACE7 iface,
93 Main_DirectDrawSurface_BltBatch(LPDIRECTDRAWSURFACE7 iface,
94 LPDDBLTBATCH pBatch, DWORD dwCount,
97 Main_DirectDrawSurface_ChangeUniquenessValue(LPDIRECTDRAWSURFACE7 iface);
99 Main_DirectDrawSurface_DeleteAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
101 LPDIRECTDRAWSURFACE7 pAttach);
103 Main_DirectDrawSurface_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE7 iface,
105 LPDDENUMSURFACESCALLBACK7 cb);
107 Main_DirectDrawSurface_EnumOverlayZOrders(LPDIRECTDRAWSURFACE7 iface,
108 DWORD dwFlags, LPVOID context,
109 LPDDENUMSURFACESCALLBACK7 cb);
111 Main_DirectDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface,
112 LPDIRECTDRAWSURFACE7 override, DWORD dwFlags);
114 Main_DirectDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7 iface,
117 Main_DirectDrawSurface_GetAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
119 LPDIRECTDRAWSURFACE7* ppSurface);
121 Main_DirectDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface,
124 Main_DirectDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7 iface,
127 Main_DirectDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7 iface,
128 LPDIRECTDRAWCLIPPER* ppClipper);
130 Main_DirectDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface,
131 DWORD dwFlags, LPDDCOLORKEY pCKey);
133 Main_DirectDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC);
135 Main_DirectDrawSurface_GetDDInterface(LPDIRECTDRAWSURFACE7 iface,
138 Main_DirectDrawSurface_GetFlipStatus(LPDIRECTDRAWSURFACE7 iface,
141 Main_DirectDrawSurface_GetLOD(LPDIRECTDRAWSURFACE7 iface,
144 Main_DirectDrawSurface_GetOverlayPosition(LPDIRECTDRAWSURFACE7 iface,
145 LPLONG pX, LPLONG pY);
147 Main_DirectDrawSurface_GetPalette(LPDIRECTDRAWSURFACE7 iface,
148 LPDIRECTDRAWPALETTE* ppPalette);
150 Main_DirectDrawSurface_GetPixelFormat(LPDIRECTDRAWSURFACE7 iface,
151 LPDDPIXELFORMAT pDDPixelFormat);
153 Main_DirectDrawSurface_GetPriority(LPDIRECTDRAWSURFACE7 iface,
154 LPDWORD pdwPriority);
156 Main_DirectDrawSurface_GetPrivateData(LPDIRECTDRAWSURFACE7 iface, REFGUID tag,
157 LPVOID pBuffer, LPDWORD pcbBufferSize);
159 Main_DirectDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface,
160 LPDDSURFACEDESC2 pDDSD);
162 Main_DirectDrawSurface_GetUniquenessValue(LPDIRECTDRAWSURFACE7 iface,
165 Main_DirectDrawSurface_Initialize(LPDIRECTDRAWSURFACE7 iface,
166 LPDIRECTDRAW pDD, LPDDSURFACEDESC2 pDDSD);
168 Main_DirectDrawSurface_IsLost(LPDIRECTDRAWSURFACE7 iface);
170 Main_DirectDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
171 LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE h);
173 Main_DirectDrawSurface_PageLock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
175 Main_DirectDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
177 Main_DirectDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7 iface, HDC hDC);
179 Main_DirectDrawSurface_SetClipper(LPDIRECTDRAWSURFACE7 iface,
180 LPDIRECTDRAWCLIPPER pDDClipper);
182 Main_DirectDrawSurface_SetColorKey(LPDIRECTDRAWSURFACE7 iface,
183 DWORD dwFlags, LPDDCOLORKEY pCKey);
185 Main_DirectDrawSurface_SetLOD(LPDIRECTDRAWSURFACE7 iface, DWORD dwMaxLOD);
187 Main_DirectDrawSurface_SetOverlayPosition(LPDIRECTDRAWSURFACE7 iface,
190 Main_DirectDrawSurface_SetPalette(LPDIRECTDRAWSURFACE7 iface,
191 LPDIRECTDRAWPALETTE pPalette);
193 Main_DirectDrawSurface_SetPriority(LPDIRECTDRAWSURFACE7 iface,
196 Main_DirectDrawSurface_SetPrivateData(LPDIRECTDRAWSURFACE7 iface,
197 REFGUID tag, LPVOID pData,
198 DWORD cbSize, DWORD dwFlags);
200 Main_DirectDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect);
202 Main_DirectDrawSurface_UpdateOverlay(LPDIRECTDRAWSURFACE7 iface,
204 LPDIRECTDRAWSURFACE7 pDstSurface,
205 LPRECT pDstRect, DWORD dwFlags,
208 Main_DirectDrawSurface_UpdateOverlayDisplay(LPDIRECTDRAWSURFACE7 iface,
211 Main_DirectDrawSurface_UpdateOverlayZOrder(LPDIRECTDRAWSURFACE7 iface,
213 LPDIRECTDRAWSURFACE7 pDDSRef);