}
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 )
// EXTERNAL INCLUDES
#include <dali/public-api/object/base-handle.h>
+#include <dali/public-api/actors/actor-enumerations.h>
// INTERNAL INCLUDES
#include <dali/public-api/dali-adaptor-common.h>
*
* @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.
}
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();
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)
}
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 )
* @copydoc Dali::BidirectionalSupport::CreateInfo()
*/
BidiInfoIndex CreateInfo( const Character* const paragraph,
- Length numberOfCharacters );
+ Length numberOfCharacters,
+ bool matchSystemLanguageDirection,
+ LayoutDirection::Type layoutDirection );
/**
* @copydoc Dali::BidirectionalSupport::DestroyInfo()