35 lines
743 B
C++
35 lines
743 B
C++
#pragma once
|
|
#include <map>
|
|
|
|
#include "UIElement.h"
|
|
#include "Assets.h"
|
|
#include "Utility.h"
|
|
|
|
namespace nf {
|
|
struct Character {
|
|
unsigned int texID;
|
|
Vec2 size;
|
|
Vec2 bearing;
|
|
unsigned int advance;
|
|
};
|
|
|
|
struct Font {
|
|
std::map<char, Character> m_characters;
|
|
};
|
|
|
|
class Text : public UIElement {
|
|
public:
|
|
Text();
|
|
|
|
void create(const std::string& string, const Vec2& position, const Vec3& color = {1.0, 1.0, 1.0}, unsigned int size = 160, Asset* font = BaseAssets::defaultFont);
|
|
void setText(const std::string& string);
|
|
const char* identity() override;
|
|
void render(Shader* shader, unsigned int windowWidth, unsigned int windowHeight) override;
|
|
|
|
~Text();
|
|
private:
|
|
std::string m_string;
|
|
Font* m_font;
|
|
Vec3 m_color;
|
|
};
|
|
} |