Module: wine Branch: master Commit: 1eb2913ad6aed783fe18b765859821e7590bbb32 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1eb2913ad6aed783fe18b76585...
Author: Nikolay Sivov nsivov@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); }