X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a40af6f9579ae53fa98ecf5dc7aaff700fd8920f..b77b87881bae2e6306366d79e7fe160334b3d4a2:/src/mac/font.cpp diff --git a/src/mac/font.cpp b/src/mac/font.cpp index d94805d819..f37cdbf9c7 100644 --- a/src/mac/font.cpp +++ b/src/mac/font.cpp @@ -6,7 +6,7 @@ // Created: 1998-01-01 // RCS-ID: $Id$ // Copyright: (c) Stefan Csomor -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -29,6 +29,106 @@ IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) #endif +class WXDLLEXPORT wxFontRefData: public wxGDIRefData +{ + friend class WXDLLEXPORT wxFont; +public: + wxFontRefData() + : m_fontId(0) + , m_pointSize(10) + , m_family(wxDEFAULT) + , m_style(wxNORMAL) + , m_weight(wxNORMAL) + , m_underlined(FALSE) + , m_faceName(wxT("Geneva")) + , m_encoding(wxFONTENCODING_DEFAULT) + , m_macFontNum(0) + , m_macFontSize(0) + , m_macFontStyle(0) + , m_macATSUFontID() + { + Init(10, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE, + wxT("Geneva"), wxFONTENCODING_DEFAULT); + } + + wxFontRefData(const wxFontRefData& data) + : wxGDIRefData() + , m_fontId(data.m_fontId) + , m_pointSize(data.m_pointSize) + , m_family(data.m_family) + , m_style(data.m_style) + , m_weight(data.m_weight) + , m_underlined(data.m_underlined) + , m_faceName(data.m_faceName) + , m_encoding(data.m_encoding) + , m_macFontNum(data.m_macFontNum) + , m_macFontSize(data.m_macFontSize) + , m_macFontStyle(data.m_macFontStyle) + , m_macATSUFontID(data.m_macATSUFontID) + { + Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight, + data.m_underlined, data.m_faceName, data.m_encoding); + } + + wxFontRefData(int size, + int family, + int style, + int weight, + bool underlined, + const wxString& faceName, + wxFontEncoding encoding) + : m_fontId(0) + , m_pointSize(size) + , m_family(family) + , m_style(style) + , m_weight(weight) + , m_underlined(underlined) + , m_faceName(faceName) + , m_encoding(encoding) + , m_macFontNum(0) + , m_macFontSize(0) + , m_macFontStyle(0) + , m_macATSUFontID(0) + { + Init(size, family, style, weight, underlined, faceName, encoding); + } + + virtual ~wxFontRefData(); + void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; } + bool GetNoAntiAliasing() { return m_noAA; } + +protected: + // common part of all ctors + void Init(int size, + int family, + int style, + int weight, + bool underlined, + const wxString& faceName, + 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; + bool m_noAA; // No anti-aliasing + +public: + short m_macFontNum; + short m_macFontSize; + unsigned char m_macFontStyle; + wxUint32 m_macATSUFontID; + + wxNativeFontInfo m_info; + +public: + void MacFindFont() ; +}; // ============================================================================ // implementation // ============================================================================ @@ -270,6 +370,8 @@ void wxFont::SetNoAntiAliasing( bool no ) // accessors // ---------------------------------------------------------------------------- +// TODO: insert checks everywhere for M_FONTDATA == NULL! + int wxFont::GetPointSize() const { return M_FONTDATA->m_pointSize; @@ -313,3 +415,32 @@ bool wxFont::GetNoAntiAliasing() return M_FONTDATA->m_noAA; } +short wxFont::GetMacFontNum() const +{ + return M_FONTDATA->m_macFontNum; +} + +short wxFont::GetMacFontSize() const +{ + return M_FONTDATA->m_macFontSize; +} + +wxByte wxFont::GetMacFontStyle() const +{ + return M_FONTDATA->m_macFontStyle; +} + +wxUint32 wxFont::GetMacATSUFontID() const +{ + return M_FONTDATA->m_macATSUFontID; +} + +const wxNativeFontInfo *wxFont::GetNativeFontInfo() const +{ + wxCHECK_MSG( Ok(), NULL, wxT("invalid font") ); + + M_FONTDATA->m_info.InitFromFont(*this); + + return &(M_FONTDATA->m_info); +} +