diff options
Diffstat (limited to 'src/Text.cpp')
-rw-r--r-- | src/Text.cpp | 38 |
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; |