]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/font.cpp
Add ellipsization support to wxDataViewCtrl.
[wxWidgets.git] / src / osx / carbon / font.cpp
index c37e0c8f1e72c35fdd426f660bcd759d4504fbb9..f8c6f5f347c8fb3a66d49942e87dbe2a08b01ec0 100644 (file)
 
 #include "wx/osx/private.h"
 
-#if wxOSX_USE_ATSU_TEXT && !wxOSX_USE_CARBON
-// include themeing support
-#include <Carbon/Carbon.h>
-#endif
-
 #include <map>
 #include <string>
 
@@ -50,14 +45,14 @@ public:
     }
 
     wxFontRefData(const wxFontRefData& data);
-    
+
     wxFontRefData( const wxNativeFontInfo& info ) : m_info(info)
     {
         Init();
     }
 
     wxFontRefData(wxOSXSystemFont font, int size);
-    
+
 #if wxOSX_USE_CORE_TEXT
     wxFontRefData( wxUint32 coreTextFontType );
     wxFontRefData( CTFontRef font );
@@ -66,10 +61,6 @@ public:
 
     virtual ~wxFontRefData();
 
-    void SetNoAntiAliasing( bool no = true ) { m_noAA = no; }
-
-    bool GetNoAntiAliasing() const { return m_noAA; }
-
     void SetPointSize( int size )
     {
         if( GetPointSize() != size )
@@ -159,11 +150,10 @@ protected:
 #if wxOSX_USE_CORE_TEXT
     // void Init( CTFontRef font );
 #endif
-    bool            m_noAA;      // No anti-aliasing
 public:
     bool            m_fontValid;
 #if wxOSX_USE_CARBON && wxOSX_USE_ATSU_TEXT
-    // for true themeing support we must store the correct font
+    // for true theming support we must store the correct font
     // information here, as this speeds up and optimizes rendering
     ThemeFontID     m_macThemeFontID ;
 #endif
@@ -189,14 +179,13 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data)
 {
     Init();
     m_info = data.m_info;
-    m_noAA = data.m_noAA;
     m_fontValid = data.m_fontValid;
 #if wxOSX_USE_CARBON && wxOSX_USE_ATSU_TEXT
     m_macThemeFontID = data.m_macThemeFontID;
 #endif
 #if wxOSX_USE_CORE_TEXT
     m_ctFont = data.m_ctFont;
-#endif 
+#endif
     m_cgFont = data.m_cgFont;
 #if wxOSX_USE_ATSU_TEXT
     if ( data.m_macATSUStyle != NULL )
@@ -211,7 +200,7 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data)
 #if wxOSX_USE_IPHONE
     m_uiFont = (UIFont*) wxMacCocoaRetain(data.m_uiFont);
 #endif
-    
+
 }
 
 // ============================================================================
@@ -224,7 +213,6 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data)
 
 void wxFontRefData::Init()
 {
-    m_noAA = false;
 #if wxOSX_USE_CARBON && wxOSX_USE_ATSU_TEXT
     m_macThemeFontID = kThemeCurrentPortFont ;
 #endif
@@ -282,7 +270,7 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size)
 {
     wxASSERT( font != wxOSX_SYSTEM_FONT_NONE );
     Init();
-    
+
 #if wxOSX_USE_CORE_TEXT
     if (  UMAGetSystemVersion() >= 0x1050 )
     {
@@ -346,7 +334,7 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size)
                 m_macThemeFontID = kThemeMiniSystemFont;
                 break;
            case wxOSX_SYSTEM_FONT_MINI_BOLD:
-                // bold not available under themeing
+                // bold not available under theming
                 m_macThemeFontID = kThemeMiniSystemFont;
                 break;
             case wxOSX_SYSTEM_FONT_LABELS:
@@ -356,14 +344,14 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size)
                 m_macThemeFontID = kThemeViewsFont;
                 break;
             default:
-                break;                
+                break;
         }
         if ( m_info.m_faceName.empty() )
         {
             Style style ;
             FMFontSize fontSize;
             Str255 qdFontName ;
-            
+
             GetThemeFont( m_macThemeFontID, GetApplicationScript(), qdFontName, &fontSize, &style );
             if ( size != 0 )
                 fontSize = size;
@@ -371,7 +359,7 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size)
             wxFontStyle fontstyle = wxFONTSTYLE_NORMAL;
             wxFontWeight fontweight = wxFONTWEIGHT_NORMAL;
             bool underlined = false;
