the class queries \helpref{wxEncodingConverter}{wxencodingconverter}
for "equivalent" encodings (e.g. iso8859-2 and cp1250) and tries them.
-\wxheading{Using wxFontMapper in conjunction with wxEncodingConverter}
+\wxheading{Using wxFontMapper in conjunction with wxMBConv classes}
If you need to display text in encoding which is not available at
host system (see \helpref{IsEncodingAvailable}{wxfontmapperisencodingavailable}),
you may use these two classes to find font in some similar encoding
(see \helpref{GetAltForEncoding}{wxfontmappergetaltforencoding})
and convert the text to this encoding
-(\helpref{wxEncodingConverter::Convert}{wxencodingconverterconvert}).
+(\helpref{wxMBConv classes}{mbconvclasses}).
Following code snippet demonstrates it:
if (wxFontMapper::Get()->GetAltForEncoding(enc, &alternative,
facename, false))
{
- wxEncodingConverter encconv;
- if (!encconv.Init(enc, alternative))
- ...failure...
- else
- text = encconv.Convert(text);
+ wxCSConv convFrom(wxFontMapper::Get()->GetEncodingName(enc));
+ wxCSConv convTo(wxFontMapper::Get()->GetEncodingName(alternative));
+ text = wxString(text.mb_str(convFrom), convTo);
}
else
...failure (or we may try iso8859-1/7bit ASCII)...
\latexignore{\rtfignore{\wxheading{Members}}}
+
\membersection{wxFontMapper::wxFontMapper}\label{wxfontmapperwxfontmapper}
\func{}{wxFontMapper}{\void}
The preferred way of creating a wxFontMapper instance is to call
\helpref{wxFontMapper::Get}{wxfontmapperget}.
+
\membersection{wxFontMapper::\destruct{wxFontMapper}}\label{wxfontmapperdtor}
\func{}{\destruct{wxFontMapper}}{\void}
Virtual dtor for a base class.
+
+\membersection{wxFontMapper::CharsetToEncoding}\label{wxfontmappercharsettoencoding}
+
+\func{wxFontEncoding}{CharsetToEncoding}{\param{const wxString\& }{charset}, \param{bool }{interactive = true}}
+
+Returns the encoding for the given charset (in the form of RFC 2046) or
+\texttt{wxFONTENCODING\_SYSTEM} if couldn't decode it.
+
+Be careful when using this function with \arg{interactive} set to \true
+(default value) as the function then may show a dialog box to the user which
+may lead to unexpected reentrancies and may also take a significantly longer
+time than a simple function call. For these reasons, it is almost always a bad
+idea to call this function from the event handlers for repeatedly generated
+events such as \texttt{EVT\_PAINT}.
+
+
\membersection{wxFontMapper::Get}\label{wxfontmapperget}
\func{static wxFontMapper *}{Get}{\void}
\helpref{wxFontMapper::Set}{wxfontmapperset}
+
\membersection{wxFontMapper::GetAltForEncoding}\label{wxfontmappergetaltforencoding}
\func{bool}{GetAltForEncoding}{\param{wxFontEncoding }{encoding}, \param{wxNativeEncodingInfo* }{info}, \param{const wxString\& }{facename = wxEmptyString}, \param{bool }{interactive = true}}
structure with the parameters required to create the font, otherwise
return false.
-The first form is for wxWindows' internal use while the second one
+The first form is for wxWidgets' internal use while the second one
is better suitable for general use -- it returns wxFontEncoding which
can consequently be passed to wxFont constructor.
-\membersection{wxFontMapper::IsEncodingAvailable}\label{wxfontmapperisencodingavailable}
-\func{bool}{IsEncodingAvailable}{\param{wxFontEncoding }{encoding}, \param{const wxString\& }{facename = wxEmptyString}}
+\membersection{wxFontMapper::GetEncoding}\label{wxfontmappergetencoding}
-Check whether given encoding is available in given face or not.
-If no facename is given, find {\it any} font in this encoding.
+\func{static wxFontEncoding}{GetEncoding}{\param{size\_t }{n}}
-\membersection{wxFontMapper::CharsetToEncoding}\label{wxfontmappercharsettoencoding}
+Returns the {\it n}-th supported encoding. Together with
+\helpref{GetSupportedEncodingsCount()}{wxfontmappergetsupportedencodingscount}
+this method may be used to get all supported encodings.
-\func{wxFontEncoding}{CharsetToEncoding}{\param{const wxString\& }{charset}, \param{bool }{interactive = true}}
-Returns the encoding for the given charset (in the form of RFC 2046) or
-wxFONTENCODING\_SYSTEM if couldn't decode it.
+\membersection{wxFontMapper::GetEncodingDescription}\label{wxfontmappergetencodingdescription}
+
+\func{static wxString}{GetEncodingDescription}{\param{wxFontEncoding }{encoding}}
+
+Return user-readable string describing the given encoding.
+
+
+\membersection{wxFontMapper::GetEncodingFromName}\label{wxfontmappergetencodingfromname}
+
+\func{static wxFontEncoding}{GetEncodingFromName}{\param{const wxString\& }{encoding}}
+
+Return the encoding corresponding to the given internal name. This function is
+the inverse of \helpref{GetEncodingName}{wxfontmappergetencodingname} and is
+intentionally less general than
+\helpref{CharsetToEncoding}{wxfontmappercharsettoencoding}, i.e. it doesn't
+try to make any guesses nor ever asks the user. It is meant just as a way of
+restoring objects previously serialized using
+\helpref{GetEncodingName}{wxfontmappergetencodingname}.
+
\membersection{wxFontMapper::GetEncodingName}\label{wxfontmappergetencodingname}
Return internal string identifier for the encoding (see also
\helpref{GetEncodingDescription()}{wxfontmappergetencodingdescription})
-\membersection{wxFontMapper::GetEncodingDescription}\label{wxfontmappergetencodingdescription}
+\wxheading{See also}
-\func{static wxString}{GetEncodingDescription}{\param{wxFontEncoding }{encoding}}
+\helpref{GetEncodingFromName}{wxfontmappergetencodingfromname}
+
+
+\membersection{wxFontMapper::GetSupportedEncodingsCount}\label{wxfontmappergetsupportedencodingscount}
+
+\func{static size\_t}{GetSupportedEncodingsCount}{\void}
+
+Returns the number of the font encodings supported by this class. Together with
+\helpref{GetEncoding}{wxfontmappergetencoding} this method may be used to get
+all supported encodings.
+
+
+\membersection{wxFontMapper::IsEncodingAvailable}\label{wxfontmapperisencodingavailable}
+
+\func{bool}{IsEncodingAvailable}{\param{wxFontEncoding }{encoding}, \param{const wxString\& }{facename = wxEmptyString}}
+
+Check whether given encoding is available in given face or not.
+If no facename is given, find {\it any} font in this encoding.
-Return user-readable string describing the given encoding.
\membersection{wxFontMapper::SetDialogParent}\label{wxfontmappersetdialogparent}
The parent window for modal dialogs.
+
\membersection{wxFontMapper::SetDialogTitle}\label{wxfontmappersetdialogtitle}
\func{void}{SetDialogTitle}{\param{const wxString\& }{title}}
The title for the dialogs (note that default is quite reasonable).
+
\membersection{wxFontMapper::Set}\label{wxfontmapperset}
\func{static wxFontMapper *}{Set}{\param{wxFontMapper *}{mapper}}
Set the current font mapper object and return previous one (may be NULL).
This method is only useful if you want to plug-in an alternative font mapper
-into wxWindows.
+into wxWidgets.
\wxheading{See also}
\helpref{wxFontMapper::Get}{wxfontmapperget}
+
\membersection{wxFontMapper::SetConfig}\label{wxfontmappersetconfig}
\func{void}{SetConfig}{\param{wxConfigBase* }{config}}
and the default root path for the config settings is the string returned by
GetDefaultConfigPath().
+
\membersection{wxFontMapper::SetConfigPath}\label{wxfontmappersetconfigpath}
\func{void}{SetConfigPath}{\param{const wxString\& }{prefix}}