X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c2ff68d3fd238a3b943fa0638c88c30b9f2818af..2fca5a00045426b4e59c14a575b2baa3628e3847:/src/unix/fontutil.cpp diff --git a/src/unix/fontutil.cpp b/src/unix/fontutil.cpp index 6ac7550395..08a6f769c3 100644 --- a/src/unix/fontutil.cpp +++ b/src/unix/fontutil.cpp @@ -31,6 +31,156 @@ #ifndef WX_PRECOMP #endif // PCH +#include "wx/fontutil.h" +#include "wx/fontmap.h" +#include "wx/tokenzr.h" +#include "wx/hash.h" +#include "wx/module.h" + +#ifdef __WXGTK20__ + +#include "wx/gtk/private.h" + +// ---------------------------------------------------------------------------- +// wxNativeFontInfo +// ---------------------------------------------------------------------------- + +void wxNativeFontInfo::Init() +{ + description = NULL; +} + +int wxNativeFontInfo::GetPointSize() const +{ + return pango_font_description_get_size( description ) / PANGO_SCALE; +} + +wxFontStyle wxNativeFontInfo::GetStyle() const +{ + wxFontStyle m_style = wxFONTSTYLE_NORMAL; + + switch (pango_font_description_get_style( description )) + { + case PANGO_STYLE_NORMAL: + m_style = wxFONTSTYLE_NORMAL; + break; + case PANGO_STYLE_ITALIC: + m_style = wxFONTSTYLE_ITALIC; + break; + case PANGO_STYLE_OBLIQUE: + m_style = wxFONTSTYLE_SLANT; + break; + } + + return m_style; +} + +wxFontWeight wxNativeFontInfo::GetWeight() const +{ + wxFontWeight m_weight = wxFONTWEIGHT_NORMAL; + + switch (pango_font_description_get_weight( description )) + { + case PANGO_WEIGHT_ULTRALIGHT: + m_weight = wxFONTWEIGHT_LIGHT; + break; + case PANGO_WEIGHT_LIGHT: + m_weight = wxFONTWEIGHT_LIGHT; + break; + case PANGO_WEIGHT_NORMAL: + m_weight = wxFONTWEIGHT_NORMAL; + break; + case PANGO_WEIGHT_BOLD: + m_weight = wxFONTWEIGHT_BOLD; + break; + case PANGO_WEIGHT_ULTRABOLD: + m_weight = wxFONTWEIGHT_BOLD; + break; + case PANGO_WEIGHT_HEAVY: + m_weight = wxFONTWEIGHT_BOLD; + break; + } + + return m_weight; +} + +bool wxNativeFontInfo::GetUnderlined() const +{ + return FALSE; +} + +wxString wxNativeFontInfo::GetFaceName() const +{ + wxString tmp = wxGTK_CONV_BACK( pango_font_description_get_family( description ) ); + + return tmp; +} + +wxFontFamily wxNativeFontInfo::GetFamily() const +{ + return wxFONTFAMILY_SWISS; +} + +wxFontEncoding wxNativeFontInfo::GetEncoding() const +{ + return wxFONTENCODING_SYSTEM; +} + +bool wxNativeFontInfo::FromString(const wxString& s) +{ + if (description) + pango_font_description_free( description ); + + description = pango_font_description_from_string( wxGTK_CONV( s ) ); + + return TRUE; +} + +wxString wxNativeFontInfo::ToString() const +{ + wxString tmp = wxGTK_CONV_BACK( pango_font_description_to_string( description ) ); + + return tmp; +} + +bool wxNativeFontInfo::FromUserString(const wxString& s) +{ + return FromString( s ); +} + +wxString wxNativeFontInfo::ToUserString() const +{ + return ToString(); +} + +// ---------------------------------------------------------------------------- +// wxNativeEncodingInfo +// ---------------------------------------------------------------------------- + +bool wxNativeEncodingInfo::FromString(const wxString& s) +{ + return FALSE; +} + +wxString wxNativeEncodingInfo::ToString() const +{ + return wxEmptyString; +} + +bool wxTestFontEncoding(const wxNativeEncodingInfo& info) +{ + return TRUE; +} + +bool wxGetNativeFontEncoding(wxFontEncoding encoding, + wxNativeEncodingInfo *info) +{ + return FALSE; +} + +#else + // __WXGTK20__ + #ifdef __X__ #ifdef __VMS__ #pragma message disable nosimpint @@ -53,11 +203,6 @@ #include #endif -#include "wx/fontutil.h" -#include "wx/fontmap.h" -#include "wx/tokenzr.h" -#include "wx/hash.h" -#include "wx/module.h" // ---------------------------------------------------------------------------- // private data @@ -425,7 +570,7 @@ wxNativeFont wxLoadQueryNearestFont(int pointSize, !wxTestFontEncoding(info) ) { #if wxUSE_FONTMAP - if ( !wxTheFontMapper->GetAltForEncoding(encoding, &info) ) + if ( !wxFontMapper::Get()->GetAltForEncoding(encoding, &info) ) #endif // wxUSE_FONTMAP { // unspported encoding - replace it with the default @@ -455,7 +600,7 @@ wxNativeFont wxLoadQueryNearestFont(int pointSize, (void) tokenizer.NextToken(); - newFontName += wxString::Format("%d-", pointSize); + newFontName += wxString::Format(wxT("%d-"), pointSize); while(tokenizer.HasMoreTokens()) newFontName += tokenizer.GetNextToken(); @@ -644,20 +789,17 @@ static wxNativeFont wxLoadQueryFont(int pointSize, int yPixelsPerCM = screenInfo.ydpcm; - // A point is 1/20 of an inch. + // A point is 1/72 of an inch. // An inch is 2.541 cm. - // So pixelHeight = (pointSize / 20) (inches) * 2.541 (for cm) * yPixelsPerCM (for pixels) + // So pixelHeight = (pointSize / 72) (inches) * 2.541 (for cm) * yPixelsPerCM (for pixels) // In fact pointSize is 10 * the normal point size so // divide by 10. - // I don't know why this is necessary, but otherwise fonts - // are just too big. - float fudgeFactor = 0.6 ; - int pixelHeight = (int) ( (((float)pointSize) / 200.0) * 2.541 * (float) yPixelsPerCM * fudgeFactor) ; + int pixelHeight = (int) ( (((float)pointSize) / 720.0) * 2.541 * (float) yPixelsPerCM) ; // An alternative: assume that the screen is 72 dpi. - // This gets a similar result to above (pre-fudge factor) - //int pixelHeight = (int) (((float)pointSize / 200.0) * 72.0) ; + //int pixelHeight = (int) (((float)pointSize / 720.0) * 72.0) ; + //int pixelHeight = (int) ((float)pointSize / 10.0) ; GR_LOGFONT logFont; logFont.lfHeight = pixelHeight; @@ -844,7 +986,7 @@ static wxNativeFont wxLoadQueryFont(int pointSize, // if pointSize is -1, don't specify any wxString sizeSpec; - if ( fontSpec == -1 ) + if ( pointSize == -1 ) { sizeSpec = _T('*'); } @@ -895,3 +1037,7 @@ void wxFontModule::OnExit() g_fontHash = (wxHashTable *)NULL; } + +#endif + // not GTK 2.0 + \ No newline at end of file