X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e90c1d2a19361551eb07778280f22be3e759cf64..8487f8874288a8e4fe40ead153c73dfc7777f41b:/src/gtk1/font.cpp diff --git a/src/gtk1/font.cpp b/src/gtk1/font.cpp index c27134680f..64ff18c4e8 100644 --- a/src/gtk1/font.cpp +++ b/src/gtk1/font.cpp @@ -162,37 +162,81 @@ wxFont::wxFont( GdkFont *WXUNUSED(font), char *xFontName ) wxString tmp; wxString fontname( xFontName ); - wxStringTokenizer tn( fontname, T("-") ); + wxStringTokenizer tn( fontname, wxT("-") ); tn.GetNextToken(); // foundry - M_FONTDATA->m_faceName = tn.GetNextToken(); // courier + M_FONTDATA->m_faceName = tn.GetNextToken(); // family - tmp = tn.GetNextToken().MakeUpper(); - if (tmp == T("BOLD")) M_FONTDATA->m_weight = wxBOLD; + tmp = tn.GetNextToken().MakeUpper(); // weight + if (tmp == wxT("BOLD")) M_FONTDATA->m_weight = wxBOLD; + if (tmp == wxT("BLACK")) M_FONTDATA->m_weight = wxBOLD; + if (tmp == wxT("EXTRABOLD")) M_FONTDATA->m_weight = wxBOLD; + if (tmp == wxT("DEMIBOLD")) M_FONTDATA->m_weight = wxBOLD; + if (tmp == wxT("ULTRABOLD")) 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; + if (tmp == wxT("LIGHT")) M_FONTDATA->m_weight = wxLIGHT; + if (tmp == wxT("THIN")) M_FONTDATA->m_weight = wxLIGHT; + + tmp = tn.GetNextToken().MakeUpper(); // slant + if (tmp == wxT("I")) M_FONTDATA->m_style = wxITALIC; + if (tmp == wxT("O")) M_FONTDATA->m_style = wxITALIC; tn.GetNextToken(); // set width - tn.GetNextToken(); // ? + tn.GetNextToken(); // add. style tn.GetNextToken(); // pixel size tmp = tn.GetNextToken(); // pointsize - int num = wxStrtol (tmp.c_str(), (wxChar **) NULL, 10); + long 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; + tmp = tn.GetNextToken().MakeUpper(); // spacing + + if (tmp == wxT("M")) + M_FONTDATA->m_family = wxMODERN; + else if (M_FONTDATA->m_faceName == wxT("TIMES")) + M_FONTDATA->m_family = wxROMAN; + else if (M_FONTDATA->m_faceName == wxT("HELVETICA")) + M_FONTDATA->m_family = wxSWISS; + else if (M_FONTDATA->m_faceName == wxT("LUCIDATYPEWRITER")) + M_FONTDATA->m_family = wxTELETYPE; + else if (M_FONTDATA->m_faceName == wxT("LUCIDA")) + M_FONTDATA->m_family = wxDECORATIVE; + else if (M_FONTDATA->m_faceName == wxT("UTOPIA")) + M_FONTDATA->m_family = wxSCRIPT; + + tn.GetNextToken(); // avg width + + // deal with font encoding + wxString registry = tn.GetNextToken().MakeUpper(), + encoding = tn.GetNextToken().MakeUpper(); + + if ( registry == _T("ISO8859") ) + { + int cp; + if ( wxSscanf(encoding, wxT("%d"), &cp) == 1 ) + { + M_FONTDATA->m_encoding = + (wxFontEncoding)(wxFONTENCODING_ISO8859_1 + cp - 1); + } + } + else if ( registry == _T("MICROSOFT") ) + { + int cp; + if ( wxSscanf(encoding, wxT("cp125%d"), &cp) == 1 ) + { + M_FONTDATA->m_encoding = + (wxFontEncoding)(wxFONTENCODING_CP1250 + cp); + } + } + else if ( registry == _T("KOI8") ) + { + M_FONTDATA->m_encoding = wxFONTENCODING_KOI8; + } + //else: unknown encoding - may be give a warning here? } bool wxFont::Create( int pointSize, @@ -235,42 +279,42 @@ wxFont::~wxFont() int wxFont::GetPointSize() const { - wxCHECK_MSG( Ok(), 0, T("invalid font") ); + wxCHECK_MSG( Ok(), 0, wxT("invalid font") ); return M_FONTDATA->m_pointSize; } wxString wxFont::GetFaceName() const { - wxCHECK_MSG( Ok(), T(""), T("invalid font") ); + wxCHECK_MSG( Ok(), wxT(""), wxT("invalid font") ); return M_FONTDATA->m_faceName; } int wxFont::GetFamily() const { - wxCHECK_MSG( Ok(), 0, T("invalid font") ); + wxCHECK_MSG( Ok(), 0, wxT("invalid font") ); return M_FONTDATA->m_family; } int wxFont::GetStyle() const { - wxCHECK_MSG( Ok(), 0, T("invalid font") ); + wxCHECK_MSG( Ok(), 0, wxT("invalid font") ); return M_FONTDATA->m_style; } int wxFont::GetWeight() const { - wxCHECK_MSG( Ok(), 0, T("invalid font") ); + wxCHECK_MSG( Ok(), 0, wxT("invalid font") ); return M_FONTDATA->m_weight; } bool wxFont::GetUnderlined() const { - wxCHECK_MSG( Ok(), FALSE, T("invalid font") ); + wxCHECK_MSG( Ok(), FALSE, wxT("invalid font") ); return M_FONTDATA->m_underlined; } @@ -278,7 +322,7 @@ bool wxFont::GetUnderlined() const wxFontEncoding wxFont::GetEncoding() const { - wxCHECK_MSG( Ok(), wxFONTENCODING_DEFAULT, T("invalid font") ); + wxCHECK_MSG( Ok(), wxFONTENCODING_DEFAULT, wxT("invalid font") ); return M_FONTDATA->m_encoding; } @@ -344,13 +388,13 @@ GdkFont *wxFont::GetInternalFont( float scale ) const { if (!Ok()) { - wxFAIL_MSG( T("invalid font") ); + wxFAIL_MSG( wxT("invalid font") ); return (GdkFont*) NULL; } long int_scale = long(scale * 100.0 + 0.5); /* key for fontlist */ - int point_scale = (M_FONTDATA->m_pointSize * 10 * int_scale) / 100; + int point_scale = (int)((M_FONTDATA->m_pointSize * 10 * int_scale) / 100); GdkFont *font = (GdkFont *) NULL; wxNode *node = M_FONTDATA->m_scaled_xfonts.Find(int_scale); @@ -387,7 +431,7 @@ GdkFont *wxFont::GetInternalFont( float scale ) const if (!font) { - wxLogError(T("could not load any font")); + wxLogError(wxT("could not load any font")); } return font;