]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/font.cpp
compilation fix for wxOSX/Cocoa: don't use Carbon functions in common to all OS X...
[wxWidgets.git] / src / osx / carbon / font.cpp
index fac6a43dc5c4721acefe7491ba2dfcc0278057c9..3295417d81a730f2b7c4cd5891886f72ba44f5a1 100644 (file)
@@ -252,6 +252,9 @@ void wxFontRefData::Free()
 #endif
     m_cgFont.reset();
 #if wxOSX_USE_ATSU_TEXT
+#if wxOSX_USE_CARBON
+    m_macThemeFontID = kThemeCurrentPortFont ;
+#endif
     if ( m_macATSUStyle )
     {
         ::ATSUDisposeStyle((ATSUStyle)m_macATSUStyle);
@@ -378,7 +381,7 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size)
             if ( style & underline )
                 underlined = true ;
                 
-            m_info.Init(size,wxFONTFAMILY_DEFAULT,fontstyle,fontweight,underlined,
+            m_info.Init(fontSize,wxFONTFAMILY_DEFAULT,fontstyle,fontweight,underlined,
                 wxMacMakeStringFromPascal( qdFontName ), wxFONTENCODING_DEFAULT);
          }
     }
@@ -439,7 +442,7 @@ void wxFontRefData::MacFindFont()
             kATSUQDCondensedTag ,
             kATSUQDExtendedTag ,
         };
-        ByteCount atsuSizes[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] =
+        ByteCount atsuSizes[WXSIZEOF(atsuTags)] =
         {
             sizeof( ATSUFontID ) ,
             sizeof( Fixed ) ,
@@ -457,7 +460,7 @@ void wxFontRefData::MacFindFont()
         Fixed atsuSize = IntToFixed( m_info.m_pointSize );
         ATSUVerticalCharacterType kHorizontal = kATSUStronglyHorizontal;
         FMFontStyle addQDStyle = m_info.m_atsuAdditionalQDStyles;
-        ATSUAttributeValuePtr    atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] =
+        ATSUAttributeValuePtr    atsuValues[WXSIZEOF(atsuTags)] =
         {
             &m_info.m_atsuFontID ,
             &atsuSize ,
@@ -471,7 +474,7 @@ void wxFontRefData::MacFindFont()
 
         status = ::ATSUSetAttributes(
                                      (ATSUStyle)m_macATSUStyle,
-                                     sizeof(atsuTags) / sizeof(ATSUAttributeTag) ,
+                                     WXSIZEOF(atsuTags),
                                      atsuTags, atsuSizes, atsuValues);
 
         wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") );
@@ -576,6 +579,14 @@ wxFont::~wxFont()
 {
 }
 
+void wxFont::DoSetNativeFontInfo(const wxNativeFontInfo& info)
+{
+    UnRef();
+    
+    m_refData = new wxFontRefData( info);
+}
+
+
 bool wxFont::RealizeResource()
 {
     M_FONTDATA->MacFindFont();
@@ -776,7 +787,7 @@ void * wxFont::MacGetATSUStyle() const
 #if WXWIN_COMPATIBILITY_2_8
 wxUint32 wxFont::MacGetATSUFontID() const 
 {
-    wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") );
+    wxCHECK_MSG( M_FONTDATA != NULL, 0, wxT("invalid font") );
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
@@ -786,7 +797,7 @@ wxUint32 wxFont::MacGetATSUFontID() const
 
 wxUint32 wxFont::MacGetATSUAdditionalQDStyles() const
 {
-    wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") );
+    wxCHECK_MSG( M_FONTDATA != NULL, 0, wxT("invalid font") );
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
@@ -938,7 +949,7 @@ void wxNativeFontInfo::Init()
     m_weight = wxFONTWEIGHT_NORMAL;
     m_underlined = false;
     m_faceName.clear();
-    m_encoding = wxFONTENCODING_DEFAULT;
+    m_encoding = wxFont::GetDefaultEncoding();
     m_descriptorValid = false;
 }
 
@@ -1047,7 +1058,10 @@ void wxNativeFontInfo::EnsureValid()
         // ATSUFontID and FMFont are equivalent
         FMFontStyle intrinsicStyle = 0 ;
         OSStatus status = FMGetFontFromFontFamilyInstance( m_qdFontFamily , m_qdFontStyle , (FMFont*)&m_atsuFontID , &intrinsicStyle);
-        wxASSERT_MSG( status == noErr , wxT("couldn't get an ATSUFont from font family") );
+        if ( status != noErr )
+        {
+            wxFAIL_MSG( wxT("couldn't get an ATSUFont from font family") );
+        }
         m_atsuAdditionalQDStyles = m_qdFontStyle & (~intrinsicStyle );
         m_atsuFontValid = true;
     }
@@ -1105,6 +1119,8 @@ void wxNativeFontInfo::Init(int size,
     m_weight = weight;
     m_underlined = underlined;
     m_faceName = faceName;
+    if ( encoding == wxFONTENCODING_DEFAULT )
+        encoding = wxFont::GetDefaultEncoding();
     m_encoding = encoding;
 
 }
@@ -1289,6 +1305,8 @@ void wxNativeFontInfo::SetFamily(wxFontFamily family_)
 
 void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding_)
 {
+    if ( encoding_ == wxFONTENCODING_DEFAULT )
+        encoding_ = wxFont::GetDefaultEncoding();
     m_encoding = encoding_;
     // not reflected in native descriptors
-}
\ No newline at end of file
+}