When calculating the layout size, the problem occurs.
authorJoogab Yun <joogab.yun@samsung.com>
Wed, 26 Feb 2020 06:24:32 +0000 (15:24 +0900)
committerJoogab Yun <joogab.yun@samsung.com>
Thu, 5 Mar 2020 04:55:45 +0000 (13:55 +0900)
because it is calculated smaller when ReorderBiDiLayout() in RTL language.

For example, if layout.length is calculated as 487 in GetLineLayoutForBox()
but length is calculated as 482 in ReorderBiDiLayout()
(SetResizePolicy is USE_NATURAL_SIZE and Set MULTI_LINE)

sample)
    TextLabel labe21 = TextLabel::New();
    labe21.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::WIDTH );
    labe21.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
    labe21.SetProperty(Toolkit::DevelTextLabel::Property::BACKGROUND, backgroundMap);
    labe21.SetParentOrigin(ParentOrigin::TOP_LEFT);
    labe21.SetAnchorPoint(AnchorPoint::TOP_LEFT);
    labe21.SetProperty(TextLabel::Property::POINT_SIZE, 34.f);
    labe21.SetPosition( 145.f, 100.f);
    labe21.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "END" );
    labe21.SetProperty(Dali::Toolkit::TextLabel::Property::TEXT,  "مرحبا بالعالم Hello world" );

Change-Id: I1c56ec9a7e54521e55e72fbf28ad8438ea9e718d

automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp
dali-toolkit/internal/text/layouts/layout-engine.cpp

index 8c934d36f45fa6222f8d6cd431bf356aa64dc9f9..04ef6f060c1033112d0c6cd10de5a9bce0ec84d4 100755 (executable)
@@ -901,7 +901,7 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 12u, 10u },
     { 12u, 10u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -927,7 +927,7 @@ int UtcDaliTextLayoutMultilineText02(void)
   {
     { 28u, 10u },
     { 28u, 10u },
-    64.f,
+    65.f,
     15.f,
     -4.f,
     4.f,
@@ -1442,7 +1442,7 @@ int UtcDaliTextLayoutMultilineText07(void)
   {
     { 3u, 3u },
     { 3u, 3u },
-    18.f,
+    21.f,
     15.f,
     -4.f,
     0.f,
@@ -1748,7 +1748,7 @@ int UtcDaliTextUpdateLayout01(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun16 );
   fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(90.f, 361.f);
+  Size layoutSize(92.f, 361.f);
   float positions[] =
   {
     0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     //   0 ..  11
@@ -1788,7 +1788,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 12u, 10u },
     { 12u, 10u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -1814,7 +1814,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 28u, 20u },
     { 28u, 20u },
-    90.f,
+    92.f,
     15.f,
     -4.f,
     4.f,
@@ -1827,7 +1827,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 48u, 11u },
     { 48u, 11u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -1840,7 +1840,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 59u, 5u },
     { 59u, 5u },
-    28.f,
+    29.f,
     15.f,
     -4.f,
     0.f,
@@ -1853,7 +1853,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 64u, 10u },
     { 64u, 10u },
-    64.f,
+    65.f,
     15.f,
     -4.f,
     4.f,
@@ -1905,7 +1905,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 104u, 19u },
     { 104u, 19u },
-    88.f,
+    90.f,
     15.f,
     -4.f,
     4.f,
@@ -1918,7 +1918,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 123u, 5u },
     { 123u, 5u },
-    28.f,
+    29.f,
     15.f,
     -4.f,
     0.f,
@@ -1944,7 +1944,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 140u, 10u },
     { 140u, 10u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -1970,7 +1970,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 156u, 10u },
     { 156u, 10u },
-    64.f,
+    65.f,
     15.f,
     -4.f,
     4.f,
@@ -1996,7 +1996,7 @@ int UtcDaliTextUpdateLayout01(void)
   {
     { 178u, 14u },
     { 178u, 14u },
-    54.f,
+    56.f,
     15.f,
     -4.f,
     0.f,
@@ -2323,7 +2323,7 @@ int UtcDaliTextUpdateLayout02(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun16 );
   fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(90.f, 361.f);
+  Size layoutSize(92.f, 361.f);
   float positions[] =
   {
     0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     //   0 ..  11
@@ -2363,7 +2363,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 12u, 10u },
     { 12u, 10u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -2389,7 +2389,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 28u, 20u },
     { 28u, 20u },
-    90.f,
+    92.f,
     15.f,
     -4.f,
     4.f,
@@ -2402,7 +2402,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 48u, 11u },
     { 48u, 11u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -2415,7 +2415,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 59u, 5u },
     { 59u, 5u },
-    28.f,
+    29.f,
     15.f,
     -4.f,
     0.f,
@@ -2428,7 +2428,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 64u, 10u },
     { 64u, 10u },
-    64.f,
+    65.f,
     15.f,
     -4.f,
     4.f,
@@ -2480,7 +2480,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 104u, 19u },
     { 104u, 19u },
-    88.f,
+    90.f,
     15.f,
     -4.f,
     4.f,
