[Tizen] Fixed an incorrect ellipsis 81/199381/2 accepted/tizen/5.0/unified/20190213.070026 submit/tizen_5.0/20190212.063641
authorJoogab Yun <joogab.yun@samsung.com>
Mon, 11 Feb 2019 05:08:27 +0000 (14:08 +0900)
committerJoogab Yun <joogab.yun@samsung.com>
Mon, 11 Feb 2019 05:14:53 +0000 (14:14 +0900)
ex) An ellipsis may be displayed incorrectly when there are two or more
new-line characters.

    TextLabel labe34 = TextLabel::New(  "yesterday all my troubles
seemed so\n\n\n\n far away now it looks" );
    labe34.SetSize( 450, 100 );
    labe34.SetParentOrigin(ParentOrigin::TOP_LEFT);
    labe34.SetAnchorPoint(AnchorPoint::TOP_LEFT);
    labe34.SetPosition( 100.f, 500.f);
    labe34.SetProperty(TextLabel::Property::POINT_SIZE, 17.6f);
    labe34.SetProperty( TextLabel::Property::MULTI_LINE, true );
    labe34.SetProperty(TextLabel::Property::ELLIPSIS, true);
    stage.Add( labe34 );

Change-Id: Ib35468303dd985486de96f66cb24d244e16f5a69

automated-tests/src/dali-toolkit-internal/utc-Dali-Text-ViewModel.cpp [changed mode: 0755->0644]
dali-toolkit/internal/text/rendering/view-model.cpp

old mode 100755 (executable)
new mode 100644 (file)
index fc87193..49d36e0
@@ -71,7 +71,6 @@ struct ElideData
   unsigned int numberOfLines;
   unsigned int numberOfGlyphs;
   float*       positions;
-  unsigned int ignoreOfGlyphs;
 };
 
 bool ElideTest( const ElideData& data )
@@ -131,7 +130,7 @@ bool ElideTest( const ElideData& data )
   if( numberOfLines != 0u )
   {
     const LineRun& lastLine = *( model->GetLines() + numberOfLines - 1u );
-    const Length numberOfLastLineGlyphs = data.numberOfGlyphs - lastLine.glyphRun.glyphIndex + data.ignoreOfGlyphs;
+    const Length numberOfLastLineGlyphs = data.numberOfGlyphs - lastLine.glyphRun.glyphIndex;
 
     std::cout << "  last line alignment offset : " << lastLine.alignmentOffset << std::endl;
 
@@ -595,9 +594,6 @@ int UtcDaliTextViewModelElideText02(void)
   Size textSize04( 80.f, 10.f );
   float positions04[] = { 2.f };
 
-  Size textSize05( 180.f, 100.f );
-  float positions05[] = { 0.f, 0.f };
-
   struct ElideData data[] =
   {
     {
@@ -606,8 +602,7 @@ int UtcDaliTextViewModelElideText02(void)
       textSize00,
       0u,
       0u,
-      NULL,
-      0u
+      NULL
     },
     {
       "Latin script",
@@ -615,8 +610,7 @@ int UtcDaliTextViewModelElideText02(void)
       textSize01,
       5u,
       42u,
-      positions01,
-      0u
+      positions01
     },
     {
       "Hebrew script",
@@ -624,8 +618,7 @@ int UtcDaliTextViewModelElideText02(void)
       textSize02,
       5u,
       49u,
-      positions02,
-      0u
+      positions02
     },
     {
       "Arabic script",
@@ -633,8 +626,7 @@ int UtcDaliTextViewModelElideText02(void)
       textSize03,
       5u,
       79u,
-      positions03,
-      0u
+      positions03
     },
     {
       "Small control size, no line fits.",
@@ -642,20 +634,10 @@ int UtcDaliTextViewModelElideText02(void)
       textSize04,
       1u,
       1u,
-      positions04,
-      0u
-    },
-    {
-      "Include newline character",
-      "<font family='TizenSans'>yesterday\n all\n my troubles\n seemed so far\n\n away now it looks</font>",
-      textSize05,
-      5u,
-      40,
-      positions05,
-      5u
-    },
+      positions04
+    }
   };
-  const unsigned int numberOfTests = 6u;
+  const unsigned int numberOfTests = 5u;
 
   for( unsigned int index = 0u; index < numberOfTests; ++index )
   {
index 27932b2..70b642f 100755 (executable)
@@ -332,12 +332,6 @@ void ViewModel::ElideGlyphs()
               glyphInfo = ellipsisGlyph;
 
               // Change the 'x' and 'y' position of the ellipsis glyph.
-
-              if( position.x > firstPenX )
-              {
-                position.x = firstPenX + removedGlypsWidth - ellipsisGlyphWidth;
-              }
-
               position.x += ellipsisGlyph.xBearing;
               position.y = penY - ellipsisGlyph.yBearing;
 
@@ -349,11 +343,6 @@ void ViewModel::ElideGlyphs()
           {
             if( index > 0u )
             {
-              // If the index decreases to the previous line, firstPenX must be recalculated.
-              if( numberOfLaidOutGlyphs - index == lastLine.glyphRun.numberOfGlyphs)
-              {
-                firstPenSet = false;
-              }
               --index;
             }
             else