/[pcsx2_0.9.7]/trunk/3rdparty/wxWidgets/src/common/fontenumcmn.cpp
ViewVC logotype

Annotation of /trunk/3rdparty/wxWidgets/src/common/fontenumcmn.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (hide annotations) (download)
Tue Sep 7 03:24:11 2010 UTC (10 years, 4 months ago) by william
File size: 4165 byte(s)
committing r3113 initial commit again...
1 william 31 /////////////////////////////////////////////////////////////////////////////
2     // Name: src/common/fontenumcmn.cpp
3     // Purpose: wxFontEnumerator class
4     // Author: Vadim Zeitlin
5     // Modified by:
6     // Created: 7/5/2006
7     // RCS-ID: $Id: fontenumcmn.cpp 43727 2006-12-01 10:14:28Z VS $
8     // Copyright: (c) 1999-2003 Vadim Zeitlin <vadim@wxwindows.org>
9     // Licence: wxWindows licence
10     /////////////////////////////////////////////////////////////////////////////
11    
12     // ============================================================================
13     // declarations
14     // ============================================================================
15    
16     // ----------------------------------------------------------------------------
17     // headers
18     // ----------------------------------------------------------------------------
19    
20     // For compilers that support precompilation, includes "wx.h".
21     #include "wx/wxprec.h"
22    
23     #ifdef __BORLANDC__
24     #pragma hdrstop
25     #endif
26    
27     #include "wx/fontenum.h"
28    
29     // ============================================================================
30     // implementation
31     // ============================================================================
32    
33     // A simple wxFontEnumerator which doesn't perform any filtering and
34     // just returns all facenames and encodings found in the system
35     class WXDLLEXPORT wxSimpleFontEnumerator : public wxFontEnumerator
36     {
37     public:
38     wxSimpleFontEnumerator() { }
39    
40     // called by EnumerateFacenames
41     virtual bool OnFacename(const wxString& facename)
42     {
43     m_arrFacenames.Add(facename);
44     return true;
45     }
46    
47     // called by EnumerateEncodings
48     virtual bool OnFontEncoding(const wxString& WXUNUSED(facename),
49     const wxString& encoding)
50     {
51     m_arrEncodings.Add(encoding);
52     return true;
53     }
54    
55     public:
56     wxArrayString m_arrFacenames, m_arrEncodings;
57     };
58    
59    
60     /* static */
61     wxArrayString wxFontEnumerator::GetFacenames(wxFontEncoding encoding, bool fixedWidthOnly)
62     {
63     wxSimpleFontEnumerator temp;
64     temp.EnumerateFacenames(encoding, fixedWidthOnly);
65     return temp.m_arrFacenames;
66     }
67    
68     /* static */
69     wxArrayString wxFontEnumerator::GetEncodings(const wxString& facename)
70     {
71     wxSimpleFontEnumerator temp;
72     temp.EnumerateEncodings(facename);
73     return temp.m_arrEncodings;
74     }
75    
76     /* static */
77     bool wxFontEnumerator::IsValidFacename(const wxString &facename)
78     {
79     // we cache the result of wxFontEnumerator::GetFacenames supposing that
80     // the array of face names won't change in the session of this program
81     static wxArrayString s_arr = wxFontEnumerator::GetFacenames();
82    
83     #ifdef __WXMSW__
84     // Quoting the MSDN:
85     // "MS Shell Dlg is a mapping mechanism that enables
86     // U.S. English Microsoft Windows NT, and Microsoft Windows 2000 to
87     // support locales that have characters that are not contained in code
88     // page 1252. It is not a font but a face name for a nonexistent font."
89     // Thus we need to consider "Ms Shell Dlg" and "Ms Shell Dlg 2" as valid
90     // font face names even if they are enumerated by wxFontEnumerator
91     if (facename.IsSameAs(wxT("Ms Shell Dlg"), false) ||
92     facename.IsSameAs(wxT("Ms Shell Dlg 2"), false))
93     return true;
94     #endif
95    
96     // is given font face name a valid one ?
97     if (s_arr.Index(facename, false) == wxNOT_FOUND)
98     return false;
99    
100     return true;
101     }
102    
103     #ifdef wxHAS_UTF8_FONTS
104     bool wxFontEnumerator::EnumerateEncodingsUTF8(const wxString& facename)
105     {
106     // name of UTF-8 encoding: no need to use wxFontMapper for it as it's
107     // unlikely to change
108     const wxString utf8(_T("UTF-8"));
109    
110     // all fonts are in UTF-8 only if this code is used
111     if ( !facename.empty() )
112     {
113     OnFontEncoding(facename, utf8);
114     return true;
115     }
116    
117     // so enumerating all facenames supporting this encoding is the same as
118     // enumerating all facenames
119     const wxArrayString facenames(GetFacenames(wxFONTENCODING_UTF8));
120     const size_t count = facenames.size();
121     if ( !count )
122     return false;
123    
124     for ( size_t n = 0; n < count; n++ )
125     {
126     OnFontEncoding(facenames[n], utf8);
127     }
128    
129     return true;
130     }
131     #endif // wxHAS_UTF8_FONTS

  ViewVC Help
Powered by ViewVC 1.1.22