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)
{
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
{
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
{
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);
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);