reworked font handling for osx
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -65,6 +65,7 @@ enum wxXLFDField
|
||||
// functions, the user code can only get the objects of this type from
|
||||
// somewhere and pass it somewhere else (possibly save them somewhere using
|
||||
// ToString() and restore them using FromString())
|
||||
|
||||
class WXDLLIMPEXP_CORE wxNativeFontInfo
|
||||
{
|
||||
public:
|
||||
@@ -113,6 +114,77 @@ public:
|
||||
FATTRS fa;
|
||||
FONTMETRICS fm;
|
||||
FACENAMEDESC fn;
|
||||
#elif defined(__WXOSX__)
|
||||
public:
|
||||
wxNativeFontInfo(const wxNativeFontInfo& info) { Init(info); }
|
||||
wxNativeFontInfo( int size,
|
||||
wxFontFamily family,
|
||||
wxFontStyle style,
|
||||
wxFontWeight weight,
|
||||
bool underlined,
|
||||
const wxString& faceName,
|
||||
wxFontEncoding encoding)
|
||||
{ Init(size,family,style,weight,underlined,faceName,encoding); }
|
||||
|
||||
~wxNativeFontInfo() { Free(); }
|
||||
|
||||
wxNativeFontInfo& operator=(const wxNativeFontInfo& info)
|
||||
{
|
||||
if (this != &info)
|
||||
{
|
||||
Free();
|
||||
Init(info);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if wxOSX_USE_CORE_TEXT
|
||||
void Init(CTFontDescriptorRef descr);
|
||||
#endif
|
||||
void Init(const wxNativeFontInfo& info);
|
||||
void Init(int size,
|
||||
wxFontFamily family,
|
||||
wxFontStyle style,
|
||||
wxFontWeight weight,
|
||||
bool underlined,
|
||||
const wxString& faceName ,
|
||||
wxFontEncoding encoding);
|
||||
|
||||
void Free();
|
||||
void EnsureValid();
|
||||
|
||||
bool m_descriptorValid;
|
||||
#if wxOSX_USE_CORE_TEXT
|
||||
CTFontDescriptorRef m_ctFontDescriptor;
|
||||
#endif
|
||||
|
||||
#if wxOSX_USE_ATSU_TEXT
|
||||
bool m_atsuFontValid;
|
||||
// the atsu font ID
|
||||
wxUint32 m_atsuFontID;
|
||||
// the qd styles that are not intrinsic to the font above
|
||||
wxInt16 m_atsuAdditionalQDStyles;
|
||||
#if wxOSX_USE_CARBON
|
||||
wxInt16 m_qdFontFamily;
|
||||
wxInt16 m_qdFontStyle;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if wxOSX_USE_COCOA
|
||||
WX_NSFontDescriptor m_nsFontDescriptor;
|
||||
void ValidateNSFontDescriptor();
|
||||
#endif
|
||||
#if wxOSX_USE_IPHONE
|
||||
#endif
|
||||
|
||||
int m_pointSize;
|
||||
wxFontFamily m_family;
|
||||
wxFontStyle m_style;
|
||||
wxFontWeight m_weight;
|
||||
bool m_underlined;
|
||||
wxString m_faceName;
|
||||
wxFontEncoding m_encoding;
|
||||
public :
|
||||
#else // other platforms
|
||||
//
|
||||
// This is a generic implementation that should work on all ports
|
||||
|
@@ -726,7 +726,7 @@ private :
|
||||
|
||||
void wxMacCocoaRelease( void* obj );
|
||||
void wxMacCocoaAutorelease( void* obj );
|
||||
void wxMacCocoaRetain( void* obj );
|
||||
void* wxMacCocoaRetain( void* obj );
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -16,6 +16,21 @@
|
||||
// wxFont
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// font styles
|
||||
enum wxOSXSystemFont
|
||||
{
|
||||
wxOSX_SYSTEM_FONT_NONE = 0,
|
||||
wxOSX_SYSTEM_FONT_NORMAL,
|
||||
wxOSX_SYSTEM_FONT_BOLD,
|
||||
wxOSX_SYSTEM_FONT_SMALL,
|
||||
wxOSX_SYSTEM_FONT_SMALL_BOLD,
|
||||
wxOSX_SYSTEM_FONT_MINI,
|
||||
wxOSX_SYSTEM_FONT_MINI_BOLD,
|
||||
wxOSX_SYSTEM_FONT_LABELS,
|
||||
wxOSX_SYSTEM_FONT_VIEWS
|
||||
};
|
||||
|
||||
|
||||
class WXDLLIMPEXP_CORE wxFont : public wxFontBase
|
||||
{
|
||||
public:
|
||||
@@ -75,15 +90,8 @@ public:
|
||||
|
||||
bool Create(const wxNativeFontInfo& info);
|
||||
|
||||
#if wxOSX_USE_ATSU_TEXT
|
||||
bool MacCreateFromThemeFont( wxUint16 themeFontID ) ;
|
||||
#endif
|
||||
#if wxOSX_USE_CORE_TEXT
|
||||
bool MacCreateFromUIFont( wxUint32 coreTextFontType );
|
||||
bool MacCreateFromCTFontDescriptor( const void * ctFontDescriptor, int pointSize = 0 );
|
||||
bool MacCreateFromCTFont( const void * ctFont );
|
||||
#endif
|
||||
|
||||
bool CreateSystemFont(wxOSXSystemFont font);
|
||||
|
||||
virtual ~wxFont();
|
||||
|
||||
// implement base class pure virtuals
|
||||
@@ -118,32 +126,42 @@ public:
|
||||
|
||||
// Mac-specific, risks to change, don't use in portable code
|
||||
|
||||
#if wxOSX_USE_ATSU_TEXT
|
||||
#if wxOSX_USE_CARBON && wxOSX_USE_ATSU_TEXT
|
||||
wxUint16 MacGetThemeFontID() const ;
|
||||
// 'old' Quickdraw accessors
|
||||
short MacGetFontNum() const;
|
||||
short MacGetFontSize() const;
|
||||
wxByte MacGetFontStyle() const;
|
||||
|
||||
// 'new' ATSUI accessors
|
||||
wxUint32 MacGetATSUFontID() const;
|
||||
wxUint32 MacGetATSUAdditionalQDStyles() const;
|
||||
wxUint16 MacGetThemeFontID() const ;
|
||||
|
||||
// Returns an ATSUStyle not ATSUStyle*
|
||||
#endif
|
||||
|
||||
#if wxOSX_USE_COCOA_OR_CARBON
|
||||
CGFontRef GetCGFont() const;
|
||||
#endif
|
||||
|
||||
#if wxOSX_USE_CORE_TEXT
|
||||
const void * MacGetCTFont() const;
|
||||
CTFontRef GetCTFont() const;
|
||||
#endif
|
||||
|
||||
#if wxOSX_USE_CORE_TEXT || wxOSX_USE_ATSU_TEXT
|
||||
// Returns an ATSUStyle not ATSUStyle*
|
||||
void* MacGetATSUStyle() const ;
|
||||
#endif
|
||||
|
||||
#if wxOSX_USE_COCOA
|
||||
WX_NSFont GetNSFont() const;
|
||||
static WX_NSFont CreateNSFont(wxOSXSystemFont font, wxNativeFontInfo* info);
|
||||
static WX_NSFont CreateNSFont(const wxNativeFontInfo* info);
|
||||
#endif
|
||||
|
||||
#if wxOSX_USE_IPHONE
|
||||
WX_UIFont GetUIFont() const;
|
||||
static WX_NSFont CreateUIFont(wxOSXSystemFont font, wxNativeFontInfo* info);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
virtual wxGDIRefData *CreateGDIRefData() const;
|
||||
virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
|
||||
|
||||
private:
|
||||
void Unshare();
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxFont)
|
||||
};
|
||||
|
Reference in New Issue
Block a user