Patch level : 2.0 614
Files correlati : xvaga.dll Ricompilazione Demo : [ ] Commento : Correzioni necessarie per correggere scelta font git-svn-id: svn://10.65.10.50/trunk@11529 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b9fd8878cc
commit
f239bbd3bf
@ -50,8 +50,8 @@ struct XvtData
|
||||
char** families;
|
||||
long* sizes;
|
||||
short* scalable;
|
||||
long max_count;
|
||||
long cur_count;
|
||||
int max_count;
|
||||
int cur_count;
|
||||
|
||||
XvtData() { memset(this, 0, sizeof(XvtData)); }
|
||||
};
|
||||
@ -64,8 +64,11 @@ int CALLBACK FamilyEnumerator(
|
||||
)
|
||||
{
|
||||
XvtData* d = (XvtData*)lParam;
|
||||
d->families[d->cur_count++] = strdup(plf->lfFaceName);
|
||||
return d->cur_count < d->max_count;
|
||||
int& n = d->cur_count;
|
||||
for (int i = n-1; i >= 0 && stricmp(d->families[i], plf->lfFaceName); i--);
|
||||
if (i < 0) // Controlla che il nome del font non ci sia gia'
|
||||
d->families[n++] = strdup(plf->lfFaceName);
|
||||
return n < d->max_count;
|
||||
}
|
||||
|
||||
int CALLBACK SizeEnumerator(
|
||||
@ -76,7 +79,7 @@ int CALLBACK SizeEnumerator(
|
||||
)
|
||||
{
|
||||
XvtData* d = (XvtData*)lParam;
|
||||
long& i = d->cur_count;
|
||||
int& i = d->cur_count;
|
||||
int size = (plf->lfHeight+5) / 10;
|
||||
if (size <= 0)
|
||||
{
|
||||
@ -112,6 +115,7 @@ int OsWin32_EnumerateFamilies(unsigned int hDC, char** families, int max_count)
|
||||
data.families = families;
|
||||
data.max_count = max_count;
|
||||
LOGFONT lf; memset(&lf, 0, sizeof(lf));
|
||||
lf.lfCharSet = DEFAULT_CHARSET;
|
||||
::EnumFontFamiliesEx((HDC)hDC, &lf, FamilyEnumerator, (LPARAM)&data, 0);
|
||||
qsort(families, data.cur_count, sizeof(char*), FamilySorter);
|
||||
return data.cur_count;
|
||||
@ -124,6 +128,7 @@ int OsWin32_EnumerateSizes(unsigned int hDC, const char* name, long* sizes, shor
|
||||
data.scalable = scalable;
|
||||
data.max_count = max_count;
|
||||
LOGFONT lf; memset(&lf, 0, sizeof(lf));
|
||||
lf.lfCharSet = DEFAULT_CHARSET;
|
||||
strcpy(lf.lfFaceName, name);
|
||||
::EnumFontFamiliesEx((HDC)hDC, &lf, SizeEnumerator, (LPARAM)&data, 0);
|
||||
|
||||
|
@ -305,6 +305,11 @@ long xvt_fmap_get_families(PRINT_RCD *precp, char **family_array, long max_famil
|
||||
#ifdef WIN32
|
||||
TwxPrintOut* po = m_PrintoutCache.Get((TPRINT_RCD*)precp);
|
||||
size = OsWin32_EnumerateFamilies(po->GetDC()->GetHDC(), family_array, max_families);
|
||||
if (size == 0)
|
||||
{
|
||||
HDC hdc = ::GetDC(NULL); // Screen DC
|
||||
size = OsWin32_EnumerateFamilies((unsigned int)hdc, family_array, max_families);
|
||||
}
|
||||
#else
|
||||
size = OsLinux_EnumerateFamilies(family_array, max_families);
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user