-            
+
             if ( style & bold )
                 fontweight = wxFONTWEIGHT_BOLD ;
             else
@@ -380,7 +368,7 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size)
                 fontstyle = wxFONTSTYLE_ITALIC ;
             if ( style & underline )
                 underlined = true ;
-                
+
             m_info.Init(fontSize,wxFONTFAMILY_DEFAULT,fontstyle,fontweight,underlined,
                 wxMacMakeStringFromPascal( qdFontName ), wxFONTENCODING_DEFAULT);
          }
@@ -398,9 +386,11 @@ void wxFontRefData::MacFindFont()
 {
     if ( m_fontValid )
         return;
-        
+
+    wxCHECK_RET( m_info.m_pointSize > 0, wxT("Point size should not be zero.") );
+
     m_info.EnsureValid();
-    
+
 #if wxOSX_USE_CORE_TEXT
     if (  UMAGetSystemVersion() >= 0x1050 )
     {
@@ -477,7 +467,8 @@ void wxFontRefData::MacFindFont()
                                      WXSIZEOF(atsuTags),
                                      atsuTags, atsuSizes, atsuValues);
 
-        wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") );
+        wxASSERT_MSG( status == noErr , wxString::Format(wxT("couldn't modify ATSU style. Status was %d"), (int) status).c_str() );
+
         if ( m_cgFont.get() == NULL )
         {
             ATSFontRef fontRef = FMGetATSFontRefFromFont(m_info.m_atsuFontID);
@@ -501,10 +492,10 @@ void wxFontRefData::MacFindFont()
 bool wxFont::Create(const wxNativeFontInfo& info)
 {
     UnRef();
-    
+
     m_refData = new wxFontRefData( info );
     RealizeResource();
-    
+
     return true;
 }
 
@@ -524,7 +515,7 @@ bool wxFont::Create(int pointSize,
                     wxFontEncoding encoding)
 {
     UnRef();
-    
+
     wxString faceName = faceNameParam;
 
     if ( faceName.empty() )
@@ -534,7 +525,7 @@ bool wxFont::Create(int pointSize,
             case wxFONTFAMILY_DEFAULT :
                 faceName = wxT("Lucida Grande");
                 break;
-                
+
             case wxFONTFAMILY_SCRIPT :
             case wxFONTFAMILY_ROMAN :
             case wxFONTFAMILY_DECORATIVE :
@@ -555,9 +546,9 @@ bool wxFont::Create(int pointSize,
                 break ;
         }
     }
-    
+
     wxNativeFontInfo info;
-    
+
     info.Init(pointSize, family, style, weight,
         underlined, faceName, encoding);
 
@@ -569,9 +560,9 @@ bool wxFont::Create(int pointSize,
 bool wxFont::CreateSystemFont(wxOSXSystemFont font)
 {
     UnRef();
-    
+
     m_refData = new wxFontRefData( font, 0 );
-    
+
     return true;
 }
 
@@ -582,7 +573,7 @@ wxFont::~wxFont()
 void wxFont::DoSetNativeFontInfo(const wxNativeFontInfo& info)
 {
     UnRef();
-    
+
     m_refData = new wxFontRefData( info);
 }
 
@@ -658,13 +649,6 @@ void wxFont::SetUnderlined(bool underlined)
     M_FONTDATA->SetUnderlined( underlined );
 }
 
-void wxFont::SetNoAntiAliasing( bool no )
-{
-    AllocExclusive();
-
-    M_FONTDATA->SetNoAntiAliasing( no );
-}
-
 // ----------------------------------------------------------------------------
 // accessors
 // ----------------------------------------------------------------------------
@@ -735,13 +719,6 @@ wxFontEncoding wxFont::GetEncoding() const
     return M_FONTDATA->GetEncoding() ;
 }
 
-bool wxFont::GetNoAntiAliasing() const
-{
-    wxCHECK_MSG( M_FONTDATA != NULL , false, wxT("invalid font") );
-
-    return M_FONTDATA->GetNoAntiAliasing();
-}
-
 #if wxOSX_USE_ATSU_TEXT && wxOSX_USE_CARBON
 
 short wxFont::MacGetFontNum() const
@@ -750,7 +727,7 @@ short wxFont::MacGetFontNum() const
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     return M_FONTDATA->m_info.m_qdFontFamily;
 }
 
@@ -760,7 +737,7 @@ wxByte wxFont::MacGetFontStyle() const
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     return M_FONTDATA->m_info.m_qdFontStyle;
 }
 
@@ -780,18 +757,18 @@ void * wxFont::MacGetATSUStyle() const
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     return M_FONTDATA->m_macATSUStyle;
 }
 
 #if WXWIN_COMPATIBILITY_2_8
-wxUint32 wxFont::MacGetATSUFontID() const 
+wxUint32 wxFont::MacGetATSUFontID() const
 {
     wxCHECK_MSG( M_FONTDATA != NULL, 0, wxT("invalid font") );
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     return M_FONTDATA->m_info.m_atsuFontID;
 }
 
@@ -801,7 +778,7 @@ wxUint32 wxFont::MacGetATSUAdditionalQDStyles() const
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     return M_FONTDATA->m_info.m_atsuAdditionalQDStyles;
 }
 #endif
@@ -816,7 +793,7 @@ CTFontRef wxFont::OSXGetCTFont() const
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     return (CTFontRef)(M_FONTDATA->m_ctFont);
 }
 
@@ -830,7 +807,7 @@ CGFontRef wxFont::OSXGetCGFont() const
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     return (M_FONTDATA->m_cgFont);
 }
 
@@ -845,7 +822,7 @@ NSFont* wxFont::OSXGetNSFont() const
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     return (M_FONTDATA->m_nsFont);
 }
 
@@ -858,7 +835,7 @@ const wxNativeFontInfo * wxFont::GetNativeFontInfo() const
 
     // cast away constness otherwise lazy font resolution is not possible
     const_cast<wxFont *>(this)->RealizeResource();
-    
+
     // M_FONTDATA->m_info.InitFromFont(*this);
 
     return &(M_FONTDATA->m_info);
@@ -877,11 +854,11 @@ static CTFontDescriptorRef wxMacCreateCTFontDescriptor(CFStringRef iFamilyName,
     CTFontDescriptorRef descriptor = NULL;
     CFMutableDictionaryRef attributes;
 
-    assert(iFamilyName != NULL);
+    wxASSERT(iFamilyName != NULL);
     // Create a mutable dictionary to hold our attributes.
     attributes = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,
                                            &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-    check(attributes != NULL);
+    wxASSERT(attributes != NULL);
 
     if (attributes != NULL) {
         // Add a family name to our attributes.
@@ -895,13 +872,13 @@ static CTFontDescriptorRef wxMacCreateCTFontDescriptor(CFStringRef iFamilyName,
             // Create the traits dictionary.
             symTraits = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type,
                                        &iTraits);
-            check(symTraits != NULL);
+            wxASSERT(symTraits != NULL);
 
             if (symTraits != NULL) {
                 // Create a dictionary to hold our traits values.
                 traits = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,
                                                    &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-                check(traits != NULL);
+                wxASSERT(traits != NULL);
 
                 if (traits != NULL) {
                     // Add the symbolic traits value to the traits dictionary.
@@ -916,7 +893,7 @@ static CTFontDescriptorRef wxMacCreateCTFontDescriptor(CFStringRef iFamilyName,
         }
         // Create the font descriptor with our attributes
         descriptor = CTFontDescriptorCreateWithAttributes(attributes);
-        check(descriptor != NULL);
+        wxASSERT(descriptor != NULL);
 
         CFRelease(attributes);
     }
@@ -958,7 +935,7 @@ void wxNativeFontInfo::Init(CTFontDescriptorRef descr)
 {
     Init();
     m_ctFontDescriptor = wxCFRetain(descr);
-    
+
     wxCFRef< CFNumberRef > sizevalue( (CFNumberRef) CTFontDescriptorCopyAttribute( m_ctFontDescriptor, kCTFontSizeAttribute ) );
     float fsize;
     if ( CFNumberGetValue( sizevalue , kCFNumberFloatType , &fsize ) )
@@ -975,7 +952,7 @@ void wxNativeFontInfo::Init(CTFontDescriptorRef descr)
     }
 
     wxCFStringRef familyName( (CFStringRef) CTFontDescriptorCopyAttribute(m_ctFontDescriptor, kCTFontFamilyNameAttribute));
-    m_faceName = familyName.AsString(); 
+    m_faceName = familyName.AsString();
 }
 #endif
 
@@ -983,7 +960,7 @@ void wxNativeFontInfo::EnsureValid()
 {
     if ( m_descriptorValid )
         return;
-        
+
 #if wxOSX_USE_CORE_TEXT
     if ( m_ctFontDescriptor == NULL && UMAGetSystemVersion() >= 0x1050 )
     {