Decorator to show cursor
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / text / script.cpp
index 8860a14..c320a7e 100644 (file)
@@ -27,6 +27,24 @@ namespace Toolkit
 namespace Text
 {
 
+namespace
+{
+const unsigned int WHITE_SPACE_THRESHOLD  = 0x21; ///< All characters below 0x21 are considered white spaces.
+const unsigned int CHAR_FL   = 0x000A; ///< NL Line feed, new line.
+const unsigned int CHAR_VT   = 0x000B; ///< Vertical tab.
+const unsigned int CHAR_FF   = 0x000C; ///< NP Form feed, new page.
+const unsigned int CHAR_NEL  = 0x0085; ///< Next line.
+const unsigned int CHAR_LS   = 0x2028; ///< Line separator.
+const unsigned int CHAR_PS   = 0x2029; ///< Paragraph separator
+
+const unsigned int CHAR_ZWS  = 0x200B; ///< Zero width space.
+const unsigned int CHAR_ZWNJ = 0x200C; ///< Zero width non joiner.
+const unsigned int CHAR_ZWJ  = 0x200D; ///< Zero width joiner.
+const unsigned int CHAR_LTRM = 0x200E; ///< Left to Right Mark.
+const unsigned int CHAR_RTLM = 0x200F; ///< Right to Left Mark.
+const unsigned int CHAR_TS   = 0x2009; ///< Thin Space.
+} // namespace
+
 Script GetCharacterScript( Character character )
 {
   // Latin script:
@@ -107,8 +125,7 @@ Script GetCharacterScript( Character character )
   // 0x0e00 - 0x0e7f Thai
 
   // Burmese script
-  // 0x1000 - 0x104f Myanmar
-
+  // 0x1000 - 0x109f Myanmar
 
   if( character <= 0x0cff )
   {
@@ -201,7 +218,7 @@ Script GetCharacterScript( Character character )
         {
           return TextAbstraction::LAO;
         }
-        if( ( 0x1000 <= character ) && ( character <= 0x104f ) )
+        if( ( 0x1000 <= character ) && ( character <= 0x109f ) )
         {
           return TextAbstraction::BURMESE;
         }
@@ -364,6 +381,51 @@ Script GetCharacterScript( Character character )
   return TextAbstraction::UNKNOWN;
 }
 
+bool IsWhiteSpace( Character character )
+{
+  return character < WHITE_SPACE_THRESHOLD;
+}
+
+bool IsNewParagraph( Character character )
+{
+  return ( ( CHAR_FL == character )  ||
+           ( CHAR_VT == character )  ||
+           ( CHAR_FF == character )  ||
+           ( CHAR_NEL == character ) ||
+           ( CHAR_LS == character )  ||
+           ( CHAR_PS == character ) );
+}
+
+bool IsZeroWidthNonJoiner( Character character )
+{
+  return CHAR_ZWNJ == character;
+}
+
+bool IsZeroWidthJoiner( Character character )
+{
+  return CHAR_ZWJ == character;
+}
+
+bool IsZeroWidthSpace( Character character )
+{
+  return CHAR_ZWS == character;
+}
+
+bool IsLeftToRightMark( Character character )
+{
+  return CHAR_LTRM == character;
+}
+
+bool IsRightToLeftMark( Character character )
+{
+  return CHAR_RTLM == character;
+}
+
+bool IsThinSpace( Character character )
+{
+  return CHAR_TS == character;
+}
+
 } // namespace Text
 
 } // namespace Toolkit