implemented wxFontEnumerator for wxDFB
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43727 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -16,6 +16,11 @@
|
||||
#include "wx/fontenc.h"
|
||||
#include "wx/arrstr.h"
|
||||
|
||||
#if wxUSE_PANGO || defined(__WXDFB__)
|
||||
// defined if the port uses only UTF-8 font encodings internally
|
||||
#define wxHAS_UTF8_FONTS
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFontEnumerator enumerates all available fonts on the system or only the
|
||||
// fonts with given attributes
|
||||
@@ -72,6 +77,11 @@ public:
|
||||
static bool IsValidFacename(const wxString &str);
|
||||
|
||||
private:
|
||||
#ifdef wxHAS_UTF8_FONTS
|
||||
// helper for ports that only use UTF-8 encoding natively
|
||||
bool EnumerateEncodingsUTF8(const wxString& facename);
|
||||
#endif
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxFontEnumerator)
|
||||
};
|
||||
|
||||
|
@@ -100,3 +100,32 @@ bool wxFontEnumerator::IsValidFacename(const wxString &facename)
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef wxHAS_UTF8_FONTS
|
||||
bool wxFontEnumerator::EnumerateEncodingsUTF8(const wxString& facename)
|
||||
{
|
||||
// name of UTF-8 encoding: no need to use wxFontMapper for it as it's
|
||||
// unlikely to change
|
||||
const wxString utf8(_T("UTF-8"));
|
||||
|
||||
// all fonts are in UTF-8 only if this code is used
|
||||
if ( !facename.empty() )
|
||||
{
|
||||
OnFontEncoding(facename, utf8);
|
||||
return true;
|
||||
}
|
||||
|
||||
// so enumerating all facenames supporting this encoding is the same as
|
||||
// enumerating all facenames
|
||||
const wxArrayString facenames(GetFacenames(wxFONTENCODING_UTF8));
|
||||
const size_t count = facenames.size();
|
||||
if ( !count )
|
||||
return false;
|
||||
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
{
|
||||
OnFontEncoding(facenames[n], utf8);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif // wxHAS_UTF8_FONTS
|
||||
|
@@ -16,21 +16,36 @@
|
||||
#endif
|
||||
|
||||
#include "wx/fontenum.h"
|
||||
#include "wx/private/fontmgr.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFontEnumerator
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding WXUNUSED(encoding),
|
||||
bool WXUNUSED(fixedWidthOnly))
|
||||
bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
|
||||
bool fixedWidthOnly)
|
||||
{
|
||||
// FIXME_DFB
|
||||
OnFacename(_T("Default"));
|
||||
return true;
|
||||
// we only support UTF-8 and system (which means "use any"):
|
||||
if ( encoding != wxFONTENCODING_SYSTEM && encoding != wxFONTENCODING_UTF8 )
|
||||
return false;
|
||||
|
||||
bool found = false;
|
||||
const wxFontBundleList& list = wxFontsManager::Get()->GetBundles();
|
||||
|
||||
for ( wxFontBundleList::const_iterator f = list.begin(); f != list.end(); ++f )
|
||||
{
|
||||
if ( fixedWidthOnly && !(*f)->IsFixed() )
|
||||
continue;
|
||||
|
||||
found = true;
|
||||
if ( !OnFacename((*f)->GetName()) )
|
||||
break; // OnFacename() requests us to stop enumeration
|
||||
}
|
||||
|
||||
bool wxFontEnumerator::EnumerateEncodings(const wxString& WXUNUSED(family))
|
||||
{
|
||||
// FIXME_DFB
|
||||
return false;
|
||||
return found;
|
||||
}
|
||||
|
||||
bool wxFontEnumerator::EnumerateEncodings(const wxString& facename)
|
||||
{
|
||||
return EnumerateEncodingsUTF8(facename);
|
||||
}
|
||||
|
@@ -112,31 +112,7 @@ bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
|
||||
|
||||
bool wxFontEnumerator::EnumerateEncodings(const wxString& facename)
|
||||
{
|
||||
// name of UTF-8 encoding: no need to use wxFontMapper for it as it's
|
||||
// unlikely to change
|
||||
const wxString utf8(_T("UTF-8"));
|
||||
|
||||
|
||||
// all fonts are in UTF-8 only when using Pango
|
||||
if ( !facename.empty() )
|
||||
{
|
||||
OnFontEncoding(facename, utf8);
|
||||
return true;
|
||||
}
|
||||
|
||||
// so enumerating all facenames supporting this encoding is the same as
|
||||
// enumerating all facenames
|
||||
const wxArrayString facenames(GetFacenames(wxFONTENCODING_UTF8));
|
||||
const size_t count = facenames.size();
|
||||
if ( !count )
|
||||
return false;
|
||||
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
{
|
||||
OnFontEncoding(facenames[n], utf8);
|
||||
}
|
||||
|
||||
return true;
|
||||
return EnumerateEncodingsUTF8(facename);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user