From: joogab yun Date: Tue, 12 Mar 2019 00:22:13 +0000 (+0000) Subject: Merge "Text - Layout improvement." into devel/master X-Git-Tag: dali_1.4.11~4 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=60adf82ffbedaf4f10b55cb5f5aac1cb7d514b16;hp=87a9019904ab49c42f1e32e7ebb6a1512b0dc28c Merge "Text - Layout improvement." into devel/master --- diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-DebugRendering.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-DebugRendering.cpp old mode 100644 new mode 100755 index 80f2113..8b119d4 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-DebugRendering.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-DebugRendering.cpp @@ -187,7 +187,7 @@ int UtcDaliDebugRenderingGetVisual1(void) Vector2 naturalSize; textVisual.GetNaturalSize( naturalSize ); - DALI_TEST_EQUALS( naturalSize, Vector2( 80.f, 20.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + DALI_TEST_EQUALS( naturalSize, Vector2( 78.f, 20.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); const float height = textVisual.GetHeightForWidth( 40.f ); DALI_TEST_EQUALS( height, 38.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-LogicalModel.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-LogicalModel.cpp old mode 100644 new mode 100755 index d43e3e5..46dbc2f --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-LogicalModel.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-LogicalModel.cpp @@ -867,8 +867,8 @@ int UtcDaliGetLogicalCursorIndex(void) unsigned int characterIndex06[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 12u, 12u, 12u, 12u, 12u, 12u }; - unsigned int logicalIndex06[] = { 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u, - 16u, 15u, 14u, 13u, 12u, 11u }; + unsigned int logicalIndex06[] = { 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, + 13u, 16u, 15u, 14u, 13u, 12u }; unsigned int bidirectionalLineIndex06[] = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u }; diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp index 5538586..d37a1db 100755 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp @@ -574,8 +574,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // single line, line spacing = 0px { const float EXPECTED_SPACING = 0.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 343.0f, 19.0f); - const Vector3 EXPECTED_NATURAL_SIZE( 344.0f, 20.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 342.0f, 19.0f); + const Vector3 EXPECTED_NATURAL_SIZE( 342.0f, 20.0f, 0.0f ); controller->SetText(textSingle); controller->Relayout(size); @@ -593,8 +593,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // single line, line spacing = 20px { const float EXPECTED_SPACING = 20.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 343.0f, 19.0f ); - const Vector3 EXPECTED_NATURAL_SIZE( 344.0f, 40.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 342.0f, 19.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 342.0f, 40.0f, 0.0f ); controller->SetText(textSingle); controller->Relayout(size); @@ -613,8 +613,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // multi-line, line spacing = 0px { const float EXPECTED_SPACING = 0.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 333.0f, 39.0f ); - const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 58.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 332.0f, 39.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 118.0f, 58.0f, 0.0f ); controller->SetText(textMulti); controller->Relayout(size); @@ -633,8 +633,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // multi-line, line spacing = 20px { const float EXPECTED_SPACING = 20.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 119.0f, 57.0f ); - const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 118.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 118.0f, 57.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 118.0f, 118.0f, 0.0f ); controller->SetText(textMulti); controller->Relayout(size); @@ -653,8 +653,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // multi-line, line spacing = 30px { const float EXPECTED_SPACING = 30.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 119.0f, 117.0f ); - const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 148.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 118.0f, 117.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 118.0f, 148.0f, 0.0f ); controller->SetText(textMulti); controller->Relayout(size); diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Cursor.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Cursor.cpp old mode 100644 new mode 100755 index cba35a3..74d3358 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Cursor.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Cursor.cpp @@ -384,7 +384,7 @@ int UtcDaliGetClosestCursorIndex(void) float visualX02[] = { -100.f, 1000.f, 60.f, 79.f, 83.f, 148.f, 99.f }; float visualY02[] = { -100.f, 1000.f, 12.f, 12.f, 12.f, 12.f, 12.f }; CharacterHitTest::Mode mode02[] = { CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP }; - CharacterIndex logicalIndex02[] = { 0, 21u, 7u, 10u, 11u, 13u, 20u }; + CharacterIndex logicalIndex02[] = { 0, 21u, 8u, 11u, 11u, 13u, 20u }; bool isCharacterHit02[] = { false, false, true, true, true, true, true }; float visualX03[] = { 19.f, 104.f, -2.f, 127.f }; @@ -408,13 +408,13 @@ int UtcDaliGetClosestCursorIndex(void) CharacterHitTest::Mode mode04[] = { CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP }; - CharacterIndex logicalIndex04[] = { 0, 5u, 6u, 11u, 11u, + CharacterIndex logicalIndex04[] = { 0, 6u, 6u, 11u, 11u, 12u, 16u, 17u, 21u, 21u, 22u, 25u, 31u, 32u, 34u, 40u, 40u, 41u }; bool isCharacterHit04[] = { false, true, true, false, false, - false, true, true, true, false, - false, true, true, true, true, true, false }; + false, true, true, false, false, + false, true, true, true, true, false, false }; // 0 10 20 30 40 46 // abcשנבdefג קכghiעיןjk lחלךmnoצמם pqrפרףstuד אוvwxה @@ -447,12 +447,12 @@ int UtcDaliGetClosestCursorIndex(void) CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP }; - CharacterIndex logicalIndex05[] = { 0, 10u, 20u, 30u, 40u, 45u, - 46u, 50u, 60u, 70u, 80u, 92u, - 93u, 100u, 110u, 120u, 130u, 138u, - 139u, 150u, 160u, 170u, 180u, 185u, - 186u, 190u, 200u, 210u, 220u, 232u, - 233u, 240u, 250u, 260u, 265u }; + CharacterIndex logicalIndex05[] = { 0, 10u, 20u, 30u, 40u, 46u, + 47u, 52u, 62u, 71u, 82u, 93u, + 95u, 99u, 112u, 122u, 131u, 140u, + 141u, 153u, 162u, 171u, 181u, 187u, + 188u, 194u, 201u, 213u, 222u, 234u, + 236u, 244u, 254u, 263u, 265u }; bool isCharacterHit05[] = { false, true, true, true, true, false, false, true, true, true, true, false, false, true, true, true, true, false, @@ -493,7 +493,7 @@ int UtcDaliGetClosestCursorIndex(void) CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP }; CharacterIndex logicalIndex06[] = { 0, 10u, 20u, 30u, 40u, 45u, 46u, 50u, 60u, 70u, 80u, 92u, - 93u, 100u, 110u, 120u, 130u, 138u, + 93u, 100u, 110u, 121u, 131u, 138u, 139u, 150u, 160u, 170u, 180u, 185u, 186u, 190u, 200u, 210u, 220u, 231u, 232u, 240u, 250u, 260u, 265u }; @@ -513,7 +513,7 @@ int UtcDaliGetClosestCursorIndex(void) float visualX08[] = { 7.f }; float visualY08[] = { 12.f }; CharacterHitTest::Mode mode08[] = { CharacterHitTest::TAP }; - CharacterIndex logicalIndex08[] = { 1u }; + CharacterIndex logicalIndex08[] = { 2u }; bool isCharacterHit08[] = { true }; struct GetClosestCursorIndexData data[] = @@ -630,7 +630,7 @@ int UtcDaliGetCursorPosition(void) { tet_infoline(" UtcDaliGetCursorPosition"); - float visualX08[] = { 5.f }; + float visualX08[] = { 4.f }; float visualY08[] = { 0.f }; CharacterIndex logicalIndex08[] = { 1u }; @@ -685,14 +685,14 @@ int UtcDaliFindSelectionIndices(void) CharacterIndex endIndex03[] = { 11u }; CharacterIndex noHitText03[] = { 0u }; - float visualX04[] = { 132.f }; + float visualX04[] = { 131.f }; float visualY04[] = { 12.f }; bool found04[] = { true }; CharacterIndex startIndex04[] = { 12u }; CharacterIndex endIndex04[] = { 16u }; CharacterIndex noHitText04[] = { 0u }; - float visualX05[] = { 1.f }; + float visualX05[] = { 0.f }; float visualY05[] = { 12.f }; bool found05[] = { true }; CharacterIndex startIndex05[] = { 0 }; diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp index 249c728..20f4480 100755 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp @@ -594,7 +594,7 @@ int UtcDaliTextLayoutSetGetCursorWidth(void) Layout::Engine engine; - DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION ); + DALI_TEST_EQUALS( 0, engine.GetCursorWidth(), TEST_LOCATION ); engine.SetCursorWidth( 2 ); DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION ); @@ -717,13 +717,13 @@ int UtcDaliTextLayoutSmallTextArea02(void) Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun ); Size textArea(1.f, 1.f); - Size layoutSize(80.f, 19.f); - float positions[] = { 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f }; + Size layoutSize(78.f, 19.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 }; struct LineRun line = { { 0u, 11u }, { 0u, 11u }, - 80.f, + 78.f, 15.f, -4.f, 0.f, @@ -801,20 +801,20 @@ int UtcDaliTextLayoutMultilineText01(void) fontDescriptionRuns.PushBack( fontDescriptionRun1 ); fontDescriptionRuns.PushBack( fontDescriptionRun2 ); Size textArea(100.f, 300.f); - Size layoutSize(95.f, 95.f); + Size layoutSize(91.f, 95.f); float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f, - 1.f, -12.f, 9.f, -9.f, 17.f, -9.f, 27.f, -9.f, 36.f, -9.f, 45.f, -11.f, 51.f, -0.f, - 1.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 35.f, -9.f, 41.f, -9.f, 50.f, -9.f, 59.f, -11.f, 65.f, -0.f, - 1.f, -12.f, 5.f, -12.f, 9.f, -9.f, 19.f, -9.f, 28.f, -9.f, 35.f, -0.f, 41.f, -9.f, 50.f, -12.f, 54.f, -0.f, 59.f, -11.f, 66.f, -9.f, 75.f, -9.f, 83.f, -11.f, 91.f, -2.f + 0.f, -12.f, 8.f, -9.f, 16.f, -9.f, 26.f, -9.f, 35.f, -9.f, 44.f, -11.f, 50.f, -0.f, + 0.f, -12.f, 10.f, -12.f, 14.f, -12.f, 25.f, -9.f, 34.f, -9.f, 40.f, -9.f, 49.f, -9.f, 58.f, -11.f, 64.f, -0.f, + 0.f, -12.f, 4.f, -12.f, 8.f, -9.f, 18.f, -9.f, 27.f, -9.f, 34.f, -0.f, 40.f, -9.f, 49.f, -12.f, 53.f, -0.f, 58.f, -11.f, 65.f, -9.f, 74.f, -9.f, 82.f, -11.f, 90.f, -2.f }; struct LineRun line0 = { { 0u, 12u }, { 0u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -827,7 +827,7 @@ int UtcDaliTextLayoutMultilineText01(void) { { 12u, 6u }, { 12u, 6u }, - 43.f, + 42.f, 15.f, -4.f, 0.f, @@ -840,7 +840,7 @@ int UtcDaliTextLayoutMultilineText01(void) { { 18u, 7u }, { 18u, 7u }, - 52.f, + 49.f, 15.f, -4.f, 5.f, @@ -853,7 +853,7 @@ int UtcDaliTextLayoutMultilineText01(void) { { 25u, 9u }, { 25u, 10u }, - 66.f, + 63.f, 15.f, -4.f, 5.f, @@ -866,7 +866,7 @@ int UtcDaliTextLayoutMultilineText01(void) { { 34u, 14u }, { 35u, 14u }, - 95.f, + 91.f, 15.f, -4.f, 0.f, @@ -1000,21 +1000,21 @@ int UtcDaliTextLayoutMultilineText02(void) fontDescriptionRuns.PushBack( fontDescriptionRun4 ); fontDescriptionRuns.PushBack( fontDescriptionRun5 ); Size textArea(100.f, 300.f); - Size layoutSize(80.f, 114.f); + Size layoutSize(78.f, 114.f); float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, }; struct LineRun line0 = { { 0u, 12u }, { 0u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -1027,7 +1027,7 @@ int UtcDaliTextLayoutMultilineText02(void) { { 12u, 10u }, { 12u, 10u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -1040,7 +1040,7 @@ int UtcDaliTextLayoutMultilineText02(void) { { 22u, 6u }, { 22u, 6u }, - 34.f, + 32.f, 15.f, -4.f, 0.f, @@ -1053,7 +1053,7 @@ int UtcDaliTextLayoutMultilineText02(void) { { 28u, 10u }, { 28u, 10u }, - 67.f, + 65.f, 15.f, -4.f, 4.f, @@ -1066,7 +1066,7 @@ int UtcDaliTextLayoutMultilineText02(void) { { 38u, 12u }, { 38u, 12u }, - 78.f, + 76.f, 15.f, -4.f, 4.f, @@ -1079,7 +1079,7 @@ int UtcDaliTextLayoutMultilineText02(void) { { 50u, 5u }, { 50u, 5u }, - 43.f, + 42.f, 15.f, -4.f, 0.f, @@ -1150,18 +1150,18 @@ int UtcDaliTextLayoutMultilineText03(void) Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun ); Size textArea(100.f, 300.f); - Size layoutSize(96.f, 57.f); + Size layoutSize(94.f, 57.f); float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 84.f, -9.f, - 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 31.f, -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 67.f, -9.f, 77.f, -9.f, 83.f, -13.f, 86.f, -13.f, + 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -9.f, 46.f, -9.f, 56.f, -9.f, 62.f, -13.f, 65.f, -13.f, 74.f, -13.f, 83.f, -9.f, + 0.f, -9.f, 12.f, -9.f, 22.f, -13.f, 30.f, -9.f, 39.f, -13.f, 43.f, -13.f, 46.f, -9.f, 55.f, -9.f, 66.f, -9.f, 76.f, -9.f, 82.f, -13.f, 85.f, -13.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, }; struct LineRun line0 = { { 0u, 12u }, { 0u, 12u }, - 93.f, + 91.f, 15.f, -4.f, 0.f, @@ -1174,7 +1174,7 @@ int UtcDaliTextLayoutMultilineText03(void) { { 12u, 12u }, { 12u, 12u }, - 96.f, + 94.f, 15.f, -4.f, 0.f, @@ -1187,7 +1187,7 @@ int UtcDaliTextLayoutMultilineText03(void) { { 24u, 5u }, { 24u, 5u }, - 43.f, + 42.f, 15.f, -4.f, 0.f, @@ -1254,16 +1254,16 @@ int UtcDaliTextLayoutMultilineText04(void) Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun ); Size textArea(100.f, 300.f); - Size layoutSize(83.f, 38.f); + Size layoutSize(81.f, 38.f); float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -2.f, 82.f, -12.f + 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, -2.f, 81.f, -12.f }; struct LineRun line0 = { { 0u, 13u }, { 0u, 13u }, - 83.f, + 81.f, 15.f, -4.f, 0.f, @@ -1368,17 +1368,17 @@ int UtcDaliTextLayoutMultilineText05(void) fontDescriptionRuns.PushBack( fontDescriptionRun2 ); fontDescriptionRuns.PushBack( fontDescriptionRun3 ); Size textArea(100.f, 300.f); - Size layoutSize(89.f, 51.f); + Size layoutSize(87.f, 51.f); float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 70.f, -9.f, 76.f, -13.f, 79.f, -13.f, 88.f, -0.f, + 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, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f }; struct LineRun line0 = { { 0u, 12u }, { 0u, 12u }, - 89.f, + 87.f, 25.f, -7.f, 4.f, @@ -1391,7 +1391,7 @@ int UtcDaliTextLayoutMultilineText05(void) { { 12u, 5u }, { 12u, 5u }, - 43.f, + 42.f, 15.f, -4.f, 0.f, @@ -1686,23 +1686,23 @@ int UtcDaliTextUpdateLayout01(void) Size layoutSize(92.f, 361.f); float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, }; @@ -1710,7 +1710,7 @@ int UtcDaliTextUpdateLayout01(void) { { 0u, 12u }, { 0u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -1723,7 +1723,7 @@ int UtcDaliTextUpdateLayout01(void) { { 12u, 10u }, { 12u, 10u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -1736,7 +1736,7 @@ int UtcDaliTextUpdateLayout01(void) { { 22u, 6u }, { 22u, 6u }, - 34.f, + 32.f, 15.f, -4.f, 0.f, @@ -1755,14 +1755,14 @@ int UtcDaliTextUpdateLayout01(void) 4.f, 0.f, 0.f, - false, + true, false }; struct LineRun line05 = { { 48u, 11u }, { 48u, 11u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -1775,7 +1775,7 @@ int UtcDaliTextUpdateLayout01(void) { { 59u, 5u }, { 59u, 5u }, - 31.f, + 29.f, 15.f, -4.f, 0.f, @@ -1788,33 +1788,33 @@ int UtcDaliTextUpdateLayout01(void) { { 64u, 10u }, { 64u, 10u }, - 67.f, + 65.f, 15.f, -4.f, 4.f, 0.f, 0.f, - false, + true, false }; struct LineRun line08 = { { 74u, 12u }, { 74u, 12u }, - 78.f, + 76.f, 15.f, -4.f, 4.f, - 1.f, 0.f, - false, + 0.f, + true, false }; struct LineRun line09 = { { 86u, 6u }, { 86u, 6u }, - 43.f, + 42.f, 15.f, -4.f, 0.f, @@ -1827,7 +1827,7 @@ int UtcDaliTextUpdateLayout01(void) { { 92u, 12u }, { 92u, 12u }, - 78.f, + 76.f, 15.f, -4.f, 4.f, @@ -1853,7 +1853,7 @@ int UtcDaliTextUpdateLayout01(void) { { 123u, 5u }, { 123u, 5u }, - 31.f, + 29.f, 15.f, -4.f, 0.f, @@ -1866,7 +1866,7 @@ int UtcDaliTextUpdateLayout01(void) { { 128u, 12u }, { 128u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -1879,7 +1879,7 @@ int UtcDaliTextUpdateLayout01(void) { { 140u, 10u }, { 140u, 10u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -1892,7 +1892,7 @@ int UtcDaliTextUpdateLayout01(void) { { 150u, 6u }, { 150u, 6u }, - 34.f, + 32.f, 15.f, -4.f, 0.f, @@ -1905,20 +1905,20 @@ int UtcDaliTextUpdateLayout01(void) { { 156u, 10u }, { 156u, 10u }, - 67.f, + 65.f, 15.f, -4.f, 4.f, 0.f, 0.f, - false, + true, false }; struct LineRun line17 = { { 166u, 12u }, { 166u, 12u }, - 79.f, + 76.f, 15.f, -4.f, 4.f, @@ -1931,7 +1931,7 @@ int UtcDaliTextUpdateLayout01(void) { { 178u, 14u }, { 178u, 14u }, - 55.f, + 56.f, 15.f, -4.f, 0.f, @@ -2261,23 +2261,23 @@ int UtcDaliTextUpdateLayout02(void) Size layoutSize(92.f, 361.f); float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, }; @@ -2285,7 +2285,7 @@ int UtcDaliTextUpdateLayout02(void) { { 0u, 12u }, { 0u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -2298,7 +2298,7 @@ int UtcDaliTextUpdateLayout02(void) { { 12u, 10u }, { 12u, 10u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -2311,7 +2311,7 @@ int UtcDaliTextUpdateLayout02(void) { { 22u, 6u }, { 22u, 6u }, - 34.f, + 32.f, 15.f, -4.f, 0.f, @@ -2330,14 +2330,14 @@ int UtcDaliTextUpdateLayout02(void) 4.f, 0.f, 0.f, - false, + true, false }; struct LineRun line05 = { { 48u, 11u }, { 48u, 11u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -2350,7 +2350,7 @@ int UtcDaliTextUpdateLayout02(void) { { 59u, 5u }, { 59u, 5u }, - 31.f, + 29.f, 15.f, -4.f, 0.f, @@ -2363,7 +2363,7 @@ int UtcDaliTextUpdateLayout02(void) { { 64u, 10u }, { 64u, 10u }, - 67.f, + 65.f, 15.f, -4.f, 4.f, @@ -2376,7 +2376,7 @@ int UtcDaliTextUpdateLayout02(void) { { 74u, 12u }, { 74u, 12u }, - 78.f, + 76.f, 15.f, -4.f, 4.f, @@ -2389,7 +2389,7 @@ int UtcDaliTextUpdateLayout02(void) { { 86u, 6u }, { 86u, 6u }, - 43.f, + 42.f, 15.f, -4.f, 0.f, @@ -2402,7 +2402,7 @@ int UtcDaliTextUpdateLayout02(void) { { 92u, 12u }, { 92u, 12u }, - 78.f, + 76.f, 15.f, -4.f, 4.f, @@ -2428,7 +2428,7 @@ int UtcDaliTextUpdateLayout02(void) { { 123u, 5u }, { 123u, 5u }, - 31.f, + 29.f, 15.f, -4.f, 0.f, @@ -2441,7 +2441,7 @@ int UtcDaliTextUpdateLayout02(void) { { 128u, 12u }, { 128u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -2454,7 +2454,7 @@ int UtcDaliTextUpdateLayout02(void) { { 140u, 10u }, { 140u, 10u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -2467,7 +2467,7 @@ int UtcDaliTextUpdateLayout02(void) { { 150u, 6u }, { 150u, 6u }, - 34.f, + 32.f, 15.f, -4.f, 0.f, @@ -2480,7 +2480,7 @@ int UtcDaliTextUpdateLayout02(void) { { 156u, 10u }, { 156u, 10u }, - 67.f, + 65.f, 15.f, -4.f, 4.f, @@ -2493,7 +2493,7 @@ int UtcDaliTextUpdateLayout02(void) { { 166u, 12u }, { 166u, 12u }, - 79.f, + 76.f, 15.f, -4.f, 4.f, @@ -2506,7 +2506,7 @@ int UtcDaliTextUpdateLayout02(void) { { 178u, 14u }, { 178u, 14u }, - 55.f, + 56.f, 15.f, -4.f, 0.f, @@ -2836,23 +2836,23 @@ int UtcDaliTextUpdateLayout03(void) Size layoutSize(92.f, 361.f); float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, + 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, }; @@ -2860,7 +2860,7 @@ int UtcDaliTextUpdateLayout03(void) { { 0u, 12u }, { 0u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -2873,7 +2873,7 @@ int UtcDaliTextUpdateLayout03(void) { { 12u, 10u }, { 12u, 10u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -2886,7 +2886,7 @@ int UtcDaliTextUpdateLayout03(void) { { 22u, 6u }, { 22u, 6u }, - 34.f, + 32.f, 15.f, -4.f, 0.f, @@ -2912,7 +2912,7 @@ int UtcDaliTextUpdateLayout03(void) { { 48u, 11u }, { 48u, 11u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -2925,7 +2925,7 @@ int UtcDaliTextUpdateLayout03(void) { { 59u, 5u }, { 59u, 5u }, - 31.f, + 29.f, 15.f, -4.f, 0.f, @@ -2938,7 +2938,7 @@ int UtcDaliTextUpdateLayout03(void) { { 64u, 10u }, { 64u, 10u }, - 67.f, + 65.f, 15.f, -4.f, 4.f, @@ -2951,7 +2951,7 @@ int UtcDaliTextUpdateLayout03(void) { { 74u, 12u }, { 74u, 12u }, - 78.f, + 76.f, 15.f, -4.f, 4.f, @@ -2964,7 +2964,7 @@ int UtcDaliTextUpdateLayout03(void) { { 86u, 6u }, { 86u, 6u }, - 43.f, + 42.f, 15.f, -4.f, 0.f, @@ -2977,7 +2977,7 @@ int UtcDaliTextUpdateLayout03(void) { { 92u, 12u }, { 92u, 12u }, - 78.f, + 76.f, 15.f, -4.f, 4.f, @@ -3003,7 +3003,7 @@ int UtcDaliTextUpdateLayout03(void) { { 123u, 5u }, { 123u, 5u }, - 31.f, + 29.f, 15.f, -4.f, 0.f, @@ -3016,7 +3016,7 @@ int UtcDaliTextUpdateLayout03(void) { { 128u, 12u }, { 128u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -3029,7 +3029,7 @@ int UtcDaliTextUpdateLayout03(void) { { 140u, 10u }, { 140u, 10u }, - 76.f, + 75.f, 15.f, -4.f, 4.f, @@ -3042,7 +3042,7 @@ int UtcDaliTextUpdateLayout03(void) { { 150u, 6u }, { 150u, 6u }, - 34.f, + 32.f, 15.f, -4.f, 0.f, @@ -3055,7 +3055,7 @@ int UtcDaliTextUpdateLayout03(void) { { 156u, 10u }, { 156u, 10u }, - 67.f, + 65.f, 15.f, -4.f, 4.f, @@ -3068,7 +3068,7 @@ int UtcDaliTextUpdateLayout03(void) { { 166u, 12u }, { 166u, 12u }, - 79.f, + 76.f, 15.f, -4.f, 4.f, @@ -3081,7 +3081,7 @@ int UtcDaliTextUpdateLayout03(void) { { 178u, 14u }, { 178u, 14u }, - 55.f, + 56.f, 15.f, -4.f, 0.f, @@ -3184,9 +3184,9 @@ int UtcDaliTextLayoutEllipsis01(void) struct LineRun line01 = { - { 0u, 13u }, - { 0u, 13u }, - 93.f, + { 0u, 14u }, + { 0u, 14u }, + 99.f, 15.f, -4.f, 0.f, @@ -3200,7 +3200,7 @@ int UtcDaliTextLayoutEllipsis01(void) float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 83.f, -13.f, + 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, 82.f, -13.f, }; Size textArea( 100.f, 50.f ); @@ -3263,7 +3263,7 @@ int UtcDaliTextLayoutEllipsis02(void) { { 0u, 12u }, { 0u, 12u }, - 80.f, + 78.f, 15.f, -4.f, 4.f, @@ -3291,7 +3291,7 @@ int UtcDaliTextLayoutEllipsis02(void) float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, + 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.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 52.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.f, }; @@ -3419,9 +3419,9 @@ int UtcDaliTextLayoutEllipsis03(void) struct LineRun line01 = { - { 0u, 16u }, - { 0u, 16u }, - 95.f, + { 0u, 17u }, + { 0u, 17u }, + 99.f, 15.f, -4.f, 0.f, @@ -3435,7 +3435,7 @@ int UtcDaliTextLayoutEllipsis03(void) float positions[] = { - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f, }; Size textArea( 100.f, 50.f ); @@ -3564,7 +3564,7 @@ int UtcDaliTextLayoutEllipsis04(void) { { 0u, 16u }, { 0u, 16u }, - 96.f, + 94.f, 15.f, -4.f, 3.f, @@ -3592,7 +3592,7 @@ int UtcDaliTextLayoutEllipsis04(void) float positions[] = { - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f, 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 32.f, -10.f, 43.f, -13.f, 50.f, -10.f, 55.f, -10.f, 63.f, -0.f, 68.f, -10.f, 76.f, -10.f, 81.f, -13.f, 89.f, -10.f, 97.f, -0.f, }; @@ -3654,7 +3654,7 @@ int UtcDaliTextLayoutEllipsis05(void) { { 0u, 11u }, { 0u, 11u }, - 80.f, + 78.f, 15.f, -4.f, 0.f, @@ -3668,11 +3668,11 @@ int UtcDaliTextLayoutEllipsis05(void) float positions[] = { - 1.f, -12.f + 0.f, -12.f }; Size textArea( 100.f, 19.f ); - Size layoutSize( 80.f, 19.f ); + Size layoutSize( 78.f, 19.f ); LayoutTextData data = { @@ -3729,7 +3729,7 @@ int UtcDaliTextReorderLayout01(void) float positions[] = { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, + 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, }; Size textArea( 100.f, 300.f ); @@ -3852,8 +3852,8 @@ int UtcDaliTextReorderLayout02(void) 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f, 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 11.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f, 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f, }; @@ -3976,11 +3976,11 @@ int UtcDaliTextReorderLayout03(void) float positions[] = { - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f, 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 86.f, -8.f, 81.f, -6.f, 74.f, -8.f, 71.f, -7.f, 70.f, -11.f, 66.f, -0.f, 62.f, -7.f, 61.f, -11.f, 56.f, -11.f, 50.f, -8.f, 49.f, -11.f, 44.f, -11.f, 39.f, -8.f, 36.f, -0.f, 26.f, -10.f, 18.f, -13.f, 13.f, -10.f, 5.f, -10.f, 0.f, -0.f, 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f, 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f, }; @@ -4103,12 +4103,12 @@ int UtcDaliTextReorderLayout04(void) float positions[] = { - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, + 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f, 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, + 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f, 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f, - 28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 16.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f, + 26.f, -7.f, 25.f, -11.f, 20.f, -11.f, 14.f, -8.f, 13.f, -11.f, 8.f, -11.f, 3.f, -8.f, 0.f, -2.f, }; Size textArea( 100.f, 300.f ); @@ -4350,7 +4350,7 @@ int UtcDaliTextAlign02(void) fontDescriptionRuns.PushBack( fontDescriptionRun05 ); fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - float positions[] = { 0.f, 0.f, 2.f, 60.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 = @@ -4592,7 +4592,7 @@ int UtcDaliTextAlign04(void) fontDescriptionRuns.PushBack( fontDescriptionRun05 ); fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - float positions[] = { 10.f, 16.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 = @@ -4834,7 +4834,7 @@ int UtcDaliTextAlign06(void) fontDescriptionRuns.PushBack( fontDescriptionRun05 ); fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f }; + float positions[] = { 0.f, 0.f, 0.f, 0.f, 11.f, 21.f }; Size textArea( 100.f, 300.f ); AlignData data = @@ -4955,7 +4955,7 @@ int UtcDaliTextAlign07(void) fontDescriptionRuns.PushBack( fontDescriptionRun05 ); fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - float positions[] = { 20.f, 33.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 = @@ -5197,7 +5197,7 @@ int UtcDaliTextAlign09(void) fontDescriptionRuns.PushBack( fontDescriptionRun05 ); fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f }; + float positions[] = { 0.f, 0.f, 0.f, 0.f, 22.f, 42.f }; Size textArea( 100.f, 300.f ); AlignData data = @@ -5439,7 +5439,7 @@ int UtcDaliTextAlign11(void) fontDescriptionRuns.PushBack( fontDescriptionRun05 ); fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - float positions[] = { 20.f, 33.f, 2.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 = diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp index 9a7bf3f..025dd54 100755 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp @@ -552,13 +552,13 @@ int UtcDaliTextSoftwareStyling(void) struct GlyphInfoData glyphs01[] = { { 2u, 21154u, 0.f, 0.f, 0.f, 0.f, 16.f, 0.f, true, true }, - { 2u, 12298, 0.f, 0.f, 0.f, 0.f, 16.f, 0.f, true, true }, + { 2u, 12298u, 0.f, 0.f, 0.f, 0.f, 16.f, 0.f, true, true }, { 2u, 17828u, 0.f, 0.f, 0.f, 0.f, 16.f, 0.f, true, true }, }; struct GlyphInfoData glyphs02[] = { { 2u, 21154u, 0.f, 0.f, 0.f, 0.f, 16.f, 0.f, false, false }, - { 2u, 12298, 0.f, 0.f, 0.f, 0.f, 16.f, 0.f, false, true }, + { 2u, 12298u, 0.f, 0.f, 0.f, 0.f, 16.f, 0.f, false, true }, { 2u, 17828u, 0.f, 0.f, 0.f, 0.f, 16.f, 0.f, true, false }, }; diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-ViewModel.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-ViewModel.cpp index 66e2682..a7df603 100755 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-ViewModel.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-ViewModel.cpp @@ -56,7 +56,7 @@ const Length LOREM_NUMBER_OF_GLYPHS = 632; const Length LOREM_NUMBER_OF_GLYPHS_ELIDED = 395u; // The expected layout size for UtcDaliTextViewModelGetLayoutSize -const Size LAYOUT_SIZE( 197.f, 45.f ); +const Size LAYOUT_SIZE( 194.f, 45.f ); // The expected color indices for UtcDaliTextViewModelGetColors const ColorIndex COLOR_INDICES[] = { 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 1u, 1u, 1u, 1u, 1u, 3u, 1u, 1u, 1u, 0u, 0u, 0u, 0u }; @@ -586,10 +586,10 @@ int UtcDaliTextViewModelElideText02(void) float positions01[] = { 0.f, 8.f, 16.f, 26.f, 33.f, 41.f, 45.f, 54.f, 64.0f }; Size textSize02( 80.f, 100.f ); - float positions02[] = { 72.f, 63.f, 54.f, 50.f, 43.f, 38.f, 30.f, 23.0f }; + float positions02[] = { 75.f, 66.f, 57.f, 53.f, 46.f, 41.f, 33.f, 26.0f }; Size textSize03( 80.f, 100.f ); - float positions03[] = { 78.f, 73.f, 70.f, 65.f, 57.f, 55.f, 51.f, 50.f, 45.f, 35.f, 32.f, 24.f, 21.f }; + float positions03[] = { 79.f, 74.f, 71.f, 66.f, 58.f, 56.f, 52.f, 51.f, 46.f, 36.f, 33.f, 25.f, 22.f }; Size textSize04( 80.f, 10.f ); float positions04[] = { 2.f }; diff --git a/automated-tests/src/dali-toolkit/utc-Dali-FlexLayout.cpp b/automated-tests/src/dali-toolkit/utc-Dali-FlexLayout.cpp old mode 100644 new mode 100755 index 6047364..46a7658 --- a/automated-tests/src/dali-toolkit/utc-Dali-FlexLayout.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-FlexLayout.cpp @@ -831,7 +831,7 @@ int UtcDaliLayouting_FlexLayout_WithTextLabel(void) application.Render(); DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); - DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 54.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 52.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); // Test flexbox2 is sized to wrap its content DALI_TEST_EQUALS( flexbox1.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); @@ -844,7 +844,7 @@ int UtcDaliLayouting_FlexLayout_WithTextLabel(void) application.Render(); DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); - DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 216.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 214.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); DALI_TEST_EQUALS( flexbox1.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); DALI_TEST_EQUALS( flexbox1.GetProperty( Actor::Property::SIZE ), Vector3( 480.0f, 800.0f, 0.0f ), 0.0001f, TEST_LOCATION ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp old mode 100644 new mode 100755 index e1a1714..835c845 --- a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp @@ -1741,7 +1741,7 @@ int UtcDaliLayouting_HboxLayout_TextLabel(void) application.Render(); DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 368.0f, 0.0f ), 0.0001f, TEST_LOCATION ); - DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 54.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 52.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); textLabel.SetProperty( TextLabel::Property::TEXT, "WWWW" ); @@ -1750,7 +1750,7 @@ int UtcDaliLayouting_HboxLayout_TextLabel(void) application.Render(); DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 368.0f, 0.0f ), 0.0001f, TEST_LOCATION ); - DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 216.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( controls[0].GetProperty( Actor::Property::SIZE ), Vector3( 214.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); textLabel.SetProperty( TextLabel::Property::POINT_SIZE, 10.0f ); @@ -2804,7 +2804,7 @@ int UtcDaliLayouting_LayoutGroup01(void) application.Render(); tet_infoline("Test text is it's natural size"); - DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 228.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); tet_infoline("Test control is width of it's parent and height of it's child"); DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 600.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); @@ -2853,7 +2853,7 @@ int UtcDaliLayouting_LayoutGroup02(void) application.Render(); tet_infoline("Test text is it's natural size"); - DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 228.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); tet_infoline("Test text is centered in the control, the control is the size of the largest child"); DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); @@ -3023,9 +3023,9 @@ int UtcDaliLayouting_LayoutGroupWithPadding01(void) application.Render(); tet_infoline("Test text is it's natural size"); - DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 228.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); tet_infoline("Test control is size of it's child and control it's own padding"); - DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 245.0f, 86.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 243.0f, 86.0f, 0.0f ), 0.0001f, TEST_LOCATION ); END_TEST; } @@ -3073,9 +3073,9 @@ int UtcDaliLayouting_LayoutGroupWithChildMargin01(void) application.Render(); tet_infoline("Test text is it's natural size"); - DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 228.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); tet_infoline("Test control is width of it's parent and height of it's child"); - DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 255.0f, 91.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 253.0f, 91.0f, 0.0f ), 0.0001f, TEST_LOCATION ); END_TEST; } diff --git a/automated-tests/src/dali-toolkit/utc-Dali-LayoutingNesting.cpp b/automated-tests/src/dali-toolkit/utc-Dali-LayoutingNesting.cpp old mode 100644 new mode 100755 index a21b1b8..cbfb6ed --- a/automated-tests/src/dali-toolkit/utc-Dali-LayoutingNesting.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-LayoutingNesting.cpp @@ -237,8 +237,8 @@ int UtcDaliLayoutingNesting_LeafSizeChange(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( hbox.GetProperty( Actor::Property::SIZE ), Vector3( 260.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); - DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 260.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( hbox.GetProperty( Actor::Property::SIZE ), Vector3( 254.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 254.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); tet_infoline("Changing to longer text"); textLabel.SetProperty( TextLabel::Property::TEXT, "muchlongerText" ); @@ -247,8 +247,8 @@ int UtcDaliLayoutingNesting_LeafSizeChange(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( hbox.GetProperty( Actor::Property::SIZE ), Vector3( 432.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); - DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 432.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( hbox.GetProperty( Actor::Property::SIZE ), Vector3( 426.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 426.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); END_TEST; -} \ No newline at end of file +} diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp index 8b1005f..893d26a 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp @@ -1749,8 +1749,6 @@ int utcDaliTextFieldEvent02(void) // Move the cursor and check the position changes. Vector3 position1 = cursor.GetCurrentPosition(); - - application.ProcessEvent( GenerateKey( "", "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); application.ProcessEvent( GenerateKey( "", "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); // Render and notify @@ -1758,20 +1756,28 @@ int utcDaliTextFieldEvent02(void) application.Render(); Vector3 position2 = cursor.GetCurrentPosition(); - DALI_TEST_CHECK( position2.x < position1.x ); application.ProcessEvent( GenerateKey( "", "", "", DALI_KEY_CURSOR_RIGHT, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); - application.ProcessEvent( GenerateKey( "", "", "", DALI_KEY_CURSOR_RIGHT, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); // Render and notify application.SendNotification(); application.Render(); Vector3 position3 = cursor.GetCurrentPosition(); - DALI_TEST_EQUALS( position1, position3, TEST_LOCATION ); // Should be in the same position1. + + // Move the cursor to the first position. + application.ProcessEvent( GenerateKey( "", "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); + application.ProcessEvent( GenerateKey( "", "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); + + // Render and notify + application.SendNotification(); + application.Render(); + + Vector3 position4 = cursor.GetCurrentPosition(); + // Send some taps and check the cursor positions. // Try to tap at the beginning. @@ -1783,9 +1789,9 @@ int utcDaliTextFieldEvent02(void) application.Render(); // Cursor position should be the same than position1. - Vector3 position4 = cursor.GetCurrentPosition(); + Vector3 position5 = cursor.GetCurrentPosition(); - DALI_TEST_EQUALS( position2, position4, TEST_LOCATION ); // Should be in the same position2. + DALI_TEST_EQUALS( position4, position5, TEST_LOCATION ); // Should be in the same position2. // Tap away from the start position. application.ProcessEvent( GenerateTap( Gesture::Possible, 1u, 1u, Vector2( 16.f, 25.0f ) ) ); @@ -1795,9 +1801,9 @@ int utcDaliTextFieldEvent02(void) application.SendNotification(); application.Render(); - Vector3 position5 = cursor.GetCurrentPosition(); + Vector3 position6 = cursor.GetCurrentPosition(); - DALI_TEST_CHECK( position5.x > position4.x ); + DALI_TEST_CHECK( position6.x > position5.x ); // Remove all the text. application.ProcessEvent( GenerateKey( "", "", "", DALI_KEY_BACKSPACE, 0, 0, Integration::KeyEvent::Down, "", DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ) ); @@ -1809,9 +1815,9 @@ int utcDaliTextFieldEvent02(void) application.Render(); // Cursor position should be the same than position2. - Vector3 position6 = cursor.GetCurrentPosition(); + Vector3 position7 = cursor.GetCurrentPosition(); - DALI_TEST_EQUALS( position2, position6, TEST_LOCATION );// Should be in the same position2. + DALI_TEST_EQUALS( position4, position7, TEST_LOCATION );// Should be in the same position2. // Should not be a renderer. DALI_TEST_EQUALS( stencil.GetChildCount(), 0u, TEST_LOCATION ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp index 1208543..493655d 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -1173,7 +1173,7 @@ int UtcDaliToolkitTextlabelTextWrapMode(void) application.Render(); lineCount = label.GetProperty( TextLabel::Property::LINE_COUNT ); - DALI_TEST_EQUALS( lineCount, 4, TEST_LOCATION ); + DALI_TEST_EQUALS( lineCount, 2, TEST_LOCATION ); label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "CHARACTER" ); DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::CHARACTER ), TEST_LOCATION ); @@ -1188,7 +1188,7 @@ int UtcDaliToolkitTextlabelTextWrapMode(void) application.Render(); lineCount = label.GetProperty( TextLabel::Property::LINE_COUNT ); - DALI_TEST_EQUALS( lineCount, 4, TEST_LOCATION ); + DALI_TEST_EQUALS( lineCount, 2, TEST_LOCATION ); label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, Text::LineWrap::CHARACTER ); DALI_TEST_EQUALS( label.GetProperty< int >( TextLabel::Property::LINE_WRAP_MODE ), static_cast< int >( Text::LineWrap::CHARACTER ), TEST_LOCATION ); @@ -1197,7 +1197,7 @@ int UtcDaliToolkitTextlabelTextWrapMode(void) application.Render(); lineCount = label.GetProperty( TextLabel::Property::LINE_COUNT ); - DALI_TEST_EQUALS( lineCount, 3, TEST_LOCATION ); + DALI_TEST_EQUALS( lineCount, 2, TEST_LOCATION ); tet_infoline( "Ensure invalid string does not change wrapping mode" ); label.SetProperty( TextLabel::Property::LINE_WRAP_MODE, "InvalidWrapMode" ); diff --git a/dali-toolkit/devel-api/text/text-utils-devel.cpp b/dali-toolkit/devel-api/text/text-utils-devel.cpp index 3a286ad..faa90c5 100755 --- a/dali-toolkit/devel-api/text/text-utils-devel.cpp +++ b/dali-toolkit/devel-api/text/text-utils-devel.cpp @@ -588,6 +588,7 @@ Devel::PixelBuffer Render( const RendererParameters& textParameters, Vector::max(); const bool RTL = true; -const float CURSOR_WIDTH = 1.f; const float LINE_SPACING= 0.f; } //namespace @@ -65,13 +64,13 @@ struct LineLayout characterIndex( 0u ), numberOfGlyphs( 0u ), numberOfCharacters( 0u ), - length( 0.f ), - extraBearing( 0.f ), - extraWidth( 0.f ), - wsLengthEndOfLine( 0.f ), - ascender( 0.f ), + ascender( -MAX_FLOAT ), descender( MAX_FLOAT ), - lineSpacing( 0.f ) + lineSpacing( 0.f ), + penX( 0.f ), + previousAdvance( 0.f ), + length( 0.f ), + wsLengthEndOfLine( 0.f ) {} ~LineLayout() @@ -83,10 +82,6 @@ struct LineLayout characterIndex = 0u; numberOfGlyphs = 0u; numberOfCharacters = 0u; - length = 0.f; - extraBearing = 0.f; - extraWidth = 0.f; - wsLengthEndOfLine = 0.f; ascender = 0.f; descender = MAX_FLOAT; } @@ -95,22 +90,21 @@ struct LineLayout CharacterIndex characterIndex; ///< Index of the first character to be laid-out. Length numberOfGlyphs; ///< The number of glyph which fit in one line. Length numberOfCharacters; ///< The number of characters which fit in one line. - float length; ///< The addition of the advance metric of all the glyphs which fit in one line. - float extraBearing; ///< The extra width to be added to the line's length when the bearing of the first glyph is negative. - float extraWidth; ///< The extra width to be added to the line's length when the bearing + width of the last glyph is greater than the advance. - float wsLengthEndOfLine; ///< The length of the white spaces at the end of the line. float ascender; ///< The maximum ascender of all fonts in the line. float descender; ///< The minimum descender of all fonts in the line. float lineSpacing; ///< The line spacing + float penX; ///< The origin of the current glyph ( is the start point plus the accumulation of all advances ). + float previousAdvance; ///< The advance of the previous glyph. + float length; ///< The current length of the line. + float wsLengthEndOfLine; ///< The length of the white spaces at the end of the line. }; struct Engine::Impl { Impl() : mLayout( Layout::Engine::SINGLE_LINE_BOX ), - mCursorWidth( CURSOR_WIDTH ), - mDefaultLineSpacing( LINE_SPACING ), - mPreviousCharacterExtraWidth( 0.0f ) + mCursorWidth( 0.f ), + mDefaultLineSpacing( LINE_SPACING ) { } @@ -157,18 +151,12 @@ struct Engine::Impl { lineLayout.numberOfCharacters += tmpLineLayout.numberOfCharacters; lineLayout.numberOfGlyphs += tmpLineLayout.numberOfGlyphs; - lineLayout.length += tmpLineLayout.length; - if( 0.f < tmpLineLayout.length ) - { - lineLayout.length += lineLayout.wsLengthEndOfLine; + lineLayout.penX = tmpLineLayout.penX; + lineLayout.previousAdvance = tmpLineLayout.previousAdvance; + lineLayout.length = tmpLineLayout.length; lineLayout.wsLengthEndOfLine = tmpLineLayout.wsLengthEndOfLine; - } - else - { - lineLayout.wsLengthEndOfLine += tmpLineLayout.wsLengthEndOfLine; - } // Sets the maximum ascender. lineLayout.ascender = std::max( lineLayout.ascender, tmpLineLayout.ascender ); @@ -201,8 +189,6 @@ struct Engine::Impl { DALI_LOG_INFO( gLogFilter, Debug::Verbose, "-->GetLineLayoutForBox\n" ); DALI_LOG_INFO( gLogFilter, Debug::Verbose, " initial glyph index : %d\n", lineLayout.glyphIndex ); - // Stores temporary line layout which has not been added to the final line layout. - LineLayout tmpLineLayout; const bool isMultiline = mLayout == MULTI_LINE_BOX; const bool isWordLaidOut = parameters.lineWrapMode == Text::LineWrap::WORD; @@ -228,15 +214,19 @@ struct Engine::Impl // Set the direction of the first character of the line. lineLayout.characterIndex = *( parameters.glyphsToCharactersBuffer + lineLayout.glyphIndex ); - const CharacterDirection firstCharacterDirection = ( NULL == parameters.characterDirectionBuffer ) ? false : *( parameters.characterDirectionBuffer + lineLayout.characterIndex ); - CharacterDirection previousCharacterDirection = firstCharacterDirection; - const float extraWidth = glyphMetrics.xBearing + glyphMetrics.width - glyphMetrics.advance; - float tmpExtraWidth = ( 0.f < extraWidth ) ? extraWidth : 0.f; + // Stores temporary line layout which has not been added to the final line layout. + LineLayout tmpLineLayout; - float tmpExtraBearing = ( 0.f > glyphMetrics.xBearing ) ? -glyphMetrics.xBearing : 0.f; + // Initialize the start point. - tmpLineLayout.length += mCursorWidth; // Added to give some space to the cursor. + // The initial start point is zero. However it needs a correction according the 'x' bearing of the first glyph. + // i.e. if the bearing of the first glyph is negative it may exceed the boundaries of the text area. + // It needs to add as well space for the cursor if the text is in edit mode and extra space in case the text is outlined. + tmpLineLayout.penX = -glyphMetrics.xBearing + mCursorWidth + parameters.outlineWidth; + + // Initialize the advance of the previous glyph. + tmpLineLayout.previousAdvance = 0.f; // Calculate the line height if there is no characters. FontId lastFontId = glyphMetrics.fontId; @@ -292,15 +282,14 @@ struct Engine::Impl const Character character = *( parameters.textBuffer + characterFirstIndex ); const bool isWhiteSpace = TextAbstraction::IsWhiteSpace( character ); - // Used to restore the temporal line layout when a single word does not fit in the control's width and is split by character. - const float previousTmpLineLength = tmpLineLayout.length; - const float previousTmpExtraBearing = tmpExtraBearing; - const float previousTmpExtraWidth = tmpExtraWidth; + // Calculate the length of the line. - // Get the character's direction. - const CharacterDirection characterDirection = ( NULL == parameters.characterDirectionBuffer ) ? false : *( parameters.characterDirectionBuffer + characterFirstIndex ); + // Used to restore the temporal line layout when a single word does not fit in the control's width and is split by character. + const float previousTmpPenX = tmpLineLayout.penX; + const float previousTmpAdvance = tmpLineLayout.previousAdvance; + const float previousTmpLength = tmpLineLayout.length; + const float previousTmpWsLengthEndOfLine = tmpLineLayout.wsLengthEndOfLine; - // Increase the accumulated length. if( isWhiteSpace ) { // Add the length to the length of white spaces at the end of the line. @@ -308,107 +297,17 @@ struct Engine::Impl } else { - // Add as well any previous white space length. - tmpLineLayout.length += tmpLineLayout.wsLengthEndOfLine + glyphMetrics.advance; - - // An extra space may be added to the line for the first and last glyph of the line. - // If the bearing of the first glyph is negative, its positive value needs to be added. - // If the bearing plus the width of the last glyph is greater than the advance, the difference - // needs to be added. - - if( characterDirection == paragraphDirection ) - { - if( RTL == characterDirection ) - { - // <-- - // | Rrrrr| - // or - // | Rllrrr| - // or - // |lllrrrrr| - // | Rll| - // - - tmpExtraBearing = ( 0.f > glyphMetrics.xBearing ) ? -glyphMetrics.xBearing : 0.f; - } - else // LTR - { - // --> - // |lllL | - // or - // |llrrL | - // or - // |lllllrrr| - // |rrL | - // - - const float extraWidth = glyphMetrics.xBearing + glyphMetrics.width - glyphMetrics.advance; - tmpExtraWidth = ( 0.f < extraWidth ) ? extraWidth : 0.f; - tmpExtraWidth = std::max( mPreviousCharacterExtraWidth - glyphMetrics.advance, tmpExtraWidth ); - } - } - else - { - if( characterDirection != previousCharacterDirection ) - { - if( RTL == characterDirection ) - { - // --> - // |lllR | - - const float extraWidth = glyphMetrics.xBearing + glyphMetrics.width - glyphMetrics.advance; - tmpExtraWidth = ( 0.f < extraWidth ) ? extraWidth : 0.f; - tmpExtraWidth = std::max( mPreviousCharacterExtraWidth - glyphMetrics.advance, tmpExtraWidth ); - } - else // LTR - { - // <-- - // | Lrrrr| - - tmpExtraBearing = ( 0.f > glyphMetrics.xBearing ) ? -glyphMetrics.xBearing : 0.f; - } - } - else if( characterDirection == firstCharacterDirection ) - { - if( RTL == characterDirection ) - { - // --> - // |llllllrr| - // |Rr | - - tmpExtraBearing = ( 0.f > glyphMetrics.xBearing ) ? -glyphMetrics.xBearing : 0.f; - } - else // LTR - { - // <-- - // |llllrrrr| - // | llL| - - const float extraWidth = glyphMetrics.xBearing + glyphMetrics.width - glyphMetrics.advance; - tmpExtraWidth = ( 0.f < extraWidth ) ? extraWidth : 0.f; - tmpExtraWidth = std::max( mPreviousCharacterExtraWidth - glyphMetrics.advance, tmpExtraWidth ); - } - } - } + tmpLineLayout.penX += tmpLineLayout.previousAdvance + tmpLineLayout.wsLengthEndOfLine; + tmpLineLayout.previousAdvance = ( glyphMetrics.advance + parameters.interGlyphExtraAdvance ); + tmpLineLayout.length = tmpLineLayout.penX + glyphMetrics.xBearing + glyphMetrics.width; // Clear the white space length at the end of the line. tmpLineLayout.wsLengthEndOfLine = 0.f; } - // If calculation is end but wsLengthEndOfLine is exist, it means end of text is space. - // Merge remained length. - if ( !parameters.ignoreSpaceAfterText && glyphIndex == lastGlyphOfParagraphPlusOne-1 && tmpLineLayout.wsLengthEndOfLine > 0 ) - { - tmpLineLayout.length += tmpLineLayout.wsLengthEndOfLine; - tmpLineLayout.wsLengthEndOfLine = 0u; - } - - // Save the current extra width to compare with the next one - mPreviousCharacterExtraWidth = tmpExtraWidth; - // Check if the accumulated length fits in the width of the box. - if( ( completelyFill || isMultiline ) && !(parameters.ignoreSpaceAfterText && isWhiteSpace) && - ( tmpExtraBearing + lineLayout.length + lineLayout.wsLengthEndOfLine + tmpLineLayout.length + tmpExtraWidth > parameters.boundingBox.width ) ) + if( ( completelyFill || isMultiline ) && !isWhiteSpace && + ( tmpLineLayout.length > parameters.boundingBox.width ) ) { // Current word does not fit in the box's width. if( !oneWordLaidOut || completelyFill ) @@ -420,9 +319,11 @@ struct Engine::Impl { tmpLineLayout.numberOfCharacters -= charactersPerGlyph; tmpLineLayout.numberOfGlyphs -= numberOfGLyphsInGroup; - tmpLineLayout.length = previousTmpLineLength; - tmpExtraBearing = previousTmpExtraBearing; - tmpExtraWidth = previousTmpExtraWidth; + + tmpLineLayout.penX = previousTmpPenX; + tmpLineLayout.previousAdvance = previousTmpAdvance; + tmpLineLayout.length = previousTmpLength; + tmpLineLayout.wsLengthEndOfLine = previousTmpWsLengthEndOfLine; } // Add part of the word to the line layout. @@ -433,9 +334,6 @@ struct Engine::Impl DALI_LOG_INFO( gLogFilter, Debug::Verbose, " Current word does not fit.\n" ); } - lineLayout.extraBearing = tmpExtraBearing; - lineLayout.extraWidth = tmpExtraWidth; - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "<--GetLineLayoutForBox.\n" ); return; @@ -454,9 +352,6 @@ struct Engine::Impl paragraphDirection = *( parameters.characterDirectionBuffer + 1u + characterLastIndex ); } - lineLayout.extraBearing = tmpExtraBearing; - lineLayout.extraWidth = tmpExtraWidth; - DALI_LOG_INFO( gLogFilter, Debug::Verbose, " Must break\n" ); DALI_LOG_INFO( gLogFilter, Debug::Verbose, "<--GetLineLayoutForBox\n" ); @@ -476,19 +371,16 @@ struct Engine::Impl tmpLineLayout.Clear(); } - previousCharacterDirection = characterDirection; glyphIndex += numberOfGLyphsInGroup; } - lineLayout.extraBearing = tmpExtraBearing; - lineLayout.extraWidth = tmpExtraWidth; - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "<--GetLineLayoutForBox\n" ); } void SetGlyphPositions( const GlyphInfo* const glyphsBuffer, Length numberOfGlyphs, float outlineWidth, + float interGlyphExtraAdvance, Vector2* glyphPositionsBuffer ) { // Traverse the glyphs and set the positions. @@ -498,18 +390,17 @@ struct Engine::Impl // so the penX position needs to be moved to the right. const GlyphInfo& glyph = *glyphsBuffer; - float penX = ( 0.f > glyph.xBearing ) ? -glyph.xBearing + outlineWidth : outlineWidth; - + float penX = -glyph.xBearing + mCursorWidth + outlineWidth; for( GlyphIndex i = 0u; i < numberOfGlyphs; ++i ) { const GlyphInfo& glyph = *( glyphsBuffer + i ); Vector2& position = *( glyphPositionsBuffer + i ); - position.x = penX + glyph.xBearing; + position.x = std::round( penX + glyph.xBearing ); position.y = -glyph.yBearing; - penX += glyph.advance; + penX += ( glyph.advance + interGlyphExtraAdvance ); } } @@ -614,7 +505,7 @@ struct Engine::Impl lineRun->characterRun.characterIndex = ellipsisLayout.characterIndex; lineRun->characterRun.numberOfCharacters = ellipsisLayout.numberOfCharacters; lineRun->width = ellipsisLayout.length; - lineRun->extraLength = std::ceil( ( ellipsisLayout.wsLengthEndOfLine > 0.f ) ? ellipsisLayout.wsLengthEndOfLine - ellipsisLayout.extraWidth : 0.f ); + lineRun->extraLength = std::ceil( ellipsisLayout.wsLengthEndOfLine ); lineRun->ascender = ellipsisLayout.ascender; lineRun->descender = ellipsisLayout.descender; lineRun->direction = !RTL; @@ -629,6 +520,7 @@ struct Engine::Impl SetGlyphPositions( layoutParameters.glyphsBuffer + lineRun->glyphRun.glyphIndex, ellipsisLayout.numberOfGlyphs, layoutParameters.outlineWidth, + layoutParameters.interGlyphExtraAdvance, glyphPositionsBuffer + lineRun->glyphRun.glyphIndex - layoutParameters.startGlyphIndex ); } @@ -665,7 +557,7 @@ struct Engine::Impl if( isLastLine && !layoutParameters.isLastNewParagraph ) { - const float width = layout.extraBearing + layout.length + layout.extraWidth + layout.wsLengthEndOfLine; + const float width = layout.length + layout.wsLengthEndOfLine; if( MULTI_LINE_BOX == mLayout ) { lineRun.width = ( width > layoutParameters.boundingBox.width ) ? layoutParameters.boundingBox.width : width; @@ -679,8 +571,8 @@ struct Engine::Impl } else { - lineRun.width = layout.extraBearing + layout.length + layout.extraWidth; - lineRun.extraLength = std::ceil( ( layout.wsLengthEndOfLine > 0.f ) ? layout.wsLengthEndOfLine - layout.extraWidth : 0.f ); + lineRun.width = layout.length; + lineRun.extraLength = std::ceil( layout.wsLengthEndOfLine ); } // Rounds upward to avoid a non integer size. @@ -1008,6 +900,7 @@ struct Engine::Impl SetGlyphPositions( layoutParameters.glyphsBuffer + index, layout.numberOfGlyphs, layoutParameters.outlineWidth, + layoutParameters.interGlyphExtraAdvance, glyphPositionsBuffer + index - layoutParameters.startGlyphIndex ); // Updates the vertical pen's position. @@ -1091,7 +984,7 @@ struct Engine::Impl const CharacterIndex characterVisualIndex = bidiLine.characterRun.characterIndex + *bidiLine.visualToLogicalMap; const GlyphInfo& glyph = *( layoutParameters.glyphsBuffer + *( layoutParameters.charactersToGlyphsBuffer + characterVisualIndex ) ); - float penX = ( 0.f > glyph.xBearing ) ? -glyph.xBearing - layoutParameters.outlineWidth : -layoutParameters.outlineWidth; + float penX = -glyph.xBearing + layoutParameters.outlineWidth + mCursorWidth; Vector2* glyphPositionsBuffer = glyphPositions.Begin(); @@ -1116,8 +1009,8 @@ struct Engine::Impl const GlyphInfo& glyph = *( layoutParameters.glyphsBuffer + glyphIndex ); Vector2& position = *( glyphPositionsBuffer + glyphIndex ); - position.x = penX + glyph.xBearing; - penX += glyph.advance; + position.x = std::round( penX + glyph.xBearing ); + penX += ( glyph.advance + layoutParameters.interGlyphExtraAdvance ); } } } @@ -1221,7 +1114,7 @@ struct Engine::Impl line.alignmentOffset -= line.extraLength; } - line.alignmentOffset = floorf( line.alignmentOffset ); // try to avoid pixel alignment. + line.alignmentOffset = std::floor( line.alignmentOffset ); // floor() avoids pixel alignment issues. break; } case HorizontalAlignment::END: @@ -1269,7 +1162,6 @@ struct Engine::Impl Type mLayout; float mCursorWidth; float mDefaultLineSpacing; - float mPreviousCharacterExtraWidth; IntrusivePtr mMetrics; }; diff --git a/dali-toolkit/internal/text/layouts/layout-parameters.h b/dali-toolkit/internal/text/layouts/layout-parameters.h index ecd1f6b..e877e64 100755 --- a/dali-toolkit/internal/text/layouts/layout-parameters.h +++ b/dali-toolkit/internal/text/layouts/layout-parameters.h @@ -100,9 +100,10 @@ struct Parameters estimatedNumberOfLines( 0u ), lineWrapMode( lineWrapMode ), outlineWidth( outlineWidth ), - isLastNewParagraph( false ), ignoreSpaceAfterText( ignoreSpaceAfterText ), - matchSystemLanguageDirection ( matchSystemLanguageDirection ) + matchSystemLanguageDirection ( matchSystemLanguageDirection ), + interGlyphExtraAdvance( 0.f ), + isLastNewParagraph( false ) {} Vector2 boundingBox; ///< The size of the box containing the text. @@ -125,9 +126,10 @@ struct Parameters Length estimatedNumberOfLines; ///< The estimated number of lines. Text::LineWrap::Mode lineWrapMode; ///< The line wrap mode for moving to next line. float outlineWidth; ///< The outline width. - bool isLastNewParagraph:1; ///< Whether the last character is a new paragraph character. bool ignoreSpaceAfterText:1; ///< Whether ignoring spaces after text or not. Default is true. bool matchSystemLanguageDirection:1; ///< Whether match align for system language direction or not. Default is false. + float interGlyphExtraAdvance; ///< Extra advance added to each glyph. + bool isLastNewParagraph:1; ///< Whether the last character is a new paragraph character. }; } // namespace Layout