Merge "(Text Controller) Moved some input properties into a different class & some...
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / layouts / layout-engine.cpp
index 077b598..7610b67 100644 (file)
@@ -36,6 +36,12 @@ namespace Toolkit
 {
 namespace Text
 {
+float GetLineHeight(const LineRun lineRun)
+{
+  // The line height is the addition of the line ascender, the line descender and the line spacing.
+  // However, the line descender has a negative value, hence the subtraction.
+  return lineRun.ascender - lineRun.descender + lineRun.lineSpacing;
+}
 namespace Layout
 {
 namespace
@@ -1275,7 +1281,7 @@ struct Engine::Impl
       layoutSize.width = layoutParameters.boundingBox.width;
       if(layoutSize.height < Math::MACHINE_EPSILON_1000)
       {
-        layoutSize.height += (lineRun->ascender + -lineRun->descender) + lineRun->lineSpacing;
+        layoutSize.height += GetLineHeight(*lineRun);
       }
 
       const Vector<BidirectionalLineInfoRun>& bidirectionalLinesInfo = layoutParameters.textModel->mLogicalModel->mBidirectionalLineInfo;
@@ -1382,7 +1388,7 @@ struct Engine::Impl
       layoutSize.width = lineRun.width;
     }
 
-    layoutSize.height += (lineRun.ascender + -lineRun.descender) + lineRun.lineSpacing;
+    layoutSize.height += GetLineHeight(lineRun);
   }
 
   /**
@@ -1433,7 +1439,7 @@ struct Engine::Impl
 
     lineRun.lineSpacing += mDefaultLineSpacing;
 
-    layoutSize.height += (lineRun.ascender + -lineRun.descender) + lineRun.lineSpacing;
+    layoutSize.height += GetLineHeight(lineRun);
   }
 
   /**
@@ -1457,7 +1463,7 @@ struct Engine::Impl
         layoutSize.width = line.width;
       }
 
-      layoutSize.height += (line.ascender + -line.descender) + line.lineSpacing;
+      layoutSize.height += GetLineHeight(line);
     }
   }
 
@@ -1861,7 +1867,6 @@ struct Engine::Impl
             linesBuffer[lineIndex].ellipsis = false;
           }
           numberOfLines--;
-          lineIndex++;
         }
         linesBuffer[0u].ellipsis = true;
       }
@@ -1881,7 +1886,7 @@ struct Engine::Impl
             linesBuffer[lineIndex].ellipsis = false;
           }
           numberOfLines--;
-          ellipsisLineIndex = middleLineIndex > 0u ? middleLineIndex - 1u : 0u;
+          ellipsisLineIndex = middleLineIndex - 1u;
           middleLineIndex   = (numberOfLines) / 2u;
         }
 
@@ -2071,18 +2076,23 @@ struct Engine::Impl
 
   void Initialize(LineRun& line)
   {
-    line.glyphRun.glyphIndex             = 0u;
-    line.glyphRun.numberOfGlyphs         = 0u;
-    line.characterRun.characterIndex     = 0u;
-    line.characterRun.numberOfCharacters = 0u;
-    line.width                           = 0.f;
-    line.ascender                        = 0.f;
-    line.descender                       = 0.f;
-    line.extraLength                     = 0.f;
-    line.alignmentOffset                 = 0.f;
-    line.direction                       = LTR;
-    line.ellipsis                        = false;
-    line.lineSpacing                     = mDefaultLineSpacing;
+    line.glyphRun.glyphIndex                              = 0u;
+    line.glyphRun.numberOfGlyphs                          = 0u;
+    line.characterRun.characterIndex                      = 0u;
+    line.characterRun.numberOfCharacters                  = 0u;
+    line.width                                            = 0.f;
+    line.ascender                                         = 0.f;
+    line.descender                                        = 0.f;
+    line.extraLength                                      = 0.f;
+    line.alignmentOffset                                  = 0.f;
+    line.direction                                        = LTR;
+    line.ellipsis                                         = false;
+    line.lineSpacing                                      = mDefaultLineSpacing;
+    line.isSplitToTwoHalves                               = false;
+    line.glyphRunSecondHalf.glyphIndex                    = 0u;
+    line.glyphRunSecondHalf.numberOfGlyphs                = 0u;
+    line.characterRunForSecondHalfLine.characterIndex     = 0u;
+    line.characterRunForSecondHalfLine.numberOfCharacters = 0u;
   }
 
   Type  mLayout;