#include "wx/font.h"
#endif // WX_PRECOMP
+#include "wx/gdicmn.h"
#include "wx/fontutil.h" // for wxNativeFontInfo
#include "wx/tokenzr.h"
{
wxNativeFontInfo fontInfo;
if ( !fontInfo.FromString(strNativeFontDesc) )
- return (wxFont *)NULL;
+ return new wxFont(*wxNORMAL_FONT);
return New(fontInfo);
}
wxNativeFontInfo *wxFontBase::GetNativeFontInfo() const
{
-#if !defined(__WXGTK__)
+#if !defined(__WXGTK__) && !defined(__WXMSW__)
wxNativeFontInfo *fontInfo = new wxNativeFontInfo;
fontInfo->pointSize = GetPointSize();
void wxFontBase::SetNativeFontInfo(const wxNativeFontInfo& info)
{
-#if !defined(__WXGTK__)
+#if !defined(__WXGTK__) && !defined(__WXMSW__)
SetPointSize(info.pointSize);
SetFamily(info.family);
SetStyle(info.style);
return (wxFont &)*this;
}
-// VZ: is it correct to compare pointers and not the contents? (FIXME)
bool wxFontBase::operator==(const wxFont& font) const
{
- return GetFontData() == font.GetFontData();
+ // either it is the same font, i.e. they share the same common data or they
+ // have different ref datas but still describe the same font
+ return GetFontData() == font.GetFontData() ||
+ (
+ Ok() == font.Ok() &&
+ GetPointSize() == font.GetPointSize() &&
+ GetFamily() == font.GetFamily() &&
+ GetStyle() == font.GetStyle() &&
+ GetUnderlined() == font.GetUnderlined() &&
+ GetFaceName() == font.GetFaceName() &&
+ GetEncoding() == font.GetEncoding()
+ );
}
bool wxFontBase::operator!=(const wxFont& font) const
{
- return GetFontData() != font.GetFontData();
+ return !(*this == font);
}
wxString wxFontBase::GetFamilyString() const
}
}
-#if !defined(__WXGTK__)
+#if !defined(__WXGTK__) && !defined(__WXMSW__)
// ----------------------------------------------------------------------------
// wxNativeFontInfo
// These are the generic forms of FromString()/ToString.
//
// convert to/from the string representation: format is
-// pointsize;family;style;weight;underlined;facename;encoding
+// version;pointsize;family;style;weight;underlined;facename;encoding
bool wxNativeFontInfo::FromString(const wxString& s)
{
wxStringTokenizer tokenizer(s, _T(";"));
wxString token = tokenizer.GetNextToken();
+ //
+ // Ignore the version for now
+ //
+
+ token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
pointSize = (int)l;
{
wxString s;
- s.Printf(_T("%d;%d;%d;%d;%d;%s;%d"),
+ s.Printf(_T("%d;%d;%d;%d;%d;%d;%s;%d"),
+ 0, // version
pointSize,
family,
style,