TGUI  1.6.1
Loading...
Searching...
No Matches
Text.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_TEXT_HPP
26#define TGUI_TEXT_HPP
27
28#include <TGUI/Font.hpp>
29#include <TGUI/Color.hpp>
30#include <TGUI/Vector2.hpp>
31#include <TGUI/TextStyle.hpp>
32#include <TGUI/RenderStates.hpp>
33
35
36TGUI_MODULE_EXPORT namespace tgui
37{
38 class BackendText;
39
41
42 constexpr unsigned int AutoTextSize = 0xFFFFFFFF;
43
47 class TGUI_API Text
48 {
49 public:
50
57 struct Blueprint
58 {
59 unsigned int characterSize;
60 unsigned int style;
61 Color color;
62 String text;
63 Vector2u gapSize;
64 };
65
71 TGUI_NODISCARD static float getExtraHorizontalPadding(const Font& font, unsigned int characterSize);
72
78 TGUI_NODISCARD static float getExtraHorizontalOffset(const Font& font, unsigned int characterSize);
79
83 TGUI_NODISCARD static float getExtraVerticalPadding(unsigned int characterSize);
84
88 TGUI_NODISCARD static float getLineHeight(const Font& font, unsigned int characterSize);
89
93 TGUI_NODISCARD static float getLineWidth(const String &text, const Font& font, unsigned int characterSize, TextStyles textStyle = {});
94
104 TGUI_NODISCARD static unsigned int findBestTextSize(const Font& font, float height, int fit = 0);
105
117 TGUI_NODISCARD static String wordWrap(float maxWidth, const String& text, const Font& font, unsigned int textSize, bool bold);
118
128 TGUI_NODISCARD static std::vector<std::vector<Blueprint>> wordWrap(float maxWidth, const std::vector<std::vector<Blueprint>>& lines, const Font& font);
129
131 public:
132
137
139 // Copy constructor
141 Text(const Text&);
142
144 // Move constructor
146 Text(Text&&) noexcept = default;
147
149 // Overload of copy assignment operator
151 Text& operator=(const Text&);
152
154 // Move assignment operator
156 Text& operator=(Text&&) noexcept = default;
157
163 void setPosition(Vector2f position);
164
170 TGUI_NODISCARD Vector2f getPosition() const;
171
177 TGUI_NODISCARD Vector2f getSize() const;
178
184 void setString(const String& string);
185
191 TGUI_NODISCARD const String& getString() const;
192
198 void setCharacterSize(unsigned int size);
199
205 TGUI_NODISCARD unsigned int getCharacterSize() const;
206
212 void setColor(Color color);
213
219 TGUI_NODISCARD Color getColor() const;
220
226 void setOpacity(float opacity);
227
233 TGUI_NODISCARD float getOpacity() const;
234
240 void setFont(const Font& font);
241
247 TGUI_NODISCARD Font getFont() const;
248
258 void setStyle(TextStyles style);
259
265 TGUI_NODISCARD TextStyles getStyle() const;
266
272 void setOutlineColor(Color color);
273
279 TGUI_NODISCARD Color getOutlineColor() const;
280
286 void setOutlineThickness(float thickness);
287
293 TGUI_NODISCARD float getOutlineThickness() const;
294
306 TGUI_NODISCARD Vector2f findCharacterPos(std::size_t index) const;
307
313 TGUI_NODISCARD float getExtraHorizontalPadding() const;
314
320 TGUI_NODISCARD float getExtraHorizontalOffset() const;
321
325 TGUI_NODISCARD float getLineHeight() const;
326
330 TGUI_NODISCARD float getLineWidth() const;
331
336 TGUI_NODISCARD std::shared_ptr<BackendText> getBackendText() const;
337
339 private:
340
341 std::shared_ptr<BackendText> m_backendText;
342 Vector2f m_position;
343 Font m_font;
344 Color m_color;
345 Color m_outlineColor;
346 float m_opacity = 1;
347 };
348
350}
351
353
354#endif // TGUI_TEXT_HPP
Base class for text implementations that depend on the backend.
Definition BackendText.hpp:41
Wrapper for colors.
Definition Color.hpp:73
Wrapper around the backend-specific font. All copies of the font will share the same internal font re...
Definition Font.hpp:58
Wrapper class to store strings.
Definition String.hpp:96
Wrapper for text styles.
Definition TextStyle.hpp:55
Backend-independent wrapper around the backend-specific text class.
Definition Text.hpp:48
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.
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.
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.
static unsigned int findBestTextSize(const Font &font, float height, int fit=0)
Finds the best character size for the text.
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:38
Describes a text piece, before turning it into an actual Text object.
Definition Text.hpp:58