]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/font.cpp
don't use deprecated toolbar API
[wxWidgets.git] / src / os2 / font.cpp
index 63be231df61c19c553b389cd7c63853cad724be5..4a97f97c285b7032bceca1508c3699976a205a36 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
+#include "wx/font.h"
+
 #ifndef WX_PRECOMP
     #include <stdio.h>
     #include "wx/list.h"
     #include "wx/utils.h"
     #include "wx/app.h"
-    #include "wx/font.h"
     #include "wx/log.h"
 #endif // WX_PRECOMP
 
@@ -50,7 +51,7 @@ class WXDLLEXPORT wxFontRefData: public wxGDIRefData
 public:
     wxFontRefData()
     {
-        Init(-1, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, FALSE,
+        Init(-1, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false,
              wxEmptyString, wxFONTENCODING_DEFAULT);
     }
 
@@ -195,12 +196,13 @@ public:
             m_nWeight = nWeight;
     }
 
-    inline void SetFaceName(const wxString& sFaceName)
+    inline bool SetFaceName(const wxString& sFaceName)
     {
         if (m_bNativeFontInfoOk)
-            m_vNativeFontInfo.SetFaceName(sFaceName);
+            return m_vNativeFontInfo.SetFaceName(sFaceName);
         else
             m_sFaceName = sFaceName;
+        return true;
     }
 
     inline void SetUnderlined(bool bUnderlined)
@@ -295,6 +297,8 @@ protected:
     bool                            m_bInternalPS; // Internally generated PS?
 }; // end of CLASS wxFontRefData
 
+#define M_FONTDATA ((wxFontRefData*)m_refData)
+
 // ============================================================================
 // implementation
 // ============================================================================
@@ -689,11 +693,12 @@ void wxNativeFontInfo::SetUnderlined(
         fa.fsSelection |= FATTR_SEL_UNDERSCORE;
 } // end of wxNativeFontInfo::SetUnderlined
 
-void wxNativeFontInfo::SetFaceName(
+bool wxNativeFontInfo::SetFaceName(
   const wxString&                   sFacename
 )
 {
     wxStrncpy((wxChar*)fa.szFacename, sFacename, WXSIZEOF(fa.szFacename));
+    return true;
 } // end of wxNativeFontInfo::SetFaceName
 
 void wxNativeFontInfo::SetFamily(
@@ -852,7 +857,7 @@ wxString wxNativeFontInfo::ToString() const
                 fa.usCodePage,
                 fa.lMatch,
                 fn.usWeightClass,
-                fa.szFacename);
+                (char *)fa.szFacename);
     return sStr;
 } // end of wxNativeFontInfo::ToString
 
@@ -926,6 +931,16 @@ wxFont::~wxFont()
 //   here, but we may check that font definition is true
 // ----------------------------------------------------------------------------
 
+wxGDIRefData *wxFont::CreateGDIRefData() const
+{
+    return new wxFontRefData();
+}
+
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
+}
+
 bool wxFont::RealizeResource()
 {
     if ( GetResourceHandle() )
@@ -945,7 +960,7 @@ bool wxFont::FreeResource( bool WXUNUSED(bForce) )
     return false;
 } // end of wxFont::FreeResource
 
-WXHANDLE wxFont::GetResourceHandle()
+WXHANDLE wxFont::GetResourceHandle() const
 {
     return GetHFONT();
 } // end of wxFont::GetResourceHandle
@@ -960,21 +975,6 @@ bool wxFont::IsFree() const
     return M_FONTDATA && (M_FONTDATA->GetHFONT() == 0);
 } // end of wxFont::IsFree
 
-void wxFont::Unshare()
-{
-    // Don't change shared data
-    if ( !m_refData )
-    {
-        m_refData = new wxFontRefData();
-    }
-    else
-    {
-        wxFontRefData* ref = new wxFontRefData(*M_FONTDATA);
-        UnRef();
-        m_refData = ref;
-    }
-} // end of wxFont::Unshare
-
 // ----------------------------------------------------------------------------
 // change font attribute: we recreate font when doing it
 // ----------------------------------------------------------------------------
@@ -983,7 +983,7 @@ void wxFont::SetPointSize(
   int                               nPointSize
 )
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->SetPointSize(nPointSize);
 
@@ -994,7 +994,7 @@ void wxFont::SetFamily(
   int                               nFamily
 )
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->SetFamily(nFamily);
 
@@ -1005,7 +1005,7 @@ void wxFont::SetStyle(
   int                               nStyle
 )
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->SetStyle(nStyle);
 
@@ -1016,29 +1016,31 @@ void wxFont::SetWeight(
   int                               nWeight
 )
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->SetWeight(nWeight);
 
     RealizeResource();
 } // end of wxFont::SetWeight
 
-void wxFont::SetFaceName(
+bool wxFont::SetFaceName(
   const wxString&                   rsFaceName
 )
 {
-    Unshare();
+    AllocExclusive();
 
-    M_FONTDATA->SetFaceName(rsFaceName);
+    bool refdataok = M_FONTDATA->SetFaceName(rsFaceName);
 
     RealizeResource();
+
+    return refdataok && wxFontBase::SetFaceName(rsFaceName);
 } // end of wxFont::SetFaceName
 
 void wxFont::SetUnderlined(
   bool                              bUnderlined
 )
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->SetUnderlined(bUnderlined);
 
@@ -1049,7 +1051,7 @@ void wxFont::SetEncoding(
   wxFontEncoding                    vEncoding
 )
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->SetEncoding(vEncoding);
 
@@ -1060,7 +1062,7 @@ void wxFont::DoSetNativeFontInfo(
   const wxNativeFontInfo&           rInfo
 )
 {
-    Unshare();
+    AllocExclusive();
 
     FreeResource();
 
@@ -1131,21 +1133,16 @@ const wxNativeFontInfo* wxFont::GetNativeFontInfo() const
 //
 // Internal use only method to set the FONTMETRICS array
 //
-void wxFont::SetFM(
-  PFONTMETRICS                      pFM
-, int                               nNumFonts
-)
+void wxFont::SetFM( PFONTMETRICS pFM, int nNumFonts )
 {
     M_FONTDATA->SetFM(pFM);
     M_FONTDATA->SetNumFonts(nNumFonts);
 } // end of wxFont::SetFM
 
 
-void wxFont::SetPS(
-  HPS                               hPS
-)
+void wxFont::SetPS( HPS hPS )
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->SetPS(hPS);