From: Paul Wisbey Date: Mon, 2 Mar 2015 18:52:37 +0000 (+0000) Subject: Fixed GetHeightForWidth for text label X-Git-Tag: new_text_0.1~23 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=a44ea1b60d12c879dacaa5f78b6c042b59ed6c2c;hp=6516c90c9e264cf0a682aff36cb9bc5f1964b3e2 Fixed GetHeightForWidth for text label Change-Id: Ie91ab93ea2fa4fc11589baf867f468c5ceb44082 --- diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp index 03dcf44..080967e 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -336,6 +336,16 @@ void TextField::OnInitialize() } } +Vector3 TextField::GetNaturalSize() +{ + return mController->GetNaturalSize(); +} + +float TextField::GetHeightForWidth( float width ) +{ + return mController->GetHeightForWidth( width ); +} + void TextField::OnRelayout( const Vector2& size, ActorSizeContainer& container ) { if( mController->Relayout( size ) ) diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.h b/dali-toolkit/internal/controls/text-controls/text-field-impl.h index 7b013f5..b6b11b1 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.h +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.h @@ -79,6 +79,16 @@ private: // From Control virtual void OnInitialize(); /** + * @copydoc Control::GetNaturalSize() + */ + virtual Vector3 GetNaturalSize(); + + /** + * @copydoc Control::GetHeightForWidth() + */ + virtual float GetHeightForWidth( float width ); + + /** * @copydoc Control::OnInitialize() */ virtual void OnRelayout( const Vector2& size, ActorSizeContainer& container ); diff --git a/dali-toolkit/public-api/text/layouts/layout-engine.cpp b/dali-toolkit/public-api/text/layouts/layout-engine.cpp index ae65e17..e6a3a63 100644 --- a/dali-toolkit/public-api/text/layouts/layout-engine.cpp +++ b/dali-toolkit/public-api/text/layouts/layout-engine.cpp @@ -102,6 +102,8 @@ struct LayoutEngine::Impl } visualModel.SetGlyphPositions( &glyphPositions[0], glyphCount ); + + visualModel.SetActualSize( Vector2(penX, fontMetrics.height) ); } } @@ -166,11 +168,12 @@ struct LayoutEngine::Impl } else if( endPenX > boundingBox.width ) { - actualSize.width = ( actualSize.width < endPenX - glyph.advance ) ? endPenX - glyph.advance : actualSize.width; break; } } + actualSize.width = ( actualSize.width < endPenX ) ? endPenX : actualSize.width; + // If end of text or no whitespace found if( glyphCount == j || endIndex == i )