From e22c17340fee7ba50f60bd4174c2c544e47f364d Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Fri, 24 Jun 2022 12:12:30 +0200 Subject: [PATCH] Add 'UTF8CharLength(..)' to utility.cpp --- r5dev/public/include/utility.h | 1 + r5dev/public/utility.cpp | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/r5dev/public/include/utility.h b/r5dev/public/include/utility.h index 6ba952db..2e9c1559 100644 --- a/r5dev/public/include/utility.h +++ b/r5dev/public/include/utility.h @@ -32,6 +32,7 @@ string Base64Decode(const string& svInput); string UTF8Encode(const wstring& wsvInput); string UTF8Decode(const string& svInput); +size_t UTF8CharLength(const uint8_t cInput); bool StringIsDigit(const string& svInput); bool CompareStringAlphabetically(const string& svA, const string& svB); diff --git a/r5dev/public/utility.cpp b/r5dev/public/utility.cpp index 955fa100..b8b8037b 100644 --- a/r5dev/public/utility.cpp +++ b/r5dev/public/utility.cpp @@ -485,6 +485,23 @@ string UTF8Decode(const string& svInput) return ""; } +/////////////////////////////////////////////////////////////////////////////// +// For obtaining UTF8 character length. +size_t UTF8CharLength(const uint8_t cInput) +{ + if ((cInput & 0xFE) == 0xFC) + return 6; + if ((cInput & 0xFC) == 0xF8) + return 5; + if ((cInput & 0xF8) == 0xF0) + return 4; + else if ((cInput & 0xF0) == 0xE0) + return 3; + else if ((cInput & 0xE0) == 0xC0) + return 2; + return 1; +} + /////////////////////////////////////////////////////////////////////////////// // For checking if a string is a number. bool StringIsDigit(const string& svInput)