--- --- TGUI: include/TGUI/Text.hpp Source File
TGUI  1.x-dev
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
Backend-independent wrapper around the backend-specific text class.
Definition Text.hpp:48
static TGUI_NODISCARD float getLineHeight(const Font &font, unsigned int characterSize)
Returns the height of a single line of text.
static TGUI_NODISCARD std::vector< std::vector< Blueprint > > wordWrap(float maxWidth, const std::vector< std::vector< Blueprint > > &lines, const Font &font)
static TGUI_NODISCARD float getLineWidth(const String &text, const Font &font, unsigned int characterSize, TextStyles textStyle={})
Returns the width of a single line of text.
static TGUI_NODISCARD String wordWrap(float maxWidth, const String &text, const Font &font, unsigned int textSize, bool bold)
Text()
Default constructor.
static TGUI_NODISCARD float getExtraVerticalPadding(unsigned int characterSize)
Returns the distance that text should be placed from the bottom of the widget as padding.
static TGUI_NODISCARD 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 TGUI_NODISCARD 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 TGUI_NODISCARD unsigned int findBestTextSize(const Font &font, float height, int fit=0)
Finds the best character size for the text.
Wrapper for text styles.
Definition TextStyle.hpp:55
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