diff options
author | Hal Canary <halcanary@google.com> | 2018-03-01 15:56:37 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-03-01 22:16:34 +0000 |
commit | ee08b4a2e92e3273293a62cf1672d85ce9e9785f (patch) | |
tree | a64fc01c6eb77cc4c0aea8602293aa91d8669a83 /src/core/SkStringUtils.cpp | |
parent | 9b1a8860611e17fd25c0d322ef4d28cfa601e82e (diff) |
SkString: remove externally unused ::setUTF16() from API
Moved to SkStringUtils in src/
Change-Id: I026e3a325570bbf34e90797d921cb2f05b9a29f6
Reviewed-on: https://skia-review.googlesource.com/111602
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'src/core/SkStringUtils.cpp')
-rw-r--r-- | src/core/SkStringUtils.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/core/SkStringUtils.cpp b/src/core/SkStringUtils.cpp index 6f5699c805..9745b2325b 100644 --- a/src/core/SkStringUtils.cpp +++ b/src/core/SkStringUtils.cpp @@ -7,6 +7,7 @@ #include "SkString.h" #include "SkStringUtils.h" +#include "SkUtils.h" void SkAddFlagToString(SkString* string, bool flag, const char* flagStr, bool* needSeparator) { if (flag) { @@ -61,3 +62,29 @@ SkString SkTabString(const SkString& string, int tabCnt) { } return result; } + +SkString SkStringFromUTF16(const uint16_t* src, size_t count) { + SkString ret; + if (count > 0) { + SkASSERT(src); + size_t n = 0; + const uint16_t* end = src + count; + for (const uint16_t* ptr = src; ptr < end;) { + const uint16_t* last = ptr; + SkUnichar u = SkUTF16_NextUnichar(&ptr); + size_t s = SkUTF8_FromUnichar(u); + if (n > SK_MaxU32 - s) { + end = last; // truncate input string + break; + } + n += s; + } + ret = SkString(n); + char* out = ret.writable_str(); + for (const uint16_t* ptr = src; ptr < end;) { + out += SkUTF8_FromUnichar(SkUTF16_NextUnichar(&ptr), out); + } + SkASSERT(out == ret.writable_str() + n); + } + return ret; +} |