X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a82a59f519b29a3233b0211c155b1254fc116b0a..e1efca652844273c3e8d32c7e5f442b87e455ca7:/samples/font/font.cpp diff --git a/samples/font/font.cpp b/samples/font/font.cpp index 4fa3fdc85d..fce11afd27 100644 --- a/samples/font/font.cpp +++ b/samples/font/font.cpp @@ -41,7 +41,7 @@ #endif // used as title for several dialog boxes -static const wxChar SAMPLE_TITLE[] = _T("wxWidgets Font Sample"); +static const wxChar SAMPLE_TITLE[] = wxT("wxWidgets Font Sample"); // ---------------------------------------------------------------------------- // private classes @@ -102,10 +102,10 @@ public: void OnBold(wxCommandEvent& event); void OnLight(wxCommandEvent& event); - + void OnItalic(wxCommandEvent& event); void OnSlant(wxCommandEvent& event); - + void OnUnderline(wxCommandEvent& event); void OnwxPointerFont(wxCommandEvent& event); @@ -123,7 +123,7 @@ public: void OnSetNativeDesc(wxCommandEvent& event); void OnSetNativeUserDesc(wxCommandEvent& event); - + void OnSetFamily(wxCommandEvent& event); void OnSetFaceName(wxCommandEvent& event); void OnSetEncoding(wxCommandEvent& event); @@ -164,21 +164,21 @@ enum // menu items Font_Quit = wxID_EXIT, Font_About = wxID_ABOUT, - + Font_ViewMsg = wxID_HIGHEST+1, Font_TestTextValue, Font_IncSize, Font_DecSize, - + Font_Bold, Font_Light, - + Font_Italic, Font_Slant, - + Font_Underlined, - + // standard global wxFont objects: Font_wxNORMAL_FONT, Font_wxSMALL_FONT, @@ -223,13 +223,13 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Font_IncSize, MyFrame::OnIncFont) EVT_MENU(Font_DecSize, MyFrame::OnDecFont) - + EVT_MENU(Font_Bold, MyFrame::OnBold) EVT_MENU(Font_Light, MyFrame::OnLight) - + EVT_MENU(Font_Italic, MyFrame::OnItalic) EVT_MENU(Font_Slant, MyFrame::OnSlant) - + EVT_MENU(Font_Underlined, MyFrame::OnUnderline) EVT_MENU(Font_wxNORMAL_FONT, MyFrame::OnwxPointerFont) @@ -282,9 +282,8 @@ bool MyApp::OnInit() MyFrame *frame = new MyFrame(wxT("Font wxWidgets demo"), wxPoint(50, 50), wxSize(600, 400)); - // Show it and tell the application that it's our main window + // Show it frame->Show(true); - SetTopWindow(frame); // success: wxApp::OnRun() will be called which will enter the main message // loop and the application will run. If we returned 'false' here, the @@ -302,7 +301,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) { m_fontSize = wxNORMAL_FONT->GetPointSize(); - SetIcon(wxIcon(sample_xpm)); + SetIcon(wxICON(sample)); // create a menu bar wxMenu *menuFile = new wxMenu; @@ -324,7 +323,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) menuFont->AppendCheckItem(Font_Light, wxT("&Light\tCtrl-L"), wxT("Toggle light state")); menuFont->AppendSeparator(); menuFont->AppendCheckItem(Font_Italic, wxT("&Oblique\tCtrl-O"), wxT("Toggle italic state")); +#ifndef __WXMSW__ + // under wxMSW slant == italic so there's no reason to provide another menu item for the same thing menuFont->AppendCheckItem(Font_Slant, wxT("&Slant\tCtrl-S"), wxT("Toggle slant state")); +#endif menuFont->AppendSeparator(); menuFont->AppendCheckItem(Font_Underlined, wxT("&Underlined\tCtrl-U"), wxT("Toggle underlined state")); @@ -336,7 +338,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) wxT("Set &user font description\tShift-Ctrl-U")); menuFont->AppendSeparator(); menuFont->Append(Font_SetFamily, wxT("Set font family")); - menuFont->Append(Font_SetFaceName, wxT("Set font face name")); + menuFont->Append(Font_SetFaceName, wxT("Set font face name")); menuFont->Append(Font_SetEncoding, wxT("Set font &encoding\tShift-Ctrl-E")); wxMenu *menuSelect = new wxMenu; @@ -351,21 +353,21 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) menuSelect->Append(Font_Standard, wxT("Standar&d fonts"), menuStdFonts); wxMenu *menuSettingFonts = new wxMenu; - menuSettingFonts->Append(Font_wxSYS_OEM_FIXED_FONT, wxT("wxSYS_OEM_FIXED_FONT"), + menuSettingFonts->Append(Font_wxSYS_OEM_FIXED_FONT, wxT("wxSYS_OEM_FIXED_FONT"), wxT("Original equipment manufacturer dependent fixed-pitch font.")); - menuSettingFonts->Append(Font_wxSYS_ANSI_FIXED_FONT, wxT("wxSYS_ANSI_FIXED_FONT"), + menuSettingFonts->Append(Font_wxSYS_ANSI_FIXED_FONT, wxT("wxSYS_ANSI_FIXED_FONT"), wxT("Windows fixed-pitch (monospaced) font. ")); - menuSettingFonts->Append(Font_wxSYS_ANSI_VAR_FONT, wxT("wxSYS_ANSI_VAR_FONT"), + menuSettingFonts->Append(Font_wxSYS_ANSI_VAR_FONT, wxT("wxSYS_ANSI_VAR_FONT"), wxT("Windows variable-pitch (proportional) font.")); - menuSettingFonts->Append(Font_wxSYS_SYSTEM_FONT, wxT("wxSYS_SYSTEM_FONT"), + menuSettingFonts->Append(Font_wxSYS_SYSTEM_FONT, wxT("wxSYS_SYSTEM_FONT"), wxT("System font.")); menuSettingFonts->Append(Font_wxSYS_DEVICE_DEFAULT_FONT, wxT("wxSYS_DEVICE_DEFAULT_FONT"), wxT("Device-dependent font.")); - menuSettingFonts->Append(Font_wxSYS_DEFAULT_GUI_FONT, wxT("wxSYS_DEFAULT_GUI_FONT"), + menuSettingFonts->Append(Font_wxSYS_DEFAULT_GUI_FONT, wxT("wxSYS_DEFAULT_GUI_FONT"), wxT("Default font for user interface objects such as menus and dialog boxes. ")); menuSelect->Append(Font_SystemSettings, wxT("System fonts"), menuSettingFonts); - - + + menuSelect->AppendSeparator(); menuSelect->Append(Font_EnumFamilies, wxT("Enumerate font &families\tCtrl-F")); menuSelect->Append(Font_EnumFixedFamilies, @@ -551,7 +553,7 @@ void MyFrame::OnSetNativeDesc(wxCommandEvent& WXUNUSED(event)) wxFont font; font.SetNativeFontInfo(fontInfo); - if ( !font.Ok() ) + if ( !font.IsOk() ) { wxLogError(wxT("Font info string \"%s\" is invalid."), fontInfo.c_str()); @@ -574,12 +576,12 @@ void MyFrame::OnSetNativeUserDesc(wxCommandEvent& WXUNUSED(event)) wxFont font; if (font.SetNativeFontInfoUserDesc(fontUserInfo)) { - wxASSERT_MSG(font.Ok(), wxT("The font should now be valid")); + wxASSERT_MSG(font.IsOk(), wxT("The font should now be valid")); DoChangeFont(font); } else { - wxASSERT_MSG(!font.Ok(), wxT("The font should now be invalid")); + wxASSERT_MSG(!font.IsOk(), wxT("The font should now be invalid")); wxMessageBox(wxT("Error trying to create a font with such description...")); } } @@ -606,12 +608,12 @@ void MyFrame::OnSetFaceName(wxCommandEvent& WXUNUSED(event)) wxFont font(GetCanvas()->GetTextFont()); if (font.SetFaceName(newFaceName)) // change facename only { - wxASSERT_MSG(font.Ok(), wxT("The font should now be valid")); + wxASSERT_MSG(font.IsOk(), wxT("The font should now be valid")); DoChangeFont(font); } else { - wxASSERT_MSG(!font.Ok(), wxT("The font should now be invalid")); + wxASSERT_MSG(!font.IsOk(), wxT("The font should now be invalid")); wxMessageBox(wxT("There is no font with such face name..."), wxT("Invalid face name"), wxOK|wxICON_ERROR, this); } @@ -804,12 +806,12 @@ void MyFrame::OnwxSystemSettingsFont(wxCommandEvent& event) void MyFrame::DoChangeFont(const wxFont& font, const wxColour& col) { m_canvas->SetTextFont(font); - if ( col.Ok() ) + if ( col.IsOk() ) m_canvas->SetColour(col); m_canvas->Refresh(); m_textctrl->SetFont(font); - if ( col.Ok() ) + if ( col.IsOk() ) m_textctrl->SetForegroundColour(col); // update the state of the bold/italic/underlined menu items @@ -818,10 +820,12 @@ void MyFrame::DoChangeFont(const wxFont& font, const wxColour& col) { mbar->Check(Font_Light, font.GetWeight() == wxFONTWEIGHT_LIGHT); mbar->Check(Font_Bold, font.GetWeight() == wxFONTWEIGHT_BOLD); - + mbar->Check(Font_Italic, font.GetStyle() == wxFONTSTYLE_ITALIC); +#ifndef __WXMSW__ mbar->Check(Font_Slant, font.GetStyle() == wxFONTSTYLE_SLANT); - +#endif + mbar->Check(Font_Underlined, font.GetUnderlined()); } } @@ -964,7 +968,7 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false /* !underlined */, wxEmptyString /* facename */, fontenc); - if ( font.Ok() ) + if ( font.IsOk() ) { DoChangeFont(font); } @@ -1007,6 +1011,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) // set background dc.SetBackground(wxBrush(wxT("white"), wxSOLID)); dc.Clear(); + dc.SetFont(m_font); // one text line height wxCoord hLine = dc.GetCharHeight(); @@ -1017,24 +1022,32 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) // output the font name/info wxString fontInfo; - fontInfo.Printf(wxT("Font size is %d points, family: %s, encoding: %s"), + + fontInfo.Printf(wxT("Face name: %s, family: %s"), + m_font.GetFaceName().c_str(), + m_font.GetFamilyString().c_str()); + + dc.DrawText(fontInfo, x, y); + y += hLine; + + fontInfo.Printf(wxT("Size: %d points or %d pixels; %d*%d average char size"), m_font.GetPointSize(), - m_font.GetFamilyString().c_str(), - wxFontMapper:: - GetEncodingDescription(m_font.GetEncoding()).c_str()); + m_font.GetPixelSize().y, + dc.GetCharWidth(), dc.GetCharHeight()); dc.DrawText(fontInfo, x, y); y += hLine; - fontInfo.Printf(wxT("Style: %s, weight: %s, fixed width: %s"), + fontInfo.Printf(wxT("Style: %s, weight: %s, fixed width: %s, encoding: %s"), m_font.GetStyleString().c_str(), m_font.GetWeightString().c_str(), - m_font.IsFixedWidth() ? _T("yes") : _T("no")); + m_font.IsFixedWidth() ? wxT("yes") : wxT("no"), + wxFontMapper::GetEncodingDescription(m_font.GetEncoding())); dc.DrawText(fontInfo, x, y); y += hLine; - if ( m_font.Ok() ) + if ( m_font.IsOk() ) { const wxNativeFontInfo *info = m_font.GetNativeFontInfo(); if ( info ) @@ -1050,7 +1063,6 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) y += hLine; // prepare to draw the font - dc.SetFont(m_font); dc.SetTextForeground(m_colour); // the size of one cell (Normally biggest char + small margin) @@ -1079,7 +1091,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) } // draw the lines between them - dc.SetPen(wxPen(wxColour(_T("blue")), 1, wxSOLID)); + dc.SetPen(wxPen(wxColour(wxT("blue")), 1, wxSOLID)); int l; // horizontal