Revert "[Tizen] Add codes for Dali Windows Backend"
[platform/core/uifw/dali-adaptor.git] / dali / internal / text / text-abstraction / bidirectional-support-impl.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 5d096c3..2f5e7ab
@@ -74,21 +74,23 @@ namespace
     switch( characterDirection )
     {
       case FRIBIDI_TYPE_LTR: // Left-To-Right letter.
-      case FRIBIDI_TYPE_EN:  // European Numeral.
-      case FRIBIDI_TYPE_AN:  // Arabic Numeral.
-      case FRIBIDI_TYPE_ES:  // European number Separator.
-      case FRIBIDI_TYPE_ET:  // European number Terminator.
       {
         return LEFT_TO_RIGHT;
       }
-      case FRIBIDI_TYPE_RTL: // Right-To-Left letter.
       case FRIBIDI_TYPE_AL:  // Arabic Letter.
+      case FRIBIDI_TYPE_RTL: // Right-To-Left letter.
       {
         return RIGHT_TO_LEFT;
       }
+      case FRIBIDI_TYPE_AN:  // Arabic Numeral.
+      case FRIBIDI_TYPE_ES:  // European number Separator.
+      case FRIBIDI_TYPE_ET:  // European number Terminator.
+      case FRIBIDI_TYPE_EN:  // European Numeral.
+      default :
+      {
+        return NEUTRAL;
+      }
     }
-
-    return NEUTRAL;
   }
 }
 
@@ -126,7 +128,9 @@ struct BidirectionalSupport::Plugin
   }
 
   BidiInfoIndex CreateInfo( const Character* const paragraph,
-                            Length numberOfCharacters )
+                            Length numberOfCharacters,
+                            bool matchSystemLanguageDirection,
+                            LayoutDirection::Type layoutDirection )
   {
     // Reserve memory for the paragraph's bidirectional info.
     BidirectionalInfo* bidirectionalInfo = new BidirectionalInfo();
@@ -150,7 +154,9 @@ struct BidirectionalSupport::Plugin
     fribidi_get_bidi_types( paragraph, numberOfCharacters, bidirectionalInfo->characterTypes );
 
     // Retrieve the paragraph's direction.
-    bidirectionalInfo->paragraphDirection = fribidi_get_par_direction( bidirectionalInfo->characterTypes, numberOfCharacters );
+    bidirectionalInfo->paragraphDirection = matchSystemLanguageDirection == true ?
+                                           ( layoutDirection == LayoutDirection::RIGHT_TO_LEFT ? FRIBIDI_PAR_RTL : FRIBIDI_PAR_LTR ) :
+                                           ( fribidi_get_par_direction( bidirectionalInfo->characterTypes, numberOfCharacters ) );
 
     // Retrieve the embedding levels.
     if (fribidi_get_par_embedding_levels( bidirectionalInfo->characterTypes, numberOfCharacters, &bidirectionalInfo->paragraphDirection, bidirectionalInfo->embeddedLevels ) == 0)
@@ -390,12 +396,16 @@ TextAbstraction::BidirectionalSupport BidirectionalSupport::Get()
 }
 
 BidiInfoIndex BidirectionalSupport::CreateInfo( const Character* const paragraph,
-                                                Length numberOfCharacters )
+                                                Length numberOfCharacters,
+                                                bool matchSystemLanguageDirection,
+                                                Dali::LayoutDirection::Type layoutDirection )
 {
   CreatePlugin();
 
   return mPlugin->CreateInfo( paragraph,
-                              numberOfCharacters );
+                              numberOfCharacters,
+                              matchSystemLanguageDirection,
+                              layoutDirection );
 }
 
 void BidirectionalSupport::DestroyInfo( BidiInfoIndex bidiInfoIndex )