Fixes TextView's includes.
[platform/core/uifw/dali-toolkit.git] / base / dali-toolkit / internal / controls / text-view / relayout-utilities.cpp
index 84447b9..17c9534 100644 (file)
  */
 
 // FILE HEADER
-#include "relayout-utilities.h"
+#include <dali-toolkit/internal/controls/text-view/relayout-utilities.h>
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/controls/text-view/text-view-processor-helper-functions.h>
 
 // EXTERNAL INCLUDES
 #include <cmath>
 
-// INTERNAL INCLUDES
-#include <dali/dali.h>
-#include <dali-toolkit/public-api/controls/text-view/text-view.h>
-#include "text-view-line-processor.h"
-#include "text-view-word-processor.h"
-#include "text-view-processor-helper-functions.h"
-#include "text-view-processor-dbg.h"
-
 namespace Dali
 {
 
@@ -518,8 +513,11 @@ void UpdateAlignment( const TextView::LayoutParameters& layoutParameters,
 
   // If the exceed policy is ellipsize at the end, negative offsets are not wanted.
   // In that case, it will align the line to the left and/or top, and ellipsize the end.
-  const bool ellipsizeAlignToLeft = ( layoutParameters.mExceedPolicy == TextView::EllipsizeEndOriginal ) || ( layoutParameters.mExceedPolicy == TextView::EllipsizeEnd );
-  const bool ellipsizeAlignToTop = ( layoutParameters.mExceedPolicy == TextView::EllipsizeEnd );
+  const bool ellipsizeAlignToLeft = ( layoutParameters.mExceedPolicy == TextView::EllipsizeEndOriginal ) ||
+                                    ( layoutParameters.mExceedPolicy == TextView::EllipsizeEnd ) ||
+                                    ( layoutParameters.mExceedPolicy == TextView::SplitEllipsizeEnd );
+  const bool ellipsizeAlignToTop = ( layoutParameters.mExceedPolicy == TextView::EllipsizeEnd ) ||
+                                   ( layoutParameters.mExceedPolicy == TextView::SplitEllipsizeEnd );
 
   RelayoutParameters relayoutParameters;
 
@@ -1010,6 +1008,7 @@ void CalculateVisibilityForEllipsize( const Internal::TextView::LayoutParameters
 
         break;
       }
+      case TextView::SplitEllipsizeEnd:
       case TextView::EllipsizeEnd:
       {
         // Ellipsizes the text if it doesn't fit in the width and fully fits in the text-view's height.
@@ -1206,7 +1205,8 @@ void EllipsizeLine( const TextView::LayoutParameters& layoutParameters,
           }
           else
           {
-            if( TextView::EllipsizeEnd == layoutParameters.mExceedPolicy )
+            if( ( TextView::EllipsizeEnd == layoutParameters.mExceedPolicy ) ||
+                ( TextView::SplitEllipsizeEnd == layoutParameters.mExceedPolicy ))
             {
               if( !ellipsizeParameters.mIsLineHeightFullyVisible )
               {
@@ -1257,6 +1257,7 @@ void SetTextVisible( TextView::RelayoutData& relayoutData )
           characterLayoutInfo.mGradientColor = Vector4::ZERO;
           characterLayoutInfo.mStartPoint = Vector2::ZERO;
           characterLayoutInfo.mEndPoint = Vector2::ZERO;
+          characterLayoutInfo.mColorAlpha = characterLayoutInfo.mStyledText.mStyle.GetTextColor().a;
         } // end characters
       } // end words
     } // end group of words
@@ -1430,7 +1431,8 @@ void UpdateVisibilityForEllipsize( const TextView::LayoutParameters& layoutParam
     // If the next line exceeds the text-view height then it's going to be invisible and current line needs to be ellipsized.
     ellipsizeParameters.mIsLineHeightFullyVisible = true;
     ellipsizeParameters.mIsNextLineFullyVisibleHeight = true;
-    if( TextView::EllipsizeEnd == layoutParameters.mExceedPolicy )
+    if( ( TextView::EllipsizeEnd == layoutParameters.mExceedPolicy ) ||
+        ( TextView::SplitEllipsizeEnd == layoutParameters.mExceedPolicy ) )
     {
       // Need to check if there is lines which doesn't fit in the height.
 
@@ -1500,6 +1502,7 @@ void UpdateVisibility( const TextView::LayoutParameters& layoutParameters,
       break;
     }
     case TextView::EllipsizeEndOriginal:
+    case TextView::SplitEllipsizeEnd:
     case TextView::EllipsizeEnd: // Fall through
     {
       // Set first all characters to visible as UpdateVisibilityForEllipsize() doesn't traverse all of them.
@@ -1700,7 +1703,7 @@ void CalculateUnderlineInfo( TextView::RelayoutData& relayoutData, TextViewRelay
             ++textUnderlineStatus.mLineGlobalIndex; // If it's a new line, point to the next one.
           }
 
-          if( characterGroup.mStyledText.mStyle.GetUnderline() )
+          if( characterGroup.mStyledText.mStyle.IsUnderlineEnabled() )
           {
             if( !textUnderlineStatus.mCurrentUnderlineStatus || // Current character is underlined but previous one it wasn't.
                 isNewLine )                                     // Current character is underlined and is the first of current laid-out line.
@@ -1817,7 +1820,7 @@ void SetUnderlineInfo( TextView::RelayoutData& relayoutData )
             }
           }
 
-          if( characterGroup.mStyledText.mStyle.GetUnderline() )
+          if( characterGroup.mStyledText.mStyle.IsUnderlineEnabled() )
           {
             if( textUnderlineStatus.mCurrentUnderlineStatus )
             {
@@ -1837,15 +1840,12 @@ void SetUnderlineInfo( TextView::RelayoutData& relayoutData )
 
             textUnderlineStatus.mCurrentUnderlineStatus = true;
 
-            // Sets the underline's thickness.
-            characterGroup.mStyledText.mStyle.SetUnderlineThickness( underlineInfo.mMaxThickness );
-
             // Before setting the position it needs to be adjusted to match the base line.
             const float bearingOffset = ( currentLineHeight - currentLineAscender ) - ( characterGroup.mSize.height - characterGroup.mAscender );
             const float positionOffset = ( underlineInfo.mMaxHeight - characterGroup.mSize.height ) - bearingOffset;
 
-            // Sets the underline's position.
-            characterGroup.mStyledText.mStyle.SetUnderlinePosition( underlineInfo.mPosition - positionOffset );
+            // Sets the underline's parameters.
+            characterGroup.mStyledText.mStyle.SetUnderline( true, underlineInfo.mMaxThickness, underlineInfo.mPosition - positionOffset );
 
             // Mark the group of characters to be set the new style into the text-actor.
             characterGroup.mSetStyle = true;
@@ -1977,7 +1977,8 @@ RenderableActor CreateGlyphActor( const Text& text, const TextStyle& style, Text
   else
   {
     // The text-actor cache is empty. Create a new one.
-    textActor = TextActor::New( text, style, false, true );
+    TextActorParameters parameters( style, TextActorParameters::FONT_DETECTION_OFF );
+    textActor = TextActor::New( text, parameters );
   }
 
   return textActor;