]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/fontcmn.cpp
better learn the operators...
[wxWidgets.git] / src / common / fontcmn.cpp
index 7044e66827f1e32b5b155b95d17b43a83cdf2d93..1a8b50c376d30baa812e624dec511c5efa8880f4 100644 (file)
@@ -32,6 +32,7 @@
     #include "wx/font.h"
 #endif // WX_PRECOMP
 
     #include "wx/font.h"
 #endif // WX_PRECOMP
 
+#include "wx/gdicmn.h"
 #include "wx/fontutil.h" // for wxNativeFontInfo
 
 #include "wx/tokenzr.h"
 #include "wx/fontutil.h" // for wxNativeFontInfo
 
 #include "wx/tokenzr.h"
@@ -69,14 +70,14 @@ wxFont *wxFontBase::New(const wxString& strNativeFontDesc)
 {
     wxNativeFontInfo fontInfo;
     if ( !fontInfo.FromString(strNativeFontDesc) )
 {
     wxNativeFontInfo fontInfo;
     if ( !fontInfo.FromString(strNativeFontDesc) )
-        return (wxFont *)NULL;
+        return new wxFont(*wxNORMAL_FONT);
 
     return New(fontInfo);
 }
 
 wxNativeFontInfo *wxFontBase::GetNativeFontInfo() const
 {
 
     return New(fontInfo);
 }
 
 wxNativeFontInfo *wxFontBase::GetNativeFontInfo() const
 {
-#if !defined(__WXGTK__)
+#if !defined(__WXGTK__) && !defined(__WXMSW__)
     wxNativeFontInfo *fontInfo = new wxNativeFontInfo;
 
     fontInfo->pointSize = GetPointSize();
     wxNativeFontInfo *fontInfo = new wxNativeFontInfo;
 
     fontInfo->pointSize = GetPointSize();
@@ -95,7 +96,7 @@ wxNativeFontInfo *wxFontBase::GetNativeFontInfo() const
 
 void wxFontBase::SetNativeFontInfo(const wxNativeFontInfo& info)
 {
 
 void wxFontBase::SetNativeFontInfo(const wxNativeFontInfo& info)
 {
-#if !defined(__WXGTK__)
+#if !defined(__WXGTK__) && !defined(__WXMSW__)
     SetPointSize(info.pointSize);
     SetFamily(info.family);
     SetStyle(info.style);
     SetPointSize(info.pointSize);
     SetFamily(info.family);
     SetStyle(info.style);
@@ -103,6 +104,8 @@ void wxFontBase::SetNativeFontInfo(const wxNativeFontInfo& info)
     SetUnderlined(info.underlined);
     SetFaceName(info.faceName);
     SetEncoding(info.encoding);
     SetUnderlined(info.underlined);
     SetFaceName(info.faceName);
     SetEncoding(info.encoding);
+#else
+    (void)info;
 #endif
 }
 
 #endif
 }
 
@@ -127,15 +130,26 @@ wxFont& wxFont::operator=(const wxFont& font)
     return (wxFont &)*this;
 }
 
     return (wxFont &)*this;
 }
 
-// VZ: is it correct to compare pointers and not the contents? (FIXME)
 bool wxFontBase::operator==(const wxFont& font) const
 {
 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() &&
+            GetWeight() == font.GetWeight() &&
+            GetUnderlined() == font.GetUnderlined() &&
+            GetFaceName() == font.GetFaceName() &&
+            GetEncoding() == font.GetEncoding()
+           );
 }
 
 bool wxFontBase::operator!=(const wxFont& font) const
 {
 }
 
 bool wxFontBase::operator!=(const wxFont& font) const
 {
-    return GetFontData() != font.GetFontData();
+    return !(*this == font);
 }
 
 wxString wxFontBase::GetFamilyString() const
 }
 
 wxString wxFontBase::GetFamilyString() const
@@ -180,7 +194,7 @@ wxString wxFontBase::GetWeightString() const
     }
 }
 
     }
 }
 
-#if !defined(__WXGTK__)
+#if !defined(__WXGTK__) && !defined(__WXMSW__)
 
 // ----------------------------------------------------------------------------
 // wxNativeFontInfo
 
 // ----------------------------------------------------------------------------
 // wxNativeFontInfo
@@ -189,7 +203,7 @@ wxString wxFontBase::GetWeightString() const
 // These are the generic forms of FromString()/ToString.
 //
 // convert to/from the string representation: format is
 // 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)
 {
 
 bool wxNativeFontInfo::FromString(const wxString& s)
 {
@@ -198,6 +212,11 @@ bool wxNativeFontInfo::FromString(const wxString& s)
     wxStringTokenizer tokenizer(s, _T(";"));
 
     wxString token = tokenizer.GetNextToken();
     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;
     if ( !token.ToLong(&l) )
         return FALSE;
     pointSize = (int)l;
@@ -238,7 +257,8 @@ wxString wxNativeFontInfo::ToString() const
 {
     wxString s;
 
 {
     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,
              pointSize,
              family,
              style,