26#ifndef TGUI_BACKEND_FONT_SDL_TTF_HPP
27#define TGUI_BACKEND_FONT_SDL_TTF_HPP
29#include <TGUI/Backend/Font/BackendFont.hpp>
31#include <unordered_map>
58 virtual bool loadFromMemory(std::unique_ptr<std::uint8_t[]> data, std::size_t sizeInBytes)
override;
69 bool hasGlyph(char32_t codePoint)
const override;
85 virtual FontGlyph getGlyph(char32_t codePoint,
unsigned int characterSize,
bool bold,
float outlineThickness = 0)
override;
102 virtual float getKerning(char32_t first, char32_t second,
unsigned int characterSize,
bool bold)
override;
103#ifndef TGUI_REMOVE_DEPRECATED_CODE
151 std::shared_ptr<BackendTexture>
getTexture(
unsigned int characterSize)
override;
172 TTF_Font* getInternalFont(
unsigned int characterSize);
175#ifndef TGUI_REMOVE_DEPRECATED_CODE
180 TGUI_DEPRECATED(
"loadInternalFont should no longer be accessed!") TTF_Font* loadInternalFont(
unsigned int characterSize) const;
190 std::pair<int, int> getUnderlineInfo(
unsigned int characterSize);
196 IntRect findAvailableGlyphRect(
unsigned int width,
unsigned int height);
204 Row(
unsigned int rowTop,
unsigned int rowHeight) : width(0), top(rowTop), height(rowHeight) {}
211 std::unique_ptr<std::uint8_t[]> m_fileContents;
212 std::size_t m_fileSize = 0;
215 std::unordered_map<unsigned int, TTF_Font*> m_fonts;
216 std::unordered_map<unsigned int, bool> m_lastBoldFlag;
217 std::unordered_map<unsigned int, float> m_lastOutlineThickness;
219 std::unordered_map<unsigned int, std::pair<int, int>> m_cachedUnderlineInfo;
221 std::unordered_map<std::uint64_t, FontGlyph> m_glyphs;
222 unsigned int m_nextRow = 3;
223 std::vector<Row> m_rows;
225 std::unique_ptr<std::uint8_t[]> m_pixels;
226 std::shared_ptr<BackendTexture> m_texture;
227 unsigned int m_textureSize = 0;
228 bool m_textureUpToDate =
false;
233#ifndef TGUI_REMOVE_DEPRECATED_CODE
234 using BackendFontSDL TGUI_DEPRECATED(
"BackendFontSDL was renamed to BackendFontSDLttf") = BackendFontSDLttf;
Font implementations that uses SDL_ttf to load glyphs.
Definition: BackendFontSDLttf.hpp:41
float getUnderlinePosition(unsigned int characterSize) override
Get the position of the underline.
float getUnderlineThickness(unsigned int characterSize) override
Get the thickness of the underline.
virtual float getLineSpacing(unsigned int characterSize) override
Returns the line spacing.
std::shared_ptr< BackendTexture > getTexture(unsigned int characterSize) override
Returns the texture that is used to store glyphs of the given character size.
virtual bool loadFromMemory(std::unique_ptr< std::uint8_t[]> data, std::size_t sizeInBytes) override
Loads a font from memory.
void setSmooth(bool smooth) override
Enable or disable the smooth filter.
virtual float getKerning(char32_t first, char32_t second, unsigned int characterSize, bool bold) override
Returns the kerning offset of two glyphs.
virtual FontGlyph getGlyph(char32_t codePoint, unsigned int characterSize, bool bold, float outlineThickness=0) override
Retrieve a glyph of the font.
bool hasGlyph(char32_t codePoint) const override
Returns whether a font contains a certain glyph.
~BackendFontSDLttf()
Destructor that cleans up the SDL resources.
Base class for font implementations that depend on the backend.
Definition: BackendFont.hpp:43
virtual bool loadFromMemory(const void *data, std::size_t sizeInBytes)
Loads a font from memory.
virtual float getKerning(char32_t first, char32_t second, unsigned int characterSize)
Returns the kerning offset of two glyphs.
Definition: BackendFont.hpp:129
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:36
Information about a glyph in the font.
Definition: Font.hpp:47