From 56441fba5b4b41afd45a02fe9871f3296ada3b21 Mon Sep 17 00:00:00 2001 From: Yunji Park Date: Thu, 4 Jul 2013 15:53:37 +0900 Subject: [PATCH] Modified to draw baseline align Change-Id: I2272351122f9472dc4779c8265f2453601747e8d --- src/graphics/text/FGrp_TextTextComposite.cpp | 28 ++++++++++++++++++++++------ src/graphics/text/FGrp_TextTextComposite.h | 2 +- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/graphics/text/FGrp_TextTextComposite.cpp b/src/graphics/text/FGrp_TextTextComposite.cpp index 4bce4f0..61d2af3 100644 --- a/src/graphics/text/FGrp_TextTextComposite.cpp +++ b/src/graphics/text/FGrp_TextTextComposite.cpp @@ -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); diff --git a/src/graphics/text/FGrp_TextTextComposite.h b/src/graphics/text/FGrp_TextTextComposite.h index ab86e08..4606bf9 100644 --- a/src/graphics/text/FGrp_TextTextComposite.h +++ b/src/graphics/text/FGrp_TextTextComposite.h @@ -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); -- 2.7.4