1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/cocoa/font.cpp
3 // Purpose: wxFont class
8 // Copyright: (c) AUTHOR
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #include "wx/wxprec.h"
17 #include "wx/string.h"
18 #include "wx/gdicmn.h"
21 #include "wx/fontutil.h"
22 #include "wx/encinfo.h"
24 class WXDLLEXPORT wxFontRefData: public wxGDIRefData
26 friend class WXDLLIMPEXP_FWD_CORE wxFont;
31 Init(10, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE,
32 wxT("Geneva"), wxFONTENCODING_DEFAULT);
35 wxFontRefData(const wxFontRefData& data)
37 , m_fontId(data.m_fontId)
42 wxFontRefData(int size,
47 const wxString& faceName,
48 wxFontEncoding encoding)
51 Init(size, family, style, weight, underlined, faceName, encoding);
54 virtual ~wxFontRefData();
56 // common part of all ctors
62 const wxString& faceName,
63 wxFontEncoding encoding);
65 // font characterstics
67 wxNativeFontInfo m_info;
72 IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject)
74 void wxFontRefData::Init(int size, int family, int style, int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding)
76 m_info.pointSize = size;
77 m_info.family = static_cast<wxFontFamily>(family);
78 m_info.style = static_cast<wxFontStyle>(style);
79 m_info.weight = static_cast<wxFontWeight>(weight);
80 m_info.underlined = underlined;
81 m_info.faceName = faceName;
82 m_info.encoding = encoding;
85 wxFontRefData::~wxFontRefData()
87 // TODO: delete font data
90 #define M_FONTDATA ((wxFontRefData*)m_refData)
92 bool wxFont::Create(const wxNativeFontInfo&)
97 void wxFont::SetEncoding(wxFontEncoding)
101 wxFontEncoding wxFont::GetEncoding() const
103 return wxFontEncoding();
106 int wxFont::GetPointSize() const
111 bool wxFont::GetUnderlined() const
114 return M_FONTDATA->m_info.underlined;
119 int wxFont::GetStyle() const
124 int wxFont::GetFamily() const
129 int wxFont::GetWeight() const
134 const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
136 wxCHECK_MSG( Ok(), 0, wxT("invalid font") );
137 return &M_FONTDATA->m_info;
140 bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding)
143 m_refData = new wxFontRefData(pointSize, family, style, weight, underlined, faceName, encoding);
154 bool wxFont::RealizeResource()
156 // TODO: create the font (if there is a native font object)
160 void wxFont::Unshare()
162 // Don't change shared data
165 m_refData = new wxFontRefData();
169 wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData);
175 void wxFont::SetPointSize(int pointSize)
179 M_FONTDATA->m_info.pointSize = pointSize;
184 void wxFont::SetFamily(int family)
188 M_FONTDATA->m_info.family = static_cast<wxFontFamily>(family);
193 void wxFont::SetStyle(int style)
197 M_FONTDATA->m_info.style = static_cast<wxFontStyle>(style);
202 void wxFont::SetWeight(int weight)
206 M_FONTDATA->m_info.weight = static_cast<wxFontWeight>(weight);
211 bool wxFont::SetFaceName(const wxString& faceName)
215 M_FONTDATA->m_info.faceName = faceName;
219 return wxFontBase::SetFaceName(faceName);
222 void wxFont::SetUnderlined(bool underlined)
226 M_FONTDATA->m_info.underlined = underlined;
231 /* New font system */
232 wxString wxFont::GetFaceName() const
236 str = M_FONTDATA->m_info.faceName;