Jacek Caban : gdi32: Directly use ntgdi functions in font.c.

Alexandre Julliard julliard at winehq.org
Fri Sep 10 15:29:46 CDT 2021


Module: wine
Branch: master
Commit: a8131cb3e709eeab34f1f4e2b078f1935a921e66
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a8131cb3e709eeab34f1f4e2b078f1935a921e66

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Sep 10 14:28:30 2021 +0200

gdi32: Directly use ntgdi functions in font.c.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/font.c | 51 +++++++++++++++++++++++++++------------------------
 1 file changed, 27 insertions(+), 24 deletions(-)

diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index d32e8b8fe40..5758a999561 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -3760,9 +3760,9 @@ static HFONT CDECL font_SelectFont( PHYSDEV dev, HFONT hfont, UINT *aa_flags )
     {
         LOGFONTW lf;
         FMAT2 dcmat;
-        BOOL can_use_bitmap = !!(GetDeviceCaps( dc->hSelf, TEXTCAPS ) & TC_RA_ABLE);
+        BOOL can_use_bitmap = !!(NtGdiGetDeviceCaps( dc->hSelf, TEXTCAPS ) & TC_RA_ABLE);
 
-        GetObjectW( hfont, sizeof(lf), &lf );
+        NtGdiExtGetObjectW( hfont, sizeof(lf), &lf );
         switch (lf.lfQuality)
         {
         case NONANTIALIASED_QUALITY:
@@ -4218,7 +4218,7 @@ static void update_font_code_page( DC *dc, HANDLE font )
     {
         LOGFONTW lf;
 
-        GetObjectW( font, sizeof(lf), &lf );
+        NtGdiExtGetObjectW( font, sizeof(lf), &lf );
         if (!(lf.lfClipPrecision & CLIP_DFA_DISABLE))
             charset = DEFAULT_CHARSET;
     }
@@ -4515,8 +4515,8 @@ BOOL WINAPI NtGdiGetTextMetricsW( HDC hdc, TEXTMETRICW *metrics, ULONG flags )
     /* device layer returns values in device units
      * therefore we have to convert them to logical */
 
-        metrics->tmDigitizedAspectX = GetDeviceCaps(hdc, LOGPIXELSX);
-        metrics->tmDigitizedAspectY = GetDeviceCaps(hdc, LOGPIXELSY);
+        metrics->tmDigitizedAspectX = NtGdiGetDeviceCaps(hdc, LOGPIXELSX);
+        metrics->tmDigitizedAspectY = NtGdiGetDeviceCaps(hdc, LOGPIXELSY);
         metrics->tmHeight           = height_to_LP( dc, metrics->tmHeight );
         metrics->tmAscent           = height_to_LP( dc, metrics->tmAscent );
         metrics->tmDescent          = height_to_LP( dc, metrics->tmDescent );
@@ -4578,8 +4578,8 @@ UINT WINAPI NtGdiGetOutlineTextMetricsInternalW( HDC hdc, UINT cbData,
 
     if (lpOTM && ret)
     {
-        output->otmTextMetrics.tmDigitizedAspectX = GetDeviceCaps(hdc, LOGPIXELSX);
-        output->otmTextMetrics.tmDigitizedAspectY = GetDeviceCaps(hdc, LOGPIXELSY);
+        output->otmTextMetrics.tmDigitizedAspectX = NtGdiGetDeviceCaps(hdc, LOGPIXELSX);
+        output->otmTextMetrics.tmDigitizedAspectY = NtGdiGetDeviceCaps(hdc, LOGPIXELSY);
         output->otmTextMetrics.tmHeight           = height_to_LP( dc, output->otmTextMetrics.tmHeight );
         output->otmTextMetrics.tmAscent           = height_to_LP( dc, output->otmTextMetrics.tmAscent );
         output->otmTextMetrics.tmDescent          = height_to_LP( dc, output->otmTextMetrics.tmDescent );
@@ -4700,7 +4700,7 @@ static DWORD get_glyph_bitmap( HDC hdc, UINT index, UINT flags, UINT aa_flags,
     for (i = 0; i < ARRAY_SIZE( indices ); i++)
     {
         index = indices[i];
-        ret = GetGlyphOutlineW( hdc, index, aa_flags, metrics, 0, NULL, &identity );
+        ret = NtGdiGetGlyphOutline( hdc, index, aa_flags, metrics, 0, NULL, &identity, FALSE );
         if (ret != GDI_ERROR) break;
     }
 
@@ -4722,7 +4722,8 @@ static DWORD get_glyph_bitmap( HDC hdc, UINT index, UINT flags, UINT aa_flags,
     image->is_copy = TRUE;
     image->free = free_heap_bits;
 
-    ret = GetGlyphOutlineW( hdc, index, aa_flags, metrics, size, image->ptr, &identity );
+    ret = NtGdiGetGlyphOutline( hdc, index, aa_flags, metrics, size, image->ptr,
+                                &identity, FALSE );
     if (ret == GDI_ERROR)
     {
         HeapFree( GetProcessHeap(), 0, image->ptr );
@@ -4811,7 +4812,11 @@ static void draw_glyph( DC *dc, INT origin_x, INT origin_y, const GLYPHMETRICS *
     }
     assert( count <= max_count );
     dp_to_lp( dc, pts, count );
-    for (i = 0; i < count; i += 2) Polyline( dc->hSelf, pts + i, 2 );
+    for (i = 0; i < count; i += 2)
+    {
+        const UINT pts_count = 2;
+        NtGdiPolyPolyDraw( dc->hSelf, pts + i, &pts_count, 1, NtGdiPolyPolyline );
+    }
     HeapFree( GetProcessHeap(), 0, pts );
 }
 
@@ -4830,7 +4835,8 @@ BOOL CDECL nulldrv_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, const RECT
     if (flags & ETO_OPAQUE)
     {
         RECT rc = *rect;
-        HBRUSH brush = CreateSolidBrush( NtGdiGetNearestColor( dev->hdc, dc->attr->background_color ));
+        COLORREF brush_color = NtGdiGetNearestColor( dev->hdc, dc->attr->background_color );
+        HBRUSH brush = NtGdiCreateSolidBrush( brush_color, NULL);
 
         if (brush)
         {
@@ -4922,7 +4928,7 @@ BOOL CDECL nulldrv_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, const RECT
         }
     }
 
-    pen = CreatePen( PS_SOLID, 1, dc->attr->text_color );
+    pen = NtGdiCreatePen( PS_SOLID, 1, dc->attr->text_color, NULL );
     orig = NtGdiSelectPen( dev->hdc, pen );
 
     for (i = 0; i < count; i++)
@@ -5062,8 +5068,8 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
         y = pt.y;
     }
 
-    GetTextMetricsW(hdc, &tm);
-    GetObjectW(dc->hFont, sizeof(lf), &lf);
+    NtGdiGetTextMetricsW( hdc, &tm, 0 );
+    NtGdiExtGetObjectW( dc->hFont, sizeof(lf), &lf );
 
     if(!(tm.tmPitchAndFamily & TMPF_VECTOR)) /* Non-scalable fonts shouldn't be rotated */
         lf.lfEscapement = 0;
@@ -5107,8 +5113,8 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
     x = pt.x;
     y = pt.y;
 
-    char_extra = GetTextCharacterExtra(hdc);
-    if (char_extra && lpDx && GetDeviceCaps( hdc, TECHNOLOGY ) == DT_RASPRINTER)
+    char_extra = dc->attr->char_extra;
+    if (char_extra && lpDx && NtGdiGetDeviceCaps( hdc, TECHNOLOGY ) == DT_RASPRINTER)
         char_extra = 0; /* Printer drivers don't add char_extra if lpDx is supplied */
 
     if(char_extra || dc->breakExtra || breakRem || lpDx || lf.lfEscapement != 0)
@@ -5185,10 +5191,7 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
     {
         POINT desired[2];
 
-        if(flags & ETO_GLYPH_INDEX)
-            GetTextExtentPointI(hdc, str, count, &sz);
-        else
-            GetTextExtentPointW(hdc, str, count, &sz);
+        NtGdiGetTextExtentExW( hdc, str, count, 0, NULL, NULL, &sz, !!(flags & ETO_GLYPH_INDEX) );
         desired[0].x = desired[0].y = 0;
         desired[1].x = sz.cx;
         desired[1].y = 0;
@@ -5216,7 +5219,7 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
             pt.x = x + width.x;
             pt.y = y + width.y;
             dp_to_lp(dc, &pt, 1);
-            MoveToEx(hdc, pt.x, pt.y, NULL);
+            NtGdiMoveTo( hdc, pt.x, pt.y, NULL );
         }
         break;
 
@@ -5233,7 +5236,7 @@ BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *lpr
             pt.x = x;
             pt.y = y;
             dp_to_lp(dc, &pt, 1);
-            MoveToEx(hdc, pt.x, pt.y, NULL);
+            NtGdiMoveTo( hdc, pt.x, pt.y, NULL );
         }
         break;
     }
@@ -5289,7 +5292,7 @@ done:
         OUTLINETEXTMETRICW* otm = NULL;
         POINT pts[5];
         HPEN hpen = NtGdiSelectPen( hdc, get_stock_object(NULL_PEN) );
-        HBRUSH hbrush = CreateSolidBrush( dc->attr->text_color );
+        HBRUSH hbrush = NtGdiCreateSolidBrush( dc->attr->text_color, NULL );
 
         hbrush = NtGdiSelectBrush(hdc, hbrush);
 
@@ -5821,7 +5824,7 @@ static BOOL CALLBACK load_enumed_resource(HMODULE hModule, LPCWSTR type, LPWSTR
     DWORD num_in_res;
 
     TRACE("Found resource %s - trying to load\n", wine_dbgstr_w(type));
-    if (!AddFontMemResourceEx(pMem, SizeofResource(hModule, rsrc), NULL, &num_in_res))
+    if (!NtGdiAddFontMemResourceEx( pMem, SizeofResource(hModule, rsrc), NULL, 0, &num_in_res ))
     {
         ERR("Failed to load PE font resource mod=%p ptr=%p\n", hModule, hMem);
         return FALSE;




More information about the wine-cvs mailing list