X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3e5270737bd7a4b21570e61c7cc37b08236b5eae..c4807c0a8fdce8c8a21f7296cc224c08297ca54b:/src/mac/carbon/font.cpp diff --git a/src/mac/carbon/font.cpp b/src/mac/carbon/font.cpp index a1d4997464..e509a7f34b 100644 --- a/src/mac/carbon/font.cpp +++ b/src/mac/carbon/font.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp +// Name: src/mac/carbon/font.cpp // Purpose: wxFont class // Author: Stefan Csomor // Modified by: @@ -9,30 +9,35 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "font.h" -#endif - #include "wx/wxprec.h" -#include "wx/string.h" #include "wx/font.h" -#include "wx/fontutil.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" + +#ifndef WX_PRECOMP + #include "wx/string.h" + #include "wx/utils.h" + #include "wx/intl.h" + #include "wx/gdicmn.h" + #include "wx/log.h" +#endif #include "wx/fontutil.h" +#include "wx/graphics.h" #include "wx/mac/private.h" + +#ifndef __DARWIN__ #include +#endif + -#if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) -#endif + class WXDLLEXPORT wxFontRefData: public wxGDIRefData { - friend class WXDLLEXPORT wxFont; + friend class wxFont; + public: wxFontRefData() : m_fontId(0) @@ -40,17 +45,20 @@ public: , m_family(wxDEFAULT) , m_style(wxNORMAL) , m_weight(wxNORMAL) - , m_underlined(FALSE) - , m_faceName(wxT("Geneva")) + , m_underlined(false) + , m_faceName(wxT("applicationfont")) , m_encoding(wxFONTENCODING_DEFAULT) - , m_macFontNum(0) +#ifdef __LP64__ +#else + , m_macFontFamily(0) , m_macFontSize(0) , m_macFontStyle(0) , m_macATSUFontID(0) +#endif , m_macATSUStyle(0) { - Init(10, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE, - wxT("Geneva"), wxFONTENCODING_DEFAULT); + Init(m_pointSize, m_family, m_style, m_weight, + m_underlined, m_faceName, m_encoding); } wxFontRefData(const wxFontRefData& data) @@ -63,10 +71,13 @@ public: , m_underlined(data.m_underlined) , m_faceName(data.m_faceName) , m_encoding(data.m_encoding) - , m_macFontNum(data.m_macFontNum) +#ifdef __LP64__ +#else + , m_macFontFamily(data.m_macFontFamily) , m_macFontSize(data.m_macFontSize) , m_macFontStyle(data.m_macFontStyle) , m_macATSUFontID(data.m_macATSUFontID) +#endif , m_macATSUStyle(0) { Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight, @@ -88,19 +99,28 @@ public: , m_underlined(underlined) , m_faceName(faceName) , m_encoding(encoding) - , m_macFontNum(0) +#ifdef __LP64__ +#else + , m_macFontFamily(0) , m_macFontSize(0) , m_macFontStyle(0) , m_macATSUFontID(0) +#endif , m_macATSUStyle(0) { Init(size, family, style, weight, underlined, faceName, encoding); } virtual ~wxFontRefData(); - void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; } - bool GetNoAntiAliasing() const { return m_noAA; } - + + void SetNoAntiAliasing( bool no = true ) + { m_noAA = no; } + + bool GetNoAntiAliasing() const + { return m_noAA; } + + void MacFindFont(); + protected: // common part of all ctors void Init(int size, @@ -112,40 +132,45 @@ protected: wxFontEncoding encoding); // font characterstics - int m_fontId; - int m_pointSize; - int m_family; - int m_style; - int m_weight; - bool m_underlined; - wxString m_faceName; - wxFontEncoding m_encoding; + int m_fontId; + int m_pointSize; + int m_family; + int m_style; + int m_weight; + bool m_underlined; + wxString m_faceName; + wxFontEncoding m_encoding; bool m_noAA; // No anti-aliasing - + public: - short m_macFontNum; - short m_macFontSize; - Style m_macFontStyle; - +#ifndef __LP64__ + FMFontFamily m_macFontFamily; + FMFontSize m_macFontSize; + FMFontStyle m_macFontStyle; + // ATSU Font Information - - // this is splitted into an ATSU font id that may + + // this is split into an ATSU font id that may // contain some styles (special bold fonts etc) and // these are the additional qd styles that are not // included in the ATSU font id - ATSUStyle m_macATSUStyle ; ATSUFontID m_macATSUFontID; - Style m_macATSUAdditionalQDStyles ; - + FMFontStyle m_macATSUAdditionalQDStyles ; + // for true themeing support we must store the correct font // information here, as this speeds up and optimizes rendering ThemeFontID m_macThemeFontID ; - +#else + CTFontRef m_macFontRef; + CTFontUIFontType m_macUIFontType; +#endif + ATSUStyle m_macATSUStyle ; wxNativeFontInfo m_info; - -public: - void MacFindFont() ; }; + +#define M_FONTDATA ((wxFontRefData*)m_refData) + + // ============================================================================ // implementation // ============================================================================ @@ -155,12 +180,12 @@ public: // ---------------------------------------------------------------------------- void wxFontRefData::Init(int pointSize, - int family, - int style, - int weight, - bool underlined, - const wxString& faceName, - wxFontEncoding encoding) + int family, + int style, + int weight, + bool underlined, + const wxString& faceName, + wxFontEncoding encoding) { m_style = style; m_pointSize = pointSize; @@ -170,16 +195,20 @@ void wxFontRefData::Init(int pointSize, m_underlined = underlined; m_faceName = faceName; m_encoding = encoding; - - m_macFontNum = 0 ; +#ifdef __LP64__ + m_macUIFontType = kCTFontNoFontType; + m_macFontRef = 0; +#else + m_macFontFamily = 0 ; m_macFontSize = 0; m_macFontStyle = 0; m_macATSUFontID = 0; m_macATSUAdditionalQDStyles = 0 ; - m_macATSUStyle = NULL ; - + m_macThemeFontID = kThemeCurrentPortFont ; - m_noAA = FALSE; +#endif + m_macATSUStyle = NULL ; + m_noAA = false; } wxFontRefData::~wxFontRefData() @@ -193,11 +222,123 @@ wxFontRefData::~wxFontRefData() void wxFontRefData::MacFindFont() { - if ( m_macThemeFontID != kThemeCurrentPortFont ) + OSStatus status = noErr; + Str255 qdFontName ; + +#ifdef __LP64__ + if ( m_faceName.empty() && m_family == wxDEFAULT ) + { + m_macUIFontType = kCTFontSystemFontType; + } + + if ( m_macUIFontType != kCTFontNoFontType ) { - Str255 fontName ; - GetThemeFont(m_macThemeFontID , GetApplicationScript() , fontName , &m_macFontSize , &m_macFontStyle ) ; - m_faceName = wxMacMakeStringFromPascal( fontName ) ; + m_macFontRef = CTFontCreateUIFontForLanguage( m_macUIFontType, 0.0, NULL ); + wxMacCFStringHolder name( CTFontCopyFamilyName( m_macFontRef ) ); + m_faceName = name.AsString(); + } + else + { + if ( m_faceName.empty() ) + { + switch ( m_family ) + { + case wxSCRIPT : + case wxROMAN : + case wxDECORATIVE : + m_faceName = wxT("Times"); + break ; + + case wxSWISS : + m_faceName = wxT("Lucida Grande"); + break ; + + case wxMODERN : + case wxTELETYPE: + m_faceName = wxT("Monaco"); + break ; + + default: + m_faceName = wxT("Times"); + break ; + } + } + + wxMacCFStringHolder cf( m_faceName, wxLocale::GetSystemEncoding() ); + m_macFontRef = CTFontCreateWithName( cf, m_pointSize, NULL); + } + + if ( m_macATSUStyle ) + { + ::ATSUDisposeStyle((ATSUStyle)m_macATSUStyle); + m_macATSUStyle = NULL ; + } + + status = ::ATSUCreateStyle((ATSUStyle *)&m_macATSUStyle); + wxASSERT_MSG( status == noErr , wxT("couldn't create ATSU style") ); + + ATSUAttributeTag atsuTags[] = + { + kATSUSizeTag , + kATSUVerticalCharacterTag, + kATSUQDBoldfaceTag , + kATSUQDItalicTag , + kATSUQDUnderlineTag , + kATSUQDCondensedTag , + kATSUQDExtendedTag , + kATSUFontTag , + }; + ByteCount atsuSizes[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + { + sizeof( Fixed ) , + sizeof( ATSUVerticalCharacterType), + sizeof( Boolean ) , + sizeof( Boolean ) , + sizeof( Boolean ) , + sizeof( Boolean ) , + sizeof( Boolean ) , + sizeof( ATSUFontID ) , + }; + + Boolean kTrue = true ; + Boolean kFalse = false ; + + Fixed atsuSize = IntToFixed( m_pointSize ); + short m_macATSUAdditionalQDStyles = 0; + ATSUVerticalCharacterType kHorizontal = kATSUStronglyHorizontal; + ATSUFontID atsuFontID = 0; + int attributeCount = sizeof(atsuTags) / sizeof(ATSUAttributeTag) ; + + // attempt to add atsu font +#if 0 + status = ATSUFindFontFromName(m_faceName.c_str(), strlen(m_faceName.c_str()), kFontFamilyName, kFontNoPlatform, kFontNoScript, kFontNoLanguage, &atsuFontID); + if ( status != noErr ) + { + attributeCount--; + } +#endif + ATSUAttributeValuePtr atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = + { + &atsuSize , + &kHorizontal, + (m_macATSUAdditionalQDStyles & bold) ? &kTrue : &kFalse , + (m_macATSUAdditionalQDStyles & italic) ? &kTrue : &kFalse , + (m_macATSUAdditionalQDStyles & underline) ? &kTrue : &kFalse , + (m_macATSUAdditionalQDStyles & condense) ? &kTrue : &kFalse , + (m_macATSUAdditionalQDStyles & extend) ? &kTrue : &kFalse , + &atsuFontID , + }; + + status = ::ATSUSetAttributes( (ATSUStyle)m_macATSUStyle, attributeCount, atsuTags, atsuSizes, atsuValues); + + wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") ); +#else + if ( m_macThemeFontID != kThemeCurrentPortFont ) + { + Style style ; + GetThemeFont( m_macThemeFontID, GetApplicationScript(), qdFontName, &m_macFontSize, &style ); + m_macFontStyle = style ; + m_faceName = wxMacMakeStringFromPascal( qdFontName ); if ( m_macFontStyle & bold ) m_weight = wxBOLD ; else @@ -206,140 +347,128 @@ void wxFontRefData::MacFindFont() m_style = wxITALIC ; if ( m_macFontStyle & underline ) m_underlined = true ; - ::GetFNum( fontName, &m_macFontNum); m_pointSize = m_macFontSize ; + m_macFontFamily = FMGetFontFamilyFromName( qdFontName ); } else { - if( m_faceName.Length() == 0 ) + if ( m_faceName.empty() ) { - switch( m_family ) + if ( m_family == wxDEFAULT ) { - case wxDEFAULT : - m_macFontNum = ::GetAppFont() ; - break ; - case wxSCRIPT : - case wxROMAN : - case wxDECORATIVE : -#ifdef __WXMAC_OSX__ - ::GetFNum( "\pTimes" , &m_macFontNum) ; -#else - ::GetFNum( "\pTimes" , &m_macFontNum) ; -#endif - break ; - case wxSWISS : -#ifdef __WXMAC_OSX__ - ::GetFNum( "\pLucida Grande" , &m_macFontNum) ; -#else - ::GetFNum( "\pGeneva" , &m_macFontNum) ; -#endif - break ; - case wxMODERN : -#ifdef __WXMAC_OSX__ - ::GetFNum( "\pMonaco" , &m_macFontNum) ; -#else - ::GetFNum( "\pMonaco" , &m_macFontNum) ; -#endif - break ; + m_macFontFamily = GetAppFont(); + FMGetFontFamilyName(m_macFontFamily,qdFontName); + m_faceName = wxMacMakeStringFromPascal( qdFontName ); + } + else + { + switch ( m_family ) + { + case wxSCRIPT : + case wxROMAN : + case wxDECORATIVE : + m_faceName = wxT("Times"); + break ; + + case wxSWISS : + m_faceName = wxT("Lucida Grande"); + break ; + + case wxMODERN : + case wxTELETYPE: + m_faceName = wxT("Monaco"); + break ; + + default: + m_faceName = wxT("Times"); + break ; + } + wxMacStringToPascal( m_faceName , qdFontName ); + m_macFontFamily = FMGetFontFamilyFromName( qdFontName ); + if ( m_macFontFamily == kInvalidFontFamily ) + { + wxLogDebug( wxT("ATSFontFamilyFindFromName failed for %s"), m_faceName.c_str() ); + m_macFontFamily = GetAppFont(); + } } - Str255 name ; - ::GetFontName( m_macFontNum , name ) ; - m_faceName = wxMacMakeStringFromPascal( name ) ; } else { if ( m_faceName == wxT("systemfont") ) - m_macFontNum = ::GetSysFont() ; + m_macFontFamily = GetSysFont(); else if ( m_faceName == wxT("applicationfont") ) - m_macFontNum = ::GetAppFont() ; + m_macFontFamily = GetAppFont(); else { - Str255 fontname ; - wxMacStringToPascal( m_faceName , fontname ) ; - ::GetFNum( fontname, &m_macFontNum); + wxMacCFStringHolder cf( m_faceName, wxLocale::GetSystemEncoding() ); + ATSFontFamilyRef atsfamily = ATSFontFamilyFindFromName( cf , kATSOptionFlagsDefault ); + if ( atsfamily == (ATSFontFamilyRef) -1 ) + { + wxLogDebug( wxT("ATSFontFamilyFindFromName failed for ") + m_faceName ); + m_macFontFamily = GetAppFont(); + } + else + m_macFontFamily = FMGetFontFamilyFromATSFontFamilyRef( atsfamily ); } } m_macFontStyle = 0; if (m_weight == wxBOLD) m_macFontStyle |= bold; - if (m_style == wxITALIC || m_style == wxSLANT) + if (m_style == wxITALIC || m_style == wxSLANT) m_macFontStyle |= italic; - if (m_underlined) + if (m_underlined) m_macFontStyle |= underline; m_macFontSize = m_pointSize ; } // we try to get as much styles as possible into ATSU - Fixed atsuSize = IntToFixed( m_macFontSize ) ; - Style atsuStyle = normal ; - verify_noerr(::ATSUFONDtoFontID(m_macFontNum, atsuStyle , (UInt32*)&m_macATSUFontID) ); - if ( m_macFontStyle & bold ) - { - ATSUFontID test ; - if ( ::ATSUFONDtoFontID(m_macFontNum, atsuStyle | bold , &test) == noErr ) - { - atsuStyle |= bold ; - m_macATSUFontID = test ; - } - } - if ( m_macFontStyle & italic ) - { - ATSUFontID test ; - if ( ::ATSUFONDtoFontID(m_macFontNum, atsuStyle | italic , &test) == noErr ) - { - atsuStyle |= italic ; - m_macATSUFontID = test ; - } - } - if ( m_macFontStyle & underline ) - { - ATSUFontID test ; - if ( ::ATSUFONDtoFontID(m_macFontNum, atsuStyle | underline , &test) == noErr ) - { - atsuStyle |= underline ; - m_macATSUFontID = test ; - } - } - - m_macATSUAdditionalQDStyles = m_macFontStyle & (~atsuStyle ) ; + // ATSUFontID and FMFont are equivalent + FMFontStyle intrinsicStyle = 0 ; + status = FMGetFontFromFontFamilyInstance( m_macFontFamily , m_macFontStyle , &m_macATSUFontID , &intrinsicStyle); + wxASSERT_MSG( status == noErr , wxT("couldn't get an ATSUFont from font family") ); + m_macATSUAdditionalQDStyles = m_macFontStyle & (~intrinsicStyle ); if ( m_macATSUStyle ) { ::ATSUDisposeStyle((ATSUStyle)m_macATSUStyle); m_macATSUStyle = NULL ; } - OSStatus status = ::ATSUCreateStyle((ATSUStyle *)&m_macATSUStyle) ; - wxASSERT_MSG( status == noErr , wxT("couldn't create ATSU style") ) ; + + status = ::ATSUCreateStyle((ATSUStyle *)&m_macATSUStyle); + wxASSERT_MSG( status == noErr , wxT("couldn't create ATSU style") ); + ATSUAttributeTag atsuTags[] = { - kATSUFontTag , - kATSUSizeTag , - kATSUVerticalCharacterTag, - kATSUQDBoldfaceTag , - kATSUQDItalicTag , - kATSUQDUnderlineTag , - kATSUQDCondensedTag , - kATSUQDExtendedTag , - } ; - ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = + kATSUFontTag , + kATSUSizeTag , + kATSUVerticalCharacterTag, + kATSUQDBoldfaceTag , + kATSUQDItalicTag , + kATSUQDUnderlineTag , + kATSUQDCondensedTag , + kATSUQDExtendedTag , + }; + ByteCount atsuSizes[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = { - sizeof( ATSUFontID ) , - sizeof( Fixed ) , - sizeof( ATSUVerticalCharacterType), - sizeof( Boolean ) , - sizeof( Boolean ) , - sizeof( Boolean ) , - sizeof( Boolean ) , - sizeof( Boolean ) , - } ; + sizeof( ATSUFontID ) , + sizeof( Fixed ) , + sizeof( ATSUVerticalCharacterType), + sizeof( Boolean ) , + sizeof( Boolean ) , + sizeof( Boolean ) , + sizeof( Boolean ) , + sizeof( Boolean ) , + }; + Boolean kTrue = true ; Boolean kFalse = false ; + Fixed atsuSize = IntToFixed( m_macFontSize ); ATSUVerticalCharacterType kHorizontal = kATSUStronglyHorizontal; - ATSUAttributeValuePtr atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = + ATSUAttributeValuePtr atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = { &m_macATSUFontID , &atsuSize , @@ -349,25 +478,26 @@ void wxFontRefData::MacFindFont() (m_macATSUAdditionalQDStyles & underline) ? &kTrue : &kFalse , (m_macATSUAdditionalQDStyles & condense) ? &kTrue : &kFalse , (m_macATSUAdditionalQDStyles & extend) ? &kTrue : &kFalse , - } ; - status = ::ATSUSetAttributes((ATSUStyle)m_macATSUStyle, sizeof(atsuTags)/sizeof(ATSUAttributeTag) , + }; + + status = ::ATSUSetAttributes( + (ATSUStyle)m_macATSUStyle, + sizeof(atsuTags) / sizeof(ATSUAttributeTag) , atsuTags, atsuSizes, atsuValues); - wxASSERT_MSG( status == noErr , wxT("couldn't Modify ATSU style") ) ; + wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") ); +#endif } // ---------------------------------------------------------------------------- // wxFont // ---------------------------------------------------------------------------- -void wxFont::Init() -{ -} - bool wxFont::Create(const wxNativeFontInfo& info) { - return Create(info.pointSize, info.family, info.style, info.weight, - info.underlined, info.faceName, info.encoding); + return Create( + info.pointSize, info.family, info.style, info.weight, + info.underlined, info.faceName, info.encoding ); } wxFont::wxFont(const wxString& fontdesc) @@ -378,30 +508,58 @@ wxFont::wxFont(const wxString& fontdesc) } bool wxFont::Create(int pointSize, - int family, - int style, - int weight, - bool underlined, - const wxString& faceName, - wxFontEncoding encoding) + int family, + int style, + int weight, + bool underlined, + const wxString& faceName, + wxFontEncoding encoding) { UnRef(); - m_refData = new wxFontRefData(pointSize, family, style, weight, - underlined, faceName, encoding); + + m_refData = new wxFontRefData( + pointSize, family, style, weight, + underlined, faceName, encoding); RealizeResource(); - return TRUE; + return true; } -bool wxFont::MacCreateThemeFont(wxUint16 themeFontID ) +#ifdef __LP64__ + +bool wxFont::MacCreateUIFont(wxUint32 ctFontType ) +{ + UnRef(); + + m_refData = new wxFontRefData( + 12, wxDEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, + false, wxEmptyString, wxFONTENCODING_DEFAULT ); + + M_FONTDATA->m_macUIFontType = ctFontType ; + RealizeResource(); + + return true; +} + +#endif + +bool wxFont::MacCreateThemeFont(wxUint16 themeFontID) { +#ifdef __LP64__ + return MacCreateUIFont(HIThemeGetUIFontType(themeFontID)); +#else UnRef(); - m_refData = new wxFontRefData(12, wxDEFAULT , wxFONTSTYLE_NORMAL , wxFONTWEIGHT_NORMAL ,false, wxEmptyString, wxFONTENCODING_DEFAULT); + + m_refData = new wxFontRefData( + 12, wxDEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, + false, wxEmptyString, wxFONTENCODING_DEFAULT ); + M_FONTDATA->m_macThemeFontID = themeFontID ; RealizeResource(); - return TRUE; + return true; +#endif } wxFont::~wxFont() @@ -410,8 +568,9 @@ wxFont::~wxFont() bool wxFont::RealizeResource() { - M_FONTDATA->MacFindFont() ; - return TRUE; + M_FONTDATA->MacFindFont(); + + return true; } void wxFont::SetEncoding(wxFontEncoding encoding) @@ -474,13 +633,15 @@ void wxFont::SetWeight(int weight) RealizeResource(); } -void wxFont::SetFaceName(const wxString& faceName) +bool wxFont::SetFaceName(const wxString& faceName) { Unshare(); M_FONTDATA->m_faceName = faceName; RealizeResource(); + + return wxFontBase::SetFaceName(faceName); } void wxFont::SetUnderlined(bool underlined) @@ -509,96 +670,144 @@ void wxFont::SetNoAntiAliasing( bool no ) int wxFont::GetPointSize() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_pointSize; } +wxSize wxFont::GetPixelSize() const +{ +#if wxUSE_GRAPHICS_CONTEXT + // TODO: consider caching the value + wxGraphicsContext* dc = wxGraphicsContext::CreateFromNative((CGContextRef) NULL); + dc->SetFont(*(wxFont *)this,*wxBLACK); + wxDouble width, height = 0; + dc->GetTextExtent( wxT("g"), &width, &height, NULL, NULL); + delete dc; + return wxSize((int)width, (int)height); +#else + return wxFontBase::GetPixelSize(); +#endif +} + int wxFont::GetFamily() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_family; } int wxFont::GetStyle() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_style; } int wxFont::GetWeight() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_weight; } bool wxFont::GetUnderlined() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , false, wxT("invalid font") ); + return M_FONTDATA->m_underlined; } wxString wxFont::GetFaceName() const { wxCHECK_MSG( M_FONTDATA != NULL , wxEmptyString , wxT("invalid font") ); + return M_FONTDATA->m_faceName; } wxFontEncoding wxFont::GetEncoding() const { wxCHECK_MSG( M_FONTDATA != NULL , wxFONTENCODING_DEFAULT , wxT("invalid font") ); + return M_FONTDATA->m_encoding; } bool wxFont::GetNoAntiAliasing() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , false, wxT("invalid font") ); + return M_FONTDATA->m_noAA; } +#ifndef __LP64__ + short wxFont::MacGetFontNum() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); - return M_FONTDATA->m_macFontNum; + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + + return M_FONTDATA->m_macFontFamily; } short wxFont::MacGetFontSize() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_macFontSize; } wxByte wxFont::MacGetFontStyle() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_macFontStyle; } wxUint32 wxFont::MacGetATSUFontID() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_macATSUFontID; } -void* wxFont::MacGetATSUStyle() const +void * wxFont::MacGetATSUStyle() const { wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + return M_FONTDATA->m_macATSUStyle; } wxUint32 wxFont::MacGetATSUAdditionalQDStyles() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_macATSUAdditionalQDStyles; } -wxUint16 wxFont::MacGetThemeFontID() const +wxUint16 wxFont::MacGetThemeFontID() const { - wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + return M_FONTDATA->m_macThemeFontID; } +#else +const void * wxFont::MacGetCTFont() const +{ + wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); + + return M_FONTDATA->m_macFontRef; +} + +// to be removed +void * wxFont::MacGetATSUStyle() const +{ + wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); + + return M_FONTDATA->m_macATSUStyle; +} +#endif -const wxNativeFontInfo *wxFont::GetNativeFontInfo() const +const wxNativeFontInfo * wxFont::GetNativeFontInfo() const { wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); wxCHECK_MSG( Ok(), NULL, wxT("invalid font") ); @@ -607,4 +816,3 @@ const wxNativeFontInfo *wxFont::GetNativeFontInfo() const return &(M_FONTDATA->m_info); } -