TGUI 1.13
Loading...
Searching...
No Matches
Text.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2026 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_TEXT_HPP
26#define TGUI_TEXT_HPP
27
28#include <TGUI/Color.hpp>
29#include <TGUI/Font.hpp>
30#include <TGUI/RenderStates.hpp>
31#include <TGUI/TextStyle.hpp>
32#include <TGUI/Vector2.hpp>
33
35
36namespace tgui
37{
38 class BackendText;
39
41
42#if TGUI_COMPILED_WITH_CPP_VER >= 20
43 // Inline is needed here if we want to build a C++20 module
44 inline constexpr unsigned int AutoTextSize = 0xFFFFFFFF;
45#else
46 constexpr unsigned int AutoTextSize = 0xFFFFFFFF;
47#endif
48
52 class TGUI_API Text
53 {
54 public:
61 struct Blueprint
62 {
63 unsigned int characterSize = 0;
64 unsigned int style = 0;
65 Color color;
66 String link;
67 String text;
68 Vector2u gapSize;
69 };
70
76 [[nodiscard]] static float getExtraHorizontalPadding(const Font& font, unsigned int characterSize);
77
83 [[nodiscard]] static float getExtraHorizontalOffset(const Font& font, unsigned int characterSize);
84
88 [[nodiscard]] static float getExtraVerticalPadding(unsigned int characterSize);
89
93 [[nodiscard]] static float getLineHeight(const Font& font, unsigned int characterSize);
94
98 [[nodiscard]] static float getLineWidth(const String& text, const Font& font, unsigned int characterSize, TextStyles textStyle = {});
99
109 [[nodiscard]] static unsigned int findBestTextSize(const Font& font, float height, int fit = 0);
110
122 [[nodiscard]] static String wordWrap(float maxWidth, const String& text, const Font& font, unsigned int textSize, bool bold);
123
133 [[nodiscard]] static std::vector<std::vector<Blueprint>> wordWrap(float maxWidth,
134 const std::vector<std::vector<Blueprint>>& lines,
135 const Font& font);
136
138
139 public:
144
146 // Copy constructor
148 Text(const Text&);
149
151 // Move constructor
153 Text(Text&&) noexcept = default;
154
156 // Overload of copy assignment operator
158 Text& operator=(const Text&);
159
161 // Move assignment operator
163 Text& operator=(Text&&) noexcept = default;
164
170 void setPosition(Vector2f position);
171
177 [[nodiscard]] Vector2f getPosition() const;
178
184 [[nodiscard]] Vector2f getSize() const;
185
191 void setString(const String& string);
192
198 [[nodiscard]] const String& getString() const;
199
205 void setCharacterSize(unsigned int size);
206
212 [[nodiscard]] unsigned int getCharacterSize() const;
213
219 void setColor(Color color);
220
226 [[nodiscard]] Color getColor() const;
227
233 void setOpacity(float opacity);
234
240 [[nodiscard]] float getOpacity() const;
241
247 void setFont(const Font& font);
248
254 [[nodiscard]] Font getFont() const;
255
265 void setStyle(TextStyles style);
266
272 [[nodiscard]] TextStyles getStyle() const;
273
280
286 [[nodiscard]] Color getOutlineColor() const;
287
293 void setOutlineThickness(float thickness);
294
300 [[nodiscard]] float getOutlineThickness() const;
301
313 [[nodiscard]] Vector2f findCharacterPos(std::size_t index) const;
314
320 [[nodiscard]] float getExtraHorizontalPadding() const;
321
327 [[nodiscard]] float getExtraHorizontalOffset() const;
328
332 [[nodiscard]] float getLineHeight() const;
333
337 [[nodiscard]] float getLineWidth() const;
338
343 [[nodiscard]] std::shared_ptr<BackendText> getBackendText() const;
344
346
347 private:
348 std::shared_ptr<BackendText> m_backendText;
349 Vector2f m_position;
350 Font m_font;
351 Color m_color;
352 Color m_outlineColor;
353 float m_opacity = 1;
354 };
355} // namespace tgui
356
357#endif // TGUI_TEXT_HPP
Base class for text implementations that depend on the backend.
Definition BackendText.hpp:41
Wrapper for colors.
Definition Color.hpp:63
Wrapper around the backend-specific font. All copies of the font will share the same internal font re...
Definition Font.hpp:54
Wrapper class to store strings.
Definition String.hpp:94
Wrapper for text styles.
Definition TextStyle.hpp:55
Vector2f getPosition() const
Returns the position of the text.
float getOutlineThickness() const
Returns the text outline thickness.
void setCharacterSize(unsigned int size)
Changes the character size of the text.
Color getColor() const
Returns the text fill color.
Font getFont() const
Returns the font of the text.
void setColor(Color color)
Changes the text fill color.
void setOutlineThickness(float thickness)
Changes the text outline thickness.
void setPosition(Vector2f position)
Sets the position of the text.
static float getExtraHorizontalOffset(const Font &font, unsigned int characterSize)
Returns an extra distance that text should be placed from the side of a widget as padding.
TextStyles getStyle() const
Returns the style of the text.
static float getLineWidth(const String &text, const Font &font, unsigned int characterSize, TextStyles textStyle={})
Returns the width of a single line of text.
Text()
Default constructor.
static float getExtraVerticalPadding(unsigned int characterSize)
Returns the distance that text should be placed from the bottom of the widget as padding.
static float getLineHeight(const Font &font, unsigned int characterSize)
Returns the height of a single line of text.
unsigned int getCharacterSize() const
Returns the character size of the text.
void setString(const String &string)
Changes the text.
static std::vector< std::vector< Blueprint > > wordWrap(float maxWidth, const std::vector< std::vector< Blueprint > > &lines, const Font &font)
static String wordWrap(float maxWidth, const String &text, const Font &font, unsigned int textSize, bool bold)
static float getExtraHorizontalPadding(const Font &font, unsigned int characterSize)
Returns a small distance that text should be placed from the side of a widget as padding.
const String & getString() const
Returns the text.
void setOutlineColor(Color color)
Changes the text outline color.
void setFont(const Font &font)
Changes the font used for the text.
Vector2f findCharacterPos(std::size_t index) const
Return the position of the index-th character.
Color getOutlineColor() const
Returns the text outline color.
Vector2f getSize() const
Returns the size of the text.
static unsigned int findBestTextSize(const Font &font, float height, int fit=0)
Finds the best character size for the text.
float getOpacity() const
Returns the opacity of the text.
void setOpacity(float opacity)
Changes the opacity of the text.
std::shared_ptr< BackendText > getBackendText() const
Returns the internal text.
void setStyle(TextStyles style)
Changes the style of the text.
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:37
Describes a text piece, before turning it into an actual Text object.
Definition Text.hpp:62