#ifndef SDLPP_HPP_TEXT_RENDERER #define SDLPP_HPP_TEXT_RENDERER #include "sdlpp_common.hpp" #include "sdlpp_rectrenderer.hpp" #include #include namespace SDLPP { class SDLPPSCOPE TextRenderer : public RectangleRender { public: TextRenderer() = delete; TextRenderer( double x, double y, double w, double h, std::shared_ptr< Renderer > &r ); TextRenderer( double x, double y, double w, double h, std::shared_ptr< Renderer > &r, std::shared_ptr< Font > font, const std::string &text, const std::string &color = "FFFFFF", const std::string &outline_color = "000000", double outline_size = -1, int flags = SDLPP_TEXT_CENTER ); void setText( std::shared_ptr< Font > font, const std::string &text, const std::string &color = "FFFFFF", const std::string &outline_color = "000000", double outline_size = -1 ); void setTextColor( std::shared_ptr< Font > font, const std::string &color = "FFFFFF", const std::string &outline_color = "000000", double outline_size = -1 ); void changeText( const std::string &text ); void setFlags( int flags ); virtual void render() override; virtual void updateSizeAndPosition() override; virtual std::shared_ptr< RenderObject > copySelf() override; private: virtual void copyTo( std::shared_ptr< RenderObject > other ) override; void updateDstRect(); void saveFontConfig( std::shared_ptr< Font > font, const std::string &color, const std::string &outline_color, double outline_size ); std::string _text{}; int position_flags = 0; SDL_Rect dst_rect{}; std::shared_ptr< Font > last_font; std::string last_color; std::string last_outline_color; double last_outline_size; }; } // end of namespace SDLPP #endif