#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, float scale = 1, 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 _shader) override; shared_ptr getShader() const override; const Type & getType() const override; void setVFlip(const VFlipState vFlip) override; void setAtlas(shared_ptr _atlas); shared_ptr getAtlas() const; shared_ptr atlas; LayerSettings settings; std::deque propsBuffer; shared_ptr 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; }; }