TGUI  1.6.1
Loading...
Searching...
No Matches
Font.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2024 Bruno Van de Velde (vdv_b@tgui.eu)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages 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 freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#ifndef TGUI_FONT_HPP
26#define TGUI_FONT_HPP
27
28#include <TGUI/String.hpp>
29#include <TGUI/Rect.hpp>
30
31#if !TGUI_EXPERIMENTAL_USE_STD_MODULE
32 #include <cstdint>
33 #include <string>
34 #include <cstddef>
35 #include <memory>
36#endif
37
39
40TGUI_MODULE_EXPORT namespace tgui
41{
42 class BackendFont;
43
47 struct TGUI_API FontGlyph
48 {
49 float advance = 0;
52 };
53
57 class TGUI_API Font
58 {
59 public:
60
65 static void setGlobalFont(const Font& font);
66
71 TGUI_NODISCARD static Font getGlobalFont();
72
76 Font(std::nullptr_t = nullptr) noexcept;
77
83 Font(const String& id);
84
90 Font(const char* id);
91
97 Font(const void* data, std::size_t sizeInBytes);
98
105 Font(std::shared_ptr<BackendFont> backendFont, String id);
106
112 TGUI_NODISCARD const String& getId() const;
113
117 operator bool() const;
118
122 TGUI_NODISCARD bool operator==(std::nullptr_t) const;
123
127 TGUI_NODISCARD bool operator!=(std::nullptr_t) const;
128
132 TGUI_NODISCARD bool operator==(const Font& right) const;
133
137 TGUI_NODISCARD bool operator!=(const Font& right) const;
138
152 TGUI_NODISCARD FontGlyph getGlyph(char32_t codePoint, unsigned int characterSize, bool bold, float outlineThickness = 0) const;
153
168 TGUI_NODISCARD float getKerning(char32_t first, char32_t second, unsigned int characterSize, bool bold = false) const;
169
179 TGUI_NODISCARD float getLineSpacing(unsigned int characterSize) const;
180
188 TGUI_NODISCARD float getFontHeight(unsigned int characterSize) const;
189
199 void setSmooth(bool smooth);
200
208 TGUI_NODISCARD bool isSmooth() const;
209
214 TGUI_NODISCARD std::shared_ptr<BackendFont> getBackendFont() const;
215
217 private:
218
219 std::shared_ptr<BackendFont> m_backendFont;
220 String m_id;
221 };
222
224}
225
227
228#endif // TGUI_FONT_HPP
Base class for font implementations that depend on the backend.
Definition BackendFont.hpp:45
Wrapper around the backend-specific font. All copies of the font will share the same internal font re...
Definition Font.hpp:58
Font(std::nullptr_t=nullptr) noexcept
Default constructor which will set the font to nullptr.
static void setGlobalFont(const Font &font)
Changes the global font that is used for all new widgets.
static Font getGlobalFont()
Returns the global font that is used for all new widgets.
Wrapper class to store strings.
Definition String.hpp:96
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:38
Information about a glyph in the font.
Definition Font.hpp:48
FloatRect bounds
Bounding rectangle of the glyph, in coordinates relative to the baseline.
Definition Font.hpp:50
UIntRect textureRect
Texture coordinates of the glyph inside the font's texture.
Definition Font.hpp:51