font_description.h
1/*
2** ClanLib SDK
3** Copyright (c) 1997-2020 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
34namespace 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
72
77
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
127
130
132 bool get_anti_alias() const;
133
135 bool get_subpixel() const;
136
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)
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
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}
Font description class.
Definition font_description.h:66
void set_average_width(float value=0.0f)
Sets the font average width.
FontStyle get_style() const
Returns the font style.
bool operator==(const FontDescription &other) const
Returns true if the font is identical Line_height is excluded.
FontWeight get_weight() const
Returns the font weight.
FontDescription()
Constructs a font description with default values.
float get_average_width() const
Returns the font average width.
static FontDescription create_null_object()
Create null object.
void set_weight(FontWeight value=FontWeight::normal)
Sets the font weight.
float get_line_height() const
Returns the distance between each line.
void set_orientation(float value)
Sets the font orientation.
bool get_anti_alias() const
Get the font anti-alias setting (defaults to true)
float get_orientation() const
Returns the font orientation.
FontDescription clone() const
virtual ~FontDescription()
void set_height(float value=20.0f)
Sets the font height.
float get_height() const
Returns the font height.
void set_charset(Charset new_charset)
Sets the font charset (defaults to charset_default)
void set_style(FontStyle setting=FontStyle::normal)
Sets the font style.
bool is_null() const
Returns true if this object is invalid.
Definition font_description.h:102
Charset
Definition font_description.h:79
@ charset_greek
Definition font_description.h:86
@ charset_russian
Definition font_description.h:90
@ charset_chinesebig5
Definition font_description.h:83
@ charset_turkish
Definition font_description.h:93
@ charset_ansi
Definition font_description.h:81
@ charset_hangul
Definition font_description.h:87
@ charset_easteurope
Definition font_description.h:84
@ charset_gb2312
Definition font_description.h:85
@ charset_symbol
Definition font_description.h:92
@ charset_thai
Definition font_description.h:98
@ charset_arabic
Definition font_description.h:96
@ charset_baltic
Definition font_description.h:82
@ charset_vietnamese
Definition font_description.h:94
@ charset_oem
Definition font_description.h:89
@ charset_default
Definition font_description.h:80
@ charset_mac
Definition font_description.h:88
@ charset_hebrew
Definition font_description.h:97
@ charset_shiftjis
Definition font_description.h:91
@ charset_johab
Definition font_description.h:95
float get_escapement() const
Returns the font escapement.
Charset get_charset() const
\biref Get the font charset
void set_escapement(float value)
Sets the font escapement.
void set_line_height(float height)
Sets the distance between each line.
std::string get_unique_id() const
Returns an unique string identifying this font description.
void set_subpixel(bool setting=true)
Sets the font subpixel rendering setting (defaults to true)
bool get_subpixel() const
Get the font subpixel rendering setting (defaults to true)
FontDescription & operator=(const FontDescription &copy)
Copy assignment operator (does not copy the description, use clone() if you want that)
void set_anti_alias(bool setting=true)
Sets the font anti-alias setting (defaults to true)
void throw_if_null() const
Throw an exception if this object is invalid.
FontWeight
Definition font_description.h:43
FontStyle
Definition font_description.h:56
Definition clanapp.h:36