diff options
author | Paweł Redman <pawel.redman@gmail.com> | 2017-12-14 18:05:51 +0100 |
---|---|---|
committer | Paweł Redman <pawel.redman@gmail.com> | 2017-12-14 18:05:51 +0100 |
commit | 5835b156f57ec4778521c013f813d1223c7fd2f6 (patch) | |
tree | 1e5fe9fc7411743988790244689848bd3073a05d | |
parent | 0e27aac4f124efcd495469522706df8cc1ca5986 (diff) |
Avoid reinventing UTF-8.
-rw-r--r-- | src/common.hpp | 2 | ||||
-rw-r--r-- | src/main.cpp | 24 | ||||
-rw-r--r-- | src/render.cpp | 4 |
3 files changed, 1 insertions, 29 deletions
diff --git a/src/common.hpp b/src/common.hpp index 38f8993..54f9804 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -14,8 +14,6 @@ extern bool debug_draw_cmodels; extern bool debug_draw_paths; extern bool debug_draw_tile_coords; -void utf8_to_wchar(wchar_t *out, size_t size, std::string in); - namespace procgen { class prng_t { uint32_t state = 0; diff --git a/src/main.cpp b/src/main.cpp index f5e7a19..e503cad 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,30 +14,6 @@ uint64_t nano_clock(void) return ts.tv_sec * 1000000000LLU + ts.tv_nsec; } -void utf8_to_wchar(wchar_t *out, size_t size, std::string in) -{ - wchar_t *d = out, *end = out + size; - - for (size_t i = 0; i < in.size(); i++) { - if (d + 1 >= end) - break; - - if ((in[i] & 128) == 0) - *(d++) = in[i]; - else { - if (i + 1 >= in.size()) { - printf("invalid UTF-8 sequence\n"); - abort(); - } - - *(d++) = ((in[i] & 31) << 6) | (in[i + 1] & 63); - i++; - } - } - - *(d++) = 0; -} - int main() { uint64_t t0 = nano_clock(); diff --git a/src/render.cpp b/src/render.cpp index c4718bf..d852b24 100644 --- a/src/render.cpp +++ b/src/render.cpp @@ -185,9 +185,7 @@ void state_t::render(oriented_sprite_t *sprite, rectf_t bounds, float angle) void state_t::render_text(v2f_t x, float height, std::string str, text_align_t align, sf::Color color) { - wchar_t buffer[4096]; - utf8_to_wchar(buffer, sizeof(buffer) / sizeof(wchar_t), str); - sf::Text text(buffer, font, 40); + sf::Text text(sf::String::fromUtf8(str.begin(), str.end()), font, 40); sf::FloatRect rect; float scale; v2f_t offset; |