add GPUFontLayer
This commit is contained in:
parent
09e2bb63c7
commit
b16046e5b8
2 changed files with 120 additions and 0 deletions
66
src/GPUFontLayer.cpp
Normal file
66
src/GPUFontLayer.cpp
Normal file
|
@ -0,0 +1,66 @@
|
|||
#include "GPUFontLayer.h"
|
||||
#include "Atlas.h"
|
||||
#include "Utils.h"
|
||||
#include "fwd.hpp"
|
||||
#include "ofGraphics.h"
|
||||
#include "ofUtils.h"
|
||||
|
||||
namespace ofxVariableLab {
|
||||
|
||||
void GPUFontLayer::setup(const LayerSettings & settings){
|
||||
this->settings = settings;
|
||||
if(id == ""){
|
||||
id = ofToString(Layer::n_layers);
|
||||
n_layers++;
|
||||
}
|
||||
}
|
||||
|
||||
void GPUFontLayer::update(){
|
||||
if(isDirty){
|
||||
isDirty = false;
|
||||
}
|
||||
}
|
||||
|
||||
void GPUFontLayer::draw(glm::vec3 position){
|
||||
}
|
||||
void GPUFontLayer::drawCharacter(const char character,
|
||||
glm::vec3 position,
|
||||
glm::vec4 color,
|
||||
float rotation,
|
||||
float scale,
|
||||
ofxVariableLab::FontVariation fontVariation){
|
||||
}
|
||||
const Layer::Type & GPUFontLayer::getType() const {
|
||||
return type;
|
||||
}
|
||||
void GPUFontLayer::setVFlip(const VFlipState vFlip){
|
||||
this->vFlip = vFlip;
|
||||
}
|
||||
|
||||
//void GPUFontLayer::setAtlas(shared_ptr <ofxGPUFont::Atlas> _atlas){
|
||||
//atlas = _atlas;
|
||||
//// TODO: this does not seem proper
|
||||
//propsBuffer[0].fontSize_px = atlas->settings.scale;
|
||||
//}
|
||||
//shared_ptr <ofxGPUFont::Atlas> GPUFontLayer::getAtlas() const {
|
||||
//return atlas;
|
||||
//}
|
||||
void GPUFontLayer::setProps(const Props & props){
|
||||
while(propsBuffer.size() > max(0, int(settings.maxBufferSize - 1))){
|
||||
propsBuffer.pop_back();
|
||||
}
|
||||
propsBuffer.push_front(props);
|
||||
}
|
||||
const Layer::Props & GPUFontLayer::getProps() const {
|
||||
return propsBuffer[0];
|
||||
}
|
||||
void GPUFontLayer::clearPropsBuffer(){
|
||||
propsBuffer.clear();
|
||||
}
|
||||
void GPUFontLayer::setId(const LayerID & id){
|
||||
this->id = id;
|
||||
}
|
||||
const LayerID & GPUFontLayer::getId(){
|
||||
return id;
|
||||
}
|
||||
}
|
54
src/GPUFontLayer.h
Normal file
54
src/GPUFontLayer.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
#pragma once
|
||||
|
||||
#include "ofMain.h"
|
||||
#include "ofxGPUFont.h"
|
||||
#include "Atlas.h"
|
||||
#include "Layer.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace ofxVariableLab {
|
||||
|
||||
class GPUFontLayer : 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 <ofShader> _shader) override {
|
||||
ofLogError("GPUFontLayer") << "using OpenGL shaders directly, no ofShader implemented";
|
||||
}
|
||||
shared_ptr <ofShader> getShader() const override {
|
||||
ofLogError("GPUFontLayer") << "using OpenGL shaders directly, no ofShader implemented";
|
||||
return NULL; // evil?
|
||||
}
|
||||
|
||||
const Type & getType() const override;
|
||||
void setVFlip(const VFlipState vFlip) override;
|
||||
|
||||
//void setAtlas(shared_ptr <ofxGPUFont::Atlas> _atlas);
|
||||
//shared_ptr <ofxGPUFont::Atlas> getAtlas() const;
|
||||
|
||||
//shared_ptr <ofxGPUFont::Atlas> atlas;
|
||||
|
||||
LayerSettings settings;
|
||||
std::deque <Props> propsBuffer;
|
||||
/// \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 = GPUFONT;
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue