Nikolay Sivov : dwrite: Added GetCurrentTransform() for a render target.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Aug 5 18:03:06 CDT 2014


Module: wine
Branch: master
Commit: 1eb2913ad6aed783fe18b765859821e7590bbb32
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1eb2913ad6aed783fe18b765859821e7590bbb32

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Aug  1 23:11:10 2014 +0400

dwrite: Added GetCurrentTransform() for a render target.

---

 dlls/dwrite/gdiinterop.c | 12 ++++++++++--
 dlls/dwrite/tests/font.c | 11 +++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/dlls/dwrite/gdiinterop.c b/dlls/dwrite/gdiinterop.c
index 4b26197..73da1d2 100644
--- a/dlls/dwrite/gdiinterop.c
+++ b/dlls/dwrite/gdiinterop.c
@@ -36,6 +36,7 @@ struct rendertarget {
     IDWriteBitmapRenderTarget IDWriteBitmapRenderTarget_iface;
     LONG ref;
 
+    DWRITE_MATRIX m;
     SIZE size;
     HDC hdc;
 };
@@ -144,8 +145,11 @@ static HRESULT WINAPI rendertarget_SetPixelsPerDip(IDWriteBitmapRenderTarget *if
 static HRESULT WINAPI rendertarget_GetCurrentTransform(IDWriteBitmapRenderTarget *iface, DWRITE_MATRIX *transform)
 {
     struct rendertarget *This = impl_from_IDWriteBitmapRenderTarget(iface);
-    FIXME("(%p)->(%p): stub\n", This, transform);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, transform);
+
+    *transform = This->m;
+    return S_OK;
 }
 
 static HRESULT WINAPI rendertarget_SetCurrentTransform(IDWriteBitmapRenderTarget *iface, DWRITE_MATRIX const *transform)
@@ -213,6 +217,10 @@ static HRESULT create_rendertarget(HDC hdc, UINT32 width, UINT32 height, IDWrite
         return hr;
     }
 
+    target->m.m11 = target->m.m22 = 1.0;
+    target->m.m12 = target->m.m21 = 0.0;
+    target->m.dx  = target->m.dy  = 0.0;
+
     *ret = &target->IDWriteBitmapRenderTarget_iface;
 
     return S_OK;
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index 8460f12..50b01a8 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -199,6 +199,7 @@ static void test_CreateBitmapRenderTarget(void)
     IDWriteBitmapRenderTarget *target, *target2;
     IDWriteGdiInterop *interop;
     HBITMAP hbm, hbm2;
+    DWRITE_MATRIX m;
     DIBSECTION ds;
     HRESULT hr;
     SIZE size;
@@ -321,6 +322,16 @@ if (0) /* crashes on native */
     ok(ds.dsBm.bmBitsPixel == 1, "got %d\n", ds.dsBm.bmBitsPixel);
     ok(!ds.dsBm.bmBits, "got %p\n", ds.dsBm.bmBits);
 
+    /* transform tests */
+if (0) /* crashes on native */
+    hr = IDWriteBitmapRenderTarget_GetCurrentTransform(target, NULL);
+
+    memset(&m, 0xcc, sizeof(m));
+    hr = IDWriteBitmapRenderTarget_GetCurrentTransform(target, &m);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    ok(m.m11 == 1.0 && m.m22 == 1.0 && m.m12 == 0.0 && m.m21 == 0.0, "got %.1f,%.1f,%.1f,%.1f\n", m.m11, m.m22, m.m12, m.m21);
+    ok(m.dx == 0.0 && m.dy == 0.0, "got %.1f,%.1f\n", m.dx, m.dy);
+
     IDWriteBitmapRenderTarget_Release(target);
     IDWriteGdiInterop_Release(interop);
 }




More information about the wine-cvs mailing list