slight refactor
This commit is contained in:
parent
e1557285de
commit
470b831c61
9 changed files with 45 additions and 41 deletions
|
@ -148,8 +148,8 @@ void ofApp::update(){
|
|||
float animationSpeed = ofMap(sin(ofGetElapsedTimef() * 0.01), -1, 1, 0.0, 2);
|
||||
float threshold = 5.0;
|
||||
for(int i = 0; i < fontVariationAxes.size(); i++){
|
||||
Font::FontVariationAxis & axis = fontVariationAxes[i];
|
||||
Font::FontVariationAxisParameters & axisParams = fontVariationAxesParameters[i];
|
||||
ofxGPUFont::Font::FontVariationAxis & axis = fontVariationAxes[i];
|
||||
ofxGPUFont::Font::FontVariationAxisParameters & axisParams = fontVariationAxesParameters[i];
|
||||
double newValue = ofMap(sin(ofGetElapsedTimef() * animationSpeed),
|
||||
-1, 1,
|
||||
axisParams.minValue, axisParams.maxValue);
|
||||
|
|
|
@ -2,39 +2,7 @@
|
|||
|
||||
#include "ofMain.h"
|
||||
#include "ofxGPUFont.h"
|
||||
#include "gpufont/font.hpp"
|
||||
#include "gpufont/shader_catalog.hpp"
|
||||
|
||||
static std::unique_ptr <Font> loadFont(FT_Library & library, const std::string & filename, float worldSize = 1.0f, bool hinting = false){
|
||||
std::string error;
|
||||
FT_Face face = Font::loadFace(library, filename, error);
|
||||
if(error != ""){
|
||||
std::cerr << "[font] failed to load " << filename << ": " << error << std::endl;
|
||||
return std::unique_ptr <Font>{};
|
||||
}
|
||||
|
||||
return std::make_unique <Font>(face, worldSize, hinting);
|
||||
}
|
||||
|
||||
static void tryUpdateMainFont(FT_Library & library,
|
||||
const std::string & filename,
|
||||
const string & mainText,
|
||||
unique_ptr <Font> & mainFont,
|
||||
Font::BoundingBox & bb){
|
||||
{
|
||||
auto font = loadFont(library, filename, 0.05f);
|
||||
if(!font){
|
||||
return;
|
||||
}
|
||||
|
||||
font->dilation = 0.1f;
|
||||
|
||||
font->prepareGlyphsForText(mainText);
|
||||
|
||||
mainFont = std::move(font);
|
||||
bb = mainFont->measure(0, 0, mainText);
|
||||
}
|
||||
}
|
||||
class ofApp : public ofBaseApp {
|
||||
|
||||
public:
|
||||
|
@ -71,7 +39,7 @@ class ofApp : public ofBaseApp {
|
|||
|
||||
void exit();
|
||||
|
||||
unique_ptr <Font> font;
|
||||
unique_ptr <ofxGPUFont::Font> font;
|
||||
FT_Library library;
|
||||
|
||||
// Empty VAO used when the vertex shader has no input and only uses gl_VertexID,
|
||||
|
@ -82,7 +50,7 @@ class ofApp : public ofBaseApp {
|
|||
//std::shared_ptr <ShaderCatalog::Entry> backgroundShader;
|
||||
std::shared_ptr <ShaderCatalog::Entry> fontShader;
|
||||
|
||||
Font::BoundingBox bb;
|
||||
ofxGPUFont::Font::BoundingBox bb;
|
||||
|
||||
Transform transform;
|
||||
|
||||
|
@ -152,7 +120,7 @@ class ofApp : public ofBaseApp {
|
|||
"data/celines-fonts/Version-3-var.ttf"
|
||||
};
|
||||
|
||||
std::vector <Font::FontVariationAxisParameters> fontVariationAxesParameters;
|
||||
std::vector <Font::FontVariationAxis> fontVariationAxes;
|
||||
std::vector <ofxGPUFont::Font::FontVariationAxisParameters> fontVariationAxesParameters;
|
||||
std::vector <ofxGPUFont::Font::FontVariationAxis> fontVariationAxes;
|
||||
|
||||
};
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#pragma once
|
||||
// Note: See "main.cpp" for headers.
|
||||
// This file was extracted to improve the organization of the code,
|
||||
// but it is still compiled in the "main.cpp" translation unit,
|
||||
|
@ -17,6 +18,8 @@
|
|||
#define F16DOT16_TO_DOUBLE(x) (1 / 65536. * double(x))
|
||||
#define DOUBLE_TO_F16DOT16(x) FT_Fixed(65536. * x)
|
||||
|
||||
namespace ofxGPUFont {
|
||||
|
||||
inline int32_t calculateUpperPowerOfTwo(int32_t v){
|
||||
v--;
|
||||
v |= v >> 1;
|
||||
|
@ -32,7 +35,6 @@ inline bool isPowerOfTwo(int i){
|
|||
return (i & (i - 1)) == 0;
|
||||
}
|
||||
|
||||
|
||||
class Font {
|
||||
struct Glyph {
|
||||
FT_UInt index;
|
||||
|
@ -318,7 +320,6 @@ class Font {
|
|||
}
|
||||
|
||||
void prepareGlyphsForText(const std::string & text, bool forceChange = false){
|
||||
// TODO: do not duplicate glyphs
|
||||
bool changed = false;
|
||||
|
||||
if(forceChange){
|
||||
|
@ -916,3 +917,35 @@ class Font {
|
|||
// anti-aliasing. Value is relative to emSize.
|
||||
float dilation = 0;
|
||||
};
|
||||
|
||||
static std::unique_ptr <Font> loadFont(FT_Library & library, const std::string & filename, float worldSize = 1.0f, bool hinting = false){
|
||||
std::string error;
|
||||
FT_Face face = Font::loadFace(library, filename, error);
|
||||
if(error != ""){
|
||||
std::cerr << "[font] failed to load " << filename << ": " << error << std::endl;
|
||||
return std::unique_ptr <Font>{};
|
||||
}
|
||||
|
||||
return std::make_unique <Font>(face, worldSize, hinting);
|
||||
}
|
||||
|
||||
static void tryUpdateMainFont(FT_Library & library,
|
||||
const std::string & filename,
|
||||
const string & mainText,
|
||||
unique_ptr <Font> & mainFont,
|
||||
Font::BoundingBox & bb){
|
||||
{
|
||||
auto font = loadFont(library, filename, 0.05f);
|
||||
if(!font){
|
||||
return;
|
||||
}
|
||||
|
||||
font->dilation = 0.1f;
|
||||
|
||||
font->prepareGlyphsForText(mainText);
|
||||
|
||||
mainFont = std::move(font);
|
||||
bb = mainFont->measure(0, 0, mainText);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1 +1,4 @@
|
|||
#pragma one
|
||||
#pragma once
|
||||
|
||||
#include "gpufont/font.hpp"
|
||||
#include "gpufont/shader_catalog.hpp"
|
||||
|
|
Loading…
Reference in a new issue