#include "wx/window.h"
#include "wx/font.h"
-#include "wx/fontutil.h"
#include "wx/colour.h"
#include "wx/gdicmn.h"
wxPRINT_MODE_PRINTER = 3 // Send to printer
} wxPrintMode;
-// ---------------------------------------------------------------------------
-// Macro to specify "All Files" on different platforms
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// miscellaneous
+// ----------------------------------------------------------------------------
+
+// define this macro if font handling is done using the X font names
+#if defined(__WXGTK__) || defined(__X__)
+ #define _WX_X_FONTLIKE
+#endif
+
+// macro to specify "All Files" on different platforms
#if defined(__WXMSW__)
# define wxALL_FILES_PATTERN "*.*"
# define wxALL_FILES gettext_noop("All files (*.*)|*.*")
# define wxALL_FILES_PATTERN "*"
# define wxALL_FILES gettext_noop("All files (*)|*")
#endif
+
// ---------------------------------------------------------------------------
// macros that enable wxWindows apps to be compiled in absence of the
// sytem headers, although some platform specific types are used in the
wxFONTWEIGHT_MAX
};
-// ----------------------------------------------------------------------------
-// wxNativeFontInfo is platform-specific font representation
-// ----------------------------------------------------------------------------
-
-// this struct should be considered as opaque font description only used by
-// the native functions, the user code can only get the objects of this type
-// from somewhere and pass it somewhere else (possibly save them somewhere
-// using ToString() and restore them using FromString())
-struct WXDLLEXPORT wxNativeFontInfo
-{
-#if defined(__WXGTK__)
- wxString xFontName;
-#else // other platforms
- //
- // This is a generic implementation that should work on all ports
- // without specific support by the port.
- //
- int pointSize;
- int family;
- int style;
- int weight;
- bool underlined;
- wxString faceName;
- wxFontEncoding encoding;
-#endif // platforms
-
- // it is important to be able to serialize wxNativeFontInfo objects to be
- // able to store them (in config file, for example)
- bool FromString(const wxString& s);
- wxString ToString() const;
-};
-
-WXDLLEXPORT_DATA(extern wxNativeFontInfo) wxNullNativeFontInfo;
-
// ----------------------------------------------------------------------------
// wxFontBase represents a font object
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxFontRefData;
+class WXDLLEXPORT wxNativeFontInfo;
class WXDLLEXPORT wxFontBase : public wxGDIObject
{
public:
// creator function
+
+ // from the font components
static wxFont *New(
int pointSize, // size of the font in points
int family, // see wxFontFamily enum
bool underlined = FALSE, // not underlined by default
const wxString& face = wxEmptyString, // facename
wxFontEncoding encoding = wxFONTENCODING_DEFAULT); // ISO8859-X, ...
- static wxFont *New(const wxNativeFontInfo& info);
+
+ // from the (opaque) native font description object
+ static wxFont *New(const wxNativeFontInfo& nativeFontDesc);
+
+ // from the string representation of wxNativeFontInfo
+ static wxFont *New(const wxString& strNativeFontDesc);
// was the font successfully created?
bool Ok() const { return m_refData != NULL; }
virtual bool GetUnderlined() const = 0;
virtual wxString GetFaceName() const = 0;
virtual wxFontEncoding GetEncoding() const = 0;
- virtual wxNativeFontInfo GetNativeFontInfo() const;
+ virtual wxNativeFontInfo *GetNativeFontInfo() const;
+ wxString GetNativeFontInfoDesc() const;
// change the font characteristics
virtual void SetPointSize( int pointSize ) = 0;
virtual void SetEncoding(wxFontEncoding encoding) = 0;
virtual void SetNativeFontInfo(const wxNativeFontInfo& info);
+ // VZ: there is no void SetNativeFontInfo(const wxString& info), needed?
+
// translate the fonts into human-readable string (i.e. GetStyleString()
// will return "wxITALIC" for an italic font, ...)
wxString GetFamilyString() const;
#ifndef _WX_FONTENC_H_
#define _WX_FONTENC_H_
+#include "wx/string.h"
+
// font encodings
enum wxFontEncoding
{
wxFONTENCODING_MAX
};
+// ----------------------------------------------------------------------------
+// types
+// ----------------------------------------------------------------------------
+
+// This private structure specifies all the parameters needed to create a font
+// with the given encoding on this platform.
+//
+// Under X, it contains the last 2 elements of the font specifications
+// (registry and encoding).
+//
+// Under Windows, it contains a number which is one of predefined CHARSET_XXX
+// values.
+//
+// Under all platforms it also contains a facename string which should be
+// used, if not empty, to create fonts in this encoding (this is the only way
+// to create a font of non-standard encoding (like KOI8) under Windows - the
+// facename specifies the encoding then)
+
+struct WXDLLEXPORT wxNativeEncodingInfo
+{
+ wxString facename; // may be empty meaning "any"
+ wxFontEncoding encoding; // so that we know what this struct represents
+
+#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__)
+ wxNativeEncodingInfo() { charset = 0; /* ANSI_CHARSET */ }
+
+ int charset;
+#elif defined(_WX_X_FONTLIKE)
+ wxString xregistry,
+ xencoding;
+#else
+ #error "Unsupported toolkit"
+#endif
+
+ // this struct is saved in config by wxFontMapper, so it should know to
+ // serialise itself (implemented in platform-specific code)
+ bool FromString(const wxString& s);
+ wxString ToString() const;
+};
+
#endif // _WX_FONTENC_H_
// ----------------------------------------------------------------------------
#include "wx/fontenc.h" // for wxFontEncoding
-#if wxUSE_GUI
- #include "wx/fontutil.h" // for wxNativeEncodingInfo
-#endif // wxUSE_GUI
#if wxUSE_CONFIG
class WXDLLEXPORT wxConfigBase;
#include "wx/font.h" // for wxFont and wxFontEncoding
-// for our purposes here, GDK and X are identical
-#if defined(__WXGTK__) || defined(__X__)
- #define _WX_X_FONTLIKE
-#endif
-
// ----------------------------------------------------------------------------
// types
// ----------------------------------------------------------------------------
-// This private structure specifies all the parameters needed to create a font
-// with the given encoding on this platform.
-//
-// Under X, it contains the last 2 elements of the font specifications
-// (registry and encoding).
-//
-// Under Windows, it contains a number which is one of predefined CHARSET_XXX
-// values.
-//
-// Under all platforms it also contains a facename string which should be
-// used, if not empty, to create fonts in this encoding (this is the only way
-// to create a font of non-standard encoding (like KOI8) under Windows - the
-// facename specifies the encoding then)
-
-struct WXDLLEXPORT wxNativeEncodingInfo
+// wxNativeFontInfo is platform-specific font representation: this struct
+// should be considered as opaque font description only used by the native
+// functions, the user code can only get the objects of this type from
+// somewhere and pass it somewhere else (possibly save them somewhere using
+// ToString() and restore them using FromString())
+struct WXDLLEXPORT wxNativeFontInfo
{
- wxString facename; // may be empty meaning "any"
- wxFontEncoding encoding; // so that we know what this struct represents
-
-#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__)
- wxNativeEncodingInfo() { charset = 0; /* ANSI_CHARSET */ }
-
- int charset;
-#elif defined(_WX_X_FONTLIKE)
- wxString xregistry,
- xencoding;
-#else
- #error "Unsupported toolkit"
-#endif
-
- // this struct is saved in config by wxFontMapper, so it should know to
- // serialise itself (implemented in platform-specific code)
+#if defined(__WXGTK__)
+ wxString xFontName;
+#else // other platforms
+ //
+ // This is a generic implementation that should work on all ports
+ // without specific support by the port.
+ //
+ int pointSize;
+ int family;
+ int style;
+ int weight;
+ bool underlined;
+ wxString faceName;
+ wxFontEncoding encoding;
+#endif // platforms
+
+ // it is important to be able to serialize wxNativeFontInfo objects to be
+ // able to store them (in config file, for example)
bool FromString(const wxString& s);
wxString ToString() const;
};
// ctors and such
wxFont() { Init(); }
wxFont(const wxFont& font) { Init(); Ref(font); }
- wxFont(const wxString& fontname, const wxFontData& fontdata) { Create(fontname, fontdata); }
- wxFont(const wxNativeFontInfo& info);
+ wxFont(const wxString& fontname,
+ wxFontEncoding fontenc = wxFONTENCODING_DEFAULT)
+ {
+ Init();
- // assignment
- wxFont& operator=(const wxFont& font);
+ Create(fontname, fontenc);
+ }
+
+ wxFont(const wxNativeFontInfo& info);
wxFont(int size,
int family,
int weight,
bool underlined = FALSE,
const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
- const wxNativeFontInfo& info = wxNullNativeFontInfo);
+ wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- bool Create(const wxString& fontname, const wxFontData& fontdata);
+ // wxGTK-specific
+ bool Create(const wxString& fontname,
+ wxFontEncoding fontenc = wxFONTENCODING_DEFAULT);
+ bool Create(const wxNativeFontInfo& fontinfo);
~wxFont();
+ // assignment
+ wxFont& operator=(const wxFont& font);
+
// implement base class pure virtuals
virtual int GetPointSize() const;
virtual int GetFamily() const;
virtual wxString GetFaceName() const;
virtual bool GetUnderlined() const;
virtual wxFontEncoding GetEncoding() const;
- virtual wxNativeFontInfo GetNativeFontInfo() const;
+ virtual wxNativeFontInfo *GetNativeFontInfo() const;
virtual void SetPointSize( int pointSize );
virtual void SetFamily( int family );
// ctors and such
wxFont() { Init(); }
wxFont(const wxFont& font) { Init(); Ref(font); }
- wxFont(const wxString& fontname, const wxFontData& fontdata) { Create(fontname, fontdata); }
- wxFont(const wxNativeFontInfo& info);
+ wxFont(const wxString& fontname,
+ wxFontEncoding fontenc = wxFONTENCODING_DEFAULT)
+ {
+ Init();
- // assignment
- wxFont& operator=(const wxFont& font);
+ Create(fontname, fontenc);
+ }
+
+ wxFont(const wxNativeFontInfo& info);
wxFont(int size,
int family,
int weight,
bool underlined = FALSE,
const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
- const wxNativeFontInfo& info = wxNullNativeFontInfo);
+ wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- bool Create(const wxString& fontname, const wxFontData& fontdata);
+ // wxGTK-specific
+ bool Create(const wxString& fontname,
+ wxFontEncoding fontenc = wxFONTENCODING_DEFAULT);
+ bool Create(const wxNativeFontInfo& fontinfo);
~wxFont();
+ // assignment
+ wxFont& operator=(const wxFont& font);
+
// implement base class pure virtuals
virtual int GetPointSize() const;
virtual int GetFamily() const;
virtual wxString GetFaceName() const;
virtual bool GetUnderlined() const;
virtual wxFontEncoding GetEncoding() const;
- virtual wxNativeFontInfo GetNativeFontInfo() const;
+ virtual wxNativeFontInfo *GetNativeFontInfo() const;
virtual void SetPointSize( int pointSize );
virtual void SetFamily( int family );
void MyFrame::OnCheckNativeToFromString(wxCommandEvent& WXUNUSED(event))
{
- wxString fontInfo = m_canvas->GetTextFont().GetNativeFontInfo().ToString();
+ wxString fontInfo = m_canvas->GetTextFont().GetNativeFontInfoDesc();
- if(fontInfo.IsEmpty())
- wxMessageBox("Native font info string is empty!", "Font demo",
- wxOK);
+ if ( fontInfo.IsEmpty() )
+ {
+ wxLogError("Native font info string is empty!");
+ }
else
{
- wxNativeFontInfo info;
- info.FromString(fontInfo);
- wxFont font(info);
- if(fontInfo == font.GetNativeFontInfo().ToString())
- wxMessageBox("wxNativeFontInfo ToString()/FromString() works!",
- "Font demo", wxOK);
+ wxFont *font = wxFont::New(fontInfo);
+ if ( fontInfo != font->GetNativeFontInfoDesc() )
+ wxLogError("wxNativeFontInfo ToString()/FromString() broken!");
else
- wxMessageBox("wxNativeFontInfo ToString()/FromString() doesn't work!",
- "Font demo", wxOK);
+ wxLogError("wxNativeFontInfo works: %s", fontInfo.c_str());
+ delete font;
}
}
dc.DrawText(fontInfo, 5, 5);
- if(m_font.Ok())
+ if ( m_font.Ok() )
{
- dc.SetFont(wxFont(m_font.GetNativeFontInfo()));
- fontInfo.Printf("Native font info: %s", m_font.GetNativeFontInfo().ToString().GetData());
- dc.DrawText(fontInfo, 5, 5 + dc.GetCharHeight());
+ wxString fontDesc = m_font.GetNativeFontInfoDesc();
+ dc.SetFont(wxFont(fontDesc));
+ fontInfo.Printf("Native font info: %s", fontDesc.c_str());
+ dc.DrawText(fontInfo, 5, 5 + dc.GetCharHeight());
}
// prepare to draw the font
#ifndef WX_PRECOMP
#include "wx/font.h"
+ #include "wx/fontutil.h"
#endif // WX_PRECOMP
#include "wx/tokenzr.h"
return new wxFont(info);
}
-wxNativeFontInfo wxFontBase::GetNativeFontInfo() const
+/* static */
+wxFont *wxFontBase::New(const wxString& strNativeFontDesc)
{
-#if !defined(__WXGTK__)
wxNativeFontInfo fontInfo;
+ if ( !fontInfo.FromString(strNativeFontDesc) )
+ return (wxFont *)NULL;
+
+ return New(fontInfo);
+}
+
+wxNativeFontInfo *wxFontBase::GetNativeFontInfo() const
+{
+#if !defined(__WXGTK__)
+ wxNativeFontInfo *fontInfo = new wxNativeFontInfo;
- fontInfo.pointSize = GetPointSize();
- fontInfo.family = GetFamily();
- fontInfo.style = GetStyle();
- fontInfo.weight = GetWeight();
- fontInfo.underlined = GetUnderlined();
- fontInfo.faceName = GetFaceName();
- fontInfo.encoding = GetEncoding();
+ fontInfo->pointSize = GetPointSize();
+ fontInfo->family = GetFamily();
+ fontInfo->style = GetStyle();
+ fontInfo->weight = GetWeight();
+ fontInfo->underlined = GetUnderlined();
+ fontInfo->faceName = GetFaceName();
+ fontInfo->encoding = GetEncoding();
return fontInfo;
#else
- return wxNullNativeFontInfo;
+ return (wxNativeFontInfo *)NULL;
#endif
}
#endif
}
+wxString wxFontBase::GetNativeFontInfoDesc() const
+{
+ wxString fontDesc;
+ wxNativeFontInfo *fontInfo = GetNativeFontInfo();
+ if ( fontInfo )
+ {
+ fontDesc = fontInfo->ToString();
+ delete fontInfo;
+ }
+
+ return fontDesc;
+}
+
wxFont& wxFont::operator=(const wxFont& font)
{
if ( this != &font )
{
wxString s;
- s.Printf("%d;%d;%d;%d;%d;%s;%d",
+ s.Printf(_T("%d;%d;%d;%d;%d;%s;%d"),
pointSize,
family,
style,
return s;
}
-#endif
+#endif // generic wxNativeFontInfo implementation
#include "wx/app.h"
#include "wx/log.h"
#include "wx/intl.h"
+ #include "wx/fontutil.h"
#endif // PCH
#include "wx/fontmap.h"
wxFont font = retData.GetChosenFont();
*info = retData.EncodingInfo();
- info -> encoding = retData.GetEncoding();
+ info->encoding = retData.GetEncoding();
#if wxUSE_CONFIG
- // remember this in the config
+ // remember this in the config
if ( ChangePath(FONTMAPPER_FONT_FROM_ENCODING_PATH, &pathOld) )
{
GetConfig()->Write(configEntry, info->ToString());
wxFont wxNullFont;
wxColour wxNullColour;
wxPalette wxNullPalette;
-wxNativeFontInfo wxNullNativeFontInfo;
/* Default window names */
const wxChar *wxControlNameStr = wxT("control");
int weight = wxDEFAULT,
bool underlined = FALSE,
const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
- const wxNativeFontInfo& info = wxNullNativeFontInfo);
+ wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
wxFontRefData( const wxFontRefData& data );
virtual ~wxFontRefData();
int weight,
bool underlined,
const wxString& faceName,
- wxFontEncoding encoding,
- const wxNativeFontInfo& info);
+ wxFontEncoding encoding);
private:
wxList m_scaled_xfonts;
bool m_underlined;
wxString m_faceName;
wxFontEncoding m_encoding;
+
wxNativeFontInfo m_nativeFontInfo;
friend class wxFont;
int weight,
bool underlined,
const wxString& faceName,
- wxFontEncoding encoding,
- const wxNativeFontInfo& info = wxNullNativeFontInfo)
+ wxFontEncoding encoding)
{
if (family == wxDEFAULT)
m_family = wxSWISS;
m_underlined = underlined;
m_encoding = encoding;
- m_nativeFontInfo = info;
}
wxFontRefData::wxFontRefData( const wxFontRefData& data )
: m_scaled_xfonts(wxKEY_INTEGER)
{
Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
- data.m_underlined, data.m_faceName, data.m_encoding,
- data.m_nativeFontInfo );
+ data.m_underlined, data.m_faceName, data.m_encoding);
}
wxFontRefData::wxFontRefData(int size, int family, int style,
- int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding,
- const wxNativeFontInfo& info = wxNullNativeFontInfo)
+ int weight, bool underlined,
+ const wxString& faceName,
+ wxFontEncoding encoding)
: m_scaled_xfonts(wxKEY_INTEGER)
{
- Init(size, family, style, weight,
- underlined, faceName, encoding, info);
+ Init(size, family, style, weight, underlined, faceName, encoding);
}
wxFontRefData::~wxFontRefData()
wxFont::wxFont(const wxNativeFontInfo& info)
{
- Create(info.xFontName, wxFontData());
+ Init();
+
+ Create(info.ToString());
+}
+
+bool wxFont::Create(const wxNativeFontInfo& info)
+{
+ return Create(info.xFontName);
}
bool wxFont::Create( int pointSize,
int weight,
bool underlined,
const wxString& face,
- wxFontEncoding encoding,
- const wxNativeFontInfo& info )
+ wxFontEncoding encoding)
{
m_refData = new wxFontRefData(pointSize, family, style, weight,
- underlined, face, encoding, info);
+ underlined, face, encoding);
return TRUE;
}
-bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
+bool wxFont::Create(const wxString& fontname, wxFontEncoding enc)
{
Init();
- if(!fontname)
+ if( !fontname )
{
*this = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT);
return TRUE;
tn.GetNextToken(); // avg width
// deal with font encoding
- M_FONTDATA->m_encoding = fontdata.GetEncoding();
+ M_FONTDATA->m_encoding = enc;
if ( M_FONTDATA->m_encoding == wxFONTENCODING_SYSTEM )
{
wxString registry = tn.GetNextToken().MakeUpper(),
return M_FONTDATA->m_encoding;
}
-wxNativeFontInfo wxFont::GetNativeFontInfo() const
+wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
- wxCHECK_MSG( Ok(), wxNullNativeFontInfo, wxT("invalid font") );
+ wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
if(M_FONTDATA->m_nativeFontInfo.xFontName.IsEmpty())
GetInternalFont();
- return M_FONTDATA->m_nativeFontInfo;
+
+ return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
}
#pragma implementation "fontdlg.h"
#endif
+#include "wx/fontutil.h"
#include "wx/fontdlg.h"
#include "wx/utils.h"
#include "wx/intl.h"
if (!gfont)
{
- wxMessageBox(_("Please choose a valid font."), _("Error"), wxOK);
+ wxMessageBox(_("Please choose a valid font."), _("Error"),
+ wxOK | wxICON_ERROR);
return;
}
// we ignore the facename here - should be enough to choose an arbitrary
// one if the registry/encoding are specified
- // dialog->m_fontData.EncodingInfo().facename = xfamily;
fontdata.EncodingInfo().xregistry = xregistry;
fontdata.EncodingInfo().xencoding = xencoding;
// pass fontdata to wxFont ctor so that it can get the encoding from there
// if it is already known (otherwise it will try to deduce it itself)
- dialog->m_fontData.SetChosenFont( wxFont(fontname, fontdata) );
+ dialog->m_fontData.SetChosenFont(wxFont(fontname, fontdata.GetEncoding()));
g_free( fontname );
wxFont font = m_fontData.GetInitialFont();
if( font.Ok() )
{
- wxNativeFontInfo info = font.GetNativeFontInfo();
+ wxNativeFontInfo *info = font.GetNativeFontInfo();
- if( info.xFontName.IsEmpty() )
- font.GetInternalFont();
- gtk_font_selection_dialog_set_font_name(sel, wxConvCurrent->cWX2MB(info.xFontName.GetData()));
+ if ( info )
+ {
+ const wxString& fontname = info->xFontName;
+ if ( !fontname )
+ font.GetInternalFont();
+ gtk_font_selection_dialog_set_font_name(sel,
+ wxConvCurrent->cWX2MB(fontname));
+ }
+ else
+ {
+ // this is not supposed to happen!
+ wxFAIL_MSG(_T("font is ok but no native font info?"));
+ }
}
}
wxFont wxNullFont;
wxColour wxNullColour;
wxPalette wxNullPalette;
-wxNativeFontInfo wxNullNativeFontInfo;
/* Default window names */
const wxChar *wxControlNameStr = wxT("control");
int weight = wxDEFAULT,
bool underlined = FALSE,
const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
- const wxNativeFontInfo& info = wxNullNativeFontInfo);
+ wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
wxFontRefData( const wxFontRefData& data );
virtual ~wxFontRefData();
int weight,
bool underlined,
const wxString& faceName,
- wxFontEncoding encoding,
- const wxNativeFontInfo& info);
+ wxFontEncoding encoding);
private:
wxList m_scaled_xfonts;
bool m_underlined;
wxString m_faceName;
wxFontEncoding m_encoding;
+
wxNativeFontInfo m_nativeFontInfo;
friend class wxFont;
int weight,
bool underlined,
const wxString& faceName,
- wxFontEncoding encoding,
- const wxNativeFontInfo& info = wxNullNativeFontInfo)
+ wxFontEncoding encoding)
{
if (family == wxDEFAULT)
m_family = wxSWISS;
m_underlined = underlined;
m_encoding = encoding;
- m_nativeFontInfo = info;
}
wxFontRefData::wxFontRefData( const wxFontRefData& data )
: m_scaled_xfonts(wxKEY_INTEGER)
{
Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
- data.m_underlined, data.m_faceName, data.m_encoding,
- data.m_nativeFontInfo );
+ data.m_underlined, data.m_faceName, data.m_encoding);
}
wxFontRefData::wxFontRefData(int size, int family, int style,
- int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding,
- const wxNativeFontInfo& info = wxNullNativeFontInfo)
+ int weight, bool underlined,
+ const wxString& faceName,
+ wxFontEncoding encoding)
: m_scaled_xfonts(wxKEY_INTEGER)
{
- Init(size, family, style, weight,
- underlined, faceName, encoding, info);
+ Init(size, family, style, weight, underlined, faceName, encoding);
}
wxFontRefData::~wxFontRefData()
wxFont::wxFont(const wxNativeFontInfo& info)
{
- Create(info.xFontName, wxFontData());
+ Init();
+
+ Create(info.ToString());
+}
+
+bool wxFont::Create(const wxNativeFontInfo& info)
+{
+ return Create(info.xFontName);
}
bool wxFont::Create( int pointSize,
int weight,
bool underlined,
const wxString& face,
- wxFontEncoding encoding,
- const wxNativeFontInfo& info )
+ wxFontEncoding encoding)
{
m_refData = new wxFontRefData(pointSize, family, style, weight,
- underlined, face, encoding, info);
+ underlined, face, encoding);
return TRUE;
}
-bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
+bool wxFont::Create(const wxString& fontname, wxFontEncoding enc)
{
Init();
- if(!fontname)
+ if( !fontname )
{
*this = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT);
return TRUE;
tn.GetNextToken(); // avg width
// deal with font encoding
- M_FONTDATA->m_encoding = fontdata.GetEncoding();
+ M_FONTDATA->m_encoding = enc;
if ( M_FONTDATA->m_encoding == wxFONTENCODING_SYSTEM )
{
wxString registry = tn.GetNextToken().MakeUpper(),
return M_FONTDATA->m_encoding;
}
-wxNativeFontInfo wxFont::GetNativeFontInfo() const
+wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
- wxCHECK_MSG( Ok(), wxNullNativeFontInfo, wxT("invalid font") );
+ wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
if(M_FONTDATA->m_nativeFontInfo.xFontName.IsEmpty())
GetInternalFont();
- return M_FONTDATA->m_nativeFontInfo;
+
+ return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
}
#pragma implementation "fontdlg.h"
#endif
+#include "wx/fontutil.h"
#include "wx/fontdlg.h"
#include "wx/utils.h"
#include "wx/intl.h"
if (!gfont)
{
- wxMessageBox(_("Please choose a valid font."), _("Error"), wxOK);
+ wxMessageBox(_("Please choose a valid font."), _("Error"),
+ wxOK | wxICON_ERROR);
return;
}
// we ignore the facename here - should be enough to choose an arbitrary
// one if the registry/encoding are specified
- // dialog->m_fontData.EncodingInfo().facename = xfamily;
fontdata.EncodingInfo().xregistry = xregistry;
fontdata.EncodingInfo().xencoding = xencoding;
// pass fontdata to wxFont ctor so that it can get the encoding from there
// if it is already known (otherwise it will try to deduce it itself)
- dialog->m_fontData.SetChosenFont( wxFont(fontname, fontdata) );
+ dialog->m_fontData.SetChosenFont(wxFont(fontname, fontdata.GetEncoding()));
g_free( fontname );
wxFont font = m_fontData.GetInitialFont();
if( font.Ok() )
{
- wxNativeFontInfo info = font.GetNativeFontInfo();
+ wxNativeFontInfo *info = font.GetNativeFontInfo();
- if( info.xFontName.IsEmpty() )
- font.GetInternalFont();
- gtk_font_selection_dialog_set_font_name(sel, wxConvCurrent->cWX2MB(info.xFontName.GetData()));
+ if ( info )
+ {
+ const wxString& fontname = info->xFontName;
+ if ( !fontname )
+ font.GetInternalFont();
+ gtk_font_selection_dialog_set_font_name(sel,
+ wxConvCurrent->cWX2MB(fontname));
+ }
+ else
+ {
+ // this is not supposed to happen!
+ wxFAIL_MSG(_T("font is ok but no native font info?"));
+ }
}
}