X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed9b9841b32afa2e97353263e3563b4387e2fe0e..4df78dc36e933fb1c3aa7c9d7ae2757a898ae05c:/src/gtk/font.cpp diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp index c521e7b3b3..4074858978 100644 --- a/src/gtk/font.cpp +++ b/src/gtk/font.cpp @@ -14,6 +14,8 @@ #include "wx/font.h" #include "wx/utils.h" #include "wx/log.h" +#include "wx/gdicmn.h" +#include "wx/tokenzr.h" #include #include "gdk/gdk.h" @@ -98,14 +100,49 @@ wxFont::wxFont() if (wxTheFontList) wxTheFontList->Append( this ); } -wxFont::wxFont( char *xFontName ) +wxFont::wxFont( GdkFont *font, char *xFontName ) { if (!xFontName) return; m_refData = new wxFontRefData(); - M_FONTDATA->m_byXFontName = TRUE; - M_FONTDATA->m_font = gdk_font_load( xFontName ); +// M_FONTDATA->m_byXFontName = TRUE; + M_FONTDATA->m_font = font; + + wxString tmp; + + wxString fontname( xFontName ); + wxStringTokenizer tn( fontname, _T("-") ); + + tn.GetNextToken(); // foundry + + M_FONTDATA->m_faceName = tn.GetNextToken(); // courier + + tmp = tn.GetNextToken().MakeUpper(); + if (tmp == _T("BOLD")) M_FONTDATA->m_weight = wxBOLD; + + tmp = tn.GetNextToken().MakeUpper(); + if (tmp == _T("I")) M_FONTDATA->m_style = wxITALIC; + if (tmp == _T("O")) M_FONTDATA->m_style = wxITALIC; + + tn.GetNextToken(); // set width + tn.GetNextToken(); // ? + tn.GetNextToken(); // pixel size + + tmp = tn.GetNextToken(); // pointsize + int num = wxStrtol (tmp.c_str(), (wxChar **) NULL, 10); + M_FONTDATA->m_pointSize = num / 10; + + tn.GetNextToken(); // x-res + tn.GetNextToken(); // y-res + + tmp = tn.GetNextToken().MakeUpper(); + if (tmp == _T("M")) M_FONTDATA->m_family = wxMODERN; + else if (M_FONTDATA->m_faceName == _T("TIMES")) M_FONTDATA->m_family = wxROMAN; + else if (M_FONTDATA->m_faceName == _T("HELVETICA")) M_FONTDATA->m_family = wxSWISS; + else if (M_FONTDATA->m_faceName == _T("LUCIDATYPEWRITER")) M_FONTDATA->m_family = wxTELETYPE; + else if (M_FONTDATA->m_faceName == _T("LUCIDA")) M_FONTDATA->m_family = wxDECORATIVE; + else if (M_FONTDATA->m_faceName == _T("UTOPIA")) M_FONTDATA->m_family = wxSCRIPT; } wxFont::wxFont( int pointSize, int family, int style, int weight, bool underlined, const wxString& face ) @@ -159,12 +196,12 @@ wxFont& wxFont::operator = ( const wxFont& font ) return *this; } -bool wxFont::operator == ( const wxFont& font ) +bool wxFont::operator == ( const wxFont& font ) const { return m_refData == font.m_refData; } -bool wxFont::operator != ( const wxFont& font ) +bool wxFont::operator != ( const wxFont& font ) const { return m_refData != font.m_refData; } @@ -401,7 +438,7 @@ static GdkFont*wxLoadQueryFont( int pointSize, int family, int style, int weight if (!facename.IsEmpty()) { wxSprintf( wxBuffer, _T("-*-%s-*-*-normal-*-*-*-*-*-*-*-*-*"), facename.c_str() ); - GdkFont *test = gdk_font_load( wxConv_libc.cWX2MB(wxBuffer) ); + GdkFont *test = gdk_font_load( wxConvCurrent->cWX2MB(wxBuffer) ); if (test) { gdk_font_unref( test ); @@ -427,7 +464,7 @@ static GdkFont*wxLoadQueryFont( int pointSize, int family, int style, int weight wxSprintf( wxBuffer, _T("-*-%s-%s-%s-normal-*-*-%d-*-*-*-*-*-*"), xfamily, xweight, xstyle, pointSize); - return gdk_font_load( wxConv_libc.cWX2MB(wxBuffer) ); + return gdk_font_load( wxConvCurrent->cWX2MB(wxBuffer) ); } static GdkFont *wxLoadQueryNearestFont( int point_size, int family, int style, int weight,