reactos/dll/directx/wine/d3dx9_25/effect.c

1283 lines
48 KiB
C

/*
* Copyright 2010 Christian Costa
* Copyright 2011 Rico Schüller
* Copyright 2015 Sebastian Lackner
*
* 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"
#define NONAMELESSUNION
#include "wine/debug.h"
#define INITGUID
#include "initguid.h"
#define COBJMACROS
#include "wingdi.h"
#include "d3dx9.h"
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
DEFINE_GUID(IID_ID3DXEffect25, 0xd165ccb1, 0x62b0, 0x4a33, 0xb3, 0xfa, 0xa9, 0x23, 0x0, 0x30, 0x5a, 0x11);
#define INTERFACE ID3DXEffect25
DECLARE_INTERFACE_(ID3DXEffect25, ID3DXBaseEffect)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/*** ID3DXBaseEffect methods ***/
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* desc) PURE;
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE parameter, D3DXPARAMETER_DESC* desc) PURE;
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE technique, D3DXTECHNIQUE_DESC* desc) PURE;
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE pass, D3DXPASS_DESC* desc) PURE;
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE shader, D3DXFUNCTION_DESC* desc) PURE;
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE parameter, const char *name) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE parameter, const char *semantic) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE parameter, UINT index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ const char *name) PURE;
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE technique, UINT index) PURE;
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE technique, const char *name) PURE;
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT index);
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ const char *name);
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE object, UINT index) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE object, const char *name) PURE;
STDMETHOD(SetValue)(THIS_ D3DXHANDLE parameter, const void *data, UINT bytes) PURE;
STDMETHOD(GetValue)(THIS_ D3DXHANDLE parameter, void *data, UINT bytes) PURE;
STDMETHOD(SetBool)(THIS_ D3DXHANDLE parameter, BOOL b) PURE;
STDMETHOD(GetBool)(THIS_ D3DXHANDLE parameter, BOOL* b) PURE;
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE parameter, const BOOL *b, UINT count) PURE;
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE parameter, BOOL* b, UINT count) PURE;
STDMETHOD(SetInt)(THIS_ D3DXHANDLE parameter, INT n) PURE;
STDMETHOD(GetInt)(THIS_ D3DXHANDLE parameter, INT* n) PURE;
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE parameter, const INT *n, UINT count) PURE;
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE parameter, INT* n, UINT count) PURE;
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE parameter, FLOAT f) PURE;
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE parameter, FLOAT* f) PURE;
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE parameter, const FLOAT *f, UINT count) PURE;
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE parameter, FLOAT* f, UINT count) PURE;
STDMETHOD(SetVector)(THIS_ D3DXHANDLE parameter, const D3DXVECTOR4 *vector) PURE;
STDMETHOD(GetVector)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector) PURE;
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE parameter, const D3DXVECTOR4 *vector, UINT count) PURE;
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE parameter, D3DXVECTOR4* vector, UINT count) PURE;
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE parameter, const D3DXMATRIX *matrix) PURE;
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE parameter, const D3DXMATRIX *matrix, UINT count) PURE;
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, const D3DXMATRIX **matrix, UINT count) PURE;
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE parameter, const D3DXMATRIX *matrix) PURE;
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix) PURE;
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, const D3DXMATRIX *matrix, UINT count) PURE;
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX* matrix, UINT count) PURE;
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, const D3DXMATRIX **matrix, UINT count) PURE;
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE parameter, D3DXMATRIX** matrix, UINT count) PURE;
STDMETHOD(SetString)(THIS_ D3DXHANDLE parameter, const char *string) PURE;
STDMETHOD(GetString)(THIS_ D3DXHANDLE parameter, const char **string) PURE;
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE parameter, struct IDirect3DBaseTexture9 *texture) PURE;
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE parameter, struct IDirect3DBaseTexture9 **texture) PURE;
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE parameter, struct IDirect3DPixelShader9 **shader) PURE;
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE parameter, struct IDirect3DVertexShader9 **shader) PURE;
STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE parameter, UINT start, UINT end) PURE;
/*** ID3DXEffect methods ***/
STDMETHOD(GetPool)(THIS_ ID3DXEffectPool **pool) PURE;
STDMETHOD(SetTechnique)(THIS_ D3DXHANDLE technique) PURE;
STDMETHOD_(D3DXHANDLE, GetCurrentTechnique)(THIS) PURE;
STDMETHOD(ValidateTechnique)(THIS_ D3DXHANDLE technique) PURE;
STDMETHOD(FindNextValidTechnique)(THIS_ D3DXHANDLE technique, D3DXHANDLE* next_technique) PURE;
STDMETHOD_(BOOL, IsParameterUsed)(THIS_ D3DXHANDLE parameter, D3DXHANDLE technique) PURE;
STDMETHOD(Begin)(THIS_ UINT *passes, DWORD flags) PURE;
STDMETHOD(BeginPass)(THIS_ UINT pass) PURE;
STDMETHOD(CommitChanges)(THIS) PURE;
STDMETHOD(EndPass)(THIS) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
STDMETHOD(SetStateManager)(THIS_ ID3DXEffectStateManager *manager) PURE;
STDMETHOD(GetStateManager)(THIS_ ID3DXEffectStateManager **manager) PURE;
STDMETHOD(BeginParameterBlock)(THIS) PURE;
STDMETHOD_(D3DXHANDLE, EndParameterBlock)(THIS) PURE;
STDMETHOD(ApplyParameterBlock)(THIS_ D3DXHANDLE parameter_block) PURE;
/* DeleteParameterBlock missing */
STDMETHOD(CloneEffect)(THIS_ struct IDirect3DDevice9 *device, struct ID3DXEffect25 **effect) PURE;
/* SetRawValue missing */
};
#undef INTERFACE
struct ID3DXEffect25Impl
{
ID3DXEffect25 ID3DXEffect25_iface;
ID3DXEffect *effect;
LONG ref;
};
static const struct ID3DXEffect25Vtbl ID3DXEffect25_Vtbl;
static inline struct ID3DXEffect25Impl *impl_from_ID3DXEffect25(ID3DXEffect25 *iface)
{
return CONTAINING_RECORD(iface, struct ID3DXEffect25Impl, ID3DXEffect25_iface);
}
/*** IUnknown methods ***/
static HRESULT WINAPI ID3DXEffect25Impl_QueryInterface(ID3DXEffect25 *iface, REFIID riid, void **object)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
TRACE("iface %p, riid %s, object %p\n", This, debugstr_guid(riid), object);
if (IsEqualGUID(riid, &IID_IUnknown) ||
IsEqualGUID(riid, &IID_ID3DXEffect25))
{
iface->lpVtbl->AddRef(iface);
*object = This;
return S_OK;
}
ERR("Interface %s not found\n", debugstr_guid(riid));
return E_NOINTERFACE;
}
static ULONG WINAPI ID3DXEffect25Impl_AddRef(ID3DXEffect25 *iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
TRACE("iface %p: AddRef from %u\n", This, This->ref);
return InterlockedIncrement(&This->ref);
}
static ULONG WINAPI ID3DXEffect25Impl_Release(ID3DXEffect25 *iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ULONG ref = InterlockedDecrement(&This->ref);
TRACE("iface %p: Release from %u\n", This, ref + 1);
if (!ref)
{
ID3DXEffect *effect = This->effect;
effect->lpVtbl->Release(effect);
HeapFree(GetProcessHeap(), 0, This);
}
return ref;
}
/*** ID3DXBaseEffect methods ***/
static HRESULT WINAPI ID3DXEffect25Impl_GetDesc(ID3DXEffect25 *iface, D3DXEFFECT_DESC *desc)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetDesc(effect, desc);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetParameterDesc(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXPARAMETER_DESC *desc)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetParameterDesc(effect, parameter, desc);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetTechniqueDesc(ID3DXEffect25 *iface, D3DXHANDLE technique, D3DXTECHNIQUE_DESC *desc)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetTechniqueDesc(effect, technique, desc);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetPassDesc(ID3DXEffect25 *iface, D3DXHANDLE pass, D3DXPASS_DESC *desc)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetPassDesc(effect, pass, desc);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetFunctionDesc(ID3DXEffect25 *iface, D3DXHANDLE shader, D3DXFUNCTION_DESC *desc)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetFunctionDesc(effect, shader, desc);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetParameter(ID3DXEffect25 *iface, D3DXHANDLE parameter, UINT index)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetParameter(effect, parameter, index);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetParameterByName(ID3DXEffect25 *iface, D3DXHANDLE parameter, LPCSTR name)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetParameterByName(effect, parameter, name);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetParameterBySemantic(ID3DXEffect25 *iface, D3DXHANDLE parameter, LPCSTR semantic)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetParameterBySemantic(effect, parameter, semantic);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetParameterElement(ID3DXEffect25 *iface, D3DXHANDLE parameter, UINT index)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetParameterElement(effect, parameter, index);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetTechnique(ID3DXEffect25 *iface, UINT index)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetTechnique(effect, index);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetTechniqueByName(ID3DXEffect25 *iface, LPCSTR name)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetTechniqueByName(effect, name);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetPass(ID3DXEffect25 *iface, D3DXHANDLE technique, UINT index)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetPass(effect, technique, index);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetPassByName(ID3DXEffect25 *iface, D3DXHANDLE technique, LPCSTR name)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetPassByName(effect, technique, name);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetFunction(ID3DXEffect25 *iface, UINT index)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetFunction(effect, index);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetFunctionByName(ID3DXEffect25 *iface, LPCSTR name)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetFunctionByName(effect, name);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetAnnotation(ID3DXEffect25 *iface, D3DXHANDLE object, UINT index)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetAnnotation(effect, object, index);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetAnnotationByName(ID3DXEffect25 *iface, D3DXHANDLE object, LPCSTR name)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetAnnotationByName(effect, object, name);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetValue(ID3DXEffect25 *iface, D3DXHANDLE parameter, LPCVOID data, UINT bytes)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetValue(effect, parameter, data, bytes);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetValue(ID3DXEffect25 *iface, D3DXHANDLE parameter, LPVOID data, UINT bytes)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetValue(effect, parameter, data, bytes);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetBool(ID3DXEffect25 *iface, D3DXHANDLE parameter, BOOL b)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetBool(effect, parameter, b);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetBool(ID3DXEffect25 *iface, D3DXHANDLE parameter, BOOL *b)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetBool(effect, parameter, b);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetBoolArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, const BOOL *b, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetBoolArray(effect, parameter, b, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetBoolArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, BOOL *b, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetBoolArray(effect, parameter, b, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetInt(ID3DXEffect25 *iface, D3DXHANDLE parameter, INT n)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetInt(effect, parameter, n);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetInt(ID3DXEffect25 *iface, D3DXHANDLE parameter, INT *n)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetInt(effect, parameter, n);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetIntArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, const INT *n, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetIntArray(effect, parameter, n, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetIntArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, INT *n, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetIntArray(effect, parameter, n, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetFloat(ID3DXEffect25 *iface, D3DXHANDLE parameter, FLOAT f)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetFloat(effect, parameter, f);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetFloat(ID3DXEffect25 *iface, D3DXHANDLE parameter, FLOAT *f)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetFloat(effect, parameter, f);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetFloatArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, const FLOAT *f, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetFloatArray(effect, parameter, f, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetFloatArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, FLOAT *f, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetFloatArray(effect, parameter, f, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetVector(ID3DXEffect25 *iface, D3DXHANDLE parameter, const D3DXVECTOR4 *vector)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetVector(effect, parameter, vector);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetVector(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXVECTOR4 *vector)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetVector(effect, parameter, vector);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetVectorArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, const D3DXVECTOR4 *vector, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetVectorArray(effect, parameter, vector, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetVectorArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXVECTOR4 *vector, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetVectorArray(effect, parameter, vector, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetMatrix(ID3DXEffect25 *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetMatrix(effect, parameter, matrix);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetMatrix(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetMatrix(effect, parameter, matrix);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetMatrixArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetMatrixArray(effect, parameter, matrix, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetMatrixArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetMatrixArray(effect, parameter, matrix, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetMatrixPointerArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, const D3DXMATRIX **matrix, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetMatrixPointerArray(effect, parameter, matrix, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetMatrixPointerArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXMATRIX **matrix, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetMatrixPointerArray(effect, parameter, matrix, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetMatrixTranspose(ID3DXEffect25 *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetMatrixTranspose(effect, parameter, matrix);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetMatrixTranspose(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetMatrixTranspose(effect, parameter, matrix);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetMatrixTransposeArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetMatrixTransposeArray(effect, parameter, matrix, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetMatrixTransposeArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetMatrixTransposeArray(effect, parameter, matrix, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetMatrixTransposePointerArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, const D3DXMATRIX **matrix, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetMatrixTransposePointerArray(effect, parameter, matrix, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetMatrixTransposePointerArray(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXMATRIX **matrix, UINT count)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetMatrixTransposePointerArray(effect, parameter, matrix, count);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetString(ID3DXEffect25 *iface, D3DXHANDLE parameter, LPCSTR string)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetString(effect, parameter, string);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetString(ID3DXEffect25 *iface, D3DXHANDLE parameter, LPCSTR *string)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetString(effect, parameter, string);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetTexture(ID3DXEffect25 *iface, D3DXHANDLE parameter, IDirect3DBaseTexture9 *texture)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetTexture(effect, parameter, texture);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetTexture(ID3DXEffect25 *iface, D3DXHANDLE parameter, IDirect3DBaseTexture9 **texture)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetTexture(effect, parameter, texture);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetPixelShader(ID3DXEffect25 *iface, D3DXHANDLE parameter, IDirect3DPixelShader9 **pshader)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetPixelShader(effect, parameter, pshader);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetVertexShader(ID3DXEffect25 *iface, D3DXHANDLE parameter, IDirect3DVertexShader9 **vshader)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetVertexShader(effect, parameter, vshader);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetArrayRange(ID3DXEffect25 *iface, D3DXHANDLE parameter, UINT start, UINT end)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetArrayRange(effect, parameter, start, end);
}
/*** ID3DXEffect25 methods ***/
static HRESULT WINAPI ID3DXEffect25Impl_GetPool(ID3DXEffect25 *iface, ID3DXEffectPool **pool)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetPool(effect, pool);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetTechnique(ID3DXEffect25 *iface, D3DXHANDLE technique)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetTechnique(effect, technique);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_GetCurrentTechnique(ID3DXEffect25 *iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetCurrentTechnique(effect);
}
static HRESULT WINAPI ID3DXEffect25Impl_ValidateTechnique(ID3DXEffect25 *iface, D3DXHANDLE technique)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->ValidateTechnique(effect, technique);
}
static HRESULT WINAPI ID3DXEffect25Impl_FindNextValidTechnique(ID3DXEffect25 *iface, D3DXHANDLE technique, D3DXHANDLE *next_technique)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->FindNextValidTechnique(effect, technique, next_technique);
}
static BOOL WINAPI ID3DXEffect25Impl_IsParameterUsed(ID3DXEffect25 *iface, D3DXHANDLE parameter, D3DXHANDLE technique)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->IsParameterUsed(effect, parameter, technique);
}
static HRESULT WINAPI ID3DXEffect25Impl_Begin(ID3DXEffect25 *iface, UINT *passes, DWORD flags)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->Begin(effect, passes, flags);
}
static HRESULT WINAPI ID3DXEffect25Impl_BeginPass(ID3DXEffect25 *iface, UINT pass)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->BeginPass(effect, pass);
}
static HRESULT WINAPI ID3DXEffect25Impl_CommitChanges(ID3DXEffect25 *iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->CommitChanges(effect);
}
static HRESULT WINAPI ID3DXEffect25Impl_EndPass(ID3DXEffect25 *iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->EndPass(effect);
}
static HRESULT WINAPI ID3DXEffect25Impl_End(ID3DXEffect25 *iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->End(effect);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetDevice(ID3DXEffect25 *iface, IDirect3DDevice9 **device)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetDevice(effect, device);
}
static HRESULT WINAPI ID3DXEffect25Impl_OnLostDevice(ID3DXEffect25* iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->OnLostDevice(effect);
}
static HRESULT WINAPI ID3DXEffect25Impl_OnResetDevice(ID3DXEffect25* iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->OnResetDevice(effect);
}
static HRESULT WINAPI ID3DXEffect25Impl_SetStateManager(ID3DXEffect25 *iface, ID3DXEffectStateManager *manager)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->SetStateManager(effect, manager);
}
static HRESULT WINAPI ID3DXEffect25Impl_GetStateManager(ID3DXEffect25 *iface, ID3DXEffectStateManager **manager)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->GetStateManager(effect, manager);
}
static HRESULT WINAPI ID3DXEffect25Impl_BeginParameterBlock(ID3DXEffect25 *iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->BeginParameterBlock(effect);
}
static D3DXHANDLE WINAPI ID3DXEffect25Impl_EndParameterBlock(ID3DXEffect25 *iface)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->EndParameterBlock(effect);
}
static HRESULT WINAPI ID3DXEffect25Impl_ApplyParameterBlock(ID3DXEffect25 *iface, D3DXHANDLE parameter_block)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
TRACE("Forward iface %p, effect %p\n", This, effect);
return effect->lpVtbl->ApplyParameterBlock(effect, parameter_block);
}
static HRESULT WINAPI ID3DXEffect25Impl_CloneEffect(ID3DXEffect25 *iface, IDirect3DDevice9 *device, ID3DXEffect25 **clone)
{
struct ID3DXEffect25Impl *This = impl_from_ID3DXEffect25(iface);
ID3DXEffect *effect = This->effect;
struct ID3DXEffect25Impl *object;
HRESULT hr;
TRACE("Forward iface %p, effect %p\n", This, effect);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
if (!object)
{
ERR("Out of memory\n");
return E_OUTOFMEMORY;
}
object->ID3DXEffect25_iface.lpVtbl = &ID3DXEffect25_Vtbl;
object->ref = 1;
hr = effect->lpVtbl->CloneEffect(effect, device, &object->effect);
if (FAILED(hr))
{
WARN("Failed to clone effect\n");
HeapFree(GetProcessHeap(), 0, object);
return hr;
}
*clone = &object->ID3DXEffect25_iface;
TRACE("Created ID3DXEffect %p\n", clone);
return hr;
}
static const struct ID3DXEffect25Vtbl ID3DXEffect25_Vtbl =
{
/*** IUnknown methods ***/
ID3DXEffect25Impl_QueryInterface,
ID3DXEffect25Impl_AddRef,
ID3DXEffect25Impl_Release,
/*** ID3DXBaseEffect methods ***/
ID3DXEffect25Impl_GetDesc,
ID3DXEffect25Impl_GetParameterDesc,
ID3DXEffect25Impl_GetTechniqueDesc,
ID3DXEffect25Impl_GetPassDesc,
ID3DXEffect25Impl_GetFunctionDesc,
ID3DXEffect25Impl_GetParameter,
ID3DXEffect25Impl_GetParameterByName,
ID3DXEffect25Impl_GetParameterBySemantic,
ID3DXEffect25Impl_GetParameterElement,
ID3DXEffect25Impl_GetTechnique,
ID3DXEffect25Impl_GetTechniqueByName,
ID3DXEffect25Impl_GetPass,
ID3DXEffect25Impl_GetPassByName,
ID3DXEffect25Impl_GetFunction,
ID3DXEffect25Impl_GetFunctionByName,
ID3DXEffect25Impl_GetAnnotation,
ID3DXEffect25Impl_GetAnnotationByName,
ID3DXEffect25Impl_SetValue,
ID3DXEffect25Impl_GetValue,
ID3DXEffect25Impl_SetBool,
ID3DXEffect25Impl_GetBool,
ID3DXEffect25Impl_SetBoolArray,
ID3DXEffect25Impl_GetBoolArray,
ID3DXEffect25Impl_SetInt,
ID3DXEffect25Impl_GetInt,
ID3DXEffect25Impl_SetIntArray,
ID3DXEffect25Impl_GetIntArray,
ID3DXEffect25Impl_SetFloat,
ID3DXEffect25Impl_GetFloat,
ID3DXEffect25Impl_SetFloatArray,
ID3DXEffect25Impl_GetFloatArray,
ID3DXEffect25Impl_SetVector,
ID3DXEffect25Impl_GetVector,
ID3DXEffect25Impl_SetVectorArray,
ID3DXEffect25Impl_GetVectorArray,
ID3DXEffect25Impl_SetMatrix,
ID3DXEffect25Impl_GetMatrix,
ID3DXEffect25Impl_SetMatrixArray,
ID3DXEffect25Impl_GetMatrixArray,
ID3DXEffect25Impl_SetMatrixPointerArray,
ID3DXEffect25Impl_GetMatrixPointerArray,
ID3DXEffect25Impl_SetMatrixTranspose,
ID3DXEffect25Impl_GetMatrixTranspose,
ID3DXEffect25Impl_SetMatrixTransposeArray,
ID3DXEffect25Impl_GetMatrixTransposeArray,
ID3DXEffect25Impl_SetMatrixTransposePointerArray,
ID3DXEffect25Impl_GetMatrixTransposePointerArray,
ID3DXEffect25Impl_SetString,
ID3DXEffect25Impl_GetString,
ID3DXEffect25Impl_SetTexture,
ID3DXEffect25Impl_GetTexture,
ID3DXEffect25Impl_GetPixelShader,
ID3DXEffect25Impl_GetVertexShader,
ID3DXEffect25Impl_SetArrayRange,
/*** ID3DXEffect25 methods ***/
ID3DXEffect25Impl_GetPool,
ID3DXEffect25Impl_SetTechnique,
ID3DXEffect25Impl_GetCurrentTechnique,
ID3DXEffect25Impl_ValidateTechnique,
ID3DXEffect25Impl_FindNextValidTechnique,
ID3DXEffect25Impl_IsParameterUsed,
ID3DXEffect25Impl_Begin,
ID3DXEffect25Impl_BeginPass,
ID3DXEffect25Impl_CommitChanges,
ID3DXEffect25Impl_EndPass,
ID3DXEffect25Impl_End,
ID3DXEffect25Impl_GetDevice,
ID3DXEffect25Impl_OnLostDevice,
ID3DXEffect25Impl_OnResetDevice,
ID3DXEffect25Impl_SetStateManager,
ID3DXEffect25Impl_GetStateManager,
ID3DXEffect25Impl_BeginParameterBlock,
ID3DXEffect25Impl_EndParameterBlock,
ID3DXEffect25Impl_ApplyParameterBlock,
ID3DXEffect25Impl_CloneEffect,
};
HRESULT WINAPI D3DXCreateEffectEx25(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatalen,
const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants, DWORD flags,
struct ID3DXEffectPool *pool, struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
struct ID3DXEffect25Impl *object;
HRESULT hr;
TRACE("device %p, srcdata %p, srcdatalen %u, defines %p, include %p, "
"skip_constants %s, flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, srcdata, srcdatalen, defines, include,
debugstr_a(skip_constants), flags, pool, effect, compilation_errors);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
if (!object)
{
ERR("Out of memory\n");
return E_OUTOFMEMORY;
}
object->ID3DXEffect25_iface.lpVtbl = &ID3DXEffect25_Vtbl;
object->ref = 1;
hr = D3DXCreateEffectEx(device, srcdata, srcdatalen, defines, include,
skip_constants, flags, pool, &object->effect, compilation_errors);
if (FAILED(hr))
{
WARN("Failed to create effect\n");
HeapFree(GetProcessHeap(), 0, object);
return hr;
}
*effect = &object->ID3DXEffect25_iface;
TRACE("Created ID3DXEffect25 %p\n", object);
return hr;
}
HRESULT WINAPI D3DXCreateEffect25(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatalen,
const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
struct ID3DXEffectPool *pool, struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
TRACE("device %p, srcdata %p, srcdatalen %u, defines %p, include %p, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, srcdata, srcdatalen, defines, include, flags, pool, effect, compilation_errors);
return D3DXCreateEffectEx25(device, srcdata, srcdatalen, defines, include, NULL, flags, pool, effect, compilation_errors);
}
HRESULT WINAPI D3DXCreateEffectFromFileExW25(struct IDirect3DDevice9 *device, const WCHAR *srcfile,
const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants, DWORD flags,
struct ID3DXEffectPool *pool, struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
struct ID3DXEffect25Impl *object;
HRESULT hr;
TRACE("device %p, srcfile %s, defines %p, include %p, skip_constants %s, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, debugstr_w(srcfile), defines, include, debugstr_a(skip_constants),
flags, pool, effect, compilation_errors);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
if (!object)
{
ERR("Out of memory\n");
return E_OUTOFMEMORY;
}
object->ID3DXEffect25_iface.lpVtbl = &ID3DXEffect25_Vtbl;
object->ref = 1;
hr = D3DXCreateEffectFromFileExW(device, srcfile, defines, include,
skip_constants, flags, pool, &object->effect, compilation_errors);
if (FAILED(hr))
{
WARN("Failed to create effect\n");
HeapFree(GetProcessHeap(), 0, object);
return hr;
}
*effect = &object->ID3DXEffect25_iface;
TRACE("Created ID3DXEffect25 %p\n", object);
return hr;
}
HRESULT WINAPI D3DXCreateEffectFromFileExA25(struct IDirect3DDevice9 *device, const char *srcfile,
const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants, DWORD flags,
struct ID3DXEffectPool *pool, struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
struct ID3DXEffect25Impl *object;
HRESULT hr;
TRACE("device %p, srcfile %s, defines %p, include %p, skip_constants %s, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, debugstr_a(srcfile), defines, include, debugstr_a(skip_constants),
flags, pool, effect, compilation_errors);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
if (!object)
{
ERR("Out of memory\n");
return E_OUTOFMEMORY;
}
object->ID3DXEffect25_iface.lpVtbl = &ID3DXEffect25_Vtbl;
object->ref = 1;
hr = D3DXCreateEffectFromFileExA(device, srcfile, defines, include, skip_constants, flags,
pool, &object->effect, compilation_errors);
if (FAILED(hr))
{
WARN("Failed to create effect\n");
HeapFree(GetProcessHeap(), 0, object);
return hr;
}
*effect = &object->ID3DXEffect25_iface;
TRACE("Created ID3DXEffect25 %p\n", object);
return hr;
}
HRESULT WINAPI D3DXCreateEffectFromFileW25(struct IDirect3DDevice9 *device, const WCHAR *srcfile,
const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool,
struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
TRACE("device %p, srcfile %s, defines %p, include %p, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, debugstr_w(srcfile), defines, include, flags, pool, effect, compilation_errors);
return D3DXCreateEffectFromFileExW25(device, srcfile, defines, include, NULL, flags, pool, effect, compilation_errors);
}
HRESULT WINAPI D3DXCreateEffectFromFileA25(struct IDirect3DDevice9 *device, const char *srcfile,
const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool,
struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
TRACE("device %p, srcfile %s, defines %p, include %p, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, debugstr_a(srcfile), defines, include, flags, pool, effect, compilation_errors);
return D3DXCreateEffectFromFileExA25(device, srcfile, defines, include, NULL, flags, pool, effect, compilation_errors);
}
HRESULT WINAPI D3DXCreateEffectFromResourceExW25(struct IDirect3DDevice9 *device, HMODULE srcmodule,
const WCHAR *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants,
DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
struct ID3DXEffect25Impl *object;
HRESULT hr;
TRACE("device %p, srcmodule %p, srcresource %s, defines %p, include %p, skip_constants %s, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, srcmodule, debugstr_w(srcresource), defines, include, debugstr_a(skip_constants),
flags, pool, effect, compilation_errors);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
if (!object)
{
ERR("Out of memory\n");
return E_OUTOFMEMORY;
}
object->ID3DXEffect25_iface.lpVtbl = &ID3DXEffect25_Vtbl;
object->ref = 1;
hr = D3DXCreateEffectFromResourceExW(device, srcmodule, srcresource, defines, include,
skip_constants, flags, pool, &object->effect, compilation_errors);
if (FAILED(hr))
{
WARN("Failed to create effect\n");
HeapFree(GetProcessHeap(), 0, object);
return hr;
}
*effect = &object->ID3DXEffect25_iface;
TRACE("Created ID3DXEffect25 %p\n", object);
return hr;
}
HRESULT WINAPI D3DXCreateEffectFromResourceExA25(struct IDirect3DDevice9 *device, HMODULE srcmodule,
const char *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants,
DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
struct ID3DXEffect25Impl *object;
HRESULT hr;
TRACE("device %p, srcmodule %p, srcresource %s, defines %p, include %p, skip_constants %s, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, srcmodule, debugstr_a(srcresource), defines, include, debugstr_a(skip_constants),
flags, pool, effect, compilation_errors);
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
if (!object)
{
ERR("Out of memory\n");
return E_OUTOFMEMORY;
}
object->ID3DXEffect25_iface.lpVtbl = &ID3DXEffect25_Vtbl;
object->ref = 1;
hr = D3DXCreateEffectFromResourceExA(device, srcmodule, srcresource, defines, include,
skip_constants, flags, pool, &object->effect, compilation_errors);
if (FAILED(hr))
{
WARN("Failed to create effect\n");
HeapFree(GetProcessHeap(), 0, object);
return hr;
}
*effect = &object->ID3DXEffect25_iface;
TRACE("Created ID3DXEffect25 %p\n", object);
return hr;
}
HRESULT WINAPI D3DXCreateEffectFromResourceW25(struct IDirect3DDevice9 *device, HMODULE srcmodule,
const WCHAR *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
struct ID3DXEffectPool *pool, struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
TRACE("device %p, srcmodule %p, srcresource %s, defines %p, include %p, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, srcmodule, debugstr_w(srcresource), defines, include,
flags, pool, effect, compilation_errors);
return D3DXCreateEffectFromResourceExW25(device, srcmodule, srcresource, defines, include, NULL,
flags, pool, effect, compilation_errors);
}
HRESULT WINAPI D3DXCreateEffectFromResourceA25(struct IDirect3DDevice9 *device, HMODULE srcmodule,
const char *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
struct ID3DXEffectPool *pool, struct ID3DXEffect25 **effect, struct ID3DXBuffer **compilation_errors)
{
TRACE("device %p, srcmodule %p, srcresource %s, defines %p, include %p, "
"flags %#x, pool %p, effect %p, compilation_errors %p.\n",
device, srcmodule, debugstr_a(srcresource), defines, include,
flags, pool, effect, compilation_errors);
return D3DXCreateEffectFromResourceExA25(device, srcmodule, srcresource, defines, include, NULL,
flags, pool, effect, compilation_errors);
}
HRESULT WINAPI D3DXDisassembleEffect25(ID3DXEffect25 *effect, BOOL enable_color_code, ID3DXBuffer **disassembly)
{
struct ID3DXEffect25Impl *object = impl_from_ID3DXEffect25(effect);
TRACE("effect %p, enable_color_code %u, disassembly %p.\n",
effect, enable_color_code, disassembly);
return D3DXDisassembleEffect(object->effect, enable_color_code, disassembly);
}