implemented missing wxNativeFontInfo methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -71,7 +71,7 @@ wxFontStyle wxNativeFontInfo::GetStyle() const
|
|||||||
m_style = wxFONTSTYLE_SLANT;
|
m_style = wxFONTSTYLE_SLANT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_style;
|
return m_style;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ wxFontWeight wxNativeFontInfo::GetWeight() const
|
|||||||
m_weight = wxFONTWEIGHT_BOLD;
|
m_weight = wxFONTWEIGHT_BOLD;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_weight;
|
return m_weight;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ bool wxNativeFontInfo::GetUnderlined() const
|
|||||||
wxString wxNativeFontInfo::GetFaceName() const
|
wxString wxNativeFontInfo::GetFaceName() const
|
||||||
{
|
{
|
||||||
wxString tmp = wxGTK_CONV_BACK( pango_font_description_get_family( description ) );
|
wxString tmp = wxGTK_CONV_BACK( pango_font_description_get_family( description ) );
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,8 +178,7 @@ bool wxGetNativeFontEncoding(wxFontEncoding encoding,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else // GTK+ 1.x
|
||||||
// __WXGTK20__
|
|
||||||
|
|
||||||
#ifdef __X__
|
#ifdef __X__
|
||||||
#ifdef __VMS__
|
#ifdef __VMS__
|
||||||
@@ -452,6 +451,164 @@ void wxNativeFontInfo::SetXFontName(const wxString& xFontName_)
|
|||||||
m_isDefault = FALSE;
|
m_isDefault = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int wxNativeFontInfo::GetPointSize() const
|
||||||
|
{
|
||||||
|
const wxString s = GetXFontComponent(wxXLFD_POINTSIZE);
|
||||||
|
|
||||||
|
// return -1 to indicate that the size is unknown
|
||||||
|
long l;
|
||||||
|
return s.ToLong(&l) ? l : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxFontStyle wxNativeFontInfo::GetStyle() const
|
||||||
|
{
|
||||||
|
const wxString s = GetXFontComponent(wxXLFD_SLANT);
|
||||||
|
|
||||||
|
if ( s.length() != 1 )
|
||||||
|
{
|
||||||
|
// it is really unknown but we don't have any way to return it from
|
||||||
|
// here
|
||||||
|
return wxFONTSTYLE_NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ( s[0] )
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
// again, unknown but consider normal by default
|
||||||
|
|
||||||
|
case _T('r'):
|
||||||
|
return wxFONTSTYLE_NORMAL;
|
||||||
|
|
||||||
|
case _T('i'):
|
||||||
|
return wxFONTSTYLE_ITALIC;
|
||||||
|
|
||||||
|
case _T('o'):
|
||||||
|
return wxFONTSTYLE_SLANT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wxFontWeight wxNativeFontInfo::GetWeight() const
|
||||||
|
{
|
||||||
|
const wxString s = GetXFontComponent(wxXLFD_WEIGHT).MakeLower();
|
||||||
|
if ( s.find(_T("bold")) != wxString::npos || s == _T("black") )
|
||||||
|
return wxFONTWEIGHT_BOLD;
|
||||||
|
else if ( s == _T("light") )
|
||||||
|
return wxFONTWEIGHT_LIGHT;
|
||||||
|
|
||||||
|
return wxFONTWEIGHT_NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxNativeFontInfo::GetUnderlined() const
|
||||||
|
{
|
||||||
|
// X fonts are never underlined
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString wxNativeFontInfo::GetFaceName() const
|
||||||
|
{
|
||||||
|
// wxWindows facename probably more accurately corresponds to X family
|
||||||
|
return GetXFontComponent(wxXLFD_FAMILY);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxFontFamily wxNativeFontInfo::GetFamily() const
|
||||||
|
{
|
||||||
|
// and wxWindows family -- to X foundry, but we have to translate it to
|
||||||
|
// wxFontFamily somehow...
|
||||||
|
wxFAIL_MSG(_T("not implemented")); // GetXFontComponent(wxXLFD_FOUNDRY);
|
||||||
|
|
||||||
|
return wxFONTFAMILY_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxFontEncoding wxNativeFontInfo::GetEncoding() const
|
||||||
|
{
|
||||||
|
// we already have the code for this but need to refactor it first
|
||||||
|
wxFAIL_MSG( _T("not implemented") );
|
||||||
|
|
||||||
|
return wxFONTENCODING_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxNativeFontInfo::SetPointSize(int pointsize)
|
||||||
|
{
|
||||||
|
SetXFontComponent(wxXLFD_POINTSIZE, wxString::Format(_T("%d"), pointsize));
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxNativeFontInfo::SetStyle(wxFontStyle style)
|
||||||
|
{
|
||||||
|
wxString s;
|
||||||
|
switch ( style )
|
||||||
|
{
|
||||||
|
case wxFONTSTYLE_ITALIC:
|
||||||
|
s = _T('i');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxFONTSTYLE_SLANT:
|
||||||
|
s = _T('o');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxFONTSTYLE_NORMAL:
|
||||||
|
s = _T('r');
|
||||||
|
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG( _T("unknown wxFontStyle in wxNativeFontInfo::SetStyle") );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetXFontComponent(wxXLFD_SLANT, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxNativeFontInfo::SetWeight(wxFontWeight weight)
|
||||||
|
{
|
||||||
|
wxString s;
|
||||||
|
switch ( weight )
|
||||||
|
{
|
||||||
|
case wxFONTWEIGHT_BOLD:
|
||||||
|
s = _T("bold");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxFONTWEIGHT_LIGHT:
|
||||||
|
s = _T("light");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxFONTWEIGHT_NORMAL:
|
||||||
|
s = _T("medium");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG( _T("unknown wxFontWeight in wxNativeFontInfo::SetWeight") );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetXFontComponent(wxXLFD_WEIGHT, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxNativeFontInfo::SetUnderlined(bool WXUNUSED(underlined))
|
||||||
|
{
|
||||||
|
// can't do this under X
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxNativeFontInfo::SetFaceName(wxString facename)
|
||||||
|
{
|
||||||
|
SetXFontComponent(wxXLFD_FAMILY, facename);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxNativeFontInfo::SetFamily(wxFontFamily family)
|
||||||
|
{
|
||||||
|
// wxFontFamily -> X foundry, anyone?
|
||||||
|
wxFAIL_MSG( _T("not implemented") );
|
||||||
|
|
||||||
|
// SetXFontComponent(wxXLFD_FOUNDRY, ...);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding)
|
||||||
|
{
|
||||||
|
wxNativeEncodingInfo info;
|
||||||
|
if ( wxGetNativeFontEncoding(encoding, &info) )
|
||||||
|
{
|
||||||
|
SetXFontComponent(wxXLFD_ENCODING, info.xencoding);
|
||||||
|
SetXFontComponent(wxXLFD_REGISTRY, info.xregistry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// common functions
|
// common functions
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -806,7 +963,7 @@ static wxNativeFont wxLoadQueryFont(int pointSize,
|
|||||||
// An alternative: assume that the screen is 72 dpi.
|
// An alternative: assume that the screen is 72 dpi.
|
||||||
//int pixelHeight = (int) (((float)pointSize / 720.0) * 72.0) ;
|
//int pixelHeight = (int) (((float)pointSize / 720.0) * 72.0) ;
|
||||||
//int pixelHeight = (int) ((float)pointSize / 10.0) ;
|
//int pixelHeight = (int) ((float)pointSize / 10.0) ;
|
||||||
|
|
||||||
GR_LOGFONT logFont;
|
GR_LOGFONT logFont;
|
||||||
logFont.lfHeight = pixelHeight;
|
logFont.lfHeight = pixelHeight;
|
||||||
logFont.lfWidth = 0;
|
logFont.lfWidth = 0;
|
||||||
@@ -833,7 +990,7 @@ static wxNativeFont wxLoadQueryFont(int pointSize,
|
|||||||
fontInfo->fid = GrCreateFont((GR_CHAR*) facename.c_str(), pixelHeight, & logFont);
|
fontInfo->fid = GrCreateFont((GR_CHAR*) facename.c_str(), pixelHeight, & logFont);
|
||||||
GrGetFontInfo(fontInfo->fid, & fontInfo->info);
|
GrGetFontInfo(fontInfo->fid, & fontInfo->info);
|
||||||
return (wxNativeFont) fontInfo;
|
return (wxNativeFont) fontInfo;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
wxString fontSpec;
|
wxString fontSpec;
|
||||||
if (!facename.IsEmpty())
|
if (!facename.IsEmpty())
|
||||||
@@ -1044,5 +1201,5 @@ void wxFontModule::OnExit()
|
|||||||
g_fontHash = (wxHashTable *)NULL;
|
g_fontHash = (wxHashTable *)NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // GTK 2.0/1.x
|
||||||
// not GTK 2.0
|
|
||||||
|
Reference in New Issue
Block a user