Dmitry Timoshkov : gdiplus: Retrieve LOGFONT from a GpFont using GdipGetLogFontW instead of accessing it directly .
Alexandre Julliard
julliard at winehq.org
Fri May 11 11:09:15 CDT 2012
Module: wine
Branch: master
Commit: 2c93bf7e4e469b36d3244f5a5f3c3c0ca0e0d897
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2c93bf7e4e469b36d3244f5a5f3c3c0ca0e0d897
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Fri May 11 19:19:21 2012 +0900
gdiplus: Retrieve LOGFONT from a GpFont using GdipGetLogFontW instead of accessing it directly.
---
dlls/gdiplus/graphics.c | 12 +++++++-----
dlls/gdiplus/graphicspath.c | 5 ++++-
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index a5e3eb2..38335a8 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -2136,15 +2136,13 @@ void get_font_hfont(GpGraphics *graphics, GDIPCONST GpFont *font, HFONT *hfont)
rel_height = sqrt((pt[2].Y-pt[0].Y)*(pt[2].Y-pt[0].Y)+
(pt[2].X-pt[0].X)*(pt[2].X-pt[0].X));
- lfw = font->lfw;
- lfw.lfHeight = roundr(-font->pixel_size * rel_height);
+ GdipGetLogFontW((GpFont *)font, graphics, &lfw);
+ lfw.lfHeight = roundr(lfw.lfHeight * rel_height);
unscaled_font = CreateFontIndirectW(&lfw);
SelectObject(hdc, unscaled_font);
GetTextMetricsW(hdc, &textmet);
- lfw = font->lfw;
- lfw.lfHeight = roundr(-font->pixel_size * rel_height);
lfw.lfWidth = roundr(textmet.tmAveCharWidth * rel_width / rel_height);
lfw.lfEscapement = lfw.lfOrientation = roundr((angle / M_PI) * 1800.0);
@@ -4919,6 +4917,7 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics,
{
GpStatus stat;
int i;
+ LOGFONTW lfw;
HFONT oldfont;
struct measure_ranges_args args;
HDC hdc, temp_hdc=NULL;
@@ -4932,6 +4931,9 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics,
if (regionCount < stringFormat->range_count)
return InvalidParameter;
+ stat = GdipGetLogFontW((GpFont *)font, graphics, &lfw);
+ if (stat != Ok) return stat;
+
if(!graphics->hdc)
{
hdc = temp_hdc = CreateCompatibleDC(0);
@@ -4943,7 +4945,7 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics,
if (stringFormat->attr)
TRACE("may be ignoring some format flags: attr %x\n", stringFormat->attr);
- oldfont = SelectObject(hdc, CreateFontIndirectW(&font->lfw));
+ oldfont = SelectObject(hdc, CreateFontIndirectW(&lfw));
for (i=0; i<stringFormat->range_count; i++)
{
diff --git a/dlls/gdiplus/graphicspath.c b/dlls/gdiplus/graphicspath.c
index d37512e..5da53b2 100644
--- a/dlls/gdiplus/graphicspath.c
+++ b/dlls/gdiplus/graphicspath.c
@@ -942,6 +942,7 @@ GpStatus WINGDIPAPI GdipAddPathString(GpPath* path, GDIPCONST WCHAR* string, INT
{
GpFont *font;
GpStatus status;
+ LOGFONTW lfw;
HANDLE hfont;
HDC dc;
GpPath *backup;
@@ -956,7 +957,9 @@ GpStatus WINGDIPAPI GdipAddPathString(GpPath* path, GDIPCONST WCHAR* string, INT
if (status != Ok)
return status;
- hfont = CreateFontIndirectW(&font->lfw);
+ status = GdipGetLogFontW((GpFont *)font, NULL, &lfw);
+ if (status != Ok) return status;
+ hfont = CreateFontIndirectW(&lfw);
if (!hfont)
{
WARN("Failed to create font\n");
More information about the wine-cvs
mailing list