From 4676b332fc9c9db4a0c0ad47cbab85d30ed1a2e4 Mon Sep 17 00:00:00 2001 From: Victor Cebollada Date: Wed, 18 Mar 2015 11:26:24 +0000 Subject: [PATCH] Bidi - Retrieve a paragraph's direction. Change-Id: I79eb7ad81f32786ae0decd59c9d5bd6a3a3c87ad Signed-off-by: Victor Cebollada --- .../bidirectional-support-impl.cpp | 33 ++++++++++++++++++++++ .../text-abstraction/bidirectional-support-impl.h | 5 ++++ .../text-abstraction/bidirectional-support.cpp | 5 ++++ .../text-abstraction/bidirectional-support.h | 9 ++++++ 4 files changed, 52 insertions(+) diff --git a/text/dali/internal/text-abstraction/bidirectional-support-impl.cpp b/text/dali/internal/text-abstraction/bidirectional-support-impl.cpp index 041476b..28d35e2 100644 --- a/text/dali/internal/text-abstraction/bidirectional-support-impl.cpp +++ b/text/dali/internal/text-abstraction/bidirectional-support-impl.cpp @@ -189,6 +189,29 @@ struct BidirectionalSupport::Plugin return updated; } + bool GetParagraphDirection( BidiInfoIndex bidiInfoIndex ) const + { + // Retrieve the paragraph's bidirectional info. + const BidirectionalInfo* const bidirectionalInfo = *( mParagraphBidirectionalInfo.Begin() + bidiInfoIndex ); + + switch( bidirectionalInfo->paragraphDirection ) + { + case FRIBIDI_PAR_RTL: // Right-To-Left paragraph. + case FRIBIDI_PAR_WRTL: // Weak Right To Left paragraph. + { + return true; + } + case FRIBIDI_PAR_LTR: // Left-To-Right paragraph. + case FRIBIDI_PAR_ON: // DirectiOn-Neutral paragraph. + case FRIBIDI_PAR_WLTR: // Weak Left To Right paragraph. + { + return false; + } + } + + return false; + } + Vector mParagraphBidirectionalInfo; ///< Stores the bidirectional info per paragraph. Vector mFreeIndices; ///< Stores indices of free positions in the bidirectional info vector. }; @@ -265,6 +288,16 @@ bool BidirectionalSupport::GetMirroredText( Character* text, return mPlugin->GetMirroredText( text, numberOfCharacters ); } +bool BidirectionalSupport::GetParagraphDirection( BidiInfoIndex bidiInfoIndex ) const +{ + if( !mPlugin ) + { + return false; + } + + return mPlugin->GetParagraphDirection( bidiInfoIndex ); +} + void BidirectionalSupport::CreatePlugin() { if( !mPlugin ) diff --git a/text/dali/internal/text-abstraction/bidirectional-support-impl.h b/text/dali/internal/text-abstraction/bidirectional-support-impl.h index 4fc0e4c..ba637b9 100644 --- a/text/dali/internal/text-abstraction/bidirectional-support-impl.h +++ b/text/dali/internal/text-abstraction/bidirectional-support-impl.h @@ -81,6 +81,11 @@ public: bool GetMirroredText( Character* text, Length numberOfCharacters ); + /** + * @copydoc Dali::BidirectionalSupport::GetParagraphDirection() + */ + bool GetParagraphDirection( BidiInfoIndex bidiInfoIndex ) const; + private: /** diff --git a/text/dali/public-api/text-abstraction/bidirectional-support.cpp b/text/dali/public-api/text-abstraction/bidirectional-support.cpp index 46f1104..991727e 100644 --- a/text/dali/public-api/text-abstraction/bidirectional-support.cpp +++ b/text/dali/public-api/text-abstraction/bidirectional-support.cpp @@ -75,6 +75,11 @@ bool BidirectionalSupport::GetMirroredText( Character* text, numberOfCharacters ); } +bool BidirectionalSupport::GetParagraphDirection( BidiInfoIndex bidiInfoIndex ) const +{ + return GetImplementation( *this ).GetParagraphDirection( bidiInfoIndex ); +} + } // namespace TextAbstraction } // namespace Dali diff --git a/text/dali/public-api/text-abstraction/bidirectional-support.h b/text/dali/public-api/text-abstraction/bidirectional-support.h index 84a1f81..0a2857f 100644 --- a/text/dali/public-api/text-abstraction/bidirectional-support.h +++ b/text/dali/public-api/text-abstraction/bidirectional-support.h @@ -116,6 +116,15 @@ public: */ bool GetMirroredText( Character* text, Length numberOfCharacters ); + + /** + * @brief Retrieves the paragrpah's direction. + * + * @param[in] bidiInfoIndex The index to the of the object inside the table storing the bidirectional data for the current paragraph. + * + * @return @e true if the paragraph is right to left, otherwise @e false. + */ + bool GetParagraphDirection( BidiInfoIndex bidiInfoIndex ) const; }; } // namespace TextAbstraction -- 2.7.4