@@ -2493,7 +2493,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 123u, 5u },
     { 123u, 5u },
-    28.f,
+    29.f,
     15.f,
     -4.f,
     0.f,
@@ -2519,7 +2519,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 140u, 10u },
     { 140u, 10u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -2545,7 +2545,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 156u, 10u },
     { 156u, 10u },
-    64.f,
+    65.f,
     15.f,
     -4.f,
     4.f,
@@ -2571,7 +2571,7 @@ int UtcDaliTextUpdateLayout02(void)
   {
     { 178u, 14u },
     { 178u, 14u },
-    54.f,
+    56.f,
     15.f,
     -4.f,
     0.f,
@@ -2898,7 +2898,7 @@ int UtcDaliTextUpdateLayout03(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun16 );
   fontDescriptionRuns.PushBack( fontDescriptionRun17 );
   Size textArea(100.f, 300.f);
-  Size layoutSize(90.f, 361.f);
+  Size layoutSize(92.f, 361.f);
   float positions[] =
   {
     0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,                                                                                                     //   0 ..  11
@@ -2938,7 +2938,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 12u, 10u },
     { 12u, 10u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -2964,7 +2964,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 28u, 20u },
     { 28u, 20u },
-    90.f,
+    92.f,
     15.f,
     -4.f,
     4.f,
@@ -2977,7 +2977,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 48u, 11u },
     { 48u, 11u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -2990,7 +2990,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 59u, 5u },
     { 59u, 5u },
-    28.f,
+    29.f,
     15.f,
     -4.f,
     0.f,
@@ -3003,7 +3003,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 64u, 10u },
     { 64u, 10u },
-    64.f,
+    65.f,
     15.f,
     -4.f,
     4.f,
@@ -3055,7 +3055,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 104u, 19u },
     { 104u, 19u },
-    88.f,
+    90.f,
     15.f,
     -4.f,
     4.f,
@@ -3068,7 +3068,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 123u, 5u },
     { 123u, 5u },
-    28.f,
+    29.f,
     15.f,
     -4.f,
     0.f,
@@ -3094,7 +3094,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 140u, 10u },
     { 140u, 10u },
-    74.f,
+    75.f,
     15.f,
     -4.f,
     4.f,
@@ -3120,7 +3120,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 156u, 10u },
     { 156u, 10u },
-    64.f,
+    65.f,
     15.f,
     -4.f,
     4.f,
@@ -3146,7 +3146,7 @@ int UtcDaliTextUpdateLayout03(void)
   {
     { 178u, 14u },
     { 178u, 14u },
-    54.f,
+    56.f,
     15.f,
     -4.f,
     0.f,
@@ -3629,7 +3629,7 @@ int UtcDaliTextLayoutEllipsis04(void)
   {
     { 0u, 16u },
     { 0u, 16u },
-    92.f,
+    94.f,
     15.f,
     -4.f,
     3.f,
@@ -3642,7 +3642,7 @@ int UtcDaliTextLayoutEllipsis04(void)
   {
     { 16u, 18u },
     { 16u, 18u },
-    95.f,
+    97.f,
     15.f,
     -4.f,
     4.f,
@@ -3980,7 +3980,7 @@ int UtcDaliTextAlign02(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 0.f, 0.f, 4.f, 61.f, 0.f, 0.f };
+  float positions[] = { 0.f, 0.f, 2.f, 61.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4222,7 +4222,7 @@ int UtcDaliTextAlign04(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 11.f, 18.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = { 11.f, 17.f, 0.f, 0.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4343,7 +4343,7 @@ int UtcDaliTextAlign05(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 0.f, 0.f, 0.f, 30.f, 0.f, 0.f };
+  float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4585,7 +4585,7 @@ int UtcDaliTextAlign07(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 22.f, 36.f, 0.f, 0.f, 0.f, 0.f };
+  float positions[] = { 22.f, 35.f, 0.f, 0.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -4827,7 +4827,7 @@ int UtcDaliTextAlign09(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 0.f, 0.f, 0.f, 0.f, 22.f, 43.f };
+  float positions[] = { 0.f, 0.f, 0.f, 0.f, 22.f, 42.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
@@ -5069,7 +5069,7 @@ int UtcDaliTextAlign11(void)
   fontDescriptionRuns.PushBack( fontDescriptionRun05 );
   fontDescriptionRuns.PushBack( fontDescriptionRun06 );
 
-  float positions[] = { 22.f, 36.f, 4.f, 0.f, 0.f, 0.f };
+  float positions[] = { 22.f, 35.f, 2.f, 0.f, 0.f, 0.f };
 
   Size textArea( 100.f, 300.f );
   AlignData data =
index 3a1537539d1f581d337577c40f336def380bb94f..eef1e7c9fdb9ad5c78936141ecb3dde7d44840e4 100755 (executable)
@@ -376,7 +376,7 @@ struct Engine::Impl
           }
           else
           {
-            lineLayout.length = length;
+            lineLayout.length = std::max( length, lineLayout.length );
           }
         }
       }