Simple GUI Library
text.cpp
Go to the documentation of this file.
1/**
2 * @author Nikita Mochalov (github.com/tralf-strues)
3 * @file text.cpp
4 * @date 2021-11-08
5 *
6 * @copyright Copyright (c) 2021
7 */
8
9#include "sml/math/rectangle.h"
10#include "scene/shapes/text.h"
12
13namespace Sgl
14{
15 Text::Text(const Sml::Font& font, const char* string, Sml::Color color) : m_Text(font, string, color) {}
16 Text::Text(const char* string, Sml::Color color) : Text(*DefaultSkins::g_DefaultFont, string, color) {}
17
18 void Text::render(const Sml::Rectangle<int32_t>& targetRegion)
19 {
20 m_Text.render(targetRegion.pos + m_LayoutBounds.pos);
21 }
22
23 void Text::prerender()
24 {
25 if (getStr() != nullptr)
26 {
27 m_Text.load();
28 }
29 }
30
31 const Sml::Font& Text::getFont() const { return m_Text.getFont(); }
32 Sml::Color Text::getColor() const { return m_Text.getColor(); }
33 const char* Text::getStr() const { return m_Text.getStr(); }
34 size_t Text::getWidth() const { return m_Text.getWidth(); }
35 size_t Text::getHeight() const { return m_Text.getHeight(); }
36 size_t Text::getWrapWidth() const { return m_Text.getWrapWidth(); }
37
38 void Text::setFont(const Sml::Font& font) { m_Text.setFont(font); }
39 void Text::setColor(Sml::Color color) { m_Text.setColor(color); }
40 void Text::setString(const char* str) { m_Text.setString(str); }
41 void Text::setWrapWidth(size_t wrapWidth) { m_Text.setWrapWidth(wrapWidth); }
42
43 int32_t Text::computePrefWidth(int32_t height) const
44 {
45 if (getStr() == nullptr) { return 0; }
46
47 return m_Text.estimateTextDimensions(getStr()).x;
48 }
49
50 int32_t Text::computePrefHeight(int32_t width) const
51 {
52 if (getStr() == nullptr) { return 0; }
53
54 return m_Text.estimateTextDimensions(getStr()).y;
55 }
56}