aboutsummaryrefslogtreecommitdiff
path: root/src/Text.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text.cpp')
-rw-r--r--src/Text.cpp38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/Text.cpp b/src/Text.cpp
index 2940520..23dfb5b 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -49,10 +49,9 @@ namespace QuickMedia
vertices[0].setPrimitiveType(sf::PrimitiveType::Triangles);
vertices[1].setPrimitiveType(sf::PrimitiveType::Triangles);
vertices[2].setPrimitiveType(sf::PrimitiveType::Triangles);
- /*for(int i = 0; i < 3; ++i) {
+ for(int i = 0; i < 3; ++i) {
vertex_buffers[i] = sf::VertexBuffer(sf::PrimitiveType::Triangles, sf::VertexBuffer::Static);
- vertex_buffers[i].create(0);
- }*/
+ }
setString(std::move(_str));
}
@@ -346,9 +345,10 @@ namespace QuickMedia
dirty = false;
vertices_linear.clear();
- vertices[0].clear();
- vertices[1].clear();
- vertices[2].clear();
+ for(int i = 0; i < 3; ++i) {
+ vertices[i].clear();
+ vertices[i].resize(0);
+ }
boundingBox = sf::FloatRect();
sf::Font *latin_font;
@@ -584,13 +584,21 @@ namespace QuickMedia
}
boundingBox.height = num_lines * line_height;
- /*for(int i = 0; i < 3; ++i) {
+ // TODO: Clear |vertices| somehow even with editable text
+ for(int i = 0; i < 3; ++i) {
+ vertex_buffers[i].create(vertices[i].getVertexCount());
vertex_buffers[i].update(&vertices[i][0], vertices[i].getVertexCount(), 0);
- }*/
+ }
//url_ranges.clear();
- if(!editable)
+ if(!editable) {
+ for(int i = 0; i < 3; ++i) {
+ vertices[i].clear();
+ vertices[i].resize(0);
+ }
vertices_linear.clear();
+ vertices_linear.resize(0);
+ }
}
void Text::updateCaret()
@@ -895,23 +903,23 @@ namespace QuickMedia
const FontLoader::FontType font_types[] = { latin_font_type, FontLoader::FontType::CJK };
for(size_t i = 0; i < 2; ++i) {
- if(vertices[i].getVertexCount() == 0)
+ if(vertex_buffers[i].getVertexCount() == 0)
continue;
sf::Font *font = FontLoader::get_font(font_types[i]);
sf::RenderStates states;
states.transform.translate(pos);
states.texture = &font->getTexture(characterSize);
- //target.draw(vertex_buffers[i], states);
- target.draw(vertices[i], states);
+ target.draw(vertex_buffers[i], states);
+ //target.draw(vertices[i], states);
}
- if(vertices[2].getVertexCount() > 0) {
+ if(vertex_buffers[2].getVertexCount() > 0) {
sf::RenderStates states;
states.transform.translate(pos);
states.texture = TextureLoader::get_texture("images/emoji.png");
- //target.draw(vertex_buffers[2], states);
- target.draw(vertices[2], states);
+ target.draw(vertex_buffers[2], states);
+ //target.draw(vertices[2], states);
}
if(!editable) return true;