X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ca910e1a13bae98fc2c5ddbff35431c6fd66d6b7..3039af96f6ebff4588f9ebf8a864d2c0e43d8697:/src/osx/carbon/font.cpp diff --git a/src/osx/carbon/font.cpp b/src/osx/carbon/font.cpp index c68ff2bd84..f8c6f5f347 100644 --- a/src/osx/carbon/font.cpp +++ b/src/osx/carbon/font.cpp @@ -28,11 +28,6 @@ #include "wx/osx/private.h" -#if wxOSX_USE_ATSU_TEXT && !wxOSX_USE_CARBON -// include themeing support -#include -#endif - #include #include @@ -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 ) { @@ -442,7 +432,7 @@ void wxFontRefData::MacFindFont() kATSUQDCondensedTag , kATSUQDExtendedTag , }; - ByteCount atsuSizes[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + ByteCount atsuSizes[WXSIZEOF(atsuTags)] = { sizeof( ATSUFontID ) , sizeof( Fixed ) , @@ -460,7 +450,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 , @@ -474,10 +464,11 @@ 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") ); + 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(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(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(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(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(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(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(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(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(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 ) { @@ -1147,7 +1124,7 @@ bool wxNativeFontInfo::FromString(const wxString& s) { long l; - wxStringTokenizer tokenizer(s, _T(";")); + wxStringTokenizer tokenizer(s, wxT(";")); wxString token = tokenizer.GetNextToken(); // @@ -1198,7 +1175,7 @@ wxString wxNativeFontInfo::ToString() const { wxString s; - s.Printf(_T("%d;%d;%d;%d;%d;%d;%s;%d"), + s.Printf(wxT("%d;%d;%d;%d;%d;%d;%s;%d"), 0, // version m_pointSize, m_family,