- Merge from trunk up to r45543
[reactos.git] / dll / directx / wine / d3dx9_36 / shader.c
index 48499ac..c05f7b7 100644 (file)
 #include "config.h"
 #include "wine/port.h"
 #include "wine/debug.h"
+#include "wine/unicode.h"
 #include "windef.h"
 #include "wingdi.h"
 #include "d3dx9.h"
+#include "d3dx9_36_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
 
@@ -131,3 +133,90 @@ LPCSTR WINAPI D3DXGetVertexShaderProfile(LPDIRECT3DDEVICE9 device)
 
     return NULL;
 }
+
+HRESULT WINAPI D3DXAssembleShader(LPCSTR data,
+                                  UINT data_len,
+                                  CONST D3DXMACRO* defines,
+                                  LPD3DXINCLUDE include,
+                                  DWORD flags,
+                                  LPD3DXBUFFER* shader,
+                                  LPD3DXBUFFER* error_messages)
+{
+    FIXME("stub\n");
+    return D3DERR_INVALIDCALL;
+}
+
+HRESULT WINAPI D3DXAssembleShaderFromFileA(LPCSTR filename,
+                                           CONST D3DXMACRO* defines,
+                                           LPD3DXINCLUDE include,
+                                           DWORD flags,
+                                           LPD3DXBUFFER* shader,
+                                           LPD3DXBUFFER* error_messages)
+{
+    LPWSTR filename_w = NULL;
+    DWORD len;
+    HRESULT ret;
+
+    if (!filename) return D3DXERR_INVALIDDATA;
+
+    len = MultiByteToWideChar(CP_ACP, 0, filename, -1, NULL, 0);
+    filename_w = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+    if (!filename_w) return E_OUTOFMEMORY;
+    MultiByteToWideChar(CP_ACP, 0, filename, -1, filename_w, len);
+
+    ret = D3DXAssembleShaderFromFileW(filename_w, defines, include, flags, shader, error_messages);
+
+    HeapFree(GetProcessHeap(), 0, filename_w);
+    return ret;
+}
+
+HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR filename,
+                                           CONST D3DXMACRO* defines,
+                                           LPD3DXINCLUDE include,
+                                           DWORD flags,
+                                           LPD3DXBUFFER* shader,
+                                           LPD3DXBUFFER* error_messages)
+{
+    FIXME("stub\n");
+    return D3DERR_INVALIDCALL;
+}
+
+HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module,
+                                               LPCSTR resource,
+                                               CONST D3DXMACRO* defines,
+                                               LPD3DXINCLUDE include,
+                                               DWORD flags,
+                                               LPD3DXBUFFER* shader,
+                                               LPD3DXBUFFER* error_messages)
+{
+    HRSRC res;
+    LPCSTR buffer;
+    DWORD len;
+
+    if (!(res = FindResourceA(module, resource, (LPCSTR)RT_RCDATA)))
+        return D3DXERR_INVALIDDATA;
+    if (FAILED(load_resource_into_memory(module, res, (LPVOID *)&buffer, &len)))
+        return D3DXERR_INVALIDDATA;
+    return D3DXAssembleShader(buffer, len, defines, include, flags,
+                              shader, error_messages);
+}
+
+HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE module,
+                                               LPCWSTR resource,
+                                               CONST D3DXMACRO* defines,
+                                               LPD3DXINCLUDE include,
+                                               DWORD flags,
+                                               LPD3DXBUFFER* shader,
+                                               LPD3DXBUFFER* error_messages)
+{
+    HRSRC res;
+    LPCSTR buffer;
+    DWORD len;
+
+    if (!(res = FindResourceW(module, resource, (LPCWSTR)RT_RCDATA)))
+        return D3DXERR_INVALIDDATA;
+    if (FAILED(load_resource_into_memory(module, res, (LPVOID *)&buffer, &len)))
+        return D3DXERR_INVALIDDATA;
+    return D3DXAssembleShader(buffer, len, defines, include, flags,
+                              shader, error_messages);
+}