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:
Stefan Csomor
2009-03-20 13:56:57 +00:00
parent 0cc860a2ab
commit f1c40652a0
19 changed files with 1066 additions and 748 deletions

View File

@@ -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

View File

@@ -726,7 +726,7 @@ private :
void wxMacCocoaRelease( void* obj );
void wxMacCocoaAutorelease( void* obj );
void wxMacCocoaRetain( void* obj );
void* wxMacCocoaRetain( void* obj );
#endif

View File

@@ -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)
};