d3drm: Add definitions for IDirect3DRM2 and IDirect3DRM3 interfaces.
[wine/wine-gecko.git] / include / d3drmobj.h
blobf7d397bc0c94241a16af79dc8ac55cbf2231f766
1 /*
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__
22 #include <objbase.h>
23 #define VIRTUAL
24 #include <d3drmdef.h>
25 #include <d3d.h>
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
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 /* ********************************************************************
84 Types and structures
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
95 ULONG ulFaceIdx;
96 LONG lGroupIdx;
97 D3DVECTOR vPosition;
98 } D3DRMPICKDESC, *LPD3DRMPICKDESC;
100 typedef struct _D3DRMPICKDESC2
102 ULONG ulFaceIdx;
103 LONG lGroupIdx;
104 D3DVECTOR vPosition;
105 D3DVALUE tu;
106 D3DVALUE tv;
107 D3DVECTOR dvNormal;
108 D3DCOLOR dcColor;
109 } D3DRMPICKDESC2, *LPD3DRMPICKDESC2;
111 /*****************************************************************************
112 * IDirect3DRMObject interface
114 #ifdef WINE_NO_UNICODE_MACROS
115 #undef GetClassName
116 #endif
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;
134 #undef INTERFACE
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)
150 #else
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)
164 #endif
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;
186 #undef INTERFACE
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)
202 #else
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)
216 #endif
218 #ifdef __cplusplus
220 #endif
222 #endif /* __D3DRMOBJ_H__ */