gdi32: Move a few functions around
Huw D M Davies
h.davies1 at physics.ox.ac.uk
Wed Apr 5 06:41:49 CDT 2006
Huw Davies <huw at codeweavers.com>
gdi32: Move a few functions around. Should be a nop.
--
Huw Davies
huw at codeweavers.com
---
dlls/gdi/freetype.c | 409 ++++++++++++++++++++++++++-------------------------
1 files changed, 205 insertions(+), 204 deletions(-)
d68b8d657f60f010cd98b1a56f60514533c85059
diff --git a/dlls/gdi/freetype.c b/dlls/gdi/freetype.c
index e02553b..08902e1 100644
--- a/dlls/gdi/freetype.c
+++ b/dlls/gdi/freetype.c
@@ -440,6 +440,211 @@ static inline FT_Fixed FT_FixedFromFIXED
return (FT_Fixed)((long)f.value << 16 | (unsigned long)f.fract);
}
+
+static Face *find_face_from_filename(const WCHAR *name)
+{
+ Family *family;
+ Face *face;
+ char *file;
+ DWORD len = WideCharToMultiByte(CP_UNIXCP, 0, name, -1, NULL, 0, NULL, NULL);
+ char *nameA = HeapAlloc(GetProcessHeap(), 0, len);
+ Face *ret = NULL;
+
+ WideCharToMultiByte(CP_UNIXCP, 0, name, -1, nameA, len, NULL, NULL);
+ TRACE("looking for %s\n", debugstr_a(nameA));
+
+ LIST_FOR_EACH_ENTRY(family, &font_list, Family, entry)
+ {
+ LIST_FOR_EACH_ENTRY(face, &family->faces, Face, entry)
+ {
+ file = strrchr(face->file, '/');
+ if(!file)
+ file = face->file;
+ else
+ file++;
+ if(!strcmp(file, nameA))
+ ret = face;
+ break;
+ }
+ }
+ HeapFree(GetProcessHeap(), 0, nameA);
+ return ret;
+}
+
+static Family *find_family_from_name(const WCHAR *name)
+{
+ Family *family;
+
+ LIST_FOR_EACH_ENTRY(family, &font_list, Family, entry)
+ {
+ if(!strcmpiW(family->FamilyName, name))
+ return family;
+ }
+
+ return NULL;
+}
+
+static void DumpSubstList(void)
+{
+ FontSubst *psub;
+
+ LIST_FOR_EACH_ENTRY(psub, &font_subst_list, FontSubst, entry)
+ {
+ if(psub->from.charset != -1 || psub->to.charset != -1)
+ TRACE("%s:%d -> %s:%d\n", debugstr_w(psub->from.name),
+ psub->from.charset, debugstr_w(psub->to.name), psub->to.charset);
+ else
+ TRACE("%s -> %s\n", debugstr_w(psub->from.name),
+ debugstr_w(psub->to.name));
+ }
+ return;
+}
+
+static LPWSTR strdupW(LPCWSTR p)
+{
+ LPWSTR ret;
+ DWORD len = (strlenW(p) + 1) * sizeof(WCHAR);
+ ret = HeapAlloc(GetProcessHeap(), 0, len);
+ memcpy(ret, p, len);
+ return ret;
+}
+
+static LPSTR strdupA(LPCSTR p)
+{
+ LPSTR ret;
+ DWORD len = (strlen(p) + 1);
+ ret = HeapAlloc(GetProcessHeap(), 0, len);
+ memcpy(ret, p, len);
+ return ret;
+}
+
+static FontSubst *get_font_subst(const struct list *subst_list, const WCHAR *from_name,
+ INT from_charset)
+{
+ FontSubst *element;
+
+ LIST_FOR_EACH_ENTRY(element, subst_list, FontSubst, entry)
+ {
+ if(!strcmpiW(element->from.name, from_name) &&
+ (element->from.charset == from_charset ||
+ element->from.charset == -1))
+ return element;
+ }
+
+ return NULL;
+}
+
+#define ADD_FONT_SUBST_FORCE 1
+
+static BOOL add_font_subst(struct list *subst_list, FontSubst *subst, INT flags)
+{
+ FontSubst *from_exist, *to_exist;
+
+ from_exist = get_font_subst(subst_list, subst->from.name, subst->from.charset);
+
+ if(from_exist && (flags & ADD_FONT_SUBST_FORCE))
+ {
+ list_remove(&from_exist->entry);
+ HeapFree(GetProcessHeap(), 0, &from_exist->from.name);
+ HeapFree(GetProcessHeap(), 0, &from_exist->to.name);
+ HeapFree(GetProcessHeap(), 0, from_exist);
+ from_exist = NULL;
+ }
+
+ if(!from_exist)
+ {
+ to_exist = get_font_subst(subst_list, subst->to.name, subst->to.charset);
+
+ if(to_exist)
+ {
+ HeapFree(GetProcessHeap(), 0, subst->to.name);
+ subst->to.name = strdupW(to_exist->to.name);
+ }
+
+ list_add_tail(subst_list, &subst->entry);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void split_subst_info(NameCs *nc, LPSTR str)
+{
+ CHAR *p = strrchr(str, ',');
+ DWORD len;
+
+ nc->charset = -1;
+ if(p && *(p+1)) {
+ nc->charset = strtol(p+1, NULL, 10);
+ *p = '\0';
+ }
+ len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
+ nc->name = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, str, -1, nc->name, len);
+}
+
+static void LoadSubstList(void)
+{
+ FontSubst *psub;
+ HKEY hkey;
+ DWORD valuelen, datalen, i = 0, type, dlen, vlen;
+ LPSTR value;
+ LPVOID data;
+
+ if(!list_empty(&font_subst_list))
+ {
+ FontSubst *cursor2;
+ LIST_FOR_EACH_ENTRY_SAFE(psub, cursor2, &font_subst_list, FontSubst, entry)
+ {
+ HeapFree(GetProcessHeap(), 0, psub->to.name);
+ HeapFree(GetProcessHeap(), 0, psub->from.name);
+ list_remove(&psub->entry);
+ HeapFree(GetProcessHeap(), 0, psub);
+ }
+ }
+
+ if(RegOpenKeyA(HKEY_LOCAL_MACHINE,
+ "Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes",
+ &hkey) == ERROR_SUCCESS) {
+
+ RegQueryInfoKeyA(hkey, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ &valuelen, &datalen, NULL, NULL);
+
+ valuelen++; /* returned value doesn't include room for '\0' */
+ value = HeapAlloc(GetProcessHeap(), 0, valuelen * sizeof(CHAR));
+ data = HeapAlloc(GetProcessHeap(), 0, datalen);
+
+ dlen = datalen;
+ vlen = valuelen;
+ while(RegEnumValueA(hkey, i++, value, &vlen, NULL, &type, data,
+ &dlen) == ERROR_SUCCESS) {
+ TRACE("Got %s=%s\n", debugstr_a(value), debugstr_a(data));
+
+ psub = HeapAlloc(GetProcessHeap(), 0, sizeof(*psub));
+ split_subst_info(&psub->from, value);
+ split_subst_info(&psub->to, data);
+
+ /* Win 2000 doesn't allow mapping between different charsets
+ or mapping of DEFAULT_CHARSET */
+ if((psub->to.charset != psub->from.charset) ||
+ psub->to.charset == DEFAULT_CHARSET) {
+ HeapFree(GetProcessHeap(), 0, psub->to.name);
+ HeapFree(GetProcessHeap(), 0, psub->from.name);
+ HeapFree(GetProcessHeap(), 0, psub);
+ } else {
+ add_font_subst(&font_subst_list, psub, 0);
+ }
+ /* reset dlen and vlen */
+ dlen = datalen;
+ vlen = valuelen;
+ }
+ HeapFree(GetProcessHeap(), 0, data);
+ HeapFree(GetProcessHeap(), 0, value);
+ RegCloseKey(hkey);
+ }
+}
+
#define ADDFONT_EXTERNAL_FONT 0x01
#define ADDFONT_FORCE_BITMAP 0x02
static BOOL AddFontFileToList(const char *file, char *fake_family, DWORD flags)
@@ -677,210 +882,6 @@ static void DumpFontList(void)
return;
}
-static Face *find_face_from_filename(const WCHAR *name)
-{
- Family *family;
- Face *face;
- char *file;
- DWORD len = WideCharToMultiByte(CP_UNIXCP, 0, name, -1, NULL, 0, NULL, NULL);
- char *nameA = HeapAlloc(GetProcessHeap(), 0, len);
- Face *ret = NULL;
-
- WideCharToMultiByte(CP_UNIXCP, 0, name, -1, nameA, len, NULL, NULL);
- TRACE("looking for %s\n", debugstr_a(nameA));
-
- LIST_FOR_EACH_ENTRY(family, &font_list, Family, entry)
- {
- LIST_FOR_EACH_ENTRY(face, &family->faces, Face, entry)
- {
- file = strrchr(face->file, '/');
- if(!file)
- file = face->file;
- else
- file++;
- if(!strcmp(file, nameA))
- ret = face;
- break;
- }
- }
- HeapFree(GetProcessHeap(), 0, nameA);
- return ret;
-}
-
-static Family *find_family_from_name(const WCHAR *name)
-{
- Family *family;
-
- LIST_FOR_EACH_ENTRY(family, &font_list, Family, entry)
- {
- if(!strcmpiW(family->FamilyName, name))
- return family;
- }
-
- return NULL;
-}
-
-static void DumpSubstList(void)
-{
- FontSubst *psub;
-
- LIST_FOR_EACH_ENTRY(psub, &font_subst_list, FontSubst, entry)
- {
- if(psub->from.charset != -1 || psub->to.charset != -1)
- TRACE("%s:%d -> %s:%d\n", debugstr_w(psub->from.name),
- psub->from.charset, debugstr_w(psub->to.name), psub->to.charset);
- else
- TRACE("%s -> %s\n", debugstr_w(psub->from.name),
- debugstr_w(psub->to.name));
- }
- return;
-}
-
-static LPWSTR strdupW(LPCWSTR p)
-{
- LPWSTR ret;
- DWORD len = (strlenW(p) + 1) * sizeof(WCHAR);
- ret = HeapAlloc(GetProcessHeap(), 0, len);
- memcpy(ret, p, len);
- return ret;
-}
-
-static LPSTR strdupA(LPCSTR p)
-{
- LPSTR ret;
- DWORD len = (strlen(p) + 1);
- ret = HeapAlloc(GetProcessHeap(), 0, len);
- memcpy(ret, p, len);
- return ret;
-}
-
-static FontSubst *get_font_subst(const struct list *subst_list, const WCHAR *from_name,
- INT from_charset)
-{
- FontSubst *element;
-
- LIST_FOR_EACH_ENTRY(element, subst_list, FontSubst, entry)
- {
- if(!strcmpiW(element->from.name, from_name) &&
- (element->from.charset == from_charset ||
- element->from.charset == -1))
- return element;
- }
-
- return NULL;
-}
-
-#define ADD_FONT_SUBST_FORCE 1
-
-static BOOL add_font_subst(struct list *subst_list, FontSubst *subst, INT flags)
-{
- FontSubst *from_exist, *to_exist;
-
- from_exist = get_font_subst(subst_list, subst->from.name, subst->from.charset);
-
- if(from_exist && (flags & ADD_FONT_SUBST_FORCE))
- {
- list_remove(&from_exist->entry);
- HeapFree(GetProcessHeap(), 0, &from_exist->from.name);
- HeapFree(GetProcessHeap(), 0, &from_exist->to.name);
- HeapFree(GetProcessHeap(), 0, from_exist);
- from_exist = NULL;
- }
-
- if(!from_exist)
- {
- to_exist = get_font_subst(subst_list, subst->to.name, subst->to.charset);
-
- if(to_exist)
- {
- HeapFree(GetProcessHeap(), 0, subst->to.name);
- subst->to.name = strdupW(to_exist->to.name);
- }
-
- list_add_tail(subst_list, &subst->entry);
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void split_subst_info(NameCs *nc, LPSTR str)
-{
- CHAR *p = strrchr(str, ',');
- DWORD len;
-
- nc->charset = -1;
- if(p && *(p+1)) {
- nc->charset = strtol(p+1, NULL, 10);
- *p = '\0';
- }
- len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
- nc->name = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, str, -1, nc->name, len);
-}
-
-static void LoadSubstList(void)
-{
- FontSubst *psub;
- HKEY hkey;
- DWORD valuelen, datalen, i = 0, type, dlen, vlen;
- LPSTR value;
- LPVOID data;
-
- if(!list_empty(&font_subst_list))
- {
- FontSubst *cursor2;
- LIST_FOR_EACH_ENTRY_SAFE(psub, cursor2, &font_subst_list, FontSubst, entry)
- {
- HeapFree(GetProcessHeap(), 0, psub->to.name);
- HeapFree(GetProcessHeap(), 0, psub->from.name);
- list_remove(&psub->entry);
- HeapFree(GetProcessHeap(), 0, psub);
- }
- }
-
- if(RegOpenKeyA(HKEY_LOCAL_MACHINE,
- "Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes",
- &hkey) == ERROR_SUCCESS) {
-
- RegQueryInfoKeyA(hkey, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- &valuelen, &datalen, NULL, NULL);
-
- valuelen++; /* returned value doesn't include room for '\0' */
- value = HeapAlloc(GetProcessHeap(), 0, valuelen * sizeof(CHAR));
- data = HeapAlloc(GetProcessHeap(), 0, datalen);
-
- dlen = datalen;
- vlen = valuelen;
- while(RegEnumValueA(hkey, i++, value, &vlen, NULL, &type, data,
- &dlen) == ERROR_SUCCESS) {
- TRACE("Got %s=%s\n", debugstr_a(value), debugstr_a(data));
-
- psub = HeapAlloc(GetProcessHeap(), 0, sizeof(*psub));
- split_subst_info(&psub->from, value);
- split_subst_info(&psub->to, data);
-
- /* Win 2000 doesn't allow mapping between different charsets
- or mapping of DEFAULT_CHARSET */
- if((psub->to.charset != psub->from.charset) ||
- psub->to.charset == DEFAULT_CHARSET) {
- HeapFree(GetProcessHeap(), 0, psub->to.name);
- HeapFree(GetProcessHeap(), 0, psub->from.name);
- HeapFree(GetProcessHeap(), 0, psub);
- } else {
- add_font_subst(&font_subst_list, psub, 0);
- }
- /* reset dlen and vlen */
- dlen = datalen;
- vlen = valuelen;
- }
- HeapFree(GetProcessHeap(), 0, data);
- HeapFree(GetProcessHeap(), 0, value);
- RegCloseKey(hkey);
- }
-}
-
/***********************************************************
* The replacement list is a way to map an entire font
* family onto another family. For example adding
--
1.2.4
More information about the wine-patches
mailing list