summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/graphics/text.cpp10
-rw-r--r--src/graphics/text.h8
-rw-r--r--src/ui.cpp2
3 files changed, 12 insertions, 8 deletions
diff --git a/src/graphics/text.cpp b/src/graphics/text.cpp
index 7b135d6..51b71ae 100644
--- a/src/graphics/text.cpp
+++ b/src/graphics/text.cpp
@@ -20,24 +20,26 @@ void Text<TextureFont>::arrange(TextureFont &font){
if(text_[i] == '\n') continue;
}
+ // Position the character in the text
vertices_[4*i+0].position = sf::Vector2f(
col*glyph.advance + glyph.bounds.left,
- (glyph.bounds.top) + row * glyph.bounds.height
+ (glyph.bounds.top) + row * font.getLineSpacing() * lineHeightRatio_
);
vertices_[4*i+1].position = sf::Vector2f(
col*glyph.advance + glyph.bounds.left+glyph.bounds.width,
- (glyph.bounds.top) + row * glyph.bounds.height
+ (glyph.bounds.top) + row * font.getLineSpacing() * lineHeightRatio_
);
vertices_[4*i+2].position = sf::Vector2f(
col*glyph.advance + glyph.bounds.left+glyph.bounds.width,
- (glyph.bounds.top+glyph.bounds.height) + row * glyph.bounds.height
+ (glyph.bounds.top+glyph.bounds.height) + row * font.getLineSpacing() * lineHeightRatio_
);
vertices_[4*i+3].position = sf::Vector2f(
col*glyph.advance + glyph.bounds.left,
- (glyph.bounds.top+glyph.bounds.height) + row * glyph.bounds.height
+ (glyph.bounds.top+glyph.bounds.height) + row * font.getLineSpacing() * lineHeightRatio_
);
col++;
+ // Choose the texture rectangle for this character
vertices_[4*i+0].texCoords = sf::Vector2f(
glyph.textureRect.left,
glyph.textureRect.top
diff --git a/src/graphics/text.h b/src/graphics/text.h
index f60980c..a390e8a 100644
--- a/src/graphics/text.h
+++ b/src/graphics/text.h
@@ -10,13 +10,14 @@ namespace Graphics {
Font &font_;
const std::string text_;
sf::VertexArray vertices_;
+ float lineHeightRatio_;
unsigned int size_, maxWidth_, maxHeight_;
void arrange(Font &font); // Specialize for sf::Font and TextureFont
public:
- Text(Font &font, const std::string &text, unsigned int maxWidth=0,
- unsigned int maxHeight=0);
+ Text(Font &font, const std::string &text, float lineHeightRatio=1.,
+ unsigned int maxWidth=0, unsigned int maxHeight=0);
void setFont(Font &font);
void setText(const std::string &text);
@@ -26,11 +27,12 @@ namespace Graphics {
};
template <typename Font>
- Text<Font>::Text(Font &font, const std::string &text,
+ Text<Font>::Text(Font &font, const std::string &text, float lineHeightRatio,
unsigned int maxWidth, unsigned int maxHeight)
: font_(font)
, text_(text)
, vertices_(sf::Quads, text.size()*4)
+ , lineHeightRatio_(lineHeightRatio)
, size_(0)
, maxWidth_(maxWidth)
, maxHeight_(maxHeight)
diff --git a/src/ui.cpp b/src/ui.cpp
index 722eb1b..02b50f2 100644
--- a/src/ui.cpp
+++ b/src/ui.cpp
@@ -185,7 +185,7 @@ bool UI::radioButton(sf::RenderWindow *win, Graphics::TextureFont font,
}
win->draw(radio);
- Graphics::Text textGraph {font, text, size.x - 30, size.y};
+ Graphics::Text textGraph {font, text, 1.4, size.x - 30, size.y};
textGraph.setPosition(sf::Vector2f(pos) + sf::Vector2f{30, size.y/2});
win->draw(textGraph);