#pragma once #include "../GuiComponent.h" #include <functional> #include "../resources/Font.h" #include "NinePatchComponent.h" class ButtonComponent : public GuiComponent { public: ButtonComponent(Window* window); void setPressedFunc(std::function<void()> f); bool input(InputConfig* config, Input input) override; void render(const Eigen::Affine3f& parentTrans) override; void setText(const std::string& text, const std::string& helpText, unsigned int focusedTextColor, unsigned int unfocusedTextColor = 0x555555FF); void onSizeChanged() override; void onFocusGained() override; void onFocusLost() override; virtual std::vector<HelpPrompt> getHelpPrompts() override; private: std::shared_ptr<Font> getFont(); std::function<void()> mPressedFunc; bool mFocused; unsigned int mTextColorFocused; unsigned int mTextColorUnfocused; int mTextPulseTime; unsigned int getCurTextColor() const; std::string mText; std::string mHelpText; std::unique_ptr<TextCache> mTextCache; NinePatchComponent mBox; };