{ DoEnumerateFamilies(TRUE); }
void OnEnumerateEncodings(wxCommandEvent& event);
+ void OnCheckNativeToFromString(wxCommandEvent& event);
+
void OnSize(wxSizeEvent& event);
protected:
Font_EnumFamilies,
Font_EnumFixedFamilies,
Font_EnumEncodings,
+ Font_CheckNativeToFromString,
Font_Max
};
EVT_MENU(Font_EnumFamilies, MyFrame::OnEnumerateFamilies)
EVT_MENU(Font_EnumFixedFamilies, MyFrame::OnEnumerateFixedFamilies)
EVT_MENU(Font_EnumEncodings, MyFrame::OnEnumerateEncodings)
+ EVT_MENU(Font_CheckNativeToFromString, MyFrame::OnCheckNativeToFromString)
EVT_SIZE(MyFrame::OnSize)
END_EVENT_TABLE()
menuFont->Append(Font_EnumFamiliesForEncoding,
"Find font for en&coding...\tCtrl-C",
"Find font families for given encoding");
+ menuFont->AppendSeparator();
+ menuFont->Append(Font_CheckNativeToFromString,
+ "Check Native Font Info To/From String");
// now append the freshly created menu to the menu bar...
wxMenuBar *menuBar = new wxMenuBar;
class MyEncodingEnumerator : public wxFontEnumerator
{
public:
- MyEncodingEnumerator()
+ MyEncodingEnumerator()
{ m_n = 0; }
- const wxString& GetText() const
+ const wxString& GetText() const
{ return m_text; }
protected:
class MyFontEnumerator : public wxFontEnumerator
{
public:
- bool GotAny() const
+ bool GotAny() const
{ return !m_facenames.IsEmpty(); }
- const wxArrayString& GetFacenames() const
+ const wxArrayString& GetFacenames() const
{ return m_facenames; }
protected:
wxFONTENCODING_CP1252,
};
- static const char *encodingNames[] =
+ static const wxString encodingNames[] =
{
- "West European (Latin 1)",
- "Central European (Latin 2)",
- "Cyrillic (Latin 5)",
- "Greek (Latin 7)",
- "West European new (Latin 0)",
+ "Western European (ISO-8859-1)",
+ "Central European (ISO-8859-2)",
+ "Cyrillic (ISO-8859-5)",
+ "Greek (ISO-8859-7)",
+ "Western European with Euro (ISO-8859-15)",
"KOI8-R",
- "Windows Latin 2",
- "Windows Cyrillic",
- "Windows Latin 1",
+ "Windows Central European (CP 1250)",
+ "Windows Cyrillic (CP 1251)",
+ "Windows Western European (CP 1252)",
};
int n = wxGetSingleChoiceIndex("Choose an encoding", "Font demo",
WXSIZEOF(encodingNames),
- (char **)encodingNames,
+ encodingNames,
this);
if ( n != -1 )
}
}
+void MyFrame::OnCheckNativeToFromString(wxCommandEvent& WXUNUSED(event))
+{
+ wxString fontInfo = m_canvas->GetTextFont().GetNativeFontInfoDesc();
+
+ if ( fontInfo.IsEmpty() )
+ {
+ wxLogError("Native font info string is empty!");
+ }
+ else
+ {
+ wxFont *font = wxFont::New(fontInfo);
+ if ( fontInfo != font->GetNativeFontInfoDesc() )
+ wxLogError("wxNativeFontInfo ToString()/FromString() broken!");
+ else
+ wxLogError("wxNativeFontInfo works: %s", fontInfo.c_str());
+ delete font;
+ }
+}
+
void MyFrame::DoResizeFont(int diff)
{
wxFont fontOld = m_canvas->GetTextFont();
void MyFrame::DoChangeFont(const wxFont& font, const wxColour& col)
{
- Resize(GetSize(), font);
+ Resize(GetClientSize(), font);
m_canvas->SetTextFont(font);
if ( col.Ok() )
m_textctrl->LoadFile(filename);
- if (!wxTheFontMapper->IsEncodingAvailable(fontenc))
+ if ( fontenc == wxFONTENCODING_UTF8 ||
+ !wxTheFontMapper->IsEncodingAvailable(fontenc) )
{
// try to find some similar encoding:
wxFontEncoding encAlt;
if ( wxTheFontMapper->GetAltForEncoding(fontenc, &encAlt) )
{
wxEncodingConverter conv;
-
+
if (conv.Init(fontenc, encAlt))
{
fontenc = encAlt;
void MyFrame::OnSize(wxSizeEvent& event)
{
- wxSize size = event.GetSize();
-
- Resize(size);
+ Resize(GetClientSize());
event.Skip();
}
dc.DrawText(fontInfo, 5, 5);
+ if ( m_font.Ok() )
+ {
+ wxString fontDesc = m_font.GetNativeFontInfoDesc();
+ dc.SetFont(wxFont(fontDesc));
+ fontInfo.Printf("Native font info: %s", fontDesc.c_str());
+ dc.DrawText(fontInfo, 5, 5 + dc.GetCharHeight());
+ }
+
// prepare to draw the font
dc.SetFont(m_font);
dc.SetTextForeground(m_colour);