Modified to draw baseline align
authorYunji Park <yunji19.park@samsung.com>
Thu, 4 Jul 2013 06:53:37 +0000 (15:53 +0900)
committerYunji Park <yunji19.park@samsung.com>
Thu, 4 Jul 2013 06:53:37 +0000 (15:53 +0900)
Change-Id: I2272351122f9472dc4779c8265f2453601747e8d

src/graphics/text/FGrp_TextTextComposite.cpp
src/graphics/text/FGrp_TextTextComposite.h

index 4bce4f0..61d2af3 100644 (file)
@@ -1146,7 +1146,7 @@ CATCH:
 
 result
 TextComposite::DrawWithBaseline(_CanvasImpl& canvasImpl, FloatRectangle& displayRect, int startTextIndex, int textLength, const TextObjectAlignment alignment,
-                                        const TextObjectActionType action, int baseline)
+                                        const TextObjectActionType action, float baseline)
 {
        if (textLength == 0)
        {
@@ -1932,7 +1932,7 @@ TextComposite::DrawLine(_CanvasImpl& canvasImpl, TextLine* pTextLine, const Floa
                if (__elementVertialAlignment & TEXT_OBJECT_ALIGNMENT_BASELINE)
                {
                        return DrawWithBaselineWithEllipsis(canvasImpl, adjustedRect, lineOffset, lineLength,
-                                       (TextObjectAlignment)((TEXT_ALIGNMASK_HORIZ & align) | TEXT_OBJECT_ALIGNMENT_BASELINE), action, pTextLine->GetBaseline());
+                                       (TextObjectAlignment)((TEXT_ALIGNMASK_HORIZ & align) | TEXT_OBJECT_ALIGNMENT_BASELINE), action, pTextLine->GetBaselineF());
                }
                else
                {
@@ -1945,7 +1945,7 @@ TextComposite::DrawLine(_CanvasImpl& canvasImpl, TextLine* pTextLine, const Floa
                if (__elementVertialAlignment & TEXT_OBJECT_ALIGNMENT_BASELINE)
                {
                        return DrawWithBaseline(canvasImpl, adjustedRect, lineOffset, lineLength,
-                                       (TextObjectAlignment)((TEXT_ALIGNMASK_HORIZ & align) | TEXT_OBJECT_ALIGNMENT_BASELINE), action, pTextLine->GetBaseline());
+                                       (TextObjectAlignment)((TEXT_ALIGNMASK_HORIZ & align) | TEXT_OBJECT_ALIGNMENT_BASELINE), action, pTextLine->GetBaselineF());
                }
                else
                {
@@ -4011,13 +4011,29 @@ TextComposite::ComposeInNoneWrap(FloatRectangle& rect, NoneWrapComposeInfo* pNon
        FloatRectangle lineBounds;
        FloatDimension lineTextSize;
        int lineLength = __length;
-       float baseline = 0;
+       float baseline = 0.0f;
+       float elementBaseline = 0.0f;
 
        GetRegion(0, lineLength, lineTextSize.width, lineTextSize.height);
-
        lineBounds.width = (rect.width < lineTextSize.width) ? lineTextSize.width :rect.width;
        lineBounds.height = lineTextSize.height;
-       baseline = lineBounds.height / 3.0f;
+
+       for (int i = 0; i < GetElementCount(); i++)
+       {
+               TextElement* pTextElement = static_cast < TextElement* >(__pTextElementList->GetAt(0));
+               if (pTextElement)
+               {
+                       TextSimple* pSimpleText = dynamic_cast < TextSimple* >(pTextElement);
+                       if (pSimpleText)
+                       {
+                               elementBaseline = pSimpleText->GetBaselineF();
+                               if (baseline < elementBaseline)
+                               {
+                                       baseline = elementBaseline;
+                               }
+                       }
+               }
+       }
 
        pTextLine->SetBounds(lineBounds);
        pTextLine->SetRegion(lineTextSize.width, lineTextSize.height);
index ab86e08..4606bf9 100644 (file)
@@ -85,7 +85,7 @@ public:
                        const TextObjectActionType action, int baseline);
 
        result DrawWithBaseline(_CanvasImpl& canvasImpl, FloatRectangle& displayRect, int startTextIndex, int textLength, const TextObjectAlignment alignment,
-                       const TextObjectActionType action, int baseline);
+                       const TextObjectActionType action, float baseline);
 
        result DrawWithBaselineWithEllipsis(_CanvasImpl& canvasImpl, FloatRectangle& displayRect, int startTextIndex, int textLength, const TextObjectAlignment alignment,
                                         const TextObjectActionType action, int baseline);