[WIN32SS][FONT] Fix font metrics (#713)
[reactos.git] / win32ss / gdi / ntgdi / text.c
index bbab094..ec0503f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * PROJECT:         ReactOS win32 kernel mode subsystem
  * LICENSE:         GPL - See COPYING in the top level directory
- * FILE:            subsystems/win32/win32k/objects/text.c
+ * FILE:            win32ss/gdi/ntgdi/text.c
  * PURPOSE:         Text/Font
  * PROGRAMMER:
  */
@@ -23,7 +23,7 @@ GreTextOutW(
     LPCWSTR  lpString,
     int  cchString)
 {
-    return GreExtTextOutW(hdc, nXStart, nYStart, 0, NULL, (LPWSTR)lpString, cchString, NULL, 0);
+    return GreExtTextOutW(hdc, nXStart, nYStart, 0, NULL, lpString, cchString, NULL, 0);
 }
 
 /*
@@ -35,7 +35,7 @@ BOOL
 FASTCALL
 GreGetTextExtentW(
     HDC hDC,
-    LPWSTR lpwsz,
+    LPCWSTR lpwsz,
     INT cwc,
     LPSIZE psize,
     UINT flOpts)
@@ -92,7 +92,7 @@ BOOL
 FASTCALL
 GreGetTextExtentExW(
     HDC hDC,
-    LPWSTR String,
+    LPCWSTR String,
     ULONG Count,
     ULONG MaxExtent,
     PULONG Fit,
@@ -146,6 +146,18 @@ GreGetTextExtentExW(
     return Result;
 }
 
+BOOL 
+WINAPI
+GreGetTextMetricsW(
+    _In_  HDC hdc,
+    _Out_ LPTEXTMETRICW lptm)
+{
+   TMW_INTERNAL tmwi;
+   if (!ftGdiGetTextMetricsW(hdc, &tmwi)) return FALSE;
+   *lptm = tmwi.TextMetric;
+   return TRUE;
+}
+
 DWORD
 APIENTRY
 NtGdiGetCharSet(HDC hDC)
@@ -484,7 +496,8 @@ NtGdiGetTextFaceW(
     HFONT hFont;
     PTEXTOBJ TextObj;
     NTSTATUS Status;
-    INT fLen, ret;
+    SIZE_T fLen;
+    INT ret;
 
     /* FIXME: Handle bAliasName */
 
@@ -500,12 +513,12 @@ NtGdiGetTextFaceW(
 
     TextObj = RealizeFontInit(hFont);
     ASSERT(TextObj != NULL);
-    fLen = wcslen(TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfFaceName) + 1;
+    fLen = wcslen(TextObj->FaceName) + 1;
 
     if (FaceName != NULL)
     {
         Count = min(Count, fLen);
-        Status = MmCopyToCaller(FaceName, TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfFaceName, Count * sizeof(WCHAR));
+        Status = MmCopyToCaller(FaceName, TextObj->FaceName, Count * sizeof(WCHAR));
         if (!NT_SUCCESS(Status))
         {
             TEXTOBJ_UnlockText(TextObj);