X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/de6185e212ebc37ff11ff70278e3c4f68419b097..1abfa172c547a37751e598084fb8d541071471a3:/src/motif/font.cpp diff --git a/src/motif/font.cpp b/src/motif/font.cpp index 2d0c35bc64..fc503f190f 100644 --- a/src/motif/font.cpp +++ b/src/motif/font.cpp @@ -34,12 +34,12 @@ #ifndef WX_PRECOMP #include "wx/string.h" #include "wx/utils.h" // for wxGetDisplay() + #include "wx/settings.h" + #include "wx/gdicmn.h" #endif -#include "wx/gdicmn.h" #include "wx/fontutil.h" // for wxNativeFontInfo #include "wx/tokenzr.h" -#include "wx/settings.h" #include "wx/motif/private.h" IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) @@ -54,14 +54,14 @@ class wxXFont : public wxObject { public: wxXFont(); - ~wxXFont(); + virtual ~wxXFont(); #if !wxMOTIF_NEW_FONT_HANDLING WXFontStructPtr m_fontStruct; // XFontStruct #endif -#if !wxMOTIF_USE_RENDER_TABLE && !wxMOTIF_NEW_FONT_HANDLING +#if !wxMOTIF_USE_RENDER_TABLE WXFontList m_fontList; // Motif XmFontList -#else // if wxUSE_RENDER_TABLE +#else // if wxMOTIF_USE_RENDER_TABLE WXRenderTable m_renderTable; // Motif XmRenderTable WXRendition m_rendition; // Motif XmRendition #endif @@ -91,7 +91,7 @@ public: data.m_underlined, data.m_faceName, data.m_encoding); } - ~wxFontRefData(); + virtual ~wxFontRefData(); protected: // common part of all ctors @@ -131,7 +131,7 @@ wxXFont::wxXFont() #if !wxMOTIF_NEW_FONT_HANDLING m_fontStruct = (WXFontStructPtr) 0; #endif -#if !wxMOTIF_USE_RENDER_TABLE && !wxMOTIF_NEW_FONT_HANDLING +#if !wxMOTIF_USE_RENDER_TABLE m_fontList = (WXFontList) 0; #else // if wxMOTIF_USE_RENDER_TABLE m_renderTable = (WXRenderTable) 0; @@ -147,7 +147,7 @@ wxXFont::~wxXFont() if (m_fontList) XmFontListFree ((XmFontList) m_fontList); m_fontList = NULL; -#else // if wxUSE_RENDER_TABLE +#else // if wxMOTIF_USE_RENDER_TABLE if (m_renderTable) XmRenderTableFree ((XmRenderTable) m_renderTable); m_renderTable = NULL; @@ -211,6 +211,8 @@ wxFontRefData::~wxFontRefData() m_fonts.Clear(); } +#define M_FONTDATA ((wxFontRefData*)m_refData) + // ---------------------------------------------------------------------------- // wxFont // ---------------------------------------------------------------------------- @@ -278,7 +280,7 @@ bool wxFont::Create(const wxString& fontname, wxFontEncoding enc) tmp = tn.GetNextToken(); // pointsize if (tmp != wxT("*")) { - long num = wxStrtol (tmp.c_str(), (wxChar **) NULL, 10); + long num = wxStrtol (tmp.mb_str(), (wxChar **) NULL, 10); M_FONTDATA->m_pointSize = (int)(num / 10); } @@ -393,12 +395,14 @@ void wxFont::SetWeight(int weight) M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now } -void wxFont::SetFaceName(const wxString& faceName) +bool wxFont::SetFaceName(const wxString& faceName) { Unshare(); M_FONTDATA->m_faceName = faceName; M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now + + return wxFontBase::SetFaceName(faceName); } void wxFont::SetUnderlined(bool underlined) @@ -546,7 +550,7 @@ wxXFont* wxFont::GetInternalFont(double scale, WXDisplay* display) const int count = 0; #if wxMOTIF_NEW_FONT_HANDLING - wxChar* fontSpec = wxStrdup( xFontSpec.c_str() ); + char* fontSpec = wxStrdup(xFontSpec.mb_str()); XtSetArg( args[count], XmNfontName, fontSpec ); ++count; XtSetArg( args[count], XmNfontType, XmFONT_IS_FONTSET ); ++count; #else @@ -631,7 +635,7 @@ WXFontType wxFont::GetFontTypeC(WXDisplay* display) const #endif } -#if wxMOTIF_NEW_FONT_HANDLING +#if wxMOTIF_USE_RENDER_TABLE WXFontSet wxFont::GetFontSet(double scale, WXDisplay* display) const { @@ -655,7 +659,7 @@ void wxGetTextExtent(WXDisplay* display, const wxFont& font, double scale, XRectangle ink, logical; WXFontSet fset = font.GetFontSet(scale, display); - XmbTextExtents( (XFontSet)fset, str.c_str(), str.length(), &ink, &logical); + XmbTextExtents( (XFontSet)fset, str.mb_str(), str.length(), &ink, &logical); if( width ) *width = logical.width; if( height ) *height = logical.height; @@ -663,7 +667,7 @@ void wxGetTextExtent(WXDisplay* display, const wxFont& font, double scale, if( descent ) *descent = logical.height + logical.y; } -#else // if !wxMOTIF_NEW_FONT_HANDLING +#else // if !wxMOTIF_USE_RENDER_TABLE void wxGetTextExtent(WXDisplay* display, const wxFont& font, double scale, const wxString& str, @@ -673,9 +677,10 @@ void wxGetTextExtent(WXDisplay* display, const wxFont& font, int direction, ascent2, descent2; XCharStruct overall; - int slen = str.Len(); + int slen = str.length(); - XTextExtents((XFontStruct*) pFontStruct, (char*) str.c_str(), slen, + XTextExtents((XFontStruct*) pFontStruct, + wx_const_cast(char*, (const char *)str.mb_str()), slen, &direction, &ascent2, &descent2, &overall); if ( width ) @@ -688,4 +693,4 @@ void wxGetTextExtent(WXDisplay* display, const wxFont& font, *ascent = ascent2; } -#endif // !wxMOTIF_NEW_FONT_HANDLING +#endif // !wxMOTIF_USE_RENDER_TABLE