1 /* DIB Section Texture DirectDrawSurface Driver
3 * Copyright 2000 TransGaming Technologies Inc.
12 #include "debugtools.h"
13 #include "ddraw_private.h"
14 #include "dsurface/main.h"
15 #include "dsurface/dib.h"
16 #include "dsurface/dibtexture.h"
18 DEFAULT_DEBUG_CHANNEL(ddraw);
20 static ICOM_VTABLE(IDirectDrawSurface7) DIBTexture_IDirectDrawSurface7_VTable;
23 DIBTexture_DirectDrawSurface_Construct(IDirectDrawSurfaceImpl* This,
25 const DDSURFACEDESC2* pDDSD)
29 hr = DIB_DirectDrawSurface_Construct(This, pDD, pDDSD);
30 if (FAILED(hr)) return hr;
32 ICOM_INIT_INTERFACE(This, IDirectDrawSurface7,
33 DIBTexture_IDirectDrawSurface7_VTable);
35 This->final_release = DIBTexture_DirectDrawSurface_final_release;
36 This->duplicate_surface = DIBTexture_DirectDrawSurface_duplicate_surface;
42 DIBTexture_DirectDrawSurface_Create(IDirectDrawImpl *pDD,
43 const DDSURFACEDESC2 *pDDSD,
44 LPDIRECTDRAWSURFACE7 *ppSurf,
47 IDirectDrawSurfaceImpl* This;
50 assert(pUnkOuter == NULL);
51 assert(pDDSD->ddsCaps.dwCaps & DDSCAPS_TEXTURE);
53 This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
54 sizeof(*This) + sizeof(DIBTexture_DirectDrawSurfaceImpl));
55 if (This == NULL) return E_OUTOFMEMORY;
57 This->private = (DIBTexture_DirectDrawSurfaceImpl*)(This+1);
59 hr = DIBTexture_DirectDrawSurface_Construct(This, pDD, pDDSD);
61 HeapFree(GetProcessHeap(), 0, This);
63 *ppSurf = ICOM_INTERFACE(This, IDirectDrawSurface7);
68 void DIBTexture_DirectDrawSurface_final_release(IDirectDrawSurfaceImpl* This)
70 DIB_DirectDrawSurface_final_release(This);
74 DIBTexture_DirectDrawSurface_duplicate_surface(IDirectDrawSurfaceImpl* This,
75 LPDIRECTDRAWSURFACE7* ppDup)
77 return DIBTexture_DirectDrawSurface_Create(This->ddraw_owner,
78 &This->surface_desc, ppDup,
82 static ICOM_VTABLE(IDirectDrawSurface7) DIBTexture_IDirectDrawSurface7_VTable =
84 Main_DirectDrawSurface_QueryInterface,
85 Main_DirectDrawSurface_AddRef,
86 Main_DirectDrawSurface_Release,
87 Main_DirectDrawSurface_AddAttachedSurface,
88 Main_DirectDrawSurface_AddOverlayDirtyRect,
89 DIB_DirectDrawSurface_Blt,
90 Main_DirectDrawSurface_BltBatch,
91 DIB_DirectDrawSurface_BltFast,
92 Main_DirectDrawSurface_DeleteAttachedSurface,
93 Main_DirectDrawSurface_EnumAttachedSurfaces,
94 Main_DirectDrawSurface_EnumOverlayZOrders,
95 Main_DirectDrawSurface_Flip,
96 Main_DirectDrawSurface_GetAttachedSurface,
97 Main_DirectDrawSurface_GetBltStatus,
98 Main_DirectDrawSurface_GetCaps,
99 Main_DirectDrawSurface_GetClipper,
100 Main_DirectDrawSurface_GetColorKey,
101 Main_DirectDrawSurface_GetDC,
102 Main_DirectDrawSurface_GetFlipStatus,
103 Main_DirectDrawSurface_GetOverlayPosition,
104 Main_DirectDrawSurface_GetPalette,
105 Main_DirectDrawSurface_GetPixelFormat,
106 Main_DirectDrawSurface_GetSurfaceDesc,
107 Main_DirectDrawSurface_Initialize,
108 Main_DirectDrawSurface_IsLost,
109 Main_DirectDrawSurface_Lock,
110 Main_DirectDrawSurface_ReleaseDC,
111 DIB_DirectDrawSurface_Restore,
112 Main_DirectDrawSurface_SetClipper,
113 Main_DirectDrawSurface_SetColorKey,
114 Main_DirectDrawSurface_SetOverlayPosition,
115 Main_DirectDrawSurface_SetPalette,
116 Main_DirectDrawSurface_Unlock,
117 Main_DirectDrawSurface_UpdateOverlay,
118 Main_DirectDrawSurface_UpdateOverlayDisplay,
119 Main_DirectDrawSurface_UpdateOverlayZOrder,
120 Main_DirectDrawSurface_GetDDInterface,
121 Main_DirectDrawSurface_PageLock,
122 Main_DirectDrawSurface_PageUnlock,
123 DIB_DirectDrawSurface_SetSurfaceDesc,
124 Main_DirectDrawSurface_SetPrivateData,
125 Main_DirectDrawSurface_GetPrivateData,
126 Main_DirectDrawSurface_FreePrivateData,
127 Main_DirectDrawSurface_GetUniquenessValue,
128 Main_DirectDrawSurface_ChangeUniquenessValue,
129 Main_DirectDrawSurface_SetPriority,
130 Main_DirectDrawSurface_GetPriority,
131 Main_DirectDrawSurface_SetLOD,
132 Main_DirectDrawSurface_GetLOD