]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mgl/font.cpp
revert memory leak fix, it causes crash
[wxWidgets.git] / src / mgl / font.cpp
index e3ac9a29d20addb52e0c0c2109f733622e3f0e6b..1b9410516b98e21f9cc65a809478869ff7770f7f 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        font.cpp
+// Name:        src/mgl/font.cpp
 // Author:      Vaclav Slavik
 // Id:          $Id$
 // Copyright:   (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com)
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
-    #pragma implementation "font.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 #endif
 
 #include "wx/font.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/log.h"
+    #include "wx/utils.h"
+    #include "wx/settings.h"
+    #include "wx/cmndata.h"
+    #include "wx/gdicmn.h"
+#endif
+
 #include "wx/fontutil.h"
-#include "wx/cmndata.h"
-#include "wx/utils.h"
-#include "wx/log.h"
-#include "wx/gdicmn.h"
 #include "wx/tokenzr.h"
-#include "wx/settings.h"
 #include "wx/mgl/private.h"
 
 // ----------------------------------------------------------------------------
@@ -46,7 +46,7 @@ public:
                   int family = wxDEFAULT,
                   int style = wxDEFAULT,
                   int weight = wxDEFAULT,
-                  bool underlined = FALSE,
+                  bool underlined = false,
                   const wxString& faceName = wxEmptyString,
                   wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
     wxFontRefData(const wxFontRefData& data);
@@ -74,6 +74,8 @@ private:
     wxMGLFontLibrary *m_library;
     bool              m_valid;
 
+    wxNativeFontInfo  m_info;
+
     friend class wxFont;
 };
 
@@ -119,7 +121,7 @@ void wxFontRefData::Init(int pointSize,
     m_encoding = encoding;
 
     m_library = NULL;
-    m_valid = FALSE;
+    m_valid = false;
 }
 
 wxFontRefData::wxFontRefData(const wxFontRefData& data)
@@ -172,7 +174,7 @@ bool wxFont::Create(int pointSize,
 {
     m_refData = new wxFontRefData(pointSize, family, style, weight,
                                   underlined, face, encoding);
-    return TRUE;
+    return true;
 }
 
 struct font_t *wxFont::GetMGLfont_t(float scale, bool antialiased)
@@ -186,7 +188,7 @@ struct font_t *wxFont::GetMGLfont_t(float scale, bool antialiased)
             old->DecRef();
     }
 
-    wxMGLFontInstance *instance = 
+    wxMGLFontInstance *instance =
         M_FONTDATA->m_library->GetFontInstance(this, scale, antialiased);
 
     return instance->GetMGLfont_t();
@@ -216,7 +218,7 @@ int wxFont::GetPointSize() const
 
 wxString wxFont::GetFaceName() const
 {
-    wxCHECK_MSG( Ok(), wxT(""), wxT("invalid font") );
+    wxCHECK_MSG( Ok(), wxEmptyString, wxT("invalid font") );
 
     return M_FONTDATA->m_faceName;
 }
@@ -244,7 +246,7 @@ int wxFont::GetWeight() const
 
 bool wxFont::GetUnderlined() const
 {
-    wxCHECK_MSG( Ok(), FALSE, wxT("invalid font") );
+    wxCHECK_MSG( Ok(), false, wxT("invalid font") );
 
     return M_FONTDATA->m_underlined;
 }
@@ -259,11 +261,19 @@ wxFontEncoding wxFont::GetEncoding() const
 
 bool wxFont::IsFixedWidth() const
 {
-    wxCHECK_MSG( Ok(), FALSE, wxT("invalid font") );
+    wxCHECK_MSG( Ok(), false, wxT("invalid font") );
 
     return (bool)(M_FONTDATA->m_library->GetFamily()->GetInfo()->isFixed);
 }
 
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+{
+    wxCHECK_MSG( Ok(), NULL, wxT("invalid font") );
+
+    M_FONTDATA->m_info.InitFromFont(*this);
+
+    return &(M_FONTDATA->m_info);
+}
 
 // ----------------------------------------------------------------------------
 // change font attributes
@@ -274,7 +284,7 @@ void wxFont::SetPointSize(int pointSize)
     AllocExclusive();
 
     M_FONTDATA->m_pointSize = pointSize;
-    M_FONTDATA->m_valid = FALSE;
+    M_FONTDATA->m_valid = false;
 }
 
 void wxFont::SetFamily(int family)
@@ -282,7 +292,7 @@ void wxFont::SetFamily(int family)
     AllocExclusive();
 
     M_FONTDATA->m_family = family;
-    M_FONTDATA->m_valid = FALSE;
+    M_FONTDATA->m_valid = false;
 }
 
 void wxFont::SetStyle(int style)
@@ -290,7 +300,7 @@ void wxFont::SetStyle(int style)
     AllocExclusive();
 
     M_FONTDATA->m_style = style;
-    M_FONTDATA->m_valid = FALSE;
+    M_FONTDATA->m_valid = false;
 }
 
 void wxFont::SetWeight(int weight)
@@ -298,15 +308,17 @@ void wxFont::SetWeight(int weight)
     AllocExclusive();
 
     M_FONTDATA->m_weight = weight;
-    M_FONTDATA->m_valid = FALSE;
+    M_FONTDATA->m_valid = false;
 }
 
-void wxFont::SetFaceName(const wxString& faceName)
+bool wxFont::SetFaceName(const wxString& faceName)
 {
     AllocExclusive();
 
     M_FONTDATA->m_faceName = faceName;
-    M_FONTDATA->m_valid = FALSE;
+    M_FONTDATA->m_valid = false;
+
+    return wxFontBase::SetFaceName(faceName);
 }
 
 void wxFont::SetUnderlined(bool underlined)
@@ -321,5 +333,5 @@ void wxFont::SetEncoding(wxFontEncoding encoding)
     AllocExclusive();
 
     M_FONTDATA->m_encoding = encoding;
-    M_FONTDATA->m_valid = FALSE;
+    M_FONTDATA->m_valid = false;
 }