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;
|
char** families;
|
||||||
long* sizes;
|
long* sizes;
|
||||||
short* scalable;
|
short* scalable;
|
||||||
long max_count;
|
int max_count;
|
||||||
long cur_count;
|
int cur_count;
|
||||||
|
|
||||||
XvtData() { memset(this, 0, sizeof(XvtData)); }
|
XvtData() { memset(this, 0, sizeof(XvtData)); }
|
||||||
};
|
};
|
||||||
@ -64,8 +64,11 @@ int CALLBACK FamilyEnumerator(
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
XvtData* d = (XvtData*)lParam;
|
XvtData* d = (XvtData*)lParam;
|
||||||
d->families[d->cur_count++] = strdup(plf->lfFaceName);
|
int& n = d->cur_count;
|
||||||
return d->cur_count < d->max_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(
|
int CALLBACK SizeEnumerator(
|
||||||
@ -76,7 +79,7 @@ int CALLBACK SizeEnumerator(
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
XvtData* d = (XvtData*)lParam;
|
XvtData* d = (XvtData*)lParam;
|
||||||
long& i = d->cur_count;
|
int& i = d->cur_count;
|
||||||
int size = (plf->lfHeight+5) / 10;
|
int size = (plf->lfHeight+5) / 10;
|
||||||
if (size <= 0)
|
if (size <= 0)
|
||||||
{
|
{
|
||||||
@ -112,6 +115,7 @@ int OsWin32_EnumerateFamilies(unsigned int hDC, char** families, int max_count)
|
|||||||
data.families = families;
|
data.families = families;
|
||||||
data.max_count = max_count;
|
data.max_count = max_count;
|
||||||
LOGFONT lf; memset(&lf, 0, sizeof(lf));
|
LOGFONT lf; memset(&lf, 0, sizeof(lf));
|
||||||
|
lf.lfCharSet = DEFAULT_CHARSET;
|
||||||
::EnumFontFamiliesEx((HDC)hDC, &lf, FamilyEnumerator, (LPARAM)&data, 0);
|
::EnumFontFamiliesEx((HDC)hDC, &lf, FamilyEnumerator, (LPARAM)&data, 0);
|
||||||
qsort(families, data.cur_count, sizeof(char*), FamilySorter);
|
qsort(families, data.cur_count, sizeof(char*), FamilySorter);
|
||||||
return data.cur_count;
|
return data.cur_count;
|
||||||
@ -124,6 +128,7 @@ int OsWin32_EnumerateSizes(unsigned int hDC, const char* name, long* sizes, shor
|
|||||||
data.scalable = scalable;
|
data.scalable = scalable;
|
||||||
data.max_count = max_count;
|
data.max_count = max_count;
|
||||||
LOGFONT lf; memset(&lf, 0, sizeof(lf));
|
LOGFONT lf; memset(&lf, 0, sizeof(lf));
|
||||||
|
lf.lfCharSet = DEFAULT_CHARSET;
|
||||||
strcpy(lf.lfFaceName, name);
|
strcpy(lf.lfFaceName, name);
|
||||||
::EnumFontFamiliesEx((HDC)hDC, &lf, SizeEnumerator, (LPARAM)&data, 0);
|
::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
|
#ifdef WIN32
|
||||||
TwxPrintOut* po = m_PrintoutCache.Get((TPRINT_RCD*)precp);
|
TwxPrintOut* po = m_PrintoutCache.Get((TPRINT_RCD*)precp);
|
||||||
size = OsWin32_EnumerateFamilies(po->GetDC()->GetHDC(), family_array, max_families);
|
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
|
#else
|
||||||
size = OsLinux_EnumerateFamilies(family_array, max_families);
|
size = OsLinux_EnumerateFamilies(family_array, max_families);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user