X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/85ab460e7d62b52b105b3dc0bbdd36cebc14fb4b..9154a136d5e1d79a4be2cf012e4a815fdc6df3ff:/src/motif/font.cpp diff --git a/src/motif/font.cpp b/src/motif/font.cpp index 382fcb71b4..42e6e1e70f 100644 --- a/src/motif/font.cpp +++ b/src/motif/font.cpp @@ -35,9 +35,9 @@ #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/motif/private.h" @@ -54,12 +54,12 @@ 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 WXRenderTable m_renderTable; // Motif XmRenderTable @@ -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; @@ -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); } @@ -548,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() ); + wxChar* fontSpec = wxStrdup( xFontSpec.mb_str() ); XtSetArg( args[count], XmNfontName, fontSpec ); ++count; XtSetArg( args[count], XmNfontType, XmFONT_IS_FONTSET ); ++count; #else @@ -633,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 { @@ -657,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; @@ -665,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, @@ -675,9 +677,9 @@ 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, (char*) str.mb_str(), slen, &direction, &ascent2, &descent2, &overall); if ( width ) @@ -690,4 +692,4 @@ void wxGetTextExtent(WXDisplay* display, const wxFont& font, *ascent = ascent2; } -#endif // !wxMOTIF_NEW_FONT_HANDLING +#endif // !wxMOTIF_USE_RENDER_TABLE