]> git.saurik.com Git - wxWidgets.git/blob - include/wx/mgl/fontutil.h
#undef Yield
[wxWidgets.git] / include / wx / mgl / fontutil.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/nix/fontutil.h
3 // Purpose: font-related helper functions for MGL
4 // Author: Vaclav Slavik
5 // Created: 2001/05/01
6 // RCS-ID: $Id$
7 // Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
8 // Licence: wxWindows license
9 /////////////////////////////////////////////////////////////////////////////
10
11 #ifndef _WX_MGL_FONTUTIL_H_
12 #define _WX_MGL_FONTUTIL_H_
13
14 #ifdef __WXMGL__
15
16 #include "wx/list.h"
17
18 struct font_info_t;
19 struct font_lib_t;
20 struct font_t;
21
22 class wxMGLFontInstance;
23 class wxMGLFontInstanceList;
24 class wxMGLFontLibrary;
25 class wxMGLFontFamily;
26
27 enum
28 {
29 wxFONTFACE_REGULAR = 0,
30 wxFONTFACE_ITALIC = 1,
31 wxFONTFACE_BOLD = 2, // = (regular | bold)
32 wxFONTFACE_BOLD_ITALIC = 3, // = (italic | bold)
33
34 wxFONTFACE_MAX
35 };
36
37 // structure representing particular loaded font instance:
38 class wxMGLFontInstance
39 {
40 public:
41 wxMGLFontInstance(wxMGLFontLibrary *fontLib, float pt, bool slant, bool aa);
42 ~wxMGLFontInstance();
43
44 struct font_t *GetMGLfont_t() const { return m_font; }
45
46 float GetPt() const { return m_pt; }
47 bool GetSlant() const { return m_slant; }
48 bool GetAA() const { return m_aa; }
49
50 private:
51 wxMGLFontLibrary *m_fontLib;
52 font_t *m_font;
53 float m_pt;
54 bool m_slant;
55 bool m_aa;
56 };
57
58 // structure representing loaded font library:
59 class wxMGLFontLibrary
60 {
61 public:
62 wxMGLFontLibrary(const wxString& filename, int type);
63 ~wxMGLFontLibrary();
64
65 wxMGLFontInstance *GetFontInstance(wxFont *font, float scale, bool aa);
66
67 void IncRef();
68 void DecRef();
69
70 struct font_lib_t *GetMGLfont_lib_t() const { return m_fontLib; }
71
72 private:
73 font_lib_t *m_fontLib;
74 int m_type;
75 wxString m_fileName;
76 size_t m_refs;
77 wxMGLFontInstanceList *m_instances;
78 };
79
80 // structure representing native MGL font family
81 class wxMGLFontFamily : public wxObject
82 {
83 public:
84 wxMGLFontFamily(const font_info_t *info);
85 virtual ~wxMGLFontFamily();
86
87 wxString GetName() const { return m_name; }
88 const font_info_t *GetInfo() const { return m_fontInfo; }
89
90 bool HasFace(int type) const;
91 wxMGLFontLibrary *GetLibrary(int type) const
92 { return m_fontLibs[type]; }
93
94 private:
95 wxString m_name;
96 const font_info_t *m_fontInfo;
97 wxMGLFontLibrary *m_fontLibs[wxFONTFACE_MAX];
98 };
99
100 WX_DECLARE_LIST(wxMGLFontFamily, wxMGLFontFamilyList);
101
102 class wxFontsManager
103 {
104 public:
105 wxFontsManager();
106 ~wxFontsManager();
107
108 void AddFamily(const font_info_t *info);
109
110 // return info about font with given name:
111 wxMGLFontFamily *GetFamily(const wxString& name) const;
112 // return list of all families
113 wxMGLFontFamilyList *GetFamilyList() { return m_list; }
114
115 wxMGLFontLibrary *GetFontLibrary(wxFont *font);
116
117 private:
118 wxHashTable *m_hash;
119 wxMGLFontFamilyList *m_list;
120 };
121
122 extern wxFontsManager *wxTheFontsManager;
123
124 #endif
125
126 #endif // _WX_MGL_FONTUTIL_H_