[PATCH 1/8] ddraw: Merge gamma.c into surface.c.
Henri Verbeet
hverbeet at codeweavers.com
Wed Aug 18 12:26:18 CDT 2010
---
dlls/ddraw/Makefile.in | 1 -
dlls/ddraw/gamma.c | 220 ------------------------------------------------
dlls/ddraw/surface.c | 120 ++++++++++++++++++++++++++
3 files changed, 120 insertions(+), 221 deletions(-)
delete mode 100644 dlls/ddraw/gamma.c
diff --git a/dlls/ddraw/Makefile.in b/dlls/ddraw/Makefile.in
index 648af81..b9711a1 100644
--- a/dlls/ddraw/Makefile.in
+++ b/dlls/ddraw/Makefile.in
@@ -11,7 +11,6 @@ C_SRCS = \
ddraw.c \
device.c \
executebuffer.c \
- gamma.c \
light.c \
main.c \
material.c \
diff --git a/dlls/ddraw/gamma.c b/dlls/ddraw/gamma.c
deleted file mode 100644
index df631a4..0000000
--- a/dlls/ddraw/gamma.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* DirectDrawGammaControl implementation
- *
- * Copyright 2001 TransGaming Technologies Inc.
- * Copyright 2006 Stefan Dösinger
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "config.h"
-#include "wine/port.h"
-#include "wine/debug.h"
-
-#include <assert.h>
-#include <stdarg.h>
-#include <string.h>
-#include <stdlib.h>
-
-#define COBJMACROS
-
-#include "windef.h"
-#include "winbase.h"
-#include "winerror.h"
-#include "wingdi.h"
-#include "wine/exception.h"
-
-#include "ddraw.h"
-#include "d3d.h"
-
-#include "ddraw_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
-WINE_DECLARE_DEBUG_CHANNEL(ddraw_thunk);
-
-static inline IDirectDrawSurfaceImpl *surface_from_gamma_control(IDirectDrawGammaControl *iface)
-{
- return (IDirectDrawSurfaceImpl *)((char*)iface
- - FIELD_OFFSET(IDirectDrawSurfaceImpl, IDirectDrawGammaControl_vtbl));
-}
-
-/**********************************************************
- * IUnknown parts follow
- **********************************************************/
-
-/**********************************************************
- * IDirectDrawGammaControl::QueryInterface
- *
- * QueryInterface, thunks to IDirectDrawSurface
- *
- * Params:
- * riid: Interface id queried for
- * obj: Returns the interface pointer
- *
- * Returns:
- * S_OK or E_NOINTERFACE: See IDirectDrawSurface7::QueryInterface
- *
- **********************************************************/
-static HRESULT WINAPI
-IDirectDrawGammaControlImpl_QueryInterface(IDirectDrawGammaControl *iface, REFIID riid,
- void **obj)
-{
- IDirectDrawSurfaceImpl *This = surface_from_gamma_control(iface);
- TRACE_(ddraw_thunk)("(%p)->(%s,%p): Thunking to IDirectDrawSurface7\n", This, debugstr_guid(riid), obj);
-
- return IDirectDrawSurface7_QueryInterface((IDirectDrawSurface7 *)This, riid, obj);
-}
-
-/**********************************************************
- * IDirectDrawGammaControl::AddRef
- *
- * Addref, thunks to IDirectDrawSurface
- *
- * Returns:
- * The new refcount
- *
- **********************************************************/
-static ULONG WINAPI
-IDirectDrawGammaControlImpl_AddRef(IDirectDrawGammaControl *iface)
-{
- IDirectDrawSurfaceImpl *This = surface_from_gamma_control(iface);
- TRACE_(ddraw_thunk)("(%p)->() Thunking to IDirectDrawSurface7\n", This);
-
- return IDirectDrawSurface7_AddRef((IDirectDrawSurface7 *)This);
-}
-
-/**********************************************************
- * IDirectDrawGammaControl::Release
- *
- * Release, thunks to IDirectDrawSurface
- *
- * Returns:
- * The new refcount
- *
- **********************************************************/
-static ULONG WINAPI
-IDirectDrawGammaControlImpl_Release(IDirectDrawGammaControl *iface)
-{
- IDirectDrawSurfaceImpl *This = surface_from_gamma_control(iface);
- TRACE_(ddraw_thunk)("(%p)->() Thunking to IDirectDrawSurface7\n", This);
-
- return IDirectDrawSurface7_Release((IDirectDrawSurface7 *)This);
-}
-
-/**********************************************************
- * IDirectDrawGammaControl
- **********************************************************/
-
-/**********************************************************
- * IDirectDrawGammaControl::GetGammaRamp
- *
- * Returns the current gamma ramp for a surface
- *
- * Params:
- * Flags: Ignored
- * GammaRamp: Address to write the ramp to
- *
- * Returns:
- * DD_OK on success
- * DDERR_INVALIDPARAMS if GammaRamp is NULL
- *
- **********************************************************/
-static HRESULT WINAPI
-IDirectDrawGammaControlImpl_GetGammaRamp(IDirectDrawGammaControl *iface,
- DWORD Flags,
- DDGAMMARAMP *GammaRamp)
-{
- IDirectDrawSurfaceImpl *This = surface_from_gamma_control(iface);
- TRACE("(%p)->(%08x,%p)\n", This,Flags,GammaRamp);
-
- /* This looks sane */
- if(!GammaRamp)
- {
- ERR("(%p) GammaRamp is NULL, returning DDERR_INVALIDPARAMS\n", This);
- return DDERR_INVALIDPARAMS;
- }
-
- EnterCriticalSection(&ddraw_cs);
- if(This->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
- {
- /* Note: DDGAMMARAMP is compatible with WINED3DGAMMARAMP */
- IWineD3DDevice_GetGammaRamp(This->ddraw->wineD3DDevice,
- 0 /* Swapchain */,
- (WINED3DGAMMARAMP *) GammaRamp);
- }
- else
- {
- ERR("(%p) Unimplemented for non-primary surfaces\n", This);
- }
- LeaveCriticalSection(&ddraw_cs);
-
- return DD_OK;
-}
-
-/**********************************************************
- * IDirectDrawGammaControl::SetGammaRamp
- *
- * Sets the red, green and blue gamma ramps for
- *
- * Params:
- * Flags: Can be DDSGR_CALIBRATE to request calibration
- * GammaRamp: Structure containing the new gamma ramp
- *
- * Returns:
- * DD_OK on success
- * DDERR_INVALIDPARAMS if GammaRamp is NULL
- *
- **********************************************************/
-static HRESULT WINAPI
-IDirectDrawGammaControlImpl_SetGammaRamp(IDirectDrawGammaControl *iface,
- DWORD Flags,
- DDGAMMARAMP *GammaRamp)
-{
- IDirectDrawSurfaceImpl *This = surface_from_gamma_control(iface);
- TRACE("(%p)->(%08x,%p)\n", This,Flags,GammaRamp);
-
- /* This looks sane */
- if(!GammaRamp)
- {
- ERR("(%p) GammaRamp is NULL, returning DDERR_INVALIDPARAMS\n", This);
- return DDERR_INVALIDPARAMS;
- }
-
- EnterCriticalSection(&ddraw_cs);
- if(This->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
- {
-
- /* Note: DDGAMMARAMP is compatible with WINED3DGAMMARAMP */
- IWineD3DDevice_SetGammaRamp(This->ddraw->wineD3DDevice,
- 0 /* Swapchain */,
- Flags,
- (WINED3DGAMMARAMP *) GammaRamp);
- }
- else
- {
- ERR("(%p) Unimplemented for non-primary surfaces\n", This);
- }
- LeaveCriticalSection(&ddraw_cs);
-
- return DD_OK;
-}
-
-const IDirectDrawGammaControlVtbl IDirectDrawGammaControl_Vtbl =
-{
- IDirectDrawGammaControlImpl_QueryInterface,
- IDirectDrawGammaControlImpl_AddRef,
- IDirectDrawGammaControlImpl_Release,
- IDirectDrawGammaControlImpl_GetGammaRamp,
- IDirectDrawGammaControlImpl_SetGammaRamp
-};
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 15ed3c4..e69630b 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -48,6 +48,12 @@
WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
+static inline IDirectDrawSurfaceImpl *surface_from_gamma_control(IDirectDrawGammaControl *iface)
+{
+ return (IDirectDrawSurfaceImpl *)((char*)iface
+ - FIELD_OFFSET(IDirectDrawSurfaceImpl, IDirectDrawGammaControl_vtbl));
+}
+
/*****************************************************************************
* IUnknown parts follow
*****************************************************************************/
@@ -153,6 +159,13 @@ static HRESULT WINAPI ddraw_surface3_QueryInterface(IDirectDrawSurface3 *iface,
return ddraw_surface7_QueryInterface((IDirectDrawSurface7 *)surface_from_surface3(iface), riid, object);
}
+static HRESULT WINAPI ddraw_gamma_control_QueryInterface(IDirectDrawGammaControl *iface, REFIID riid, void **object)
+{
+ TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
+
+ return ddraw_surface7_QueryInterface((IDirectDrawSurface7 *)surface_from_gamma_control(iface), riid, object);
+}
+
/*****************************************************************************
* IDirectDrawSurface7::AddRef
*
@@ -185,6 +198,13 @@ static ULONG WINAPI ddraw_surface3_AddRef(IDirectDrawSurface3 *iface)
return ddraw_surface7_AddRef((IDirectDrawSurface7 *)surface_from_surface3(iface));
}
+static ULONG WINAPI ddraw_gamma_control_AddRef(IDirectDrawGammaControl *iface)
+{
+ TRACE("iface %p.\n", iface);
+
+ return ddraw_surface7_AddRef((IDirectDrawSurface7 *)surface_from_gamma_control(iface));
+}
+
/*****************************************************************************
* ddraw_surface_destroy
*
@@ -420,6 +440,13 @@ static ULONG WINAPI ddraw_surface3_Release(IDirectDrawSurface3 *iface)
return ddraw_surface7_Release((IDirectDrawSurface7 *)surface_from_surface3(iface));
}
+static ULONG WINAPI ddraw_gamma_control_Release(IDirectDrawGammaControl *iface)
+{
+ TRACE("iface %p.\n", iface);
+
+ return ddraw_surface7_Release((IDirectDrawSurface7 *)surface_from_gamma_control(iface));
+}
+
/*****************************************************************************
* IDirectDrawSurface7::GetAttachedSurface
*
@@ -2874,6 +2901,90 @@ static HRESULT WINAPI ddraw_surface3_SetPalette(IDirectDrawSurface3 *iface, IDir
return ddraw_surface7_SetPalette((IDirectDrawSurface7 *)surface_from_surface3(iface), palette);
}
+/**********************************************************
+ * IDirectDrawGammaControl::GetGammaRamp
+ *
+ * Returns the current gamma ramp for a surface
+ *
+ * Params:
+ * flags: Ignored
+ * gamma_ramp: Address to write the ramp to
+ *
+ * Returns:
+ * DD_OK on success
+ * DDERR_INVALIDPARAMS if gamma_ramp is NULL
+ *
+ **********************************************************/
+static HRESULT WINAPI ddraw_gamma_control_GetGammaRamp(IDirectDrawGammaControl *iface,
+ DWORD flags, DDGAMMARAMP *gamma_ramp)
+{
+ IDirectDrawSurfaceImpl *surface = surface_from_gamma_control(iface);
+
+ TRACE("iface %p, flags %#x, gamma_ramp %p.\n", iface, flags, gamma_ramp);
+
+ if (!gamma_ramp)
+ {
+ WARN("Invalid gamma_ramp passed.\n");
+ return DDERR_INVALIDPARAMS;
+ }
+
+ EnterCriticalSection(&ddraw_cs);
+ if (surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
+ {
+ /* Note: DDGAMMARAMP is compatible with WINED3DGAMMARAMP. */
+ IWineD3DDevice_GetGammaRamp(surface->ddraw->wineD3DDevice, 0, (WINED3DGAMMARAMP *)gamma_ramp);
+ }
+ else
+ {
+ ERR("Not implemented for non-primary surfaces.\n");
+ }
+ LeaveCriticalSection(&ddraw_cs);
+
+ return DD_OK;
+}
+
+/**********************************************************
+ * IDirectDrawGammaControl::SetGammaRamp
+ *
+ * Sets the red, green and blue gamma ramps for
+ *
+ * Params:
+ * flags: Can be DDSGR_CALIBRATE to request calibration
+ * gamma_ramp: Structure containing the new gamma ramp
+ *
+ * Returns:
+ * DD_OK on success
+ * DDERR_INVALIDPARAMS if gamma_ramp is NULL
+ *
+ **********************************************************/
+static HRESULT WINAPI ddraw_gamma_control_SetGammaRamp(IDirectDrawGammaControl *iface,
+ DWORD flags, DDGAMMARAMP *gamma_ramp)
+{
+ IDirectDrawSurfaceImpl *surface = surface_from_gamma_control(iface);
+
+ TRACE("iface %p, flags %#x, gamma_ramp %p.\n", iface, flags, gamma_ramp);
+
+ if (!gamma_ramp)
+ {
+ WARN("Invalid gamma_ramp passed.\n");
+ return DDERR_INVALIDPARAMS;
+ }
+
+ EnterCriticalSection(&ddraw_cs);
+ if (surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
+ {
+ /* Note: DDGAMMARAMP is compatible with WINED3DGAMMARAMP */
+ IWineD3DDevice_SetGammaRamp(surface->ddraw->wineD3DDevice, 0, flags, (WINED3DGAMMARAMP *)gamma_ramp);
+ }
+ else
+ {
+ ERR("Not implemented for non-primary surfaces.\n");
+ }
+ LeaveCriticalSection(&ddraw_cs);
+
+ return DD_OK;
+}
+
/*****************************************************************************
* The VTable
*****************************************************************************/
@@ -2984,3 +3095,12 @@ const IDirectDrawSurface3Vtbl IDirectDrawSurface3_Vtbl =
/* IDirectDrawSurface3 */
ddraw_surface3_SetSurfaceDesc,
};
+
+const IDirectDrawGammaControlVtbl IDirectDrawGammaControl_Vtbl =
+{
+ ddraw_gamma_control_QueryInterface,
+ ddraw_gamma_control_AddRef,
+ ddraw_gamma_control_Release,
+ ddraw_gamma_control_GetGammaRamp,
+ ddraw_gamma_control_SetGammaRamp,
+};
--
1.7.1
More information about the wine-patches
mailing list