[GDI32]
[reactos.git] / reactos / dll / win32 / gdi32 / objects / text.c
index 277e307..5de6edc 100644 (file)
@@ -1,33 +1,33 @@
 #include "precomp.h"
 
 
-
 /*
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 TextOutA(
-       HDC  hdc,
-       int  nXStart,
-       int  nYStart,
-       LPCSTR  lpString,
-       int  cbString)
+    HDC  hdc,
+    int  nXStart,
+    int  nYStart,
+    LPCSTR  lpString,
+    int  cchString)
 {
-        ANSI_STRING StringA;
-        UNICODE_STRING StringU;
-       BOOL ret;
-
-       if (NULL != lpString)
-       {
-               RtlInitAnsiString(&StringA, (LPSTR)lpString);
-               RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
-       } else
-               StringU.Buffer = NULL;
-
-       ret = TextOutW(hdc, nXStart, nYStart, StringU.Buffer, cbString);
-       RtlFreeUnicodeString(&StringU);
-       return ret;
+    ANSI_STRING StringA;
+    UNICODE_STRING StringU;
+    BOOL ret;
+
+    if (NULL != lpString)
+    {
+        RtlInitAnsiString(&StringA, (LPSTR)lpString);
+        RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
+    }
+    else
+        StringU.Buffer = NULL;
+
+    ret = TextOutW(hdc, nXStart, nYStart, StringU.Buffer, cchString);
+    RtlFreeUnicodeString(&StringU);
+    return ret;
 }
 
 
@@ -35,15 +35,15 @@ TextOutA(
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 TextOutW(
-       HDC  hdc,
-       int  nXStart,
-       int  nYStart,
-       LPCWSTR  lpString,
-       int  cbString)
+    HDC  hdc,
+    int  nXStart,
+    int  nYStart,
+    LPCWSTR  lpString,
+    int  cchString)
 {
-  return NtGdiExtTextOutW(hdc, nXStart, nYStart, 0, NULL, (LPWSTR)lpString, cbString, NULL, 0);
+    return NtGdiExtTextOutW(hdc, nXStart, nYStart, 0, NULL, (LPWSTR)lpString, cchString, NULL, 0);
 }
 
 
@@ -51,13 +51,13 @@ TextOutW(
  * @implemented
  */
 DWORD
-STDCALL
+WINAPI
 GdiGetCodePage(HDC hdc)
 {
-  PDC_ATTR Dc_Attr;
-  if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return 0;
-  if (Dc_Attr->ulDirty_ & DIRTY_CHARSET) return LOWORD(NtGdiGetCharSet(hdc));
-  return LOWORD(Dc_Attr->iCS_CP);
+    PDC_ATTR Dc_Attr;
+    if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return 0;
+    if (Dc_Attr->ulDirty_ & DIRTY_CHARSET) return LOWORD(NtGdiGetCharSet(hdc));
+    return LOWORD(Dc_Attr->iCS_CP);
 }
 
 
@@ -65,15 +65,15 @@ GdiGetCodePage(HDC hdc)
  * @unimplemented
  */
 int
-STDCALL
+WINAPI
 GetTextCharacterExtra(
-       HDC     hDc
-       )
+    HDC        hDc
+)
 {
-  PDC_ATTR Dc_Attr;
+    PDC_ATTR Dc_Attr;
 
-  if (!GdiGetHandleUserData((HGDIOBJ) hDc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return 0;
-  return Dc_Attr->lTextExtra;
+    if (!GdiGetHandleUserData((HGDIOBJ) hDc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return 0;
+    return Dc_Attr->lTextExtra;
 // return GetDCDWord( hDc, GdiGetTextCharExtra, 0);
 }
 
@@ -82,7 +82,7 @@ GetTextCharacterExtra(
  * @implemented
  */
 int
-STDCALL
+WINAPI
 GetTextCharset(HDC hdc)
 {
     /* MSDN docs say this is equivalent */
@@ -91,25 +91,25 @@ GetTextCharset(HDC hdc)
 
 
 
-
 /*
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 GetTextMetricsA(
-       HDC             hdc,
-       LPTEXTMETRICA   lptm
-       )
+    HDC                hdc,
+    LPTEXTMETRICA      lptm
+)
 {
-  TMW_INTERNAL tmwi;
+    TMW_INTERNAL tmwi;
 
-  if (! NtGdiGetTextMetricsW(hdc, &tmwi, sizeof(TMW_INTERNAL)))
-  {
-    return FALSE;
-  }
+    if (! NtGdiGetTextMetricsW(hdc, &tmwi, sizeof(TMW_INTERNAL)))
+    {
+        return FALSE;
+    }
 
-  return TextMetricW2A(lptm, &tmwi.TextMetric);
+    FONT_TextMetricWToA(&tmwi.TextMetric, lptm);
+    return TRUE;
 }
 
 
@@ -117,21 +117,21 @@ GetTextMetricsA(
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 GetTextMetricsW(
-       HDC             hdc,
-       LPTEXTMETRICW   lptm
-       )
+    HDC                hdc,
+    LPTEXTMETRICW      lptm
+)
 {
-  TMW_INTERNAL tmwi;
+    TMW_INTERNAL tmwi;
 
-  if (! NtGdiGetTextMetricsW(hdc, &tmwi, sizeof(TMW_INTERNAL)))
-  {
-    return FALSE;
-  }
+    if (! NtGdiGetTextMetricsW(hdc, &tmwi, sizeof(TMW_INTERNAL)))
+    {
+        return FALSE;
+    }
 
-  *lptm = tmwi.TextMetric;
-  return TRUE;
+    *lptm = tmwi.TextMetric;
+    return TRUE;
 }
 
 
@@ -141,24 +141,24 @@ GetTextMetricsW(
 BOOL
 APIENTRY
 GetTextExtentPointA(
-       HDC             hdc,
-       LPCSTR          lpString,
-       int             cbString,
-       LPSIZE          lpSize
-       )
+    HDC                hdc,
+    LPCSTR             lpString,
+    int                cchString,
+    LPSIZE             lpSize
+)
 {
-        ANSI_STRING StringA;
-        UNICODE_STRING StringU;
-       BOOL ret;
+    ANSI_STRING StringA;
+    UNICODE_STRING StringU;
+    BOOL ret;
 
-       RtlInitAnsiString(&StringA, (LPSTR)lpString);
-       RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
+    RtlInitAnsiString(&StringA, (LPSTR)lpString);
+    RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
 
-        ret = GetTextExtentPointW(hdc, StringU.Buffer, cbString, lpSize);
+    ret = GetTextExtentPointW(hdc, StringU.Buffer, cchString, lpSize);
 
-       RtlFreeUnicodeString(&StringU);
+    RtlFreeUnicodeString(&StringU);
 
-       return ret;
+    return ret;
 }
 
 
@@ -168,13 +168,13 @@ GetTextExtentPointA(
 BOOL
 APIENTRY
 GetTextExtentPointW(
-       HDC             hdc,
-       LPCWSTR         lpString,
-       int             cbString,
-       LPSIZE          lpSize
-       )
+    HDC                hdc,
+    LPCWSTR            lpString,
+    int                cchString,
+    LPSIZE             lpSize
+)
 {
-  return NtGdiGetTextExtent(hdc, (LPWSTR)lpString, cbString, lpSize, 0);
+    return NtGdiGetTextExtent(hdc, (LPWSTR)lpString, cchString, lpSize, 0);
 }
 
 
@@ -184,17 +184,22 @@ GetTextExtentPointW(
 BOOL
 APIENTRY
 GetTextExtentExPointW(
-       HDC             hdc,
-       LPCWSTR         lpszStr,
-       int             cchString,
-       int             nMaxExtent,
-       LPINT           lpnFit,
-       LPINT           alpDx,
-       LPSIZE          lpSize
-       )
+    HDC     hdc,
+    LPCWSTR lpszStr,
+    int     cchString,
+    int     nMaxExtent,
+    LPINT   lpnFit,
+    LPINT   alpDx,
+    LPSIZE  lpSize
+)
 {
-  return NtGdiGetTextExtentExW (
-    hdc, (LPWSTR)lpszStr, cchString, nMaxExtent, (PULONG)lpnFit, (PULONG)alpDx, lpSize, 0 );
+
+    /* Windows doesn't check nMaxExtent validity in unicode version */
+    if(nMaxExtent < -1)
+        DPRINT("nMaxExtent is invalid: %d\n", nMaxExtent);
+
+    return NtGdiGetTextExtentExW (
+               hdc, (LPWSTR)lpszStr, cchString, nMaxExtent, (PULONG)lpnFit, (PULONG)alpDx, lpSize, 0 );
 }
 
 
@@ -204,31 +209,37 @@ GetTextExtentExPointW(
 BOOL
 APIENTRY
 GetTextExtentExPointA(
-       HDC             hdc,
-       LPCSTR          lpszStr,
-       int             cchString,
-       int             nMaxExtent,
-       LPINT           lpnFit,
-       LPINT           alpDx,
-       LPSIZE          lpSize
-       )
+    HDC                hdc,
+    LPCSTR             lpszStr,
+    int                cchString,
+    int                nMaxExtent,
+    LPINT              lpnFit,
+    LPINT              alpDx,
+    LPSIZE             lpSize
+)
 {
-  NTSTATUS Status;
-  LPWSTR lpszStrW;
-  BOOL rc = 0;
-
-  Status = HEAP_strdupA2W ( &lpszStrW, lpszStr );
-  if (!NT_SUCCESS (Status))
-    SetLastError (RtlNtStatusToDosError(Status));
-  else
-  {
-    rc = NtGdiGetTextExtentExW (
-      hdc, lpszStrW, cchString, nMaxExtent, (PULONG)lpnFit, (PULONG)alpDx, lpSize, 0 );
-
-    HEAP_free ( lpszStrW );
-  }
-
-  return rc;
+    NTSTATUS Status;
+    LPWSTR lpszStrW;
+    BOOL rc = 0;
+
+    if(nMaxExtent < -1)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+
+    Status = HEAP_strdupA2W ( &lpszStrW, lpszStr );
+    if (!NT_SUCCESS (Status))
+        SetLastError (RtlNtStatusToDosError(Status));
+    else
+    {
+        rc = NtGdiGetTextExtentExW (
+                 hdc, lpszStrW, cchString, nMaxExtent, (PULONG)lpnFit, (PULONG)alpDx, lpSize, 0 );
+
+        HEAP_free ( lpszStrW );
+    }
+
+    return rc;
 }
 
 
@@ -238,24 +249,24 @@ GetTextExtentExPointA(
 BOOL
 APIENTRY
 GetTextExtentPoint32A(
-       HDC             hdc,
-       LPCSTR          lpString,
-       int             cbString,
-       LPSIZE          lpSize
-       )
+    HDC                hdc,
+    LPCSTR             lpString,
+    int                cchString,
+    LPSIZE             lpSize
+)
 {
-  ANSI_STRING StringA;
-  UNICODE_STRING StringU;
-  BOOL ret;
+    ANSI_STRING StringA;
+    UNICODE_STRING StringU;
+    BOOL ret;
 
-  RtlInitAnsiString(&StringA, (LPSTR)lpString);
-  RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
+    RtlInitAnsiString(&StringA, (LPSTR)lpString);
+    RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
 
-  ret = GetTextExtentPoint32W(hdc, StringU.Buffer, cbString, lpSize);
+    ret = GetTextExtentPoint32W(hdc, StringU.Buffer, cchString, lpSize);
 
-  RtlFreeUnicodeString(&StringU);
+    RtlFreeUnicodeString(&StringU);
 
-  return ret;
+    return ret;
 }
 
 
@@ -265,20 +276,20 @@ GetTextExtentPoint32A(
 BOOL
 APIENTRY
 GetTextExtentPoint32W(
-       HDC             hdc,
-       LPCWSTR         lpString,
-       int             cbString,
-       LPSIZE          lpSize
-       )
+    HDC                hdc,
+    LPCWSTR            lpString,
+    int                cchString,
+    LPSIZE             lpSize
+)
 {
-       return NtGdiGetTextExtent(hdc, (LPWSTR)lpString, cbString, lpSize, 0);
+    return NtGdiGetTextExtent(hdc, (LPWSTR)lpString, cchString, lpSize, 0);
 }
 
 /*
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 GetTextExtentExPointI(HDC hdc,
                       LPWORD pgiIn,
                       int cgi,
@@ -287,50 +298,50 @@ GetTextExtentExPointI(HDC hdc,
                       LPINT alpDx,
                       LPSIZE lpSize)
 {
-    return NtGdiGetTextExtentExW(hdc,pgiIn,cgi,nMaxExtent,(ULONG *)lpnFit, (PULONG) alpDx,lpSize,1);
+    return NtGdiGetTextExtentExW(hdc,pgiIn,cgi,nMaxExtent,(ULONG *)lpnFit, (PULONG) alpDx,lpSize,GTEF_INDICES);
 }
 
 /*
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 GetTextExtentPointI(HDC hdc,
                     LPWORD pgiIn,
                     int cgi,
                     LPSIZE lpSize)
 {
-    return NtGdiGetTextExtent(hdc,pgiIn,cgi,lpSize,2);
+    return NtGdiGetTextExtent(hdc,pgiIn,cgi,lpSize,GTEF_INDICES);
 }
 
 /*
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 ExtTextOutA(
-       HDC             hdc,
-       int             X,
-       int             Y,
-       UINT            fuOptions,
-       CONST RECT      *lprc,
-       LPCSTR          lpString,
-       UINT            cbCount,
-       CONST INT       *lpDx
-       )
+    HDC                hdc,
+    int                X,
+    int                Y,
+    UINT               fuOptions,
+    CONST RECT *lprc,
+    LPCSTR             lpString,
+    UINT               cchString,
+    CONST INT  *lpDx
+)
 {
-        ANSI_STRING StringA;
-        UNICODE_STRING StringU;
-       BOOL ret;
+    ANSI_STRING StringA;
+    UNICODE_STRING StringU;
+    BOOL ret;
 
-       RtlInitAnsiString(&StringA, (LPSTR)lpString);
-       RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
+    RtlInitAnsiString(&StringA, (LPSTR)lpString);
+    RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
 
-        ret = ExtTextOutW(hdc, X, Y, fuOptions, lprc, StringU.Buffer, cbCount, lpDx);
+    ret = ExtTextOutW(hdc, X, Y, fuOptions, lprc, StringU.Buffer, cchString, lpDx);
 
-       RtlFreeUnicodeString(&StringU);
+    RtlFreeUnicodeString(&StringU);
 
-       return ret;
+    return ret;
 }
 
 
@@ -338,19 +349,19 @@ ExtTextOutA(
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 ExtTextOutW(
-       HDC             hdc,
-       int             X,
-       int             Y,
-       UINT            fuOptions,
-       CONST RECT      *lprc,
-       LPCWSTR         lpString,
-       UINT            cbCount,
-       CONST INT       *lpDx
-       )
+    HDC                hdc,
+    int                X,
+    int                Y,
+    UINT               fuOptions,
+    CONST RECT *lprc,
+    LPCWSTR            lpString,
+    UINT               cchString,
+    CONST INT  *lpDx
+)
 {
-  return NtGdiExtTextOutW(hdc, X, Y, fuOptions, (LPRECT)lprc, (LPWSTR)lpString, cbCount, (LPINT)lpDx, 0);
+    return NtGdiExtTextOutW(hdc, X, Y, fuOptions, (LPRECT)lprc, (LPWSTR)lpString, cchString, (LPINT)lpDx, 0);
 }
 
 
@@ -380,11 +391,26 @@ GetTextFaceW(HDC hDC,
  * @implemented
  */
 int
-STDCALL
+WINAPI
 GetTextFaceA( HDC hdc, INT count, LPSTR name )
 {
-    INT res = GetTextFaceW(hdc, 0, NULL);
-    LPWSTR nameW = HeapAlloc( GetProcessHeap(), 0, res * 2 );
+    INT res;
+    LPWSTR nameW;
+
+    /* Validate parameters */
+    if (name && count <= 0)
+    {
+        /* Set last error and return failure */
+        GdiSetLastError(ERROR_INVALID_PARAMETER);
+        return 0;
+    }
+
+    res = GetTextFaceW(hdc, 0, NULL);
+    nameW = HeapAlloc( GetProcessHeap(), 0, res * 2 );
+    if (nameW == NULL)
+    {
+        return 0;
+    }
     GetTextFaceW( hdc, res, nameW );
 
     if (name)
@@ -404,28 +430,28 @@ GetTextFaceA( HDC hdc, INT count, LPSTR name )
  * @implemented
  */
 INT
-STDCALL
+WINAPI
 GetTextFaceAliasW(HDC hdc,
                   int cChar,
                   LPWSTR pszOut)
 {
-   if ( pszOut && !cChar )
-   {
-      GdiSetLastError(ERROR_INVALID_PARAMETER);
-      return 0;
-   }
-   return NtGdiGetTextFaceW(hdc,cChar,pszOut,TRUE);
+    if ( pszOut && !cChar )
+    {
+        GdiSetLastError(ERROR_INVALID_PARAMETER);
+        return 0;
+    }
+    return NtGdiGetTextFaceW(hdc,cChar,pszOut,TRUE);
 }
 
 
 BOOL
-STDCALL
+WINAPI
 GetFontResourceInfoW(
     LPCWSTR lpFileName,
     DWORD *pdwBufSize,
     void* lpBuffer,
     DWORD dwType
-    )
+)
 {
     BOOL bRet;
     UNICODE_STRING NtFileName;
@@ -446,13 +472,13 @@ GetFontResourceInfoW(
     }
 
     bRet = NtGdiGetFontResourceInfoInternalW(
-        NtFileName.Buffer,
-        (NtFileName.Length / sizeof(WCHAR)) + 1,
-        1,
-        *pdwBufSize,
-        pdwBufSize,
-        lpBuffer,
-        dwType);
+               NtFileName.Buffer,
+               (NtFileName.Length / sizeof(WCHAR)) + 1,
+               1,
+               *pdwBufSize,
+               pdwBufSize,
+               lpBuffer,
+               dwType);
 
     RtlFreeHeap(RtlGetProcessHeap(), 0, NtFileName.Buffer);
 
@@ -469,39 +495,39 @@ GetFontResourceInfoW(
  * @unimplemented
  */
 int
-STDCALL
+WINAPI
 SetTextCharacterExtra(
-       HDC     hDC,
-       int     CharExtra
-       )
+    HDC        hDC,
+    int        CharExtra
+)
 {
-  INT cExtra = 0x80000000;
-  PDC_ATTR Dc_Attr;
-
-  if (CharExtra == cExtra)
-  {
-     SetLastError(ERROR_INVALID_PARAMETER);
-     return cExtra;
-  }
+    INT cExtra = 0x80000000;
+    PDC_ATTR Dc_Attr;
+
+    if (CharExtra == cExtra)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return cExtra;
+    }
 #if 0
-  if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
-  {
-    return MFDRV_SetTextCharacterExtra( hDC, CharExtra ); // Wine port.
-  }
+    if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
+    {
+        return MFDRV_SetTextCharacterExtra( hDC, CharExtra ); // Wine port.
+    }
 #endif
-  if (!GdiGetHandleUserData((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return cExtra;
-
-  if (NtCurrentTeb()->GdiTebBatch.HDC == hDC)
-  {
-     if (Dc_Attr->ulDirty_ & DC_FONTTEXT_DIRTY)
-     {
-       NtGdiFlush(); // Sync up Dc_Attr from Kernel space.
-       Dc_Attr->ulDirty_ &= ~(DC_MODE_DIRTY|DC_FONTTEXT_DIRTY);
-     }
-  }
-  cExtra = Dc_Attr->lTextExtra;
-  Dc_Attr->lTextExtra = CharExtra;
-  return cExtra;
+    if (!GdiGetHandleUserData((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return cExtra;
+
+    if (NtCurrentTeb()->GdiTebBatch.HDC == hDC)
+    {
+        if (Dc_Attr->ulDirty_ & DC_FONTTEXT_DIRTY)
+        {
+            NtGdiFlush(); // Sync up Dc_Attr from Kernel space.
+            Dc_Attr->ulDirty_ &= ~(DC_MODE_DIRTY|DC_FONTTEXT_DIRTY);
+        }
+    }
+    cExtra = Dc_Attr->lTextExtra;
+    Dc_Attr->lTextExtra = CharExtra;
+    return cExtra;
 // return GetAndSetDCDWord( hDC, GdiGetSetTextCharExtra, CharExtra, 0, 0, 0 );
 }
 
@@ -510,12 +536,12 @@ SetTextCharacterExtra(
  *
  */
 UINT
-STDCALL
+WINAPI
 GetTextAlign(HDC hdc)
 {
-  PDC_ATTR Dc_Attr;
-  if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return 0;
-  return Dc_Attr->lTextAlign;
+    PDC_ATTR Dc_Attr;
+    if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return 0;
+    return Dc_Attr->lTextAlign;
 }
 
 
@@ -524,12 +550,12 @@ GetTextAlign(HDC hdc)
  *
  */
 COLORREF
-STDCALL
+WINAPI
 GetTextColor(HDC hdc)
 {
-  PDC_ATTR Dc_Attr;
-  if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return 0;
-  return Dc_Attr->ulForegroundClr;
+    PDC_ATTR Dc_Attr;
+    if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return 0;
+    return Dc_Attr->ulForegroundClr;
 }
 
 
@@ -538,42 +564,42 @@ GetTextColor(HDC hdc)
  * @unimplemented
  */
 UINT
-STDCALL
+WINAPI
 SetTextAlign(HDC hdc,
              UINT fMode)
 {
-  PDC_ATTR Dc_Attr;
-  INT OldMode = 0;
+    PDC_ATTR Dc_Attr;
+    INT OldMode = 0;
 #if 0
-  if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
-  {
-    if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
-      return MFDRV_SetTextAlign( hdc, fMode )
-    else
+    if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
     {
-      PLDC pLDC = Dc_Attr->pvLDC;
-      if ( !pLDC )
-      {
-         SetLastError(ERROR_INVALID_HANDLE);
-         return FALSE;
-      }
-      if (pLDC->iType == LDC_EMFLDC)
-      {
-        if return EMFDRV_SetTextAlign( hdc, fMode )
-      }
-    }
-  }
+        if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
+            return MFDRV_SetTextAlign( hdc, fMode )
+                   else
+            {
+                PLDC pLDC = Dc_Attr->pvLDC;
+                if ( !pLDC )
+                {
+                    SetLastError(ERROR_INVALID_HANDLE);
+                    return FALSE;
+                }
+                if (pLDC->iType == LDC_EMFLDC)
+                {
+                    if return EMFDRV_SetTextAlign( hdc, fMode )
+                              }
+                      }
+              }
 #endif
-  if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return OldMode;
+              if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return OldMode;
 
-  OldMode = Dc_Attr->lTextAlign;
-  Dc_Attr->lTextAlign = fMode; // Raw
-  if (Dc_Attr->dwLayout & LAYOUT_RTL)
-  {
-     if(!(fMode & TA_CENTER))  fMode |= TA_RIGHT;
-  }
-  Dc_Attr->flTextAlign = fMode & (TA_BASELINE|TA_UPDATECP|TA_CENTER);
-  return OldMode;
+    OldMode = Dc_Attr->lTextAlign;
+    Dc_Attr->lTextAlign = fMode; // Raw
+    if (Dc_Attr->dwLayout & LAYOUT_RTL)
+    {
+        if(!(fMode & TA_CENTER))  fMode |= TA_RIGHT;
+    }
+    Dc_Attr->flTextAlign = fMode & (TA_BASELINE|TA_UPDATECP|TA_CENTER);
+    return OldMode;
 
 }
 
@@ -582,81 +608,81 @@ SetTextAlign(HDC hdc,
  * @implemented
  */
 COLORREF
-STDCALL
+WINAPI
 SetTextColor(
-       HDC hdc,
-       COLORREF crColor
+    HDC hdc,
+    COLORREF crColor
 )
 {
-  PDC_ATTR Dc_Attr;
-  COLORREF OldColor = CLR_INVALID;
+    PDC_ATTR Dc_Attr;
+    COLORREF OldColor = CLR_INVALID;
 #if 0
-  if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
-  {
-    if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
-      return MFDRV_SetTextColor( hDC, crColor );
-    else
+    if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
     {
-      PLDC pLDC = Dc_Attr->pvLDC;
-      if ( !pLDC )
-      {
-         SetLastError(ERROR_INVALID_HANDLE);
-         return FALSE;
-      }
-      if (pLDC->iType == LDC_EMFLDC)
-      {
-        if return EMFDRV_SetTextColor( hDC, crColor );
-      }
+        if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
+            return MFDRV_SetTextColor( hDC, crColor );
+        else
+        {
+            PLDC pLDC = Dc_Attr->pvLDC;
+            if ( !pLDC )
+            {
+                SetLastError(ERROR_INVALID_HANDLE);
+                return FALSE;
+            }
+            if (pLDC->iType == LDC_EMFLDC)
+            {
+                if return EMFDRV_SetTextColor( hDC, crColor );
+            }
+        }
     }
-  }
 #endif
-  if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return OldColor;
+    if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return OldColor;
 
-  OldColor = (COLORREF) Dc_Attr->ulForegroundClr;
-  Dc_Attr->ulForegroundClr = (ULONG) crColor;
+    OldColor = (COLORREF) Dc_Attr->ulForegroundClr;
+    Dc_Attr->ulForegroundClr = (ULONG) crColor;
 
-  if ( Dc_Attr->crForegroundClr != crColor )
-  {
-     Dc_Attr->ulDirty_ |= DIRTY_TEXT;
-     Dc_Attr->crForegroundClr = crColor;
-  }
-  return OldColor;
+    if ( Dc_Attr->crForegroundClr != crColor )
+    {
+        Dc_Attr->ulDirty_ |= (DIRTY_TEXT|DIRTY_LINE|DIRTY_FILL);
+        Dc_Attr->crForegroundClr = crColor;
+    }
+    return OldColor;
 }
 
 /*
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 SetTextJustification(
-       HDC     hdc,
-       int     extra,
-       int     breaks
-       )
+    HDC        hdc,
+    int        extra,
+    int        breaks
+)
 {
-  PDC_ATTR Dc_Attr;
+    PDC_ATTR Dc_Attr;
 #if 0
-  if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
-  {
-    if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
-      return MFDRV_SetTextJustification( hdc, extra, breaks )
-    else
+    if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
     {
-      SetLastError(ERROR_INVALID_HANDLE);
-      return FALSE;
-    }
+        if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
+            return MFDRV_SetTextJustification( hdc, extra, breaks )
+                   else
+            {
+                SetLastError(ERROR_INVALID_HANDLE);
+                return FALSE;
+            }
 #endif
-  if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return FALSE;
-
-  if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
-  {
-     if (Dc_Attr->ulDirty_ & DC_FONTTEXT_DIRTY)
-     {
-       NtGdiFlush(); // Sync up Dc_Attr from Kernel space.
-       Dc_Attr->ulDirty_ &= ~(DC_MODE_DIRTY|DC_FONTTEXT_DIRTY);
-     }
-  }
-  Dc_Attr->cBreak = breaks;
-  Dc_Attr->lBreakExtra = extra;
-  return TRUE;
-}
+        if (!GdiGetHandleUserData((HGDIOBJ) hdc, GDI_OBJECT_TYPE_DC, (PVOID) &Dc_Attr)) return FALSE;
+
+        if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
+        {
+            if (Dc_Attr->ulDirty_ & DC_FONTTEXT_DIRTY)
+            {
+                NtGdiFlush(); // Sync up Dc_Attr from Kernel space.
+                Dc_Attr->ulDirty_ &= ~(DC_MODE_DIRTY|DC_FONTTEXT_DIRTY);
+            }
+        }
+        Dc_Attr->cBreak = breaks;
+        Dc_Attr->lBreakExtra = extra;
+        return TRUE;
+    }