@class Unicode Unicode.hpp touchgfx/Unicode.hpp This class provides simple helper functions for working with 16-bit strings.
snprintfFloat()
@fn static UnicodeChar* Unicode::snprintfFloat(UnicodeChar* dst, uint16_t dstSize, const char* format, const float value) Variant of snprintf. Variant of snprintf for one float only. The number format supports only one \%f with flags/modifiers. The following is supported: %[flags][width][.precision]f Where flags can be:
'-': left justify the field (see width).
'+': force sign.
' ': insert space if value is positive.
'\#': insert decimal point even if there are not decimals.
'0': left pad with zeros instead of spaces (see width).
Where width is the desired width of the output. If the value is larger, more characters may be generated, but not more than the parameter dstSize. Where precision is the number of number of digits after the decimal point, default is 3. Use "%.f" to not generate any numbers after the decimal point. \code{.cpp} Unicode::UnicodeChar buffer[20]; Unicode::snprintfFloat(buffer, 20, "%6.4f", 3.14159f); // buffer="3.1416" Unicode::snprintfFloat(buffer, 20, "%#6.f", 3.14159f); // buffer=" 3." Unicode::snprintfFloat(buffer, 20, "%6f", 3.14159f); // buffer=" 3.142" Unicode::snprintfFloat(buffer, 20, "%+06.f", 3.14159f); // buffer="+00003" \endcode If more control over the output is needed, see snprintfFloats which can have more than a single "%f" in the string and also supports "*" in place of a number. @warning The format string is internally copied from at char* to a UnicodeChar*. This buffer has a limit of 63 characters, so if the format is longer than 63 characters, the caller must do this copying to prevent an assert from triggering: \code{.cpp} touchgfx::Unicode::UnicodeChar tmpfmt[200]; touchgfx::Unicode::strncpy(tmpfmt, "Very, very, very, very, very, very, very, very, very long format %f", 200); touchgfx::Unicode::snprintfFloats(dst, dstSize, tmpfmt, values); \endcode @see snprintf, snprintfFloats.
Read more...
strncmp()
@fn static int Unicode::strncmp(const UnicodeChar* RESTRICT str1, const UnicodeChar* RESTRICT str2, uint16_t maxchars); Compares up to maxchars characters of the string str1 to those of the string str2. Compares up to maxchars characters of the string str1 to those of the string str2. This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ, until a terminating null-character is reached, or until maxchars characters match in both strings, whichever happens first.
Read more...
strncmp_ignore_white_spaces()
@fn static int Unicode::strncmp_ignore_white_spaces(const UnicodeChar* RESTRICT str1, const UnicodeChar* RESTRICT str2, uint16_t maxchars); Like strncmp except that ignore any spaces in the two strings. Like strncmp except that ignore any spaces in the two strings.
Read more...
fromUTF8()
@fn static uint16_t Unicode::fromUTF8(const uint8_t* utf8, UnicodeChar* dst, uint16_t maxchars); Convert a string from utf8 to unicode. Convert a string from utf8 to unicode. The conversion stops if there is no more room in the destination or if the terminating zero character has been converted.
Read more...
toUTF8()
@fn static uint16_t Unicode::toUTF8(const UnicodeChar *unicode, uint8_t* utf8, uint16_t maxbytes); Converts a string from unicode to utf8. Converts a string from unicode to utf8. The conversion stops if there is no more room in the destination or if the terminating zero character has been converted. U+10000 through U+10FFFF are skipped.
Read more...
skip_white_spaces()
composeString()
parseFlagsAndPrecision()
vsnprintf()
@fn static UnicodeChar* Unicode::vsnprintf(UnicodeChar* dst, uint16_t dstSize, const char* format, va_list pArg); Variant of snprintf. Variant of snprintf. See snprintf for details. @see snprintf.
Read more...
snprintfFloats()
@fn static UnicodeChar* Unicode::snprintfFloats(UnicodeChar* dst, uint16_t dstSize, const UnicodeChar* format, const float* values); Variant of snprintf for floats only. Variant of snprintf for floats only. The format supports several \%f with flags/modifiers. The following is supported: %[flags][width][.precision]f Where flags can be:
'-': left justify the field (see width).
'+': force sign.
' ': insert space if value is positive
'\#': insert decimal point even if there are not decimals
'0': left pad with zeros instead of spaces (see width)
Where width is the desired width of the output. If the value is larger, more characters may be generated, but not more than the parameter dstSize. If width is '*' the actual width is read from the list of values passed to this function. Where precision is the number of number of digits after the decimal point, default is 3. Use "%.f" to not generate any numbers after the decimal point. If precision is '*' the actual precision is read from the list of values passed to this function. \code{.cpp} float param1[3] = { 6.0f, 4.0f, 3.14159f }; Unicode::snprintfFloats(buffer, 20, "%*.*f", param1); // buffer="3.1416" float param2[2] = { 3.14159f, -123.4f }; Unicode::snprintfFloats(buffer, 20, "%f %f", param2); // buffer="3.142 -123.400" \endcode @see snprintf, snprintfFloat.
Read more...
snprintfFloat()
@fn static UnicodeChar* Unicode::snprintfFloat(UnicodeChar* dst, uint16_t dstSize, const char* format, const float value) Variant of snprintf. Variant of snprintf for one float only. The number format supports only one \%f with flags/modifiers. The following is supported: %[flags][width][.precision]f Where flags can be:
'-': left justify the field (see width).
'+': force sign.
' ': insert space if value is positive.
'\#': insert decimal point even if there are not decimals.
'0': left pad with zeros instead of spaces (see width).
Where width is the desired width of the output. If the value is larger, more characters may be generated, but not more than the parameter dstSize. Where precision is the number of number of digits after the decimal point, default is 3. Use "%.f" to not generate any numbers after the decimal point. \code{.cpp} Unicode::UnicodeChar buffer[20]; Unicode::snprintfFloat(buffer, 20, "%6.4f", 3.14159f); // buffer="3.1416" Unicode::snprintfFloat(buffer, 20, "%#6.f", 3.14159f); // buffer=" 3." Unicode::snprintfFloat(buffer, 20, "%6f", 3.14159f); // buffer=" 3.142" Unicode::snprintfFloat(buffer, 20, "%+06.f", 3.14159f); // buffer="+00003" \endcode If more control over the output is needed, see snprintfFloats which can have more than a single "%f" in the string and also supports "*" in place of a number. @warning The format string is internally copied from at char* to a UnicodeChar*. This buffer has a limit of 63 characters, so if the format is longer than 63 characters, the caller must do this copying to prevent an assert from triggering: \code{.cpp} touchgfx::Unicode::UnicodeChar tmpfmt[200]; touchgfx::Unicode::strncpy(tmpfmt, "Very, very, very, very, very, very, very, very, very long format %f", 200); touchgfx::Unicode::snprintfFloats(dst, dstSize, tmpfmt, values); \endcode @see snprintf, snprintfFloats.
Read more...
snprintfFloats()
@fn static UnicodeChar* Unicode::snprintfFloats(UnicodeChar* dst, uint16_t dstSize, const UnicodeChar* format, const float* values); Variant of snprintf for floats only. Variant of snprintf for floats only. The format supports several \%f with flags/modifiers. The following is supported: %[flags][width][.precision]f Where flags can be:
'-': left justify the field (see width).
'+': force sign.
' ': insert space if value is positive
'\#': insert decimal point even if there are not decimals
'0': left pad with zeros instead of spaces (see width)
Where width is the desired width of the output. If the value is larger, more characters may be generated, but not more than the parameter dstSize. If width is '*' the actual width is read from the list of values passed to this function. Where precision is the number of number of digits after the decimal point, default is 3. Use "%.f" to not generate any numbers after the decimal point. If precision is '*' the actual precision is read from the list of values passed to this function. \code{.cpp} float param1[3] = { 6.0f, 4.0f, 3.14159f }; Unicode::snprintfFloats(buffer, 20, "%*.*f", param1); // buffer="3.1416" float param2[2] = { 3.14159f, -123.4f }; Unicode::snprintfFloats(buffer, 20, "%f %f", param2); // buffer="3.142 -123.400" \endcode @see snprintf, snprintfFloat.
Read more...
strlen()
@fn static uint16_t Unicode::strlen(const UnicodeChar* str); Gets the length of a 0-terminated unicode string. Gets the length of a 0-terminated unicode string.
Read more...
strlen()
@fn static uint16_t Unicode::strlen(const UnicodeChar* str); Gets the length of a 0-terminated unicode string. Gets the length of a 0-terminated unicode string.
Read more...
strncpy()
@fn static uint16_t Unicode::strncpy(UnicodeChar* RESTRICT dst, const UnicodeChar* RESTRICT src, uint16_t maxchars); Copy a string to a destination buffer, UnicodeChar to UnicodeChar version. Copy a string to a destination buffer, UnicodeChar to UnicodeChar version. Stops if it encounters a zero-termination, in which case the zero-termination is included in the destination string. Otherwise copies maxchars. @warning If there is no null-termination among the first n UnicodeChars of src, the string placed in destination will NOT be zero-terminated!.
Read more...
strncpy()
@fn static uint16_t Unicode::strncpy(UnicodeChar* RESTRICT dst, const UnicodeChar* RESTRICT src, uint16_t maxchars); Copy a string to a destination buffer, UnicodeChar to UnicodeChar version. Copy a string to a destination buffer, UnicodeChar to UnicodeChar version. Stops if it encounters a zero-termination, in which case the zero-termination is included in the destination string. Otherwise copies maxchars. @warning If there is no null-termination among the first n UnicodeChars of src, the string placed in destination will NOT be zero-terminated!.
Read more...
itoa()
@fn static void Unicode::itoa(int32_t value, UnicodeChar* buffer, uint16_t bufferSize, int radix); Integer to ASCII conversion. Integer to ASCII conversion.
Read more...
utoa()
@fn static void Unicode::utoa(uint32_t value, UnicodeChar* buffer, uint16_t bufferSize, int radix); Integer to ASCII conversion. Integer to ASCII conversion.
Read more...
atoi()
@fn static int Unicode::atoi(const UnicodeChar* s); String to integer conversion. String to integer conversion. Starts conversion at the start of the string. Running digits from here are converted.
Read more...
snprintf()
@fn static UnicodeChar* Unicode::snprintf(UnicodeChar* dst, uint16_t dstSize, const UnicodeChar* format, ...); Formats a string and adds null termination. Formats a string and adds null termination. The string is formatted like when printf is used. Support formats: \%c (element type: char), \%s (element type: zero-terminated UnicodeChar list), \%u, \%i, \%d, \%o, \%x (all these are integers formatted in radix 10, 10, 10, 8, 16 respectively). The number formats (\%u, \%i, \%d, \%o and \%x) all support \%[0][length]X to specify the size of the generated field (length) and whether the number should be prefixed with zeros (or blanks). @see snprintfFloat, snprintfFloats.
Read more...
vsnprintf()
@fn static UnicodeChar* Unicode::vsnprintf(UnicodeChar* dst, uint16_t dstSize, const char* format, va_list pArg); Variant of snprintf. Variant of snprintf. See snprintf for details. @see snprintf.
Read more...
snprintf()
@fn static UnicodeChar* Unicode::snprintf(UnicodeChar* dst, uint16_t dstSize, const UnicodeChar* format, ...); Formats a string and adds null termination. Formats a string and adds null termination. The string is formatted like when printf is used. Support formats: \%c (element type: char), \%s (element type: zero-terminated UnicodeChar list), \%u, \%i, \%d, \%o, \%x (all these are integers formatted in radix 10, 10, 10, 8, 16 respectively). The number formats (\%u, \%i, \%d, \%o and \%x) all support \%[0][length]X to specify the size of the generated field (length) and whether the number should be prefixed with zeros (or blanks). @see snprintfFloat, snprintfFloats.
Read more...