X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f1c40652a0c2d6752c57df1b8aed22fae7e118dd..8b7b1a57483e51e325017dcbf35f75b578ae775c:/src/osx/carbon/font.cpp diff --git a/src/osx/carbon/font.cpp b/src/osx/carbon/font.cpp index 6db6190920..fac6a43dc5 100644 --- a/src/osx/carbon/font.cpp +++ b/src/osx/carbon/font.cpp @@ -170,9 +170,10 @@ public: #if wxOSX_USE_CORE_TEXT wxCFRef m_ctFont; #endif -#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT ATSUStyle m_macATSUStyle ; #endif + wxCFRef m_cgFont; #if wxOSX_USE_COCOA WX_NSFont m_nsFont; #endif @@ -195,8 +196,9 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data) #endif #if wxOSX_USE_CORE_TEXT m_ctFont = data.m_ctFont; -#endif -#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT +#endif + m_cgFont = data.m_cgFont; +#if wxOSX_USE_ATSU_TEXT if ( data.m_macATSUStyle != NULL ) { ATSUCreateStyle(&m_macATSUStyle) ; @@ -207,7 +209,7 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data) m_nsFont = (NSFont*) wxMacCocoaRetain(data.m_nsFont); #endif #if wxOSX_USE_IPHONE - m_uiFont = wxMacCocoaRetain(data.m_uiFont); + m_uiFont = (UIFont*) wxMacCocoaRetain(data.m_uiFont); #endif } @@ -226,7 +228,7 @@ void wxFontRefData::Init() #if wxOSX_USE_CARBON && wxOSX_USE_ATSU_TEXT m_macThemeFontID = kThemeCurrentPortFont ; #endif -#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT m_macATSUStyle = NULL ; #endif #if wxOSX_USE_COCOA @@ -248,7 +250,8 @@ void wxFontRefData::Free() #if wxOSX_USE_CORE_TEXT m_ctFont.reset(); #endif -#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT + m_cgFont.reset(); +#if wxOSX_USE_ATSU_TEXT if ( m_macATSUStyle ) { ::ATSUDisposeStyle((ATSUStyle)m_macATSUStyle); @@ -280,7 +283,7 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size) #if wxOSX_USE_CORE_TEXT if ( UMAGetSystemVersion() >= 0x1050 ) { - CTFontUIFontType uifont; + CTFontUIFontType uifont = kCTFontSystemFontType; switch( font ) { case wxOSX_SYSTEM_FONT_NORMAL: @@ -318,6 +321,10 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size) #endif #if wxOSX_USE_ATSU_TEXT { +#if !wxOSX_USE_CARBON + // not needed outside + ThemeFontID m_macThemeFontID = kThemeSystemFont; +#endif switch( font ) { case wxOSX_SYSTEM_FONT_NORMAL: @@ -377,10 +384,10 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size) } #endif #if wxOSX_USE_COCOA - m_nsFont = wxFont::CreateNSFont( font, &m_info ); + m_nsFont = wxFont::OSXCreateNSFont( font, &m_info ); #endif #if wxOSX_USE_IPHONE - m_uiFont = wxFont::CreateUIFont( font, &m_info ); + m_uiFont = wxFont::OSXCreateUIFont( font, &m_info ); #endif } @@ -410,6 +417,7 @@ void wxFontRefData::MacFindFont() { m_ctFont.reset( CTFontCreateWithFontDescriptor( m_info.m_ctFontDescriptor, 0/*m_pointSize */, NULL ) ); } + m_cgFont.reset(CTFontCopyGraphicsFont(m_ctFont, NULL)); } #endif @@ -467,14 +475,18 @@ void wxFontRefData::MacFindFont() atsuTags, atsuSizes, atsuValues); wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") ); - return; + if ( m_cgFont.get() == NULL ) + { + ATSFontRef fontRef = FMGetATSFontRefFromFont(m_info.m_atsuFontID); + m_cgFont.reset( CGFontCreateWithPlatformFont( &fontRef ) ); + } } #endif #if wxOSX_USE_COCOA - m_nsFont = wxFont::CreateNSFont( &m_info ); + m_nsFont = wxFont::OSXCreateNSFont( &m_info ); #endif #if wxOSX_USE_IPHONE - m_uiFont = wxFont::CreateUIFont( &m_info ); + m_uiFont = wxFont::OSXCreateUIFont( &m_info ); #endif m_fontValid = true; } @@ -750,7 +762,7 @@ wxUint16 wxFont::MacGetThemeFontID() const #endif -#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT void * wxFont::MacGetATSUStyle() const { wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); @@ -760,11 +772,34 @@ void * wxFont::MacGetATSUStyle() const return M_FONTDATA->m_macATSUStyle; } + +#if WXWIN_COMPATIBILITY_2_8 +wxUint32 wxFont::MacGetATSUFontID() const +{ + wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + + // cast away constness otherwise lazy font resolution is not possible + const_cast(this)->RealizeResource(); + + return M_FONTDATA->m_info.m_atsuFontID; +} + +wxUint32 wxFont::MacGetATSUAdditionalQDStyles() const +{ + wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + + // cast away constness otherwise lazy font resolution is not possible + const_cast(this)->RealizeResource(); + + return M_FONTDATA->m_info.m_atsuAdditionalQDStyles; +} +#endif + #endif #if wxOSX_USE_CORE_TEXT -CTFontRef wxFont::GetCTFont() const +CTFontRef wxFont::OSXGetCTFont() const { wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); @@ -776,9 +811,24 @@ CTFontRef wxFont::GetCTFont() const #endif +#if wxOSX_USE_COCOA_OR_CARBON + +CGFontRef wxFont::OSXGetCGFont() 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_cgFont); +} + +#endif + + #if wxOSX_USE_COCOA -NSFont* wxFont::GetNSFont() const +NSFont* wxFont::OSXGetNSFont() const { wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); @@ -881,9 +931,6 @@ void wxNativeFontInfo::Init() #endif #if wxOSX_USE_COCOA m_nsFontDescriptor = NULL; -#endif -#if wxOSX_USE_IPHONE - m_uiFontDescriptor = NULL; #endif m_pointSize = 0; m_family = wxFONTFAMILY_DEFAULT; @@ -969,6 +1016,11 @@ void wxNativeFontInfo::EnsureValid() #if wxOSX_USE_ATSU_TEXT if ( !m_atsuFontValid ) { +#if !wxOSX_USE_CARBON + // not needed outside + wxInt16 m_qdFontFamily; + wxInt16 m_qdFontStyle; +#endif wxCFStringRef cf( m_faceName, wxLocale::GetSystemEncoding() ); ATSFontFamilyRef atsfamily = ATSFontFamilyFindFromName( cf , kATSOptionFlagsDefault ); if ( atsfamily == (ATSFontFamilyRef) -1 ) @@ -1002,7 +1054,7 @@ void wxNativeFontInfo::EnsureValid() #endif #if wxOSX_USE_COCOA if ( m_nsFontDescriptor == NULL ) - ValidateNSFontDescriptor(); + OSXValidateNSFontDescriptor(); #endif #if wxOSX_USE_IPHONE // TODO @@ -1027,9 +1079,6 @@ void wxNativeFontInfo::Init(const wxNativeFontInfo& info) #endif #if wxOSX_USE_COCOA m_nsFontDescriptor = (NSFontDescriptor*) wxMacCocoaRetain(info.m_nsFontDescriptor); -#endif -#if wxOSX_USE_IPHONE - m_uiFontDescriptor = wxMacCocoaRetain(info.m_uiFontDescriptor);; #endif m_pointSize = info.m_pointSize; m_family = info.m_family; @@ -1074,10 +1123,6 @@ void wxNativeFontInfo::Free() #if wxOSX_USE_COCOA wxMacCocoaRelease(m_nsFontDescriptor); m_nsFontDescriptor = NULL; -#endif -#if wxOSX_USE_IPHONE - wxMacCocoaRelease(m_uiFontDescriptor); - m_uiFontDescriptor = NULL #endif m_descriptorValid = false; }