1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/msw/font.h
3 // Purpose:     wxFont class
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:     01/02/97
7 // RCS-ID:      $Id: font.h 39411 2006-05-29 00:03:36Z VZ $
8 // Copyright:   (c) Julian Smart
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_FONT_H_
13 #define _WX_FONT_H_
14 
15 #include "wx/gdicmn.h"
16 
17 // ----------------------------------------------------------------------------
18 // wxFont
19 // ----------------------------------------------------------------------------
20 
21 class WXDLLEXPORT wxFont : public wxFontBase
22 {
23 public:
24     // ctors and such
wxFont()25     wxFont() { }
26 
27     wxFont(int size,
28            int family,
29            int style,
30            int weight,
31            bool underlined = false,
32            const wxString& face = wxEmptyString,
33            wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
34     {
35         (void)Create(size, family, style, weight, underlined, face, encoding);
36     }
37 
38     wxFont(const wxSize& pixelSize,
39            int family,
40            int style,
41            int weight,
42            bool underlined = false,
43            const wxString& face = wxEmptyString,
44            wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
45     {
46         (void)Create(pixelSize, family, style, weight,
47                      underlined, face, encoding);
48     }
49 
50     wxFont(const wxNativeFontInfo& info, WXHFONT hFont = 0)
51     {
52         Create(info, hFont);
53     }
54 
55     wxFont(const wxString& fontDesc);
56 
57     bool Create(int size,
58                 int family,
59                 int style,
60                 int weight,
61                 bool underlined = false,
62                 const wxString& face = wxEmptyString,
63                 wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
64     {
65         return DoCreate(size, wxDefaultSize, false, family, style,
66                         weight, underlined, face, encoding);
67     }
68 
69     bool Create(const wxSize& pixelSize,
70                 int family,
71                 int style,
72                 int weight,
73                 bool underlined = false,
74                 const wxString& face = wxEmptyString,
75                 wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
76     {
77         return DoCreate(-1, pixelSize, true, family, style,
78                         weight, underlined, face, encoding);
79     }
80 
81     bool Create(const wxNativeFontInfo& info, WXHFONT hFont = 0);
82 
83     virtual ~wxFont();
84 
85     // wxFontBase overridden functions
86     virtual wxString GetNativeFontInfoDesc() const;
87     virtual wxString GetNativeFontInfoUserDesc() const;
88 
89     // implement base class pure virtuals
90     virtual int GetPointSize() const;
91     virtual wxSize GetPixelSize() const;
92     virtual bool IsUsingSizeInPixels() const;
93     virtual int GetFamily() const;
94     virtual int GetStyle() const;
95     virtual int GetWeight() const;
96     virtual bool GetUnderlined() const;
97     virtual wxString GetFaceName() const;
98     virtual wxFontEncoding GetEncoding() const;
99     virtual const wxNativeFontInfo *GetNativeFontInfo() const;
100 
101     virtual void SetPointSize(int pointSize);
102     virtual void SetPixelSize(const wxSize& pixelSize);
103     virtual void SetFamily(int family);
104     virtual void SetStyle(int style);
105     virtual void SetWeight(int weight);
106     virtual bool SetFaceName(const wxString& faceName);
107     virtual void SetUnderlined(bool underlined);
108     virtual void SetEncoding(wxFontEncoding encoding);
109 
110     virtual bool IsFixedWidth() const;
111 
112     // implementation only from now on
113     // -------------------------------
114 
115     virtual bool IsFree() const;
116     virtual bool RealizeResource();
117     virtual WXHANDLE GetResourceHandle() const;
118     virtual bool FreeResource(bool force = false);
119 
120     // for consistency with other wxMSW classes
121     WXHFONT GetHFONT() const;
122 
123     /*
124        virtual bool UseResource();
125        virtual bool ReleaseResource();
126      */
127 
128 protected:
129     // real font creation function, used in all cases
130     bool DoCreate(int size,
131                   const wxSize& pixelSize,
132                   bool sizeUsingPixels,
133                   int family,
134                   int style,
135                   int weight,
136                   bool underlined = false,
137                   const wxString& face = wxEmptyString,
138                   wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
139 
140     virtual void DoSetNativeFontInfo(const wxNativeFontInfo& info);
141 
142     void Unshare();
143 
144 private:
145     DECLARE_DYNAMIC_CLASS(wxFont)
146 };
147 
148 #endif // _WX_FONT_H_
149