2 * Copyright (C) 2008 Vijay Kiran Kamuju
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __D3DRMOBJ_H__
20 #define __D3DRMOBJ_H__
31 /*****************************************************************************
32 * Predeclare the interfaces
35 DEFINE_GUID(IID_IDirect3DRMObject
, 0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
36 DEFINE_GUID(IID_IDirect3DRMVisual
, 0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
38 typedef struct IDirect3DRMObject
*LPDIRECT3DRMOBJECT
, **LPLPDIRECT3DRMOBJECT
;
39 typedef struct IDirect3DRMObject2
*LPDIRECT3DRMOBJECT2
, **LPLPDIRECT3DRMOBJECT2
;
40 typedef struct IDirect3DRMDevice
*LPDIRECT3DRMDEVICE
, **LPLPDIRECT3DRMDEVICE
;
41 typedef struct IDirect3DRMDevice2
*LPDIRECT3DRMDEVICE2
, **LPLPDIRECT3DRMDEVICE2
;
42 typedef struct IDirect3DRMDevice3
*LPDIRECT3DRMDEVICE3
, **LPLPDIRECT3DRMDEVICE3
;
43 typedef struct IDirect3DRMViewport
*LPDIRECT3DRMVIEWPORT
, **LPLPDIRECT3DRMVIEWPORT
;
44 typedef struct IDirect3DRMViewport2
*LPDIRECT3DRMVIEWPORT2
, **LPLPDIRECT3DRMVIEWPORT2
;
45 typedef struct IDirect3DRMFrame
*LPDIRECT3DRMFRAME
, **LPLPDIRECT3DRMFRAME
;
46 typedef struct IDirect3DRMFrame2
*LPDIRECT3DRMFRAME2
, **LPLPDIRECT3DRMFRAME2
;
47 typedef struct IDirect3DRMFrame3
*LPDIRECT3DRMFRAME3
, **LPLPDIRECT3DRMFRAME3
;
48 typedef struct IDirect3DRMVisual
*LPDIRECT3DRMVISUAL
, **LPLPDIRECT3DRMVISUAL
;
49 typedef struct IDirect3DRMMesh
*LPDIRECT3DRMMESH
, **LPLPDIRECT3DRMMESH
;
50 typedef struct IDirect3DRMMeshBuilder
*LPDIRECT3DRMMESHBUILDER
, **LPLPDIRECT3DRMMESHBUILDER
;
51 typedef struct IDirect3DRMMeshBuilder2
*LPDIRECT3DRMMESHBUILDER2
, **LPLPDIRECT3DRMMESHBUILDER2
;
52 typedef struct IDirect3DRMMeshBuilder3
*LPDIRECT3DRMMESHBUILDER3
, **LPLPDIRECT3DRMMESHBUILDER3
;
53 typedef struct IDirect3DRMFace
*LPDIRECT3DRMFACE
, **LPLPDIRECT3DRMFACE
;
54 typedef struct IDirect3DRMFace2
*LPDIRECT3DRMFACE2
, **LPLPDIRECT3DRMFACE2
;
55 typedef struct IDirect3DRMLight
*LPDIRECT3DRMLIGHT
, **LPLPDIRECT3DRMLIGHT
;
56 typedef struct IDirect3DRMTexture
*LPDIRECT3DRMTEXTURE
, **LPLPDIRECT3DRMTEXTURE
;
57 typedef struct IDirect3DRMTexture2
*LPDIRECT3DRMTEXTURE2
, **LPLPDIRECT3DRMTEXTURE2
;
58 typedef struct IDirect3DRMTexture3
*LPDIRECT3DRMTEXTURE3
, **LPLPDIRECT3DRMTEXTURE3
;
59 typedef struct IDirect3DRMWrap
*LPDIRECT3DRMWRAP
, **LPLPDIRECT3DRMWRAP
;
60 typedef struct IDirect3DRMMaterial
*LPDIRECT3DRMMATERIAL
, **LPLPDIRECT3DRMMATERIAL
;
61 typedef struct IDirect3DRMMaterial2
*LPDIRECT3DRMMATERIAL2
, **LPLPDIRECT3DRMMATERIAL2
;
62 typedef struct IDirect3DRMAnimation
*LPDIRECT3DRMANIMATION
, **LPLPDIRECT3DRMANIMATION
;
63 typedef struct IDirect3DRMAnimation2
*LPDIRECT3DRMANIMATION2
, **LPLPDIRECT3DRMANIMATION2
;
64 typedef struct IDirect3DRMAnimationSet
*LPDIRECT3DRMANIMATIONSET
, **LPLPDIRECT3DRMANIMATIONSET
;
65 typedef struct IDirect3DRMAnimationSet2
*LPDIRECT3DRMANIMATIONSET2
, **LPLPDIRECT3DRMANIMATIONSET2
;
66 typedef struct IDirect3DRMUserVisual
*LPDIRECT3DRMUSERVISUAL
, **LPLPDIRECT3DRMUSERVISUAL
;
67 typedef struct IDirect3DRMShadow
*LPDIRECT3DRMSHADOW
, **LPLPDIRECT3DRMSHADOW
;
68 typedef struct IDirect3DRMShadow2
*LPDIRECT3DRMSHADOW2
, **LPLPDIRECT3DRMSHADOW2
;
69 typedef struct IDirect3DRMArray
*LPDIRECT3DRMARRAY
, **LPLPDIRECT3DRMARRAY
;
70 typedef struct IDirect3DRMObjectArray
*LPDIRECT3DRMOBJECTARRAY
, **LPLPDIRECT3DRMOBJECTARRAY
;
71 typedef struct IDirect3DRMDeviceArray
*LPDIRECT3DRMDEVICEARRAY
, **LPLPDIRECT3DRMDEVICEARRAY
;
72 typedef struct IDirect3DRMFaceArray
*LPDIRECT3DRMFACEARRAY
, **LPLPDIRECT3DRMFACEARRAY
;
73 typedef struct IDirect3DRMViewportArray
*LPDIRECT3DRMVIEWPORTARRAY
, **LPLPDIRECT3DRMVIEWPORTARRAY
;
74 typedef struct IDirect3DRMFrameArray
*LPDIRECT3DRMFRAMEARRAY
, **LPLPDIRECT3DRMFRAMEARRAY
;
75 typedef struct IDirect3DRMAnimationArray
*LPDIRECT3DRMANIMATIONARRAY
, **LPLPDIRECT3DRMANIMATIONARRAY
;
76 typedef struct IDirect3DRMVisualArray
*LPDIRECT3DRMVISUALARRAY
, **LPLPDIRECT3DRMVISUALARRAY
;
77 typedef struct IDirect3DRMPickedArray
*LPDIRECT3DRMPICKEDARRAY
, **LPLPDIRECT3DRMPICKEDARRAY
;
78 typedef struct IDirect3DRMPicked2Array
*LPDIRECT3DRMPICKED2ARRAY
, **LPLPDIRECT3DRMPICKED2ARRAY
;
79 typedef struct IDirect3DRMLightArray
*LPDIRECT3DRMLIGHTARRAY
, **LPLPDIRECT3DRMLIGHTARRAY
;
80 typedef struct IDirect3DRMProgressiveMesh
*LPDIRECT3DRMPROGRESSIVEMESH
, **LPLPDIRECT3DRMPROGRESSIVEMESH
;
81 typedef struct IDirect3DRMClippedVisual
*LPDIRECT3DRMCLIPPEDVISUAL
, **LPLPDIRECT3DRMCLIPPEDVISUAL
;
83 /* ********************************************************************
85 ******************************************************************** */
87 typedef void (__cdecl
*D3DRMOBJECTCALLBACK
)(LPDIRECT3DRMOBJECT obj
, LPVOID arg
);
88 typedef int (__cdecl
*D3DRMUSERVISUALCALLBACK
)(LPDIRECT3DRMUSERVISUAL obj
, LPVOID arg
,
89 D3DRMUSERVISUALREASON reason
, LPDIRECT3DRMDEVICE dev
, LPDIRECT3DRMVIEWPORT view
);
90 typedef HRESULT (__cdecl
*D3DRMLOADTEXTURECALLBACK
)(char *tex_name
, void *arg
, LPDIRECT3DRMTEXTURE
*);
91 typedef void (__cdecl
*D3DRMLOADCALLBACK
)(LPDIRECT3DRMOBJECT object
, REFIID objectguid
, LPVOID arg
);
93 typedef struct _D3DRMPICKDESC
98 } D3DRMPICKDESC
, *LPD3DRMPICKDESC
;
100 typedef struct _D3DRMPICKDESC2
109 } D3DRMPICKDESC2
, *LPD3DRMPICKDESC2
;
111 /*****************************************************************************
112 * IDirect3DRMObject interface
114 #ifdef WINE_NO_UNICODE_MACROS
117 #define INTERFACE IDirect3DRMObject
118 DECLARE_INTERFACE_(IDirect3DRMObject
,IUnknown
)
120 /*** IUnknown methods ***/
121 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
122 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
123 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
124 /*** IDirect3DRMObject methods ***/
125 STDMETHOD(Clone
)(THIS_ LPUNKNOWN pUnkOuter
, REFIID riid
, LPVOID
*ppvObj
) PURE
;
126 STDMETHOD(AddDestroyCallback
)(THIS_ D3DRMOBJECTCALLBACK
, LPVOID argument
) PURE
;
127 STDMETHOD(DeleteDestroyCallback
)(THIS_ D3DRMOBJECTCALLBACK
, LPVOID argument
) PURE
;
128 STDMETHOD(SetAppData
)(THIS_ DWORD data
) PURE
;
129 STDMETHOD_(DWORD
, GetAppData
)(THIS
) PURE
;
130 STDMETHOD(SetName
)(THIS_ LPCSTR
) PURE
;
131 STDMETHOD(GetName
)(THIS_ LPDWORD lpdwSize
, LPSTR lpName
) PURE
;
132 STDMETHOD(GetClassName
)(THIS_ LPDWORD lpdwSize
, LPSTR lpName
) PURE
;
136 #if !defined(__cplusplus) || defined(CINTERFACE)
137 /*** IUnknown methods ***/
138 #define IDirect3DRMObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
139 #define IDirect3DRMObject_AddRef(p) (p)->lpVtbl->AddRef(p)
140 #define IDirect3DRMObject_Release(p) (p)->lpVtbl->Release(p)
141 /*** IDirect3DRMObject methods ***/
142 #define IDirect3DRMObject_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
143 #define IDirect3DRMObject_AddDestroyCallback(p,a,b) (p)->lpVtbl->AddDestroyCallback(p,a,b)
144 #define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
145 #define IDirect3DRMObject_SetAppData(p,a) (p)->lpVtbl->SetAppData(p,a)
146 #define IDirect3DRMObject_GetAppData(p) (p)->lpVtbl->GetAppData(p)
147 #define IDirect3DRMObject_SetName(p,a) (p)->lpVtbl->SetName(p,a)
148 #define IDirect3DRMObject_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
149 #define IDirect3DRMObject_GetClassName(p,a,b) (p)->lpVtbl->GetClassName(p,a,b)
151 /*** IUnknown methods ***/
152 #define IDirect3DRMObject_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
153 #define IDirect3DRMObject_AddRef(p) (p)->AddRef()
154 #define IDirect3DRMObject_Release(p) (p)->Release()
155 /*** IDirect3DRMObject methods ***/
156 #define IDirect3DRMObject_Clone(p,a,b,c) (p)->Clone(a,b,c)
157 #define IDirect3DRMObject_AddDestroyCallback(p,a,b) (p)->AddDestroyCallback(a,b)
158 #define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
159 #define IDirect3DRMObject_SetAppData(p,a) (p)->SetAppData(a)
160 #define IDirect3DRMObject_GetAppData(p) (p)->GetAppData()
161 #define IDirect3DRMObject_SetName(p,a) (p)->SetName(a)
162 #define IDirect3DRMObject_GetName(p,a,b) (p)->GetName(a,b)
163 #define IDirect3DRMObject_GetClassName(p,a,b) (p)->GetClassName(a,b)
166 /*****************************************************************************
167 * IDirect3DRMVisual interface
169 #define INTERFACE IDirect3DRMVisual
170 DECLARE_INTERFACE_(IDirect3DRMVisual
,IDirect3DRMObject
)
172 /*** IUnknown methods ***/
173 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
174 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
175 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
176 /*** IDirect3DRMObject methods ***/
177 STDMETHOD(Clone
)(THIS_ LPUNKNOWN pUnkOuter
, REFIID riid
, LPVOID
*ppvObj
) PURE
;
178 STDMETHOD(AddDestroyCallback
)(THIS_ D3DRMOBJECTCALLBACK
, LPVOID argument
) PURE
;
179 STDMETHOD(DeleteDestroyCallback
)(THIS_ D3DRMOBJECTCALLBACK
, LPVOID argument
) PURE
;
180 STDMETHOD(SetAppData
)(THIS_ DWORD data
) PURE
;
181 STDMETHOD_(DWORD
, GetAppData
)(THIS
) PURE
;
182 STDMETHOD(SetName
)(THIS_ LPCSTR
) PURE
;
183 STDMETHOD(GetName
)(THIS_ LPDWORD lpdwSize
, LPSTR lpName
) PURE
;
184 STDMETHOD(GetClassName
)(THIS_ LPDWORD lpdwSize
, LPSTR lpName
) PURE
;
188 #if !defined(__cplusplus) || defined(CINTERFACE)
189 /*** IUnknown methods ***/
190 #define IDirect3DRMVisual_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
191 #define IDirect3DRMVisual_AddRef(p) (p)->lpVtbl->AddRef(p)
192 #define IDirect3DRMVisual_Release(p) (p)->lpVtbl->Release(p)
193 /*** IDirect3DRMObject methods ***/
194 #define IDirect3DRMVisual_Clone(p,a,b,c) (p)->lpVtbl->Clone(p,a,b,c)
195 #define IDirect3DRMVisual_AddDestroyCallback(p,a,b) (p)->lpVtbl->AddDestroyCallback(p,a,b)
196 #define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
197 #define IDirect3DRMVisual_SetAppData(p,a) (p)->lpVtbl->SetAppData(p,a)
198 #define IDirect3DRMVisual_GetAppData(p) (p)->lpVtbl->GetAppData(p)
199 #define IDirect3DRMVisual_SetName(p,a) (p)->lpVtbl->SetName(p,a)
200 #define IDirect3DRMVisual_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
201 #define IDirect3DRMVisual_GetClassName(p,a,b) (p)->lpVtbl->GetClassName(p,a,b)
203 /*** IUnknown methods ***/
204 #define IDirect3DRMVisual_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
205 #define IDirect3DRMVisual_AddRef(p) (p)->AddRef()
206 #define IDirect3DRMVisual_Release(p) (p)->Release()
207 /*** IDirect3DRMObject methods ***/
208 #define IDirect3DRMVisual_Clone(p,a,b,c) (p)->Clone(a,b,c)
209 #define IDirect3DRMVisual_AddDestroyCallback(p,a,b) (p)->AddDestroyCallback(a,b)
210 #define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
211 #define IDirect3DRMVisual_SetAppData(p,a) (p)->SetAppData(a)
212 #define IDirect3DRMVisual_GetAppData(p) (p)->GetAppData()
213 #define IDirect3DRMVisual_SetName(p,a) (p)->SetName(a)
214 #define IDirect3DRMVisual_GetName(p,a,b) (p)->GetName(a,b)
215 #define IDirect3DRMVisual_GetClassName(p,a,b) (p)->GetClassName(a,b)
222 #endif /* __D3DRMOBJ_H__ */