lxgui
Loading...
Searching...
No Matches
gui_sfml_renderer.hpp
1#ifndef LXGUI_GUI_SFML_RENDERER_HPP
2#define LXGUI_GUI_SFML_RENDERER_HPP
3
4#include "lxgui/gui_renderer.hpp"
5#include "lxgui/impl/gui_sfml_render_target.hpp"
6#include "lxgui/utils.hpp"
7
8#include <memory>
9
12namespace sf {
13
14class RenderWindow;
15class RenderTarget;
16
17} // namespace sf
21namespace lxgui::gui::sfml {
22
24class renderer final : public gui::renderer {
25public:
27 explicit renderer(sf::RenderWindow& window);
28
33 std::string get_name() const override;
34
42 matrix4f get_view() const override;
43
48 std::size_t get_texture_max_size() const override;
49
56 bool is_texture_atlas_supported() const override;
57
62 bool is_texture_vertex_color_supported() const override;
63
71 std::shared_ptr<gui::material> create_material(
72 const vector2ui& dimensions,
73 const color32* pixel_data,
75
82 std::shared_ptr<gui::material>
83 create_material(std::shared_ptr<gui::render_target> target, const bounds2f& location) override;
84
90 std::shared_ptr<gui::render_target> create_render_target(
91 const vector2ui& dimensions, material::filter filt = material::filter::none) override;
92
97 bool is_vertex_cache_supported() const override;
98
104 std::shared_ptr<gui::vertex_cache> create_vertex_cache(gui::vertex_cache::type type) override;
105
110 void notify_window_resized(const vector2ui& new_dimensions) override;
111
112protected:
120 std::shared_ptr<gui::material>
121 create_material_(const std::string& file_name, material::filter filt) override;
122
128 std::shared_ptr<gui::atlas> create_atlas_(material::filter filt) override;
129
140 std::shared_ptr<gui::font> create_font_(
141 const std::string& font_file,
142 std::size_t size,
143 std::size_t outline,
144 const std::vector<code_point_range>& code_points,
145 char32_t default_code_point) override;
146
151 void begin_(std::shared_ptr<gui::render_target> target) override;
152
154 void end_() override;
155
172 void set_view_(const matrix4f& view_matrix) override;
173
191 const gui::material* mat, const std::vector<std::array<vertex, 4>>& quad_list) override;
192
211 const gui::material* mat,
212 const gui::vertex_cache& cache,
213 const matrix4f& model_transform) override;
214
215private:
216 sf::RenderWindow& window_;
217 vector2ui window_dimensions_;
218
219 std::shared_ptr<gui::sfml::render_target> current_target_;
220 sf::RenderTarget* current_sfml_target_ = nullptr;
221};
222
223} // namespace lxgui::gui::sfml
224
225#endif
A class that holds rendering data.
Abstract type for implementation specific management.
SFML implementation of rendering.
matrix4f get_view() const override
Returns the current view matrix to use when rendering (viewport).
std::string get_name() const override
Returns a human-readable name for this renderer.
renderer(sf::RenderWindow &window)
Constructor.
std::shared_ptr< gui::vertex_cache > create_vertex_cache(gui::vertex_cache::type type) override
Creates a new empty vertex cache.
std::size_t get_texture_max_size() const override
Returns the maximum texture width/height (in pixels).
void begin_(std::shared_ptr< gui::render_target > target) override
Begins rendering on a particular render target.
void end_() override
Ends rendering.
std::shared_ptr< gui::material > create_material(const vector2ui &dimensions, const color32 *pixel_data, material::filter filt=material::filter::none) override
Creates a new material from arbitrary pixel data.
bool is_texture_atlas_supported() const override
Checks if the renderer supports texture atlases natively.
void render_cache_(const gui::material *mat, const gui::vertex_cache &cache, const matrix4f &model_transform) override
Renders a vertex cache.
bool is_texture_vertex_color_supported() const override
Checks if the renderer supports setting colors for each vertex of a textured quad.
std::shared_ptr< gui::atlas > create_atlas_(material::filter filt) override
Creates a new atlas with a given texture filter mode.
std::shared_ptr< gui::render_target > create_render_target(const vector2ui &dimensions, material::filter filt=material::filter::none) override
Creates a new render target.
void notify_window_resized(const vector2ui &new_dimensions) override
Notifies the renderer that the render window has been resized.
std::shared_ptr< gui::material > create_material_(const std::string &file_name, material::filter filt) override
Creates a new material from a texture file.
bool is_vertex_cache_supported() const override
Checks if the renderer supports vertex caches.
void set_view_(const matrix4f &view_matrix) override
Sets the view matrix to use when rendering (viewport).
void render_quads_(const gui::material *mat, const std::vector< std::array< vertex, 4 > > &quad_list) override
Renders a set of quads.
std::shared_ptr< gui::material > create_material(std::shared_ptr< gui::render_target > target, const bounds2f &location) override
Creates a new material from a portion of a render target.
std::shared_ptr< gui::font > create_font_(const std::string &font_file, std::size_t size, std::size_t outline, const std::vector< code_point_range > &code_points, char32_t default_code_point) override
Creates a new font.
An object representing cached vertex data on the GPU.
type
The type of vertex data contained in a vertex_cache.
Holds a single color (byte RGBA, 32 bits)
Definition gui_color.hpp:76
A 4x4 matrix, used for coordinate transformations.