stuff-from-scratch/src/rendering/visual_elements/nodes/TextNode.h
2023-01-19 17:37:26 +00:00

55 lines
1.1 KiB
C++

#pragma once
#include "MaterialNode.h"
#include "FontItem.h"
#include "TextData.h"
#include "Bounds.h"
#include "SceneText.h"
#include <memory>
#include <string>
class FontsManager;
class TextNode : public MaterialNode
{
public:
TextNode(const std::string& content, const Transform& transform);
~TextNode();
static std::unique_ptr<TextNode> 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<SceneText> mTextItem;
};
using TextNodetr = std::unique_ptr<TextNode>;