X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/76a5e5d21ee1a6230d777ce0209b2df4c6075f0f..205b0c9c6aa69c02a7774846e677910bf1609a53:/src/mac/font.cpp diff --git a/src/mac/font.cpp b/src/mac/font.cpp index 2335e5d262..49a96bdc56 100644 --- a/src/mac/font.cpp +++ b/src/mac/font.cpp @@ -23,7 +23,7 @@ #include "wx/fontutil.h" #include "wx/mac/private.h" - +#include "ATSUnicode.h" #if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) @@ -54,10 +54,11 @@ 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; + m_noAA = FALSE; } wxFontRefData::~wxFontRefData() @@ -89,6 +90,10 @@ void wxFontRefData::MacFindFont() ::GetFNum( "\pMonaco" , &m_macFontNum) ; break ; } + Str255 name ; + GetFontName( m_macFontNum , name ) ; + CopyPascalStringToC( name , (char*) name ) ; + m_faceName = (char*) name ; } else { @@ -98,13 +103,9 @@ void wxFontRefData::MacFindFont() m_macFontNum = ::GetAppFont() ; else { -#if TARGET_CARBON - c2pstrcpy( (StringPtr) wxBuffer, m_faceName ) ; -#else - strcpy( (char *) wxBuffer, m_faceName ) ; - c2pstr( (char *) wxBuffer ) ; -#endif - ::GetFNum( (StringPtr) wxBuffer, &m_macFontNum); + Str255 fontname ; + wxMacStringToPascal( m_faceName , fontname ) ; + ::GetFNum( fontname, &m_macFontNum); } } @@ -116,6 +117,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" ) ; } // ---------------------------------------------------------------------------- @@ -244,6 +255,15 @@ void wxFont::SetUnderlined(bool underlined) RealizeResource(); } +void wxFont::SetNoAntiAliasing( bool no ) +{ + Unshare(); + + M_FONTDATA->SetNoAntiAliasing( no ); + + RealizeResource(); +} + // ---------------------------------------------------------------------------- // accessors // ---------------------------------------------------------------------------- @@ -286,3 +306,8 @@ wxFontEncoding wxFont::GetEncoding() const return M_FONTDATA->m_encoding; } +bool wxFont::GetNoAntiAliasing() +{ + return M_FONTDATA->m_noAA; +} +