X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad81651f00edc6f489d9b6a0839d316a964fd521..e6c1d9afeeda63eb9f0c9d612bef439d96a76098:/src/mac/font.cpp diff --git a/src/mac/font.cpp b/src/mac/font.cpp index a5df9049a2..eec71c52ee 100644 --- a/src/mac/font.cpp +++ b/src/mac/font.cpp @@ -16,12 +16,18 @@ #include "wx/defs.h" #include "wx/string.h" #include "wx/font.h" +#include "wx/fontutil.h" #include "wx/gdicmn.h" +#include "wx/utils.h" -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) - +#include "wx/fontutil.h" +#include "wx/mac/private.h" +#include "ATSUnicode.h" +#if !USE_SHARED_LIBRARIES +IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) +#endif // ============================================================================ // implementation @@ -48,9 +54,9 @@ void wxFontRefData::Init(int pointSize, m_faceName = faceName; m_encoding = encoding; - m_macFontNum = 0 ; - m_macFontSize = 0; - m_macFontStyle = 0; + m_macFontNum = 0 ; + m_macFontSize = 0; + m_macFontStyle = 0; m_fontId = 0; } @@ -77,7 +83,7 @@ void wxFontRefData::MacFindFont() ::GetFNum( "\pTimes" , &m_macFontNum) ; break ; case wxSWISS : - ::GetFNum( "\pHelvetica" , &m_macFontNum) ; + ::GetFNum( "\pGeneva" , &m_macFontNum) ; break ; case wxMODERN : ::GetFNum( "\pMonaco" , &m_macFontNum) ; @@ -92,9 +98,13 @@ void wxFontRefData::MacFindFont() m_macFontNum = ::GetAppFont() ; else { - strcpy(wxBuffer, m_faceName); - C2PStr(wxBuffer); - ::GetFNum( (unsigned char*) wxBuffer, &m_macFontNum); +#if TARGET_CARBON + c2pstrcpy( (StringPtr) wxBuffer, m_faceName ) ; +#else + strcpy( (char *) wxBuffer, m_faceName ) ; + c2pstr( (char *) wxBuffer ) ; +#endif + ::GetFNum( (StringPtr) wxBuffer, &m_macFontNum); } } @@ -106,6 +116,16 @@ void wxFontRefData::MacFindFont() if (m_underlined) m_macFontStyle |= underline; m_macFontSize = m_pointSize ; + + //TODO:if we supply the style as an additional parameter we must make a testing + //sequence in order to degrade gracefully while trying to maintain most of the style + //information, meanwhile we just take the normal font and apply the features after + OSStatus status = ::ATSUFONDtoFontID(m_macFontNum, normal /*qdStyle*/, (UInt32*)&m_macATSUFontID); + /* + status = ATSUFindFontFromName ( (Ptr) m_faceName , strlen( m_faceName ) , + kFontFullName, kFontMacintoshPlatform, kFontRomanScript , kFontNoLanguage , (UInt32*)&m_macATSUFontID ) ; + */ + wxASSERT_MSG( status == noErr , "couldn't retrieve font identifier" ) ; } // ---------------------------------------------------------------------------- @@ -114,8 +134,19 @@ void wxFontRefData::MacFindFont() void wxFont::Init() { - if ( wxTheFontList ) - wxTheFontList->Append(this); +} + +bool wxFont::Create(const wxNativeFontInfo& info) +{ + return Create(info.pointSize, info.family, info.style, info.weight, + info.underlined, info.faceName, info.encoding); +} + +wxFont::wxFont(const wxString& fontdesc) +{ + wxNativeFontInfo info; + if ( info.FromString(fontdesc) ) + (void)Create(info); } bool wxFont::Create(int pointSize, @@ -137,8 +168,6 @@ bool wxFont::Create(int pointSize, wxFont::~wxFont() { - if (wxTheFontList) - wxTheFontList->DeleteObject(this); } bool wxFont::RealizeResource()