add letterSpacing
This commit is contained in:
parent
30c1d7f5a2
commit
dfe0f4872b
3 changed files with 4 additions and 3 deletions
|
@ -165,7 +165,6 @@ void GPUFontAtlasLayerCombo::draw(int width, int height){
|
||||||
|
|
||||||
//antiAliasingWindowSize = ofMap(ofGetMouseX(), 0, ofGetWidth(), 1, 3);
|
//antiAliasingWindowSize = ofMap(ofGetMouseX(), 0, ofGetWidth(), 1, 3);
|
||||||
//enableSuperSamplingAntiAliasing = ofGetMouseY() > ofGetHeight() / 2;
|
//enableSuperSamplingAntiAliasing = ofGetMouseY() > ofGetHeight() / 2;
|
||||||
float superLineHeight = 0;
|
|
||||||
if(font){
|
if(font){
|
||||||
OFX_PROFILER_SCOPE("draw font");
|
OFX_PROFILER_SCOPE("draw font");
|
||||||
fontShaderProgram = fontShader->program;
|
fontShaderProgram = fontShader->program;
|
||||||
|
@ -202,9 +201,7 @@ void GPUFontAtlasLayerCombo::draw(int width, int height){
|
||||||
std::vector <ofVboMesh> outerBoundingBoxes;
|
std::vector <ofVboMesh> outerBoundingBoxes;
|
||||||
for(const auto & layer : layers){
|
for(const auto & layer : layers){
|
||||||
OFX_PROFILER_SCOPE("draw layer");
|
OFX_PROFILER_SCOPE("draw layer");
|
||||||
float lineHeight = font->getLineHeight(layer->getProps().fontSize_px);
|
|
||||||
float ascender = font->getAscender(layer->getProps().fontSize_px);
|
float ascender = font->getAscender(layer->getProps().fontSize_px);
|
||||||
superLineHeight = lineHeight;
|
|
||||||
ofxGPUFont::Font::BoundingBox bb;
|
ofxGPUFont::Font::BoundingBox bb;
|
||||||
std::vector <ofxGPUFont::Font::BoundingBox> bbs;
|
std::vector <ofxGPUFont::Font::BoundingBox> bbs;
|
||||||
float advanceY = 0;
|
float advanceY = 0;
|
||||||
|
|
|
@ -95,6 +95,7 @@ void GPUFontLayer::setProps(const Props & props){
|
||||||
glyphAppearance.charcode = glyphIdentity.charcode;
|
glyphAppearance.charcode = glyphIdentity.charcode;
|
||||||
glyphAppearance.color = vProps.color;
|
glyphAppearance.color = vProps.color;
|
||||||
glyphAppearance.fontSize_px = vProps.fontSize_px;
|
glyphAppearance.fontSize_px = vProps.fontSize_px;
|
||||||
|
glyphAppearance.letterSpacing = vProps.letterSpacing;
|
||||||
for(const auto & fv : vProps.fontVariations){
|
for(const auto & fv : vProps.fontVariations){
|
||||||
glyphIdentity.coords.push_back(
|
glyphIdentity.coords.push_back(
|
||||||
std::move(ofxGPUFont::float2f16dot16(round(fv.value * 0.1) * 10)) // convert to FT
|
std::move(ofxGPUFont::float2f16dot16(round(fv.value * 0.1) * 10)) // convert to FT
|
||||||
|
@ -109,11 +110,13 @@ void GPUFontLayer::setProps(const Props & props){
|
||||||
}
|
}
|
||||||
if(!setAppearanceAlready
|
if(!setAppearanceAlready
|
||||||
&& (lastProps.fontSize_px != props.fontSize_px
|
&& (lastProps.fontSize_px != props.fontSize_px
|
||||||
|
|| lastProps.letterSpacing != props.letterSpacing
|
||||||
|| lastProps.color != props.color)){
|
|| lastProps.color != props.color)){
|
||||||
for(int i = 0; i < props.text.size(); i++){
|
for(int i = 0; i < props.text.size(); i++){
|
||||||
const Props & vProps = propsBufferEmpty ? props : getProps(i * props.letterDelay);
|
const Props & vProps = propsBufferEmpty ? props : getProps(i * props.letterDelay);
|
||||||
ofxGPUFont::GlyphAppearance & glyphAppearance = variationTextAppearance[i];
|
ofxGPUFont::GlyphAppearance & glyphAppearance = variationTextAppearance[i];
|
||||||
glyphAppearance.fontSize_px = vProps.fontSize_px;
|
glyphAppearance.fontSize_px = vProps.fontSize_px;
|
||||||
|
glyphAppearance.letterSpacing = vProps.letterSpacing;
|
||||||
variationTextAppearance[i].color = vProps.color;
|
variationTextAppearance[i].color = vProps.color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ class Layer {
|
||||||
float y = 200;
|
float y = 200;
|
||||||
float rotation = 0;
|
float rotation = 0;
|
||||||
float fontSize_px = 42;
|
float fontSize_px = 42;
|
||||||
|
float letterSpacing = 0;
|
||||||
std::array <float, 4> color = {0, 0, 0, 1};
|
std::array <float, 4> color = {0, 0, 0, 1};
|
||||||
bool mirror_x = false;
|
bool mirror_x = false;
|
||||||
float mirror_x_distance = 0;
|
float mirror_x_distance = 0;
|
||||||
|
|
Loading…
Reference in a new issue