ofxVariableLab/src/MsdfLayer.h

47 lines
1.6 KiB
C++

#pragma once
#include "ofMain.h"
#include "ofxMsdfgen.h"
#include "Atlas.h"
#include "Layer.h"
#include "Utils.h"
namespace ofxVariableLab {
class MsdfLayer : public Layer {
public:
void setup(const LayerSettings & settings = LayerSettings()) override;
void update() override;
void draw(glm::vec3 position = glm::vec3(0, 0, 0)) override;
void drawCharacter(const char character,
glm::vec3 position = glm::vec3(0, 0, 0),
glm::vec4 color = glm::vec4(1, 1, 1, 1),
float rotation = 0,
ofxVariableLab::FontVariation fontVariation = ofxVariableLab::FontVariation()) override;
void setProps(const Props & props) override;
const Props & getProps() const override;
void clearPropsBuffer() override;
void setId(const LayerID & id) override;
const LayerID & getId() override;
void setShader(shared_ptr <ofShader> _shader) override;
shared_ptr <ofShader> getShader() const override;
const Type & getType() const override;
void setAtlas(shared_ptr <ofxMsdfgen::Atlas> _atlas);
shared_ptr <ofxMsdfgen::Atlas> getAtlas() const;
shared_ptr <ofxMsdfgen::Atlas> atlas;
LayerSettings settings;
std::deque <Props> propsBuffer;
shared_ptr <ofShader> shader;
/// \brief are props updated but not drawn yet
bool isDirty = true;
/// \brief hashed id, or just counting up
string id = "";
VFlipState vFlip = V_FLIP_UNKNOWN;
private:
Layer::Type type = MSDFGEN;
};
}