make sure we always have a CGFontRef

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59661 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2009-03-20 20:23:28 +00:00
parent 54e660f85e
commit 9445de1e4f

View File

@@ -173,6 +173,7 @@ public:
#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT #if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT
ATSUStyle m_macATSUStyle ; ATSUStyle m_macATSUStyle ;
#endif #endif
wxCFRef<CGFontRef> m_cgFont;
#if wxOSX_USE_COCOA #if wxOSX_USE_COCOA
WX_NSFont m_nsFont; WX_NSFont m_nsFont;
#endif #endif
@@ -196,6 +197,7 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data)
#if wxOSX_USE_CORE_TEXT #if wxOSX_USE_CORE_TEXT
m_ctFont = data.m_ctFont; m_ctFont = data.m_ctFont;
#endif #endif
m_cgFont = data.m_cgFont;
#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT #if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT
if ( data.m_macATSUStyle != NULL ) if ( data.m_macATSUStyle != NULL )
{ {
@@ -248,6 +250,7 @@ void wxFontRefData::Free()
#if wxOSX_USE_CORE_TEXT #if wxOSX_USE_CORE_TEXT
m_ctFont.reset(); m_ctFont.reset();
#endif #endif
m_cgFont.reset();
#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT #if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT
if ( m_macATSUStyle ) if ( m_macATSUStyle )
{ {
@@ -414,6 +417,7 @@ void wxFontRefData::MacFindFont()
{ {
m_ctFont.reset( CTFontCreateWithFontDescriptor( m_info.m_ctFontDescriptor, 0/*m_pointSize */, NULL ) ); m_ctFont.reset( CTFontCreateWithFontDescriptor( m_info.m_ctFontDescriptor, 0/*m_pointSize */, NULL ) );
} }
m_cgFont.reset(CTFontCopyGraphicsFont(m_ctFont, NULL));
} }
#endif #endif
@@ -471,7 +475,11 @@ void wxFontRefData::MacFindFont()
atsuTags, atsuSizes, atsuValues); atsuTags, atsuSizes, atsuValues);
wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") ); 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 #endif
#if wxOSX_USE_COCOA #if wxOSX_USE_COCOA
@@ -780,6 +788,21 @@ CTFontRef wxFont::GetCTFont() const
#endif #endif
#if wxOSX_USE_COCOA_OR_CARBON
CGFontRef wxFont::GetCGFont() 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_cgFont);
}
#endif
#if wxOSX_USE_COCOA #if wxOSX_USE_COCOA
NSFont* wxFont::GetNSFont() const NSFont* wxFont::GetNSFont() const