Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
39888679
Commit
39888679
authored
Dec 13, 2006
by
Ulrich Czekalla
Committed by
Alexandre Julliard
Dec 14, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ddraw: Add IDirectDraw3 interface.
parent
3c5b9557
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
480 additions
and
0 deletions
+480
-0
ddraw.c
dlls/ddraw/ddraw.c
+5
-0
ddraw_private.h
dlls/ddraw/ddraw_private.h
+2
-0
ddraw_thunks.c
dlls/ddraw/ddraw_thunks.c
+370
-0
ddraw.h
include/ddraw.h
+103
-0
No files found.
dlls/ddraw/ddraw.c
View file @
39888679
...
...
@@ -117,6 +117,11 @@ IDirectDrawImpl_QueryInterface(IDirectDraw7 *iface,
*
obj
=
ICOM_INTERFACE
(
This
,
IDirectDraw4
);
TRACE
(
"(%p) Returning IDirectDraw4 interface at %p
\n
"
,
This
,
*
obj
);
}
else
if
(
IsEqualGUID
(
&
IID_IDirectDraw3
,
refiid
)
)
{
*
obj
=
ICOM_INTERFACE
(
This
,
IDirectDraw3
);
TRACE
(
"(%p) Returning IDirectDraw3 interface at %p
\n
"
,
This
,
*
obj
);
}
else
if
(
IsEqualGUID
(
&
IID_IDirectDraw2
,
refiid
)
)
{
*
obj
=
ICOM_INTERFACE
(
This
,
IDirectDraw2
);
...
...
dlls/ddraw/ddraw_private.h
View file @
39888679
...
...
@@ -87,6 +87,7 @@ struct IDirectDrawImpl
/* IUnknown fields */
ICOM_VFIELD_MULTI
(
IDirectDraw7
);
ICOM_VFIELD_MULTI
(
IDirectDraw4
);
ICOM_VFIELD_MULTI
(
IDirectDraw3
);
ICOM_VFIELD_MULTI
(
IDirectDraw2
);
ICOM_VFIELD_MULTI
(
IDirectDraw
);
ICOM_VFIELD_MULTI
(
IDirect3D7
);
...
...
@@ -154,6 +155,7 @@ struct IDirectDrawImpl
/* Declare the VTables. They can be found ddraw.c */
const
IDirectDraw7Vtbl
IDirectDraw7_Vtbl
;
const
IDirectDraw4Vtbl
IDirectDraw4_Vtbl
;
const
IDirectDraw3Vtbl
IDirectDraw3_Vtbl
;
const
IDirectDraw2Vtbl
IDirectDraw2_Vtbl
;
const
IDirectDrawVtbl
IDirectDraw1_Vtbl
;
...
...
dlls/ddraw/ddraw_thunks.c
View file @
39888679
...
...
@@ -62,6 +62,14 @@ IDirectDraw2Impl_QueryInterface(LPDIRECTDRAW2 This, REFIID iid, LPVOID *ppObj)
iid
,
ppObj
);
}
static
HRESULT
WINAPI
IDirectDraw3Impl_QueryInterface
(
LPDIRECTDRAW3
This
,
REFIID
iid
,
LPVOID
*
ppObj
)
{
return
IDirectDraw7_QueryInterface
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
iid
,
ppObj
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_QueryInterface
(
LPDIRECTDRAW4
This
,
REFIID
iid
,
LPVOID
*
ppObj
)
...
...
@@ -99,6 +107,19 @@ IDirectDraw2Impl_AddRef(LPDIRECTDRAW2 iface)
}
static
ULONG
WINAPI
IDirectDraw3Impl_AddRef
(
LPDIRECTDRAW3
iface
)
{
ICOM_THIS_FROM
(
IDirectDrawImpl
,
IDirectDraw3
,
iface
);
ULONG
ref
=
InterlockedIncrement
(
&
This
->
ref4
);
TRACE
(
"(%p) : incrementing IDirectDraw4 refcount from %lu.
\n
"
,
This
,
ref
-
1
);
if
(
ref
==
1
)
InterlockedIncrement
(
&
This
->
numIfaces
);
return
ref
;
}
static
ULONG
WINAPI
IDirectDraw4Impl_AddRef
(
LPDIRECTDRAW4
iface
)
{
ICOM_THIS_FROM
(
IDirectDrawImpl
,
IDirectDraw4
,
iface
);
...
...
@@ -146,6 +167,23 @@ IDirectDraw2Impl_Release(LPDIRECTDRAW2 iface)
}
static
ULONG
WINAPI
IDirectDraw3Impl_Release
(
LPDIRECTDRAW3
iface
)
{
ICOM_THIS_FROM
(
IDirectDrawImpl
,
IDirectDraw3
,
iface
);
ULONG
ref
=
InterlockedDecrement
(
&
This
->
ref4
);
TRACE_
(
ddraw
)(
"(%p)->() decrementing IDirectDraw4 refcount from %lu.
\n
"
,
This
,
ref
+
1
);
if
(
ref
==
0
)
{
ULONG
ifacecount
=
InterlockedDecrement
(
&
This
->
numIfaces
);
if
(
ifacecount
==
0
)
IDirectDrawImpl_Destroy
(
This
);
}
return
ref
;
}
static
ULONG
WINAPI
IDirectDraw4Impl_Release
(
LPDIRECTDRAW4
iface
)
{
ICOM_THIS_FROM
(
IDirectDrawImpl
,
IDirectDraw4
,
iface
);
...
...
@@ -178,6 +216,14 @@ IDirectDraw2Impl_Compact(LPDIRECTDRAW2 This)
This
));
}
static
HRESULT
WINAPI
IDirectDraw3Impl_Compact
(
LPDIRECTDRAW3
This
)
{
return
IDirectDraw7_Compact
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
));
}
static
HRESULT
WINAPI
IDirectDraw4Impl_Compact
(
LPDIRECTDRAW4
This
)
{
...
...
@@ -211,6 +257,18 @@ IDirectDraw2Impl_CreateClipper(LPDIRECTDRAW2 This, DWORD dwFlags,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_CreateClipper
(
LPDIRECTDRAW3
This
,
DWORD
dwFlags
,
LPDIRECTDRAWCLIPPER
*
ppClipper
,
IUnknown
*
pUnkOuter
)
{
return
IDirectDraw7_CreateClipper
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
dwFlags
,
ppClipper
,
pUnkOuter
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_CreateClipper
(
LPDIRECTDRAW4
This
,
DWORD
dwFlags
,
LPDIRECTDRAWCLIPPER
*
ppClipper
,
IUnknown
*
pUnkOuter
)
...
...
@@ -272,6 +330,31 @@ IDirectDraw2Impl_CreatePalette(LPDIRECTDRAW2 This, DWORD dwFlags,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_CreatePalette
(
LPDIRECTDRAW3
This
,
DWORD
dwFlags
,
LPPALETTEENTRY
pEntries
,
LPDIRECTDRAWPALETTE
*
ppPalette
,
IUnknown
*
pUnkOuter
)
{
HRESULT
hr
;
hr
=
IDirectDraw7_CreatePalette
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
dwFlags
,
pEntries
,
ppPalette
,
pUnkOuter
);
if
(
SUCCEEDED
(
hr
)
&&
*
ppPalette
)
{
IDirectDrawPaletteImpl
*
impl
=
ICOM_OBJECT
(
IDirectDrawPaletteImpl
,
IDirectDrawPalette
,
*
ppPalette
);
IDirectDraw7_Release
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
));
IDirectDraw4_AddRef
(
This
);
impl
->
ifaceToRelease
=
(
IUnknown
*
)
This
;
}
return
hr
;
}
static
HRESULT
WINAPI
IDirectDraw4Impl_CreatePalette
(
LPDIRECTDRAW4
This
,
DWORD
dwFlags
,
LPPALETTEENTRY
pEntries
,
LPDIRECTDRAWPALETTE
*
ppPalette
,
...
...
@@ -371,6 +454,42 @@ IDirectDraw2Impl_CreateSurface(LPDIRECTDRAW2 This, LPDDSURFACEDESC pSDesc,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_CreateSurface
(
LPDIRECTDRAW3
This
,
LPDDSURFACEDESC
pSDesc
,
LPDIRECTDRAWSURFACE
*
ppSurface
,
IUnknown
*
pUnkOuter
)
{
LPDIRECTDRAWSURFACE7
pSurface7
;
IDirectDrawSurfaceImpl
*
impl
;
HRESULT
hr
;
hr
=
IDirectDraw7_CreateSurface
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
(
LPDDSURFACEDESC2
)
pSDesc
,
&
pSurface7
,
pUnkOuter
);
/* This coercion is safe, since the IDirectDrawSurface3 vtable has the
* IDirectDrawSurface vtable layout at the beginning */
*
ppSurface
=
(
LPDIRECTDRAWSURFACE
)
COM_INTERFACE_CAST
(
IDirectDrawSurfaceImpl
,
IDirectDrawSurface7
,
IDirectDrawSurface3
,
pSurface7
);
impl
=
ICOM_OBJECT
(
IDirectDrawSurfaceImpl
,
IDirectDrawSurface7
,
pSurface7
);
if
(
SUCCEEDED
(
hr
)
&&
impl
)
{
impl
->
version
=
3
;
IDirectDraw7_Release
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
));
IDirectDraw3_AddRef
(
This
);
impl
->
ifaceToRelease
=
(
IUnknown
*
)
This
;
}
return
hr
;
}
static
HRESULT
WINAPI
IDirectDraw4Impl_CreateSurface
(
LPDIRECTDRAW4
This
,
LPDDSURFACEDESC2
pSDesc
,
LPDIRECTDRAWSURFACE4
*
ppSurface
,
IUnknown
*
pUnkOuter
)
...
...
@@ -448,6 +567,30 @@ IDirectDraw2Impl_DuplicateSurface(LPDIRECTDRAW2 This, LPDIRECTDRAWSURFACE pSrc,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_DuplicateSurface
(
LPDIRECTDRAW3
This
,
LPDIRECTDRAWSURFACE
pSrc
,
LPDIRECTDRAWSURFACE
*
ppDst
)
{
LPDIRECTDRAWSURFACE7
pDst7
;
HRESULT
hr
;
hr
=
IDirectDraw7_DuplicateSurface
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
COM_INTERFACE_CAST
(
IDirectDrawSurfaceImpl
,
IDirectDrawSurface3
,
IDirectDrawSurface7
,
pSrc
),
&
pDst7
);
/* This coercion is safe, since the IDirectDrawSurface3 vtable has the
* IDirectDrawSurface vtable layout at the beginning */
*
ppDst
=
(
LPDIRECTDRAWSURFACE
)
COM_INTERFACE_CAST
(
IDirectDrawSurfaceImpl
,
IDirectDrawSurface7
,
IDirectDrawSurface3
,
pDst7
);
return
hr
;
}
static
HRESULT
WINAPI
IDirectDraw4Impl_DuplicateSurface
(
LPDIRECTDRAW4
This
,
LPDIRECTDRAWSURFACE4
pSrc
,
LPDIRECTDRAWSURFACE4
*
ppDst
)
...
...
@@ -515,6 +658,24 @@ IDirectDraw2Impl_EnumDisplayModes(LPDIRECTDRAW2 This, DWORD dwFlags,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_EnumDisplayModes
(
LPDIRECTDRAW3
This
,
DWORD
dwFlags
,
LPDDSURFACEDESC
pDDSD
,
LPVOID
context
,
LPDDENUMMODESCALLBACK
cb
)
{
struct
displaymodescallback_context
cbcontext
;
cbcontext
.
func
=
cb
;
cbcontext
.
context
=
context
;
return
IDirectDraw7_EnumDisplayModes
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
dwFlags
,
(
LPDDSURFACEDESC2
)
pDDSD
,
&
cbcontext
,
EnumDisplayModesCallbackThunk
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_EnumDisplayModes
(
LPDIRECTDRAW4
This
,
DWORD
dwFlags
,
LPDDSURFACEDESC2
pDDSD
,
LPVOID
context
,
LPDDENUMMODESCALLBACK2
cb
)
...
...
@@ -582,6 +743,23 @@ IDirectDraw2Impl_EnumSurfaces(LPDIRECTDRAW2 This, DWORD dwFlags,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_EnumSurfaces
(
LPDIRECTDRAW3
This
,
DWORD
dwFlags
,
LPDDSURFACEDESC
pDDSD
,
LPVOID
context
,
LPDDENUMSURFACESCALLBACK
cb
)
{
struct
surfacescallback_context
cbcontext
;
cbcontext
.
func
=
cb
;
cbcontext
.
context
=
context
;
return
IDirectDraw7_EnumSurfaces
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
dwFlags
,
(
LPDDSURFACEDESC2
)
pDDSD
,
&
cbcontext
,
EnumSurfacesCallbackThunk
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_EnumSurfaces
(
LPDIRECTDRAW4
This
,
DWORD
dwFlags
,
LPDDSURFACEDESC2
pDDSD
,
LPVOID
context
,
LPDDENUMSURFACESCALLBACK2
cb
)
...
...
@@ -612,6 +790,15 @@ IDirectDraw2Impl_FlipToGDISurface(LPDIRECTDRAW2 This)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_FlipToGDISurface
(
LPDIRECTDRAW3
This
)
{
return
IDirectDraw7_FlipToGDISurface
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
));
}
static
HRESULT
WINAPI
IDirectDraw4Impl_FlipToGDISurface
(
LPDIRECTDRAW4
This
)
{
return
IDirectDraw7_FlipToGDISurface
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
...
...
@@ -637,6 +824,14 @@ IDirectDraw2Impl_GetCaps(LPDIRECTDRAW2 This, LPDDCAPS pDDC1, LPDDCAPS pDDC2)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetCaps
(
LPDIRECTDRAW3
This
,
LPDDCAPS
pDDC1
,
LPDDCAPS
pDDC2
)
{
return
IDirectDraw7_GetCaps
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
pDDC1
,
pDDC2
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetCaps
(
LPDIRECTDRAW4
This
,
LPDDCAPS
pDDC1
,
LPDDCAPS
pDDC2
)
{
return
IDirectDraw7_GetCaps
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
...
...
@@ -663,6 +858,15 @@ IDirectDraw2Impl_GetDisplayMode(LPDIRECTDRAW2 This, LPDDSURFACEDESC pDDSD)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetDisplayMode
(
LPDIRECTDRAW3
This
,
LPDDSURFACEDESC
pDDSD
)
{
return
IDirectDraw7_GetDisplayMode
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
(
LPDDSURFACEDESC2
)
pDDSD
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetDisplayMode
(
LPDIRECTDRAW4
This
,
LPDDSURFACEDESC2
pDDSD
)
{
return
IDirectDraw7_GetDisplayMode
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
...
...
@@ -694,6 +898,17 @@ IDirectDraw2Impl_GetFourCCCodes(LPDIRECTDRAW2 This, LPDWORD lpNumCodes,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetFourCCCodes
(
LPDIRECTDRAW3
This
,
LPDWORD
lpNumCodes
,
LPDWORD
lpCodes
)
{
return
IDirectDraw7_GetFourCCCodes
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
lpNumCodes
,
lpCodes
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetFourCCCodes
(
LPDIRECTDRAW4
This
,
LPDWORD
lpNumCodes
,
LPDWORD
lpCodes
)
{
...
...
@@ -743,6 +958,25 @@ IDirectDraw2Impl_GetGDISurface(LPDIRECTDRAW2 This, LPDIRECTDRAWSURFACE *ppSurf)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetGDISurface
(
LPDIRECTDRAW3
This
,
LPDIRECTDRAWSURFACE
*
ppSurf
)
{
LPDIRECTDRAWSURFACE7
pSurf7
;
HRESULT
hr
;
hr
=
IDirectDraw7_GetGDISurface
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
&
pSurf7
);
/* This coercion is safe, since the IDirectDrawSurface3 vtable has the
* IDirectDrawSurface vtable layout at the beginning */
*
ppSurf
=
(
LPDIRECTDRAWSURFACE
)
COM_INTERFACE_CAST
(
IDirectDrawSurfaceImpl
,
IDirectDrawSurface7
,
IDirectDrawSurface3
,
pSurf7
);
return
hr
;
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetGDISurface
(
LPDIRECTDRAW4
This
,
LPDIRECTDRAWSURFACE4
*
ppSurf
)
{
...
...
@@ -774,6 +1008,16 @@ IDirectDraw2Impl_GetMonitorFrequency(LPDIRECTDRAW2 This, LPDWORD pdwFreq)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetMonitorFrequency
(
LPDIRECTDRAW3
This
,
LPDWORD
pdwFreq
)
{
return
IDirectDraw7_GetMonitorFrequency
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
pdwFreq
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetMonitorFrequency
(
LPDIRECTDRAW4
This
,
LPDWORD
pdwFreq
)
{
return
IDirectDraw7_GetMonitorFrequency
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
...
...
@@ -802,6 +1046,15 @@ IDirectDraw2Impl_GetScanLine(LPDIRECTDRAW2 This, LPDWORD pdwLine)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetScanLine
(
LPDIRECTDRAW3
This
,
LPDWORD
pdwLine
)
{
return
IDirectDraw7_GetScanLine
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
pdwLine
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetScanLine
(
LPDIRECTDRAW4
This
,
LPDWORD
pdwLine
)
{
return
IDirectDraw7_GetScanLine
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
...
...
@@ -831,6 +1084,16 @@ IDirectDraw2Impl_GetVerticalBlankStatus(LPDIRECTDRAW2 This, LPBOOL lpbIsInVB)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetVerticalBlankStatus
(
LPDIRECTDRAW3
This
,
LPBOOL
lpbIsInVB
)
{
return
IDirectDraw7_GetVerticalBlankStatus
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
lpbIsInVB
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetVerticalBlankStatus
(
LPDIRECTDRAW4
This
,
LPBOOL
lpbIsInVB
)
{
return
IDirectDraw7_GetVerticalBlankStatus
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
...
...
@@ -863,6 +1126,17 @@ IDirectDraw2Impl_Initialize(LPDIRECTDRAW2 iface, LPGUID pGUID)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_Initialize
(
LPDIRECTDRAW3
iface
,
LPGUID
pGUID
)
{
ICOM_THIS_FROM
(
IDirectDrawImpl
,
IDirectDraw3
,
iface
);
HRESULT
ret_value
;
ret_value
=
IDirectDraw7_Initialize
(
ICOM_INTERFACE
(
This
,
IDirectDraw7
),
pGUID
);
return
ret_value
;
}
static
HRESULT
WINAPI
IDirectDraw4Impl_Initialize
(
LPDIRECTDRAW4
iface
,
LPGUID
pGUID
)
{
ICOM_THIS_FROM
(
IDirectDrawImpl
,
IDirectDraw4
,
iface
);
...
...
@@ -893,6 +1167,15 @@ IDirectDraw2Impl_RestoreDisplayMode(LPDIRECTDRAW2 This)
}
static
HRESULT
WINAPI
IDirectDraw3Impl_RestoreDisplayMode
(
LPDIRECTDRAW3
This
)
{
return
IDirectDraw7_RestoreDisplayMode
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
));
}
static
HRESULT
WINAPI
IDirectDraw4Impl_RestoreDisplayMode
(
LPDIRECTDRAW4
This
)
{
return
IDirectDraw7_RestoreDisplayMode
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
...
...
@@ -924,6 +1207,17 @@ IDirectDraw2Impl_SetCooperativeLevel(LPDIRECTDRAW2 This, HWND hWnd,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_SetCooperativeLevel
(
LPDIRECTDRAW3
This
,
HWND
hWnd
,
DWORD
dwFlags
)
{
return
IDirectDraw7_SetCooperativeLevel
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
hWnd
,
dwFlags
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_SetCooperativeLevel
(
LPDIRECTDRAW4
This
,
HWND
hWnd
,
DWORD
dwFlags
)
{
...
...
@@ -956,6 +1250,17 @@ IDirectDraw2Impl_SetDisplayMode(LPDIRECTDRAW2 This, DWORD a, DWORD b, DWORD c,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_SetDisplayMode
(
LPDIRECTDRAW3
This
,
DWORD
a
,
DWORD
b
,
DWORD
c
,
DWORD
d
,
DWORD
e
)
{
return
IDirectDraw7_SetDisplayMode
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
a
,
b
,
c
,
d
,
e
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_SetDisplayMode
(
LPDIRECTDRAW4
This
,
DWORD
a
,
DWORD
b
,
DWORD
c
,
DWORD
d
,
DWORD
e
)
{
...
...
@@ -989,6 +1294,17 @@ IDirectDraw2Impl_WaitForVerticalBlank(LPDIRECTDRAW2 This, DWORD dwFlags,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_WaitForVerticalBlank
(
LPDIRECTDRAW3
This
,
DWORD
dwFlags
,
HANDLE
hEvent
)
{
return
IDirectDraw7_WaitForVerticalBlank
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
dwFlags
,
hEvent
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_WaitForVerticalBlank
(
LPDIRECTDRAW4
This
,
DWORD
dwFlags
,
HANDLE
hEvent
)
{
...
...
@@ -1014,6 +1330,20 @@ IDirectDraw2Impl_GetAvailableVidMem(LPDIRECTDRAW2 This, LPDDSCAPS pCaps,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetAvailableVidMem
(
LPDIRECTDRAW3
This
,
LPDDSCAPS
pCaps
,
LPDWORD
pdwTotal
,
LPDWORD
pdwFree
)
{
DDSCAPS2
Caps2
;
DDRAW_Convert_DDSCAPS_1_To_2
(
pCaps
,
&
Caps2
);
return
IDirectDraw7_GetAvailableVidMem
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
&
Caps2
,
pdwTotal
,
pdwFree
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetAvailableVidMem
(
LPDIRECTDRAW4
This
,
LPDDSCAPS2
pCaps
,
LPDWORD
pdwTotal
,
LPDWORD
pdwFree
)
{
...
...
@@ -1025,6 +1355,17 @@ IDirectDraw4Impl_GetAvailableVidMem(LPDIRECTDRAW4 This, LPDDSCAPS2 pCaps,
}
static
HRESULT
WINAPI
IDirectDraw3Impl_GetSurfaceFromDC
(
LPDIRECTDRAW3
This
,
HDC
hDC
,
LPDIRECTDRAWSURFACE
*
pSurf
)
{
return
IDirectDraw7_GetSurfaceFromDC
(
COM_INTERFACE_CAST
(
IDirectDrawImpl
,
IDirectDraw3
,
IDirectDraw7
,
This
),
hDC
,
(
LPDIRECTDRAWSURFACE7
*
)
pSurf
);
}
static
HRESULT
WINAPI
IDirectDraw4Impl_GetSurfaceFromDC
(
LPDIRECTDRAW4
This
,
HDC
hDC
,
LPDIRECTDRAWSURFACE4
*
pSurf
)
{
...
...
@@ -1126,6 +1467,35 @@ const IDirectDraw2Vtbl IDirectDraw2_Vtbl =
IDirectDraw2Impl_GetAvailableVidMem
};
const
IDirectDraw3Vtbl
IDirectDraw3_Vtbl
=
{
IDirectDraw3Impl_QueryInterface
,
IDirectDraw3Impl_AddRef
,
IDirectDraw3Impl_Release
,
IDirectDraw3Impl_Compact
,
IDirectDraw3Impl_CreateClipper
,
IDirectDraw3Impl_CreatePalette
,
IDirectDraw3Impl_CreateSurface
,
IDirectDraw3Impl_DuplicateSurface
,
IDirectDraw3Impl_EnumDisplayModes
,
IDirectDraw3Impl_EnumSurfaces
,
IDirectDraw3Impl_FlipToGDISurface
,
IDirectDraw3Impl_GetCaps
,
IDirectDraw3Impl_GetDisplayMode
,
IDirectDraw3Impl_GetFourCCCodes
,
IDirectDraw3Impl_GetGDISurface
,
IDirectDraw3Impl_GetMonitorFrequency
,
IDirectDraw3Impl_GetScanLine
,
IDirectDraw3Impl_GetVerticalBlankStatus
,
IDirectDraw3Impl_Initialize
,
IDirectDraw3Impl_RestoreDisplayMode
,
IDirectDraw3Impl_SetCooperativeLevel
,
IDirectDraw3Impl_SetDisplayMode
,
IDirectDraw3Impl_WaitForVerticalBlank
,
IDirectDraw3Impl_GetAvailableVidMem
,
IDirectDraw3Impl_GetSurfaceFromDC
,
};
const
IDirectDraw4Vtbl
IDirectDraw4_Vtbl
=
{
IDirectDraw4Impl_QueryInterface
,
...
...
include/ddraw.h
View file @
39888679
...
...
@@ -39,6 +39,7 @@ DEFINE_GUID( CLSID_DirectDraw7, 0x3C305196,0x50DB,0x11D3,0x9C,0xFE,0x00,
DEFINE_GUID
(
CLSID_DirectDrawClipper
,
0x593817A0
,
0x7DB3
,
0x11CF
,
0xA2
,
0xDE
,
0x00
,
0xAA
,
0x00
,
0xb9
,
0x33
,
0x56
);
DEFINE_GUID
(
IID_IDirectDraw
,
0x6C14DB80
,
0xA733
,
0x11CE
,
0xA5
,
0x21
,
0x00
,
0x20
,
0xAF
,
0x0B
,
0xE5
,
0x60
);
DEFINE_GUID
(
IID_IDirectDraw2
,
0xB3A6F3E0
,
0x2B43
,
0x11CF
,
0xA2
,
0xDE
,
0x00
,
0xAA
,
0x00
,
0xB9
,
0x33
,
0x56
);
DEFINE_GUID
(
IID_IDirectDraw3
,
0x618f8ad4
,
0x8b7a
,
0x11d0
,
0x8f
,
0xcc
,
0x0
,
0xc0
,
0x4f
,
0xd9
,
0x18
,
0x9d
);
DEFINE_GUID
(
IID_IDirectDraw4
,
0x9c59509a
,
0x39bd
,
0x11d1
,
0x8c
,
0x4a
,
0x00
,
0xc0
,
0x4f
,
0xd9
,
0x30
,
0xc5
);
DEFINE_GUID
(
IID_IDirectDraw7
,
0x15e65ec0
,
0x3b9c
,
0x11d2
,
0xb9
,
0x2f
,
0x00
,
0x60
,
0x97
,
0x97
,
0xea
,
0x5b
);
DEFINE_GUID
(
IID_IDirectDrawSurface
,
0x6C14DB81
,
0xA733
,
0x11CE
,
0xA5
,
0x21
,
0x00
,
0x20
,
0xAF
,
0x0B
,
0xE5
,
0x60
);
...
...
@@ -54,6 +55,7 @@ DEFINE_GUID( IID_IDirectDrawGammaControl,0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00
typedef
struct
IDirectDraw
*
LPDIRECTDRAW
;
typedef
struct
IDirectDraw2
*
LPDIRECTDRAW2
;
typedef
struct
IDirectDraw3
*
LPDIRECTDRAW3
;
typedef
struct
IDirectDraw4
*
LPDIRECTDRAW4
;
typedef
struct
IDirectDraw7
*
LPDIRECTDRAW7
;
typedef
struct
IDirectDrawClipper
*
LPDIRECTDRAWCLIPPER
;
...
...
@@ -1492,6 +1494,107 @@ DECLARE_INTERFACE_(IDirectDraw2,IUnknown)
/*****************************************************************************
* IDirectDraw3 interface
*/
#define INTERFACE IDirectDraw3
DECLARE_INTERFACE_
(
IDirectDraw3
,
IUnknown
)
{
/*** IUnknown methods ***/
/*00*/
STDMETHOD_
(
HRESULT
,
QueryInterface
)(
THIS_
REFIID
riid
,
void
**
ppvObject
)
PURE
;
/*04*/
STDMETHOD_
(
ULONG
,
AddRef
)(
THIS
)
PURE
;
/*08*/
STDMETHOD_
(
ULONG
,
Release
)(
THIS
)
PURE
;
/*** IDirectDraw2 methods ***/
/*0c*/
STDMETHOD
(
Compact
)(
THIS
)
PURE
;
/*10*/
STDMETHOD
(
CreateClipper
)(
THIS_
DWORD
dwFlags
,
LPDIRECTDRAWCLIPPER
*
lplpDDClipper
,
IUnknown
*
pUnkOuter
)
PURE
;
/*14*/
STDMETHOD
(
CreatePalette
)(
THIS_
DWORD
dwFlags
,
LPPALETTEENTRY
lpColorTable
,
LPDIRECTDRAWPALETTE
*
lplpDDPalette
,
IUnknown
*
pUnkOuter
)
PURE
;
/*18*/
STDMETHOD
(
CreateSurface
)(
THIS_
LPDDSURFACEDESC
lpDDSurfaceDesc
,
LPDIRECTDRAWSURFACE
*
lplpDDSurface
,
IUnknown
*
pUnkOuter
)
PURE
;
/*1c*/
STDMETHOD
(
DuplicateSurface
)(
THIS_
LPDIRECTDRAWSURFACE
lpDDSurface
,
LPDIRECTDRAWSURFACE
*
lplpDupDDSurface
)
PURE
;
/*20*/
STDMETHOD
(
EnumDisplayModes
)(
THIS_
DWORD
dwFlags
,
LPDDSURFACEDESC
lpDDSurfaceDesc
,
LPVOID
lpContext
,
LPDDENUMMODESCALLBACK
lpEnumModesCallback
)
PURE
;
/*24*/
STDMETHOD
(
EnumSurfaces
)(
THIS_
DWORD
dwFlags
,
LPDDSURFACEDESC
lpDDSD
,
LPVOID
lpContext
,
LPDDENUMSURFACESCALLBACK
lpEnumSurfacesCallback
)
PURE
;
/*28*/
STDMETHOD
(
FlipToGDISurface
)(
THIS
)
PURE
;
/*2c*/
STDMETHOD
(
GetCaps
)(
THIS_
LPDDCAPS
lpDDDriverCaps
,
LPDDCAPS
lpDDHELCaps
)
PURE
;
/*30*/
STDMETHOD
(
GetDisplayMode
)(
THIS_
LPDDSURFACEDESC
lpDDSurfaceDesc
)
PURE
;
/*34*/
STDMETHOD
(
GetFourCCCodes
)(
THIS_
LPDWORD
lpNumCodes
,
LPDWORD
lpCodes
)
PURE
;
/*38*/
STDMETHOD
(
GetGDISurface
)(
THIS_
LPDIRECTDRAWSURFACE
*
lplpGDIDDSurface
)
PURE
;
/*3c*/
STDMETHOD
(
GetMonitorFrequency
)(
THIS_
LPDWORD
lpdwFrequency
)
PURE
;
/*40*/
STDMETHOD
(
GetScanLine
)(
THIS_
LPDWORD
lpdwScanLine
)
PURE
;
/*44*/
STDMETHOD
(
GetVerticalBlankStatus
)(
THIS_
BOOL
*
lpbIsInVB
)
PURE
;
/*48*/
STDMETHOD
(
Initialize
)(
THIS_
GUID
*
lpGUID
)
PURE
;
/*4c*/
STDMETHOD
(
RestoreDisplayMode
)(
THIS
)
PURE
;
/*50*/
STDMETHOD
(
SetCooperativeLevel
)(
THIS_
HWND
hWnd
,
DWORD
dwFlags
)
PURE
;
/*54*/
STDMETHOD
(
SetDisplayMode
)(
THIS_
DWORD
dwWidth
,
DWORD
dwHeight
,
DWORD
dwBPP
,
DWORD
dwRefreshRate
,
DWORD
dwFlags
)
PURE
;
/*58*/
STDMETHOD
(
WaitForVerticalBlank
)(
THIS_
DWORD
dwFlags
,
HANDLE
hEvent
)
PURE
;
/* added in v2 */
/*5c*/
STDMETHOD
(
GetAvailableVidMem
)(
THIS_
LPDDSCAPS
lpDDCaps
,
LPDWORD
lpdwTotal
,
LPDWORD
lpdwFree
)
PURE
;
/* added in v3 */
/*60*/
STDMETHOD
(
GetSurfaceFromDC
)(
THIS_
HDC
hdc
,
LPDIRECTDRAWSURFACE
*
pSurf
)
PURE
;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectDraw3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectDraw3_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectDraw3_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectDraw methods ***/
#define IDirectDraw3_Compact(p) (p)->lpVtbl->Compact(p)
#define IDirectDraw3_CreateClipper(p,a,b,c) (p)->lpVtbl->CreateClipper(p,a,b,c)
#define IDirectDraw3_CreatePalette(p,a,b,c,d) (p)->lpVtbl->CreatePalette(p,a,b,c,d)
#define IDirectDraw3_CreateSurface(p,a,b,c) (p)->lpVtbl->CreateSurface(p,a,b,c)
#define IDirectDraw3_DuplicateSurface(p,a,b) (p)->lpVtbl->DuplicateSurface(p,a,b)
#define IDirectDraw3_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
#define IDirectDraw3_EnumSurfaces(p,a,b,c,d) (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
#define IDirectDraw3_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
#define IDirectDraw3_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
#define IDirectDraw3_GetDisplayMode(p,a) (p)->lpVtbl->GetDisplayMode(p,a)
#define IDirectDraw3_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b)
#define IDirectDraw3_GetGDISurface(p,a) (p)->lpVtbl->GetGDISurface(p,a)
#define IDirectDraw3_GetMonitorFrequency(p,a) (p)->lpVtbl->GetMonitorFrequency(p,a)
#define IDirectDraw3_GetScanLine(p,a) (p)->lpVtbl->GetScanLine(p,a)
#define IDirectDraw3_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
#define IDirectDraw3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
#define IDirectDraw3_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
#define IDirectDraw3_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
#define IDirectDraw3_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
#define IDirectDraw3_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
/*** IDirectDraw2 methods ***/
#define IDirectDraw3_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
/*** IDirectDraw3 methods ***/
#define IDirectDraw3_GetSurfaceFromDC(p,a,b) (p)->lpVtbl->GetSurfaceFromDC(p,a,b)
#else
/*** IUnknown methods ***/
#define IDirectDraw3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirectDraw3_AddRef(p) (p)->AddRef()
#define IDirectDraw3_Release(p) (p)->Release()
/*** IDirectDraw methods ***/
#define IDirectDraw3_Compact(p) (p)->Compact()
#define IDirectDraw3_CreateClipper(p,a,b,c) (p)->CreateClipper(a,b,c)
#define IDirectDraw3_CreatePalette(p,a,b,c,d) (p)->CreatePalette(a,b,c,d)
#define IDirectDraw3_CreateSurface(p,a,b,c) (p)->CreateSurface(a,b,c)
#define IDirectDraw3_DuplicateSurface(p,a,b) (p)->DuplicateSurface(a,b)
#define IDirectDraw3_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
#define IDirectDraw3_EnumSurfaces(p,a,b,c,d) (p)->EnumSurfaces(a,b,c,d)
#define IDirectDraw3_FlipToGDISurface(p) (p)->FlipToGDISurface()
#define IDirectDraw3_GetCaps(p,a,b) (p)->GetCaps(a,b)
#define IDirectDraw3_GetDisplayMode(p,a) (p)->GetDisplayMode(a)
#define IDirectDraw3_GetFourCCCodes(p,a,b) (p)->GetFourCCCodes(a,b)
#define IDirectDraw3_GetGDISurface(p,a) (p)->GetGDISurface(a)
#define IDirectDraw3_GetMonitorFrequency(p,a) (p)->GetMonitorFrequency(a)
#define IDirectDraw3_GetScanLine(p,a) (p)->GetScanLine(a)
#define IDirectDraw3_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
#define IDirectDraw3_Initialize(p,a) (p)->Initialize(a)
#define IDirectDraw3_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
#define IDirectDraw3_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
#define IDirectDraw3_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
#define IDirectDraw3_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
/*** IDirectDraw2 methods ***/
#define IDirectDraw3_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
/*** IDirectDraw3 methods ***/
#define IDirectDraw3_GetSurfaceFromDC(p,a,b) (p)->GetSurfaceFromDC(a,b)
#endif
/*****************************************************************************
* IDirectDraw4 interface
*/
#define INTERFACE IDirectDraw4
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment