Commit 4e2959ab authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

gdiplus: Make GdipMeasureCharacterRanges use common font transformation code.

parent 7a1ccd8a
......@@ -4927,8 +4927,7 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics,
{
GpStatus stat;
int i;
LOGFONTW lfw;
HFONT oldfont;
HFONT gdifont, oldfont;
struct measure_ranges_args args;
HDC hdc, temp_hdc=NULL;
GpPointF pt[3];
......@@ -4971,8 +4970,8 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics,
scaled_rect.Width = layoutRect->Width * args.rel_width;
scaled_rect.Height = layoutRect->Height * args.rel_height;
get_log_fontW(font, graphics, &lfw);
oldfont = SelectObject(hdc, CreateFontIndirectW(&lfw));
get_font_hfont(graphics, font, &gdifont);
oldfont = SelectObject(hdc, gdifont);
for (i=0; i<stringFormat->range_count; i++)
{
......@@ -4986,7 +4985,8 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics,
stat = gdip_format_string(hdc, string, length, font, &scaled_rect, stringFormat,
measure_ranges_callback, &args);
DeleteObject(SelectObject(hdc, oldfont));
SelectObject(hdc, oldfont);
DeleteObject(gdifont);
if (temp_hdc)
DeleteDC(temp_hdc);
......
......@@ -3828,9 +3828,13 @@ static void test_font_height_scaling(void)
win_skip("GdipMeasureCharacterRanges ignores units before Win7\n");
continue;
}
/* FIXME: Wine uses integer gdi32 regions and rounding breaks things */
if (height < 1.0)
expectf_(height, rect.Height, height / 15.0);
else
todo_wine
expectf_(bounds.Width, rect.Width + margin * 2.0, bounds.Width / 25.0);
expectf_(height, rect.Height, height / 15.0);
expectf_(bounds.Width, rect.Width + margin * 2.0, bounds.Width / 15.0);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment