font_description.h
1 /*
2 ** ClanLib SDK
3 ** Copyright (c) 1997-2016 The ClanLib Team
4 **
5 ** This software is provided 'as-is', without any express or implied
6 ** warranty. In no event will the authors be held liable for any damages
7 ** arising from the use of this software.
8 **
9 ** Permission is granted to anyone to use this software for any purpose,
10 ** including commercial applications, and to alter it and redistribute it
11 ** freely, subject to the following restrictions:
12 **
13 ** 1. The origin of this software must not be misrepresented; you must not
14 ** claim that you wrote the original software. If you use this software
15 ** in a product, an acknowledgment in the product documentation would be
16 ** appreciated but is not required.
17 ** 2. Altered source versions must be plainly marked as such, and must not be
18 ** misrepresented as being the original software.
19 ** 3. This notice may not be removed or altered from any source distribution.
20 **
21 ** Note: Some of the libraries ClanLib may link to may have additional
22 ** requirements or restrictions.
23 **
24 ** File Author(s):
25 **
26 ** Mark Page
27 ** Harry Storbacka
28 */
29 
30 #pragma once
31 
32 #include <memory>
33 
34 namespace clan
35 {
38 
39  class DisplayWindow;
40  class FontDescription_Impl;
41 
42  enum class FontWeight : int
43  {
44  thin = 100,
45  extra_light = 200,
46  light = 300,
47  normal = 400,
48  medium = 500,
49  semi_bold = 600,
50  bold = 700,
51  extra_bold = 800,
52  heavy = 900
53  };
54 
55  enum class FontStyle
56  {
57  normal,
58  italic,
59  oblique // Currently not supported by ClanLib
60  };
61 
66  {
67  public:
70 
71  virtual ~FontDescription();
72 
77 
78  enum Charset
79  {
99  };
100 
102  bool is_null() const { return !impl; }
103  explicit operator bool() const { return bool(impl); }
104 
106  void throw_if_null() const;
107 
109  float get_height() const;
110 
112  float get_line_height() const;
113 
117  float get_average_width() const;
118 
120  float get_escapement() const;
121 
123  float get_orientation() const;
124 
126  FontWeight get_weight() const;
127 
129  FontStyle get_style() const;
130 
132  bool get_anti_alias() const;
133 
135  bool get_subpixel() const;
136 
138  Charset get_charset() const;
139 
142  bool operator==(const FontDescription &other) const;
143 
148  std::string get_unique_id() const;
149 
152 
153  // \brief Copy the entire font description (not just the implementation)
154  FontDescription clone() const;
155 
157  void set_height(float value = 20.0f);
158 
162  void set_average_width(float value = 0.0f);
163 
165  void set_escapement(float value);
166 
168  void set_orientation(float value);
169 
172 
174  void set_line_height(float height);
175 
177  void set_style(FontStyle setting = FontStyle::normal);
178 
180  void set_anti_alias(bool setting = true);
181 
183  void set_subpixel(bool setting = true);
184 
188  void set_charset(Charset new_charset);
189 
190  private:
191  std::shared_ptr<FontDescription_Impl> impl;
192  };
193 
195 }
Definition: clanapp.h:35
Definition: font_description.h:87
Font description class.
Definition: font_description.h:65
Definition: font_description.h:88
FontWeight get_weight() const
Returns the font weight.
bool operator==(const FontDescription &other) const
Returns true if the font is identical Line_height is excluded.
void set_orientation(float value)
Sets the font orientation.
void set_anti_alias(bool setting=true)
Sets the font anti-alias setting (defaults to true)
Definition: font_description.h:90
Definition: font_description.h:93
Definition: font_description.h:91
Definition: font_description.h:86
FontStyle get_style() const
Returns the font style.
float get_line_height() const
Returns the distance between each line.
Definition: font_description.h:84
Definition: font_description.h:81
FontDescription clone() const
FontWeight
Definition: font_description.h:42
Definition: font_description.h:98
Definition: font_description.h:95
Definition: font_description.h:83
void set_weight(FontWeight value=FontWeight::normal)
Sets the font weight.
std::string get_unique_id() const
Returns an unique string identifying this font description.
Definition: font_description.h:85
Definition: font_description.h:92
FontDescription()
Constructs a font description with default values.
bool get_anti_alias() const
Get the font anti-alias setting (defaults to true)
bool get_subpixel() const
Get the font subpixel rendering setting (defaults to true)
float get_average_width() const
Returns the font average width.
Definition: font_description.h:96
FontStyle
Definition: font_description.h:55
void set_subpixel(bool setting=true)
Sets the font subpixel rendering setting (defaults to true)
void set_escapement(float value)
Sets the font escapement.
Definition: font_description.h:94
FontDescription & operator=(const FontDescription &copy)
Copy assignment operator (does not copy the description, use clone() if you want that) ...
float get_escapement() const
Returns the font escapement.
Definition: font_description.h:82
void set_charset(Charset new_charset)
Sets the font charset (defaults to charset_default)
float get_height() const
Returns the font height.
void set_line_height(float height)
Sets the distance between each line.
void set_height(float value=20.0f)
Sets the font height.
void set_style(FontStyle setting=FontStyle::normal)
Sets the font style.
Definition: font_description.h:80
float get_orientation() const
Returns the font orientation.
virtual ~FontDescription()
Definition: font_description.h:97
static FontDescription create_null_object()
Create null object.
Charset
Definition: font_description.h:78
Charset get_charset() const
Get the font charset
bool is_null() const
Returns true if this object is invalid.
Definition: font_description.h:102
Definition: font_description.h:89
void set_average_width(float value=0.0f)
Sets the font average width.
void throw_if_null() const
Throw an exception if this object is invalid.