X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c443ff6f5350df36902af42d0193e53d79dd6a14..b3cec67186d678d2c3985923bdb8c787455cf369:/src/osx/carbon/font.cpp diff --git a/src/osx/carbon/font.cpp b/src/osx/carbon/font.cpp index 2b51a315a1..8ee911dc85 100644 --- a/src/osx/carbon/font.cpp +++ b/src/osx/carbon/font.cpp @@ -50,14 +50,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 ); @@ -196,7 +196,7 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data) #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 +211,7 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data) #if wxOSX_USE_IPHONE m_uiFont = (UIFont*) wxMacCocoaRetain(data.m_uiFont); #endif - + } // ============================================================================ @@ -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); @@ -279,7 +282,7 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size) { wxASSERT( font != wxOSX_SYSTEM_FONT_NONE ); Init(); - + #if wxOSX_USE_CORE_TEXT if ( UMAGetSystemVersion() >= 0x1050 ) { @@ -353,14 +356,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; @@ -368,7 +371,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 @@ -377,8 +380,8 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size) fontstyle = wxFONTSTYLE_ITALIC ; 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); } } @@ -395,9 +398,9 @@ void wxFontRefData::MacFindFont() { if ( m_fontValid ) return; - + m_info.EnsureValid(); - + #if wxOSX_USE_CORE_TEXT if ( UMAGetSystemVersion() >= 0x1050 ) { @@ -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") ); @@ -498,10 +501,10 @@ void wxFontRefData::MacFindFont() bool wxFont::Create(const wxNativeFontInfo& info) { UnRef(); - + m_refData = new wxFontRefData( info ); RealizeResource(); - + return true; } @@ -521,7 +524,7 @@ bool wxFont::Create(int pointSize, wxFontEncoding encoding) { UnRef(); - + wxString faceName = faceNameParam; if ( faceName.empty() ) @@ -531,7 +534,7 @@ bool wxFont::Create(int pointSize, case wxFONTFAMILY_DEFAULT : faceName = wxT("Lucida Grande"); break; - + case wxFONTFAMILY_SCRIPT : case wxFONTFAMILY_ROMAN : case wxFONTFAMILY_DECORATIVE : @@ -552,9 +555,9 @@ bool wxFont::Create(int pointSize, break ; } } - + wxNativeFontInfo info; - + info.Init(pointSize, family, style, weight, underlined, faceName, encoding); @@ -566,9 +569,9 @@ bool wxFont::Create(int pointSize, bool wxFont::CreateSystemFont(wxOSXSystemFont font) { UnRef(); - + m_refData = new wxFontRefData( font, 0 ); - + return true; } @@ -579,7 +582,7 @@ wxFont::~wxFont() void wxFont::DoSetNativeFontInfo(const wxNativeFontInfo& info) { UnRef(); - + m_refData = new wxFontRefData( info); } @@ -747,7 +750,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; } @@ -757,7 +760,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; } @@ -777,28 +780,28 @@ 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 , 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(this)->RealizeResource(); - + return M_FONTDATA->m_info.m_atsuFontID; } 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(this)->RealizeResource(); - + return M_FONTDATA->m_info.m_atsuAdditionalQDStyles; } #endif @@ -813,7 +816,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); } @@ -827,7 +830,7 @@ CGFontRef wxFont::OSXGetCGFont() const // cast away constness otherwise lazy font resolution is not possible const_cast(this)->RealizeResource(); - + return (M_FONTDATA->m_cgFont); } @@ -842,7 +845,7 @@ NSFont* wxFont::OSXGetNSFont() const // cast away constness otherwise lazy font resolution is not possible const_cast(this)->RealizeResource(); - + return (M_FONTDATA->m_nsFont); } @@ -855,7 +858,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); @@ -955,7 +958,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 ) ) @@ -972,7 +975,7 @@ void wxNativeFontInfo::Init(CTFontDescriptorRef descr) } wxCFStringRef familyName( (CFStringRef) CTFontDescriptorCopyAttribute(m_ctFontDescriptor, kCTFontFamilyNameAttribute)); - m_faceName = familyName.AsString(); + m_faceName = familyName.AsString(); } #endif @@ -980,7 +983,7 @@ void wxNativeFontInfo::EnsureValid() { if ( m_descriptorValid ) return; - + #if wxOSX_USE_CORE_TEXT if ( m_ctFontDescriptor == NULL && UMAGetSystemVersion() >= 0x1050 ) { @@ -1055,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; } @@ -1141,7 +1147,7 @@ bool wxNativeFontInfo::FromString(const wxString& s) { long l; - wxStringTokenizer tokenizer(s, _T(";")); + wxStringTokenizer tokenizer(s, wxT(";")); wxString token = tokenizer.GetNextToken(); // @@ -1192,7 +1198,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, @@ -1303,4 +1309,4 @@ void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding_) encoding_ = wxFont::GetDefaultEncoding(); m_encoding = encoding_; // not reflected in native descriptors -} \ No newline at end of file +}