#pragma once #include "node_border.h" #include "node_text.h" #include "shape.h" class NodeTextInput : public NodeBorder { float timer = 0; public: enum class TextAlign { Begin, Center, End, }; TextMesh m_text_mesh; std::string m_text; std::string m_font = "arial"; glm::vec4 m_color{ 1, 1, 1, 1 }; int m_font_size = 11; kFont font_id; bool m_multiline = false; bool m_cursor_visible = false; glm::vec2 m_off; TextAlign m_text_align_v = TextAlign::Center; TextAlign m_text_align_h = TextAlign::Begin; std::function on_return; virtual Node* clone_instantiate() const override; virtual void clone_copy(Node* dest) const override; virtual void on_tick(float dt) override; virtual kEventResult handle_event(Event* e) override; virtual void destroy() override; virtual void parse_attributes(kAttribute ka, const tinyxml2::XMLAttribute* attr) override; virtual void draw() override; virtual void create() override; virtual void handle_resize(glm::vec2 old_size, glm::vec2 new_size, float zoom) override; void set_text(const std::string& s); void set_text_format(const char* fmt, ...); void update_layout(); };