// ----------------------------------------------------------------------------
// define this macro if font handling is done using the X font names
-#if defined(__WXGTK__) || defined(__X__)
+#if (defined(__WXGTK__) && !defined(__WXGTK20__)) || defined(__X__)
#define _WX_X_FONTLIKE
#endif
#elif defined(_WX_X_FONTLIKE)
wxString xregistry,
xencoding;
+#elif defined(__WXGTK20__)
+ // No way to specify this in Pango as this
+ // seems to be handled internally.
#elif defined(__WXMGL__)
int mglEncoding;
#else
FATTRS fa;
FONTMETRICS fm;
FACENAMEDESC fn;
+#elif defined(__WXGTK20__)
+ PangoFontDescription *description;
#else // other platforms
//
// This is a generic implementation that should work on all ports
#include "wx/image.h"
#include "wx/module.h"
#include "wx/log.h"
+#include "wx/fontutil.h"
#include "wx/gtk/win_gtk.h"
m_font = font;
#ifdef __WXGTK20__
- // fix fontdesc?
+ m_fontdesc = m_font.GetNativeFontInfo()->description;
#endif
}
// do we have the native font info?
bool HasNativeFont() const
{
+#ifdef __WXGTK20__
+ return TRUE; // ?
+#else
return !m_nativeFontInfo.IsDefault();
+#endif
}
// setters: all of them also take care to modify m_nativeFontInfo if we
//
// VZ: I need this as my gdb either shows wildly wrong values or crashes
// when I ask it to "p fontRefData" :-(
-#ifdef __WXDEBUG__
+#if defined(__WXDEBUG__) && !defined(__WXGTK20__)
void Dump() const
{
wxPrintf(_T("%s-%s-%s-%d-%d\n"),
wxFontEncoding encoding);
private:
+#ifndef __WXGTK20__
// the map of font sizes to "GdkFont *"
wxScaledFontList m_scaled_xfonts;
+#endif
// the broken down font parameters
int m_pointSize;
m_weight;
bool m_underlined;
wxString m_faceName;
- wxFontEncoding m_encoding;
+ wxFontEncoding m_encoding; // Unused under GTK 2.0
- // the native font info, basicly an XFLD
+ // The native font info, basicly an XFLD under GTK 1.2 and
+ // the pango font description under GTK 2.0.
wxNativeFontInfo m_nativeFontInfo;
friend class wxFont;
wxFontRefData::wxFontRefData(const wxString& fontname)
{
+#ifdef __WXGTK20__
+ m_nativeFontInfo.FromString( fontname );
+
+ // Get native info
+ PangoFontDescription *desc = m_nativeFontInfo.description;
+
+ // init fields
+ m_faceName = wxGTK_CONV_BACK( pango_font_description_get_family( desc ) );
+
+ m_pointSize = pango_font_description_get_size( desc ) / PANGO_SCALE;
+
+ switch (pango_font_description_get_style( desc ))
+ {
+ 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;
+ }
+
+ switch (pango_font_description_get_weight( desc ))
+ {
+ 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;
+ }
+
+ if (m_faceName == wxT("monospaced"))
+ {
+ m_family = wxFONTFAMILY_TELETYPE;
+ }
+ else if (m_faceName == wxT("sans"))
+ {
+ m_family = wxFONTFAMILY_SWISS;
+ }
+ else
+ {
+ m_family = wxFONTFAMILY_UNKNOWN;
+ }
+
+ // Pango description are never underlined (?)
+ m_underlined = FALSE;
+
+ // Cannot we choose that
+ m_encoding = wxFONTENCODING_SYSTEM;
+#else
// remember the X font name
m_nativeFontInfo.SetXFontName(fontname);
// may be give a warning here?
m_encoding = wxFONTENCODING_SYSTEM;
}
+#endif
}
wxFontRefData::~wxFontRefData()
{
+#ifndef __WXGTK20__
wxNode *node = m_scaled_xfonts.First();
while (node)
{
gdk_font_unref( font );
node = next;
}
+#endif
}
// ----------------------------------------------------------------------------
{
m_pointSize = pointSize;
+#ifdef __WXGTK20__
+ // Get native info
+ PangoFontDescription *desc = m_nativeFontInfo.description;
+
+ pango_font_description_set_size( desc, m_pointSize * PANGO_SCALE );
+#else
if ( HasNativeFont() )
{
wxString size;
m_nativeFontInfo.SetXFontComponent(wxXLFD_POINTSIZE, size);
}
+#endif
}
void wxFontRefData::SetFamily(int family)
{
m_style = style;
+#ifdef __WXGTK20__
+ // Get native info
+ PangoFontDescription *desc = m_nativeFontInfo.description;
+
+ switch ( style )
+ {
+ case wxFONTSTYLE_ITALIC:
+ pango_font_description_set_style( desc, PANGO_STYLE_ITALIC );
+ break;
+ case wxFONTSTYLE_SLANT:
+ pango_font_description_set_style( desc, PANGO_STYLE_OBLIQUE );
+ break;
+ default:
+ wxFAIL_MSG( _T("unknown font style") );
+ // fall through
+ case wxFONTSTYLE_NORMAL:
+ pango_font_description_set_style( desc, PANGO_STYLE_NORMAL );
+ break;
+ }
+#else
if ( HasNativeFont() )
{
wxString slant;
m_nativeFontInfo.SetXFontComponent(wxXLFD_SLANT, slant);
}
+#endif
}
void wxFontRefData::SetWeight(int weight)
{
m_weight = weight;
+#ifndef __WXGTK20__
if ( HasNativeFont() )
{
wxString boldness;
m_nativeFontInfo.SetXFontComponent(wxXLFD_WEIGHT, boldness);
}
+#endif
}
void wxFontRefData::SetUnderlined(bool underlined)
{
m_faceName = facename;
+#ifndef __WXGTK20__
if ( HasNativeFont() )
{
m_nativeFontInfo.SetXFontComponent(wxXLFD_FAMILY, facename);
}
+#endif
}
void wxFontRefData::SetEncoding(wxFontEncoding encoding)
{
m_encoding = encoding;
+#ifndef __WXGTK20__
if ( HasNativeFont() )
{
wxNativeEncodingInfo info;
m_nativeFontInfo.SetXFontComponent(wxXLFD_ENCODING, info.xencoding);
}
}
+#endif
}
// ============================================================================
{
Init();
+#ifdef __WXGTK20__
+ Create( info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.GetUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding() );
+#else
Create(info.GetXFontName());
+#endif
}
bool wxFont::Create( int pointSize,
{
wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
+#ifndef __WXGTK20__ // ???
if ( M_FONTDATA->m_nativeFontInfo.GetXFontName().empty() )
GetInternalFont();
+#endif
return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
}
{
wxCHECK_MSG( Ok(), FALSE, wxT("invalid font") );
+#ifndef __WXGTK20__
if ( M_FONTDATA->HasNativeFont() )
{
// the monospace fonts are supposed to have "M" in the spacing field
return spacing.Upper() == _T('M');
}
+#endif
return wxFontBase::IsFixedWidth();
}
void wxFont::SetPointSize(int pointSize)
{
Unshare();
-
+
M_FONTDATA->SetPointSize(pointSize);
}
wxCHECK_MSG( Ok(), font, wxT("invalid font") )
- long int_scale = long(scale * 100.0 + 0.5); /* key for fontlist */
+#ifdef __WXGTK20__
+ if (*this == wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT))
+ {
+ font = GtkGetDefaultGuiFont();
+ }
+ else
+ {
+ PangoFontDescription *font_description = GetNativeFontInfo()->description;
+
+ font = gdk_font_from_description( font_description );
+ }
+#else
+ long int_scale = long(scale * 100.0 + 0.5); // key for fontlist
int point_scale = (int)((M_FONTDATA->m_pointSize * 10 * int_scale) / 100);
wxNode *node = M_FONTDATA->m_scaled_xfonts.Find(int_scale);
M_FONTDATA->m_scaled_xfonts.Append( int_scale, (wxObject*)font );
}
}
+#endif // GTK 2.0
// it's quite useless to make it a wxCHECK because we're going to crash
// anyhow...
}
gchar *fontname = gtk_font_selection_dialog_get_font_name(fontdlg);
+
+ // printf( "font %s\n", fontname );
dialog->SetChosenFont(fontname);
gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event",
GTK_SIGNAL_FUNC(gtk_fontdialog_delete_callback), (gpointer)this );
+#ifndef __WXGTK20__
wxFont font = m_fontData.GetInitialFont();
if( font.Ok() )
{
wxFAIL_MSG(_T("font is ok but no native font info?"));
}
}
+#endif
return TRUE;
}
#include "wx/image.h"
#include "wx/module.h"
#include "wx/log.h"
+#include "wx/fontutil.h"
#include "wx/gtk/win_gtk.h"
m_font = font;
#ifdef __WXGTK20__
- // fix fontdesc?
+ m_fontdesc = m_font.GetNativeFontInfo()->description;
#endif
}
// do we have the native font info?
bool HasNativeFont() const
{
+#ifdef __WXGTK20__
+ return TRUE; // ?
+#else
return !m_nativeFontInfo.IsDefault();
+#endif
}
// setters: all of them also take care to modify m_nativeFontInfo if we
//
// VZ: I need this as my gdb either shows wildly wrong values or crashes
// when I ask it to "p fontRefData" :-(
-#ifdef __WXDEBUG__
+#if defined(__WXDEBUG__) && !defined(__WXGTK20__)
void Dump() const
{
wxPrintf(_T("%s-%s-%s-%d-%d\n"),
wxFontEncoding encoding);
private:
+#ifndef __WXGTK20__
// the map of font sizes to "GdkFont *"
wxScaledFontList m_scaled_xfonts;
+#endif
// the broken down font parameters
int m_pointSize;
m_weight;
bool m_underlined;
wxString m_faceName;
- wxFontEncoding m_encoding;
+ wxFontEncoding m_encoding; // Unused under GTK 2.0
- // the native font info, basicly an XFLD
+ // The native font info, basicly an XFLD under GTK 1.2 and
+ // the pango font description under GTK 2.0.
wxNativeFontInfo m_nativeFontInfo;
friend class wxFont;
wxFontRefData::wxFontRefData(const wxString& fontname)
{
+#ifdef __WXGTK20__
+ m_nativeFontInfo.FromString( fontname );
+
+ // Get native info
+ PangoFontDescription *desc = m_nativeFontInfo.description;
+
+ // init fields
+ m_faceName = wxGTK_CONV_BACK( pango_font_description_get_family( desc ) );
+
+ m_pointSize = pango_font_description_get_size( desc ) / PANGO_SCALE;
+
+ switch (pango_font_description_get_style( desc ))
+ {
+ 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;
+ }
+
+ switch (pango_font_description_get_weight( desc ))
+ {
+ 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;
+ }
+
+ if (m_faceName == wxT("monospaced"))
+ {
+ m_family = wxFONTFAMILY_TELETYPE;
+ }
+ else if (m_faceName == wxT("sans"))
+ {
+ m_family = wxFONTFAMILY_SWISS;
+ }
+ else
+ {
+ m_family = wxFONTFAMILY_UNKNOWN;
+ }
+
+ // Pango description are never underlined (?)
+ m_underlined = FALSE;
+
+ // Cannot we choose that
+ m_encoding = wxFONTENCODING_SYSTEM;
+#else
// remember the X font name
m_nativeFontInfo.SetXFontName(fontname);
// may be give a warning here?
m_encoding = wxFONTENCODING_SYSTEM;
}
+#endif
}
wxFontRefData::~wxFontRefData()
{
+#ifndef __WXGTK20__
wxNode *node = m_scaled_xfonts.First();
while (node)
{
gdk_font_unref( font );
node = next;
}
+#endif
}
// ----------------------------------------------------------------------------
{
m_pointSize = pointSize;
+#ifdef __WXGTK20__
+ // Get native info
+ PangoFontDescription *desc = m_nativeFontInfo.description;
+
+ pango_font_description_set_size( desc, m_pointSize * PANGO_SCALE );
+#else
if ( HasNativeFont() )
{
wxString size;
m_nativeFontInfo.SetXFontComponent(wxXLFD_POINTSIZE, size);
}
+#endif
}
void wxFontRefData::SetFamily(int family)
{
m_style = style;
+#ifdef __WXGTK20__
+ // Get native info
+ PangoFontDescription *desc = m_nativeFontInfo.description;
+
+ switch ( style )
+ {
+ case wxFONTSTYLE_ITALIC:
+ pango_font_description_set_style( desc, PANGO_STYLE_ITALIC );
+ break;
+ case wxFONTSTYLE_SLANT:
+ pango_font_description_set_style( desc, PANGO_STYLE_OBLIQUE );
+ break;
+ default:
+ wxFAIL_MSG( _T("unknown font style") );
+ // fall through
+ case wxFONTSTYLE_NORMAL:
+ pango_font_description_set_style( desc, PANGO_STYLE_NORMAL );
+ break;
+ }
+#else
if ( HasNativeFont() )
{
wxString slant;
m_nativeFontInfo.SetXFontComponent(wxXLFD_SLANT, slant);
}
+#endif
}
void wxFontRefData::SetWeight(int weight)
{
m_weight = weight;
+#ifndef __WXGTK20__
if ( HasNativeFont() )
{
wxString boldness;
m_nativeFontInfo.SetXFontComponent(wxXLFD_WEIGHT, boldness);
}
+#endif
}
void wxFontRefData::SetUnderlined(bool underlined)
{
m_faceName = facename;
+#ifndef __WXGTK20__
if ( HasNativeFont() )
{
m_nativeFontInfo.SetXFontComponent(wxXLFD_FAMILY, facename);
}
+#endif
}
void wxFontRefData::SetEncoding(wxFontEncoding encoding)
{
m_encoding = encoding;
+#ifndef __WXGTK20__
if ( HasNativeFont() )
{
wxNativeEncodingInfo info;
m_nativeFontInfo.SetXFontComponent(wxXLFD_ENCODING, info.xencoding);
}
}
+#endif
}
// ============================================================================
{
Init();
+#ifdef __WXGTK20__
+ Create( info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.GetUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding() );
+#else
Create(info.GetXFontName());
+#endif
}
bool wxFont::Create( int pointSize,
{
wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
+#ifndef __WXGTK20__ // ???
if ( M_FONTDATA->m_nativeFontInfo.GetXFontName().empty() )
GetInternalFont();
+#endif
return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
}
{
wxCHECK_MSG( Ok(), FALSE, wxT("invalid font") );
+#ifndef __WXGTK20__
if ( M_FONTDATA->HasNativeFont() )
{
// the monospace fonts are supposed to have "M" in the spacing field
return spacing.Upper() == _T('M');
}
+#endif
return wxFontBase::IsFixedWidth();
}
void wxFont::SetPointSize(int pointSize)
{
Unshare();
-
+
M_FONTDATA->SetPointSize(pointSize);
}
wxCHECK_MSG( Ok(), font, wxT("invalid font") )
- long int_scale = long(scale * 100.0 + 0.5); /* key for fontlist */
+#ifdef __WXGTK20__
+ if (*this == wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT))
+ {
+ font = GtkGetDefaultGuiFont();
+ }
+ else
+ {
+ PangoFontDescription *font_description = GetNativeFontInfo()->description;
+
+ font = gdk_font_from_description( font_description );
+ }
+#else
+ long int_scale = long(scale * 100.0 + 0.5); // key for fontlist
int point_scale = (int)((M_FONTDATA->m_pointSize * 10 * int_scale) / 100);
wxNode *node = M_FONTDATA->m_scaled_xfonts.Find(int_scale);
M_FONTDATA->m_scaled_xfonts.Append( int_scale, (wxObject*)font );
}
}
+#endif // GTK 2.0
// it's quite useless to make it a wxCHECK because we're going to crash
// anyhow...
}
gchar *fontname = gtk_font_selection_dialog_get_font_name(fontdlg);
+
+ // printf( "font %s\n", fontname );
dialog->SetChosenFont(fontname);
gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event",
GTK_SIGNAL_FUNC(gtk_fontdialog_delete_callback), (gpointer)this );
+#ifndef __WXGTK20__
wxFont font = m_fontData.GetInitialFont();
if( font.Ok() )
{
wxFAIL_MSG(_T("font is ok but no native font info?"));
}
}
+#endif
return TRUE;
}
#include "wx/fontenum.h"
#include "wx/fontutil.h"
+// ----------------------------------------------------------------------------
+// GTK 2.0
+// ----------------------------------------------------------------------------
+
+#ifdef __WXGTK20__
+
+#include "wx/gtk/private.h"
+
+extern GtkWidget *wxGetRootWindow();
+
+static int
+cmp_families (const void *a, const void *b)
+{
+ const char *a_name = pango_font_family_get_name (*(PangoFontFamily **)a);
+ const char *b_name = pango_font_family_get_name (*(PangoFontFamily **)b);
+
+ return g_utf8_collate (a_name, b_name);
+}
+
+// I admit I don't yet understand encodings with Pango
+bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
+ bool fixedWidthOnly)
+{
+ if ( fixedWidthOnly )
+ {
+ OnFacename( wxT("monospaced") );
+ }
+ else
+ {
+ PangoFontFamily **families = NULL;
+ gint n_families = 0;
+ pango_context_list_families (
+ gtk_widget_get_pango_context( wxGetRootWindow() ),
+ &families, &n_families );
+ qsort (families, n_families, sizeof (PangoFontFamily *), cmp_families);
+
+ for (int i=0; i<n_families; i++)
+ {
+ const gchar *name = pango_font_family_get_name( families[i] );
+
+ wxString tmp( name, wxConvUTF8 );
+ OnFacename( tmp );
+ }
+ }
+
+ return TRUE;
+}
+
+bool wxFontEnumerator::EnumerateEncodings(const wxString& family)
+{
+ return FALSE;
+}
+
+
+#else
+ // GTK 2.0
+
#ifdef __VMS__ // Xlib.h for VMS is not (yet) compatible with C++
// The resulting warnings are switched off here
#pragma message disable nosimpint
{
char *font = fonts[n];
#if wxUSE_REGEX
-#if wxUSE_UNICODE
- wxString sfont( wxConvLocal.cMB2WC( font ) );
- if ( !re.Matches(sfont) )
-#else
if ( !re.Matches(font) )
-#endif
#else // !wxUSE_REGEX
if ( !wxString(font).Matches(wxT("-*-*-*-*-*-*-*-*-*-*-*-*-*-*")) )
#endif // wxUSE_REGEX/!wxUSE_REGEX
char *family = dash + 1;
dash = strchr(family, '-');
*dash = '\0'; // !NULL because Matches() above succeeded
-#if wxUSE_UNICODE
- wxString fam( wxConvLocal.cMB2WC( family ) );
-#else
wxString fam(family);
-#endif
if ( families.Index(fam) == wxNOT_FOUND )
{
#endif
// wxUSE_NANOX
}
+
+#endif
+ // __WXGTK20__
#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
#include <gdk/gdk.h>
#endif
-#include "wx/fontutil.h"
-#include "wx/fontmap.h"
-#include "wx/tokenzr.h"
-#include "wx/hash.h"
-#include "wx/module.h"
// ----------------------------------------------------------------------------
// private data
g_fontHash = (wxHashTable *)NULL;
}
+
+#endif
+ // not GTK 2.0
+
\ No newline at end of file