#pragma once #include "MaterialNode.h" #include "FontItem.h" #include "TextData.h" #include "Bounds.h" #include "SceneText.h" #include #include class FontsManager; class TextNode : public MaterialNode { public: TextNode(const std::string& content, const Transform& transform); ~TextNode(); static std::unique_ptr Create(const std::string& content, const Transform& transform); std::string getContent() const; std::string getFontLabel() const; SceneItem* getSceneItem(std::size_t idx) const override; std::size_t getNumSceneItems() const override; double getWidth() const; double getHeight() const; void setWidth(double width); void setHeight(double height); void setContent(const std::string& content); void setFont(const FontItem& font); void update(SceneInfo* sceneInfo) override; private: void updateLines(FontsManager* fontsManager); TextData mTextData; bool mContentIsDirty{true}; bool mLinesAreDirty{true}; double mWidth{1}; double mHeight{1}; std::unique_ptr mTextItem; }; using TextNodetr = std::unique_ptr;