dwrite: Implement InvalidateLayout().

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2016-02-17 00:19:39 +03:00 committed by Alexandre Julliard
parent 9efd13503d
commit 5753e22d21
3 changed files with 40 additions and 4 deletions

View File

@ -3586,8 +3586,11 @@ static HRESULT WINAPI dwritetextlayout2_GetFontFallback(IDWriteTextLayout3 *ifac
static HRESULT WINAPI dwritetextlayout3_InvalidateLayout(IDWriteTextLayout3 *iface)
{
struct dwrite_textlayout *This = impl_from_IDWriteTextLayout3(iface);
FIXME("(%p): stub\n", This);
return E_NOTIMPL;
TRACE("(%p)\n", This);
This->recompute = RECOMPUTE_EVERYTHING;
return S_OK;
}
static HRESULT WINAPI dwritetextlayout3_SetLineSpacing(IDWriteTextLayout3 *iface, DWRITE_LINE_SPACING const *spacing)

View File

@ -27,7 +27,7 @@
#include "initguid.h"
#include "windows.h"
#include "dwrite_2.h"
#include "dwrite_3.h"
#include "wine/test.h"

View File

@ -25,7 +25,7 @@
#include <limits.h>
#include "windows.h"
#include "dwrite_2.h"
#include "dwrite_3.h"
#include "wine/test.h"
@ -4853,6 +4853,38 @@ todo_wine
IDWriteFactory_Release(factory);
}
static void test_InvalidateLayout(void)
{
static const WCHAR strW[] = {'a',0};
IDWriteTextLayout3 *layout3;
IDWriteTextLayout *layout;
IDWriteTextFormat *format;
IDWriteFactory *factory;
HRESULT hr;
factory = create_factory();
hr = IDWriteFactory_CreateTextFormat(factory, tahomaW, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
DWRITE_FONT_STRETCH_NORMAL, 10.0f, enusW, &format);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IDWriteFactory_CreateTextLayout(factory, strW, 1, format, 1000.0f, 1000.0f, &layout);
ok(hr == S_OK, "got 0x%08x\n", hr);
hr = IDWriteTextLayout_QueryInterface(layout, &IID_IDWriteTextLayout3, (void**)&layout3);
if (hr == S_OK) {
hr = IDWriteTextLayout3_InvalidateLayout(layout3);
ok(hr == S_OK, "got 0x%08x\n", hr);
IDWriteTextLayout3_Release(layout3);
}
else
win_skip("IDWriteTextLayout3::InvalidateLayout() is not supported.\n");
IDWriteTextLayout_Release(layout);
IDWriteTextFormat_Release(format);
IDWriteFactory_Release(factory);
}
START_TEST(layout)
{
IDWriteFactory *factory;
@ -4900,6 +4932,7 @@ START_TEST(layout)
test_SetLastLineWrapping();
test_SetOpticalAlignment();
test_SetUnderline();
test_InvalidateLayout();
IDWriteFactory_Release(factory);
}