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
21class WXDLLEXPORT wxFont : public wxFontBase
22{
23public:
24    // ctors and such
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
128protected:
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
144private:
145    DECLARE_DYNAMIC_CLASS(wxFont)
146};
147
148#endif // _WX_FONT_H_
149