[PATCH] d3dx9: Implement ID3DXFont_GetDesc

Tony Wasserka tony.wasserka at freenet.de
Fri Jun 5 06:26:11 CDT 2009


---
 dlls/d3dx9_36/d3dx9_36_private.h |    1 +
 dlls/d3dx9_36/font.c             |   14 ++++++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx9_36/d3dx9_36_private.h b/dlls/d3dx9_36/d3dx9_36_private.h
index 5891794..5d3d329 100644
--- a/dlls/d3dx9_36/d3dx9_36_private.h
+++ b/dlls/d3dx9_36/d3dx9_36_private.h
@@ -42,6 +42,7 @@ typedef struct ID3DXFontImpl
 
     /* ID3DXFont fields */
     IDirect3DDevice9 *device;
+    D3DXFONT_DESCW desc;
 } ID3DXFontImpl;
 
 
diff --git a/dlls/d3dx9_36/font.c b/dlls/d3dx9_36/font.c
index e7f770c..1de0634 100644
--- a/dlls/d3dx9_36/font.c
+++ b/dlls/d3dx9_36/font.c
@@ -76,14 +76,23 @@ static HRESULT WINAPI ID3DXFontImpl_GetDevice(LPD3DXFONT iface, LPDIRECT3DDEVICE
 static HRESULT WINAPI ID3DXFontImpl_GetDescA(LPD3DXFONT iface, D3DXFONT_DESCA *desc)
 {
     ID3DXFontImpl *This=(ID3DXFontImpl*)iface;
-    FIXME("(%p): stub\n", This);
+    TRACE("(%p)\n", This);
+
+    if( !desc ) return D3DERR_INVALIDCALL;
+    memcpy(desc, &This->desc, FIELD_OFFSET(D3DXFONT_DESCA, FaceName));
+    WideCharToMultiByte(CP_ACP, 0, This->desc.FaceName, -1, desc->FaceName, sizeof(desc->FaceName) / sizeof(CHAR), NULL, NULL);
+
     return D3D_OK;
 }
 
 static HRESULT WINAPI ID3DXFontImpl_GetDescW(LPD3DXFONT iface, D3DXFONT_DESCW *desc)
 {
     ID3DXFontImpl *This=(ID3DXFontImpl*)iface;
-    FIXME("(%p): stub\n", This);
+    TRACE("(%p)\n", This);
+
+    if( !desc ) return D3DERR_INVALIDCALL;
+    *desc = This->desc;
+
     return D3D_OK;
 }
 
@@ -289,6 +298,7 @@ HRESULT WINAPI D3DXCreateFontIndirectW(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_
     object->lpVtbl=&D3DXFont_Vtbl;
     object->ref=1;
     object->device=device;
+    object->desc=*desc;
 
     IDirect3DDevice9_AddRef(device);
     *font=(LPD3DXFONT)object;
-- 
1.6.0.2


--------------030505020202000100000803--



More information about the wine-patches mailing list