X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fcharacter-set-conversion.cpp;h=ac8b3179e61a8694d574780bfbe0fdb7afc12a32;hb=ae4ebe4de0eaea7942295160d310b9818969b3e7;hp=aa2721a58c9d8d52fb1bcc1a6923e012cccfb485;hpb=3b1fb566901d21b8303d9be3308e3920f5182e6d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/character-set-conversion.cpp b/dali-toolkit/internal/text/character-set-conversion.cpp index aa2721a..ac8b317 100644 --- a/dali-toolkit/internal/text/character-set-conversion.cpp +++ b/dali-toolkit/internal/text/character-set-conversion.cpp @@ -24,6 +24,9 @@ namespace Dali namespace Toolkit { +namespace Text +{ + namespace { const static uint8_t U1 = 1u; @@ -68,6 +71,11 @@ namespace }; } // namespace +uint8_t GetUtf8Length( uint8_t utf8LeadByte ) +{ + return UTF8_LENGTH[utf8LeadByte]; +} + uint32_t GetNumberOfUtf8Characters( const uint8_t* const utf8, uint32_t length ) { uint32_t numberOfCharacters = 0u; @@ -173,11 +181,13 @@ uint32_t Utf8ToUtf32( const uint8_t* const utf8, uint32_t length, uint32_t* utf3 return numberOfCharacters; } -void Utf32ToUtf8( const uint32_t* const utf32, uint32_t numberOfCharacters, uint8_t* utf8 ) +uint32_t Utf32ToUtf8( const uint32_t* const utf32, uint32_t numberOfCharacters, uint8_t* utf8 ) { const uint32_t* begin = utf32; const uint32_t* end = utf32 + numberOfCharacters; + uint8_t* utf8Begin = utf8; + for( ; begin < end; ++begin ) { const uint32_t code = *begin; @@ -205,8 +215,23 @@ void Utf32ToUtf8( const uint32_t* const utf32, uint32_t numberOfCharacters, uint *utf8++ = static_cast( code & 0x3f ) | 0x80u; // continuation byte } } + + return utf8 - utf8Begin; } +void Utf32ToUtf8( const uint32_t* const utf32, uint32_t numberOfCharacters, std::string& utf8 ) +{ + utf8.clear(); + + uint32_t numberOfBytes = GetNumberOfUtf8Bytes( &utf32[0], numberOfCharacters ); + utf8.resize( numberOfBytes ); + + // This is a bit horrible but std::string returns a (signed) char* + Utf32ToUtf8( utf32, numberOfCharacters, reinterpret_cast(&utf8[0]) ); +} + +} // namespace Text + } // namespace Toolkit } // namespace Dali