From: Joogab Yun Date: Tue, 23 Oct 2018 08:56:45 +0000 (+0900) Subject: [Tizen] Sorts text sequences in LTR and RTL by system language direction. X-Git-Tag: accepted/tizen/5.0/unified/20181106.070417~8 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git;a=commitdiff_plain;h=41ee2413bb9ab0bcc0bee6d52cbaac876520daf7 [Tizen] Sorts text sequences in LTR and RTL by system language direction. if matchSystemLanguageDirection property set true, The text order follows the system language direction. Change-Id: I43c1dc894d6a216f97366a4c339529c04ac92cb4 --- diff --git a/dali/devel-api/text-abstraction/bidirectional-support.cpp b/dali/devel-api/text-abstraction/bidirectional-support.cpp old mode 100644 new mode 100755 index b60f896..79389ae --- a/dali/devel-api/text-abstraction/bidirectional-support.cpp +++ b/dali/devel-api/text-abstraction/bidirectional-support.cpp @@ -46,10 +46,14 @@ BidirectionalSupport BidirectionalSupport::Get() } BidiInfoIndex BidirectionalSupport::CreateInfo( const Character* const paragraph, - Length numberOfCharacters ) + Length numberOfCharacters, + bool matchSystemLanguageDirection, + LayoutDirection::Type layoutDirection ) { return GetImplementation( *this ).CreateInfo( paragraph, - numberOfCharacters ); + numberOfCharacters, + matchSystemLanguageDirection, + layoutDirection ); } void BidirectionalSupport::DestroyInfo( BidiInfoIndex bidiInfoIndex ) diff --git a/dali/devel-api/text-abstraction/bidirectional-support.h b/dali/devel-api/text-abstraction/bidirectional-support.h index 55ba1f9..142cdab 100755 --- a/dali/devel-api/text-abstraction/bidirectional-support.h +++ b/dali/devel-api/text-abstraction/bidirectional-support.h @@ -23,6 +23,7 @@ // EXTERNAL INCLUDES #include +#include // INTERNAL INCLUDES #include @@ -81,11 +82,14 @@ public: * * @param[in] paragraph Pointer to the first character of the paragraph coded in UTF32. * @param[in] numberOfCharacters The number of characters of the paragraph. - * + * @param[in] matchSystemLanguageDirection Whether match for system language direction or not. + * @param[in] layoutDirection The direction of the system language. * @return An index of an object inside a table storing the bidirectional data. */ BidiInfoIndex CreateInfo( const Character* const paragraph, - Length numberOfCharacters ); + Length numberOfCharacters, + bool matchSystemLanguageDirection, + LayoutDirection::Type layoutDirection ); /** * @brief Destroys the bidirectional data. diff --git a/dali/internal/text/text-abstraction/bidirectional-support-impl.cpp b/dali/internal/text/text-abstraction/bidirectional-support-impl.cpp old mode 100644 new mode 100755 index 5d096c3..29bd3b9 --- a/dali/internal/text/text-abstraction/bidirectional-support-impl.cpp +++ b/dali/internal/text/text-abstraction/bidirectional-support-impl.cpp @@ -126,7 +126,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 +152,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 +394,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 ) diff --git a/dali/internal/text/text-abstraction/bidirectional-support-impl.h b/dali/internal/text/text-abstraction/bidirectional-support-impl.h old mode 100644 new mode 100755 index ab180c2..8964856 --- a/dali/internal/text/text-abstraction/bidirectional-support-impl.h +++ b/dali/internal/text/text-abstraction/bidirectional-support-impl.h @@ -60,7 +60,9 @@ public: * @copydoc Dali::BidirectionalSupport::CreateInfo() */ BidiInfoIndex CreateInfo( const Character* const paragraph, - Length numberOfCharacters ); + Length numberOfCharacters, + bool matchSystemLanguageDirection, + LayoutDirection::Type layoutDirection ); /** * @copydoc Dali::BidirectionalSupport::DestroyInfo()