diff --git a/sdlpp/sdlpp_textrenderer.cpp b/sdlpp/sdlpp_textrenderer.cpp index 30abd31..c611686 100644 --- a/sdlpp/sdlpp_textrenderer.cpp +++ b/sdlpp/sdlpp_textrenderer.cpp @@ -58,9 +58,13 @@ void TextRenderer::updateSizeAndPosition() { updateDstRect(); } std::shared_ptr< RenderObject > TextRenderer::copySelf() { - // TODO ACTUALLY copy, don't just copy pointers to textures and whatnot, - // create new textures!!! - return std::make_shared< TextRenderer >( *this ); + auto ret = std::make_shared< TextRenderer >( *this ); + copyTo(ret); + return ret; +} + +void TextRenderer::copyTo(std::shared_ptr other) { + RectangleRender::copyTo(other); } void TextRenderer::updateDstRect() { diff --git a/sdlpp/sdlpp_textrenderer.hpp b/sdlpp/sdlpp_textrenderer.hpp index b4ed2ea..7f33c70 100644 --- a/sdlpp/sdlpp_textrenderer.hpp +++ b/sdlpp/sdlpp_textrenderer.hpp @@ -25,6 +25,7 @@ public: void setTextColor( Font &font, const std::string &color = "FFFFFF", const std::string &outline_color = "000000", double outline_size = -1 ); + // TODO maybe store Font and actually update texture here void changeText( const std::string &text ); void setFlags( int flags ); virtual void render() override; @@ -32,6 +33,7 @@ public: virtual std::shared_ptr< RenderObject > copySelf() override; private: + virtual void copyTo(std::shared_ptr other) override; void updateDstRect(); std::string _text{}; int position_flags = 0;