--- --- TGUI: include/TGUI/Backend/Window/Backend.hpp Source File
TGUI  1.x-dev
Loading...
Searching...
No Matches
Backend.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_BACKEND_HPP
26#define TGUI_BACKEND_HPP
27
28#include <TGUI/Font.hpp>
29#include <TGUI/Event.hpp>
30#include <TGUI/Cursor.hpp>
31#include <TGUI/Backend/Font/BackendFont.hpp>
32#include <TGUI/Backend/Font/BackendFontFactory.hpp>
33#include <TGUI/Backend/Renderer/BackendText.hpp>
34#include <TGUI/Backend/Renderer/BackendTexture.hpp>
35#include <TGUI/Backend/Renderer/BackendRenderer.hpp>
36
37#if !TGUI_EXPERIMENTAL_USE_STD_MODULE
38 #include <cstdint>
39 #include <memory>
40 #include <set>
41#endif
42
44
45TGUI_MODULE_EXPORT namespace tgui
46{
47 class Sprite;
48 class Backend;
49 class BackendGui;
50 class BackendRenderer;
51 class BackendFontFactory;
52
57 TGUI_API bool isBackendSet();
58
70 TGUI_API void setBackend(std::shared_ptr<Backend> backend);
71
80 TGUI_API std::shared_ptr<Backend> getBackend();
81
82
86 class TGUI_API Backend
87 {
88 public:
89
93 Backend() = default;
94
96 // The object cannot be copied
98 Backend(const Backend&) = delete;
99
101 // The object cannot be copied
103 Backend& operator=(const Backend&) = delete;
104
108 virtual ~Backend() = default;
109
117 void setDestroyOnLastGuiDetatch(bool destroyOnDetatch);
118
123 virtual void attachGui(BackendGui* gui);
124
129 virtual void detatchGui(BackendGui* gui);
130
135 TGUI_NODISCARD virtual Font createDefaultFont();
136
141 TGUI_NODISCARD std::shared_ptr<BackendFont> createFont();
142
147 TGUI_NODISCARD std::shared_ptr<BackendText> createText();
148
153 TGUI_NODISCARD std::shared_ptr<BackendTexture> createTexture();
154
165 void setFontScale(float scale);
166
174 float getFontScale() const;
175
184 virtual void setMouseCursorStyle(Cursor::Type type, const std::uint8_t* pixels, Vector2u size, Vector2u hotspot) = 0;
185
191 virtual void resetMouseCursorStyle(Cursor::Type type) = 0;
192
199 virtual void setMouseCursor(BackendGui* gui, Cursor::Type type) = 0;
200
201#ifndef TGUI_REMOVE_DEPRECATED_CODE
210 TGUI_DEPRECATED("Use BackendGui::startTextInput instead") virtual void openVirtualKeyboard(const FloatRect& inputRect);
211
219 TGUI_DEPRECATED("Use BackendGui::stopTextInput instead") virtual void closeVirtualKeyboard();
220#endif
221
229 TGUI_NODISCARD virtual bool isKeyboardModifierPressed(Event::KeyModifier modifierKey) = 0;
230
236 virtual void setClipboard(const String& contents);
237
243 TGUI_NODISCARD virtual String getClipboard() const;
244
253 TGUI_NODISCARD virtual std::unique_ptr<std::uint8_t[]> readFileFromAndroidAssets(const String& filename, std::size_t& fileSize) const;
254
259 TGUI_NODISCARD bool hasRenderer() const;
260
269 TGUI_NODISCARD std::shared_ptr<BackendRenderer> getRenderer() const;
270
276 virtual void setRenderer(std::shared_ptr<BackendRenderer> renderer);
277
282 TGUI_NODISCARD bool hasFontBackend() const;
283
292 TGUI_NODISCARD std::shared_ptr<BackendFontFactory> getFontBackend() const;
293
299 virtual void setFontBackend(std::shared_ptr<BackendFontFactory> fontBackend);
300
308 void registerFont(BackendFont* font);
309
317 void unregisterFont(BackendFont* font);
318
326 void registerSvgSprite(Sprite* sprite);
327
335 void unregisterSvgSprite(Sprite* sprite);
336
338 protected:
339
340 bool m_destroyOnLastGuiDetatch = false;
341 String m_clipboardContents;
342 float m_fontScale = 1;
343
344 std::shared_ptr<BackendRenderer> m_renderer;
345 std::shared_ptr<BackendFontFactory> m_fontBackend;
346
347 std::set<BackendGui*> m_guis;
348 std::set<BackendFont*> m_registeredFonts;
349 std::set<Sprite*> m_registeredSvgSprites;
350 };
351
353}
354
356
357#endif // TGUI_BACKEND_HPP
Base class for font implementations that depend on the backend.
Definition BackendFont.hpp:45
Base class for the Gui.
Definition BackendGui.hpp:47
Base class for the backend.
Definition Backend.hpp:87
virtual void setClipboard(const String &contents)
Changes the contents of the clipboard.
TGUI_NODISCARD std::shared_ptr< BackendText > createText()
Creates a new text object.
float getFontScale() const
Returns the scale factor to render text at a higher quality, e.g. to scale for DPI awareness.
TGUI_NODISCARD std::shared_ptr< BackendFontFactory > getFontBackend() const
Returns the font factory.
virtual void setRenderer(std::shared_ptr< BackendRenderer > renderer)
Sets the renderer that the backend should use.
virtual void setMouseCursorStyle(Cursor::Type type, const std::uint8_t *pixels, Vector2u size, Vector2u hotspot)=0
Changes the look of a certain mouse cursor by using a bitmap.
virtual TGUI_NODISCARD Font createDefaultFont()
Creates and returns the default font for all widgets.
virtual TGUI_NODISCARD std::unique_ptr< std::uint8_t[]> readFileFromAndroidAssets(const String &filename, std::size_t &fileSize) const
Uses the AssetManager on Android to read a file and return its contents.
TGUI_NODISCARD std::shared_ptr< BackendFont > createFont()
Creates a new font object.
virtual void setMouseCursor(BackendGui *gui, Cursor::Type type)=0
Changes the mouse cursor when the mouse is on top of the window to which the gui is attached.
virtual void resetMouseCursorStyle(Cursor::Type type)=0
Changes the look of a certain mouse cursor back to the system theme.
TGUI_NODISCARD std::shared_ptr< BackendTexture > createTexture()
Creates a new texture object.
virtual void attachGui(BackendGui *gui)
Informs the backend that a new gui object has been created.
TGUI_NODISCARD std::shared_ptr< BackendRenderer > getRenderer() const
Returns the renderer.
virtual ~Backend()=default
Virtual destructor.
virtual void detatchGui(BackendGui *gui)
Informs the backend that a gui object is being destroyed.
TGUI_NODISCARD bool hasRenderer() const
Checks whether a renderer has been attached to the backend.
virtual void setFontBackend(std::shared_ptr< BackendFontFactory > fontBackend)
Sets the font factory that the backend should use.
virtual TGUI_NODISCARD bool isKeyboardModifierPressed(Event::KeyModifier modifierKey)=0
Checks the state for one of the modifier keys.
void setDestroyOnLastGuiDetatch(bool destroyOnDetatch)
Informs the backend whether it should destroy itself when the last Gui is detached from it.
virtual TGUI_NODISCARD String getClipboard() const
Returns the contents of the clipboard.
void setFontScale(float scale)
Sets the scale factor to render text at a higher quality, e.g. to scale for DPI awareness.
Backend()=default
Default constructor.
TGUI_NODISCARD bool hasFontBackend() const
Checks whether a font factory has been attached to the backend.
Type
List of available cursors.
Definition Cursor.hpp:50
Wrapper around the backend-specific font. All copies of the font will share the same internal font re...
Definition Font.hpp:58
Definition Sprite.hpp:47
Wrapper class to store strings.
Definition String.hpp:96
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:38
TGUI_API void setBackend(std::shared_ptr< Backend > backend)
Changes the global backend.
TGUI_API std::shared_ptr< Backend > getBackend()
Returns the global backend.
TGUI_API bool isBackendSet()
Checks whether the backend differs from a nullptr.
KeyModifier
Modifiers keys.
Definition Event.hpp:157