#ifndef _TEXTCOMPONENT_H_ #define _TEXTCOMPONENT_H_ #include "../GuiComponent.h" #include "../Font.h" class TextComponent : public GuiComponent { public: TextComponent(Window* window); TextComponent(Window* window, const std::string& text, std::shared_ptr font, Eigen::Vector3f pos, Eigen::Vector2f size); void setFont(std::shared_ptr font); void onSizeChanged() override; void setText(const std::string& text); void setColor(unsigned int color); void setCentered(bool center); //Default is uncentered. void render(const Eigen::Affine3f& parentTrans) override; std::string getValue() const override; void setValue(const std::string& value) override; private: std::shared_ptr getFont() const; void calculateExtent(); void onTextChanged(); unsigned int mColor; std::shared_ptr mFont; Eigen::Matrix mAutoCalcExtent; std::string mText; std::unique_ptr mTextCache; bool mCentered; }; #endif