60 lines
2.5 KiB
C++
60 lines
2.5 KiB
C++
#ifndef SDLPP_HPP_TEXT_RENDERER
|
|
#define SDLPP_HPP_TEXT_RENDERER
|
|
|
|
#include "sdlpp_common.hpp"
|
|
#include "sdlpp_rectrenderer.hpp"
|
|
#include "sdlpp_fontconfiguration.hpp"
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
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 );
|
|
TextRenderer( double x, double y, double w, double h,
|
|
std::shared_ptr< Renderer > &r, const std::string &text,
|
|
std::shared_ptr< FontConfiguration > config,
|
|
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 setText( const std::string &text,
|
|
std::shared_ptr< FontConfiguration > config );
|
|
void setTextColor( std::shared_ptr< Font > font,
|
|
const std::string &color = "FFFFFF",
|
|
const std::string &outline_color = "000000",
|
|
double outline_size = -1 );
|
|
void setTextColor( std::shared_ptr< FontConfiguration > config );
|
|
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;
|
|
std::string getText();
|
|
|
|
private:
|
|
virtual void copyTo( std::shared_ptr< RenderObject > other ) override;
|
|
void updateTexture();
|
|
void updateDstRect();
|
|
void saveFontConfig( std::shared_ptr< Font > font, const std::string &color,
|
|
const std::string &outline_color,
|
|
double outline_size );
|
|
void saveFontConfig( std::shared_ptr< FontConfiguration > config );
|
|
std::string _text{};
|
|
int position_flags = 0;
|
|
SDL_Rect dst_rect{};
|
|
std::shared_ptr< FontConfiguration > _config;
|
|
bool text_change = false;
|
|
};
|
|
} // end of namespace SDLPP
|
|
#endif
|