[Gdi32]
authorJames Tabor <james.tabor@reactos.org>
Wed, 4 Jul 2012 22:44:52 +0000 (22:44 +0000)
committerJames Tabor <james.tabor@reactos.org>
Wed, 4 Jul 2012 22:44:52 +0000 (22:44 +0000)
- Implement support for TCI_SRCLOCALE.

svn path=/trunk/; revision=56829

reactos/include/psdk/wingdi.h
reactos/win32ss/gdi/gdi32/objects/font.c

index 2d49505..d517b92 100644 (file)
@@ -952,6 +952,7 @@ extern "C" {
 #define TCI_SRCCHARSET 1
 #define TCI_SRCCODEPAGE 2
 #define TCI_SRCFONTSIG 3
+#define TCI_SRCLOCALE 4096
 #if (_WIN32_WINNT >= 0x0500)
 #define SHADEBLENDCAPS    120
 #define COLORMGMTCAPS     121
index ec68c51..4adec90 100644 (file)
@@ -1785,10 +1785,24 @@ TranslateCharsetInfo(
     case TCI_SRCCHARSET:
         while (index < MAXTCIINDEX && PtrToUlong(lpSrc) != FONT_tci[index].ciCharset) index++;
         break;
+    case TCI_SRCLOCALE:
+    {
+        LCID lCid = (LCID)PtrToUlong(lpSrc);
+        LOCALESIGNATURE LocSig;
+        INT Ret = GetLocaleInfoW(lCid, LOCALE_FONTSIGNATURE, (LPWSTR)&LocSig, 0);
+        if ( GetLocaleInfoW(lCid, LOCALE_FONTSIGNATURE, (LPWSTR)&LocSig, Ret))
+        {
+           while (index < MAXTCIINDEX && !(LocSig.lsCsbDefault[0]>>index & 0x0001)) index++;
+           break;
+        }
+    }
     default:
+        GdiSetLastError(ERROR_INVALID_PARAMETER);
         return FALSE;
     }
     if (index >= MAXTCIINDEX || FONT_tci[index].ciCharset == DEFAULT_CHARSET) return FALSE;
+    DPRINT("Index %d Charset %d CodePage %d FontSig %d\n",
+             index,FONT_tci[index].ciCharset,FONT_tci[index].ciACP,FONT_tci[index].fs.fsCsb[0]);
     memcpy(lpCs, &FONT_tci[index], sizeof(CHARSETINFO));
     return TRUE;
 }