From 839071aee8f27da9d0f5da73a67c5e6141d9b0a9 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Wed, 4 Jul 2012 22:44:52 +0000 Subject: [PATCH] [Gdi32] - Implement support for TCI_SRCLOCALE. svn path=/trunk/; revision=56829 --- reactos/include/psdk/wingdi.h | 1 + reactos/win32ss/gdi/gdi32/objects/font.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/reactos/include/psdk/wingdi.h b/reactos/include/psdk/wingdi.h index 2d49505ca55..d517b92ed9c 100644 --- a/reactos/include/psdk/wingdi.h +++ b/reactos/include/psdk/wingdi.h @@ -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 diff --git a/reactos/win32ss/gdi/gdi32/objects/font.c b/reactos/win32ss/gdi/gdi32/objects/font.c index ec68c51542c..4adec907f8d 100644 --- a/reactos/win32ss/gdi/gdi32/objects/font.c +++ b/reactos/win32ss/gdi/gdi32/objects/font.c @@ -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; }