aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkStringUtils.cpp
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2018-03-01 15:56:37 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-03-01 22:16:34 +0000
commitee08b4a2e92e3273293a62cf1672d85ce9e9785f (patch)
treea64fc01c6eb77cc4c0aea8602293aa91d8669a83 /src/core/SkStringUtils.cpp
parent9b1a8860611e17fd25c0d322ef4d28cfa601e82e (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.cpp27
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;
+}