[Tizen] Fix issue where vertical alignment "CENTER" does not align based on line... ref/for/tizen_9.0
authorANZ1217 <chihun.jeong@samsung.com>
Thu, 13 Mar 2025 04:14:39 +0000 (13:14 +0900)
committerANZ1217 <chihun.jeong@samsung.com>
Mon, 17 Mar 2025 04:43:58 +0000 (13:43 +0900)
Change-Id: I5630d390a3d8595f390569cc9c4d70e1a1cdbf04

dali-toolkit/internal/text/async-text/async-text-loader-impl.cpp
dali-toolkit/internal/text/layouts/layout-engine.cpp
dali-toolkit/internal/text/rendering/text-typesetter.cpp

index a83aef6af1bdcc7fd98a9d9841018d155bf8c045..cb5693c966c639b33d0c2129551cbd1b5bb33cb2 100644 (file)
@@ -207,6 +207,10 @@ void AsyncTextLoader::Update(AsyncTextParameters& parameters)
   defaultFontDescription.width = parameters.fontWidth;
   defaultFontDescription.slant = parameters.fontSlant;
 
+  mTextModel->mHorizontalAlignment   = parameters.horizontalAlignment;
+  mTextModel->mVerticalAlignment     = parameters.verticalAlignment;
+  mTextModel->mVerticalLineAlignment = parameters.verticalLineAlignment;
+
 
   ////////////////////////////////////////////////////////////////////////////////
   // Update visual model.
index 6437a0cfc139f20489f46cc2344380be9337fb7c..904374e47a3b63d7126b4dbbb6b63526bd83233d 100644 (file)
@@ -1941,6 +1941,14 @@ struct Engine::Impl
           hyphensCount--;
         }
 
+        if(!isMultiline)
+        {
+          // Recalculate line spacing and line height
+          LineRun& firstLineRun = *(lines.Begin());
+          firstLineRun.lineSpacing = GetLineSpacing(firstLineRun.ascender + -firstLineRun.descender, layout.relativeLineSize);
+          layoutSize.height = GetLineHeight(firstLineRun, false);
+        }
+
         // No more lines to layout.
         break;
       }
index 52747a3ccd6675c152c3627c3052d9d3e2f46412..c493430c391d8815bca5f0842552c31045e95a9b 100644 (file)
@@ -267,8 +267,6 @@ Devel::PixelBuffer Typesetter::RenderWithPixelBuffer(const Vector2& size, Toolki
     case VerticalAlignment::CENTER:
     {
       penY = static_cast<int32_t>(std::round(0.5f * (size.height - layoutSize.height)));
-      penY = penY < 0.f ? 0.f : penY;
-
       break;
     }
     case VerticalAlignment::BOTTOM: