X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-label-impl.cpp;h=955e0f23400f225ee9c61ceb6c1fa6a3bb8a5c6a;hp=08578526044050d707ea51a214fab23e2194be14;hb=f4c1e7f52d49c3ce033b9ee4c3c7414b06a22d45;hpb=7db6fbae4d8855dfb66823e2b5ba6b86da0ebb1b diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp index 0857852..955e0f2 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,18 +19,16 @@ #include // EXTERNAL INCLUDES -#include +#include #include // INTERNAL INCLUDES #include -#include -#include -#include +#include +#include #include using Dali::Toolkit::Text::LayoutEngine; -using Dali::Toolkit::Text::Backend; namespace Dali { @@ -49,26 +47,10 @@ namespace namespace { -#if defined(DEBUG_ENABLED) - Debug::Filter* gLogFilter = Debug::Filter::New(Debug::Concise, true, "LOG_TEXT_CONTROLS"); +#if defined ( DEBUG_ENABLED ) + Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, true, "LOG_TEXT_CONTROLS"); #endif -const Scripting::StringEnum HORIZONTAL_ALIGNMENT_STRING_TABLE[] = -{ - { "BEGIN", Toolkit::Text::LayoutEngine::HORIZONTAL_ALIGN_BEGIN }, - { "CENTER", Toolkit::Text::LayoutEngine::HORIZONTAL_ALIGN_CENTER }, - { "END", Toolkit::Text::LayoutEngine::HORIZONTAL_ALIGN_END }, -}; -const unsigned int HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT = sizeof( HORIZONTAL_ALIGNMENT_STRING_TABLE ) / sizeof( HORIZONTAL_ALIGNMENT_STRING_TABLE[0] ); - -const Scripting::StringEnum VERTICAL_ALIGNMENT_STRING_TABLE[] = -{ - { "TOP", Toolkit::Text::LayoutEngine::VERTICAL_ALIGN_TOP }, - { "CENTER", Toolkit::Text::LayoutEngine::VERTICAL_ALIGN_CENTER }, - { "BOTTOM", Toolkit::Text::LayoutEngine::VERTICAL_ALIGN_BOTTOM }, -}; -const unsigned int VERTICAL_ALIGNMENT_STRING_TABLE_COUNT = sizeof( VERTICAL_ALIGNMENT_STRING_TABLE ) / sizeof( VERTICAL_ALIGNMENT_STRING_TABLE[0] ); - // Type registration BaseHandle Create() { @@ -78,23 +60,61 @@ BaseHandle Create() // Setup properties, signals and actions using the type-registry. DALI_TYPE_REGISTRATION_BEGIN( Toolkit::TextLabel, Toolkit::Control, Create ); -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "rendering-backend", INTEGER, RENDERING_BACKEND ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "text", STRING, TEXT ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "font-family", STRING, FONT_FAMILY ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "font-style", STRING, FONT_STYLE ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "point-size", FLOAT, POINT_SIZE ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "multi-line", BOOLEAN, MULTI_LINE ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "horizontal-alignment", STRING, HORIZONTAL_ALIGNMENT ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "vertical-alignment", STRING, VERTICAL_ALIGNMENT ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "text-color", VECTOR4, TEXT_COLOR ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "shadow-offset", VECTOR2, SHADOW_OFFSET ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "shadow-color", VECTOR4, SHADOW_COLOR ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underline-enabled", BOOLEAN, UNDERLINE_ENABLED ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underline-color", VECTOR4, UNDERLINE_COLOR ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underline-height", FLOAT, UNDERLINE_HEIGHT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "renderingBackend", INTEGER, RENDERING_BACKEND ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "text", STRING, TEXT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "fontFamily", STRING, FONT_FAMILY ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "fontStyle", STRING, FONT_STYLE ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "pointSize", FLOAT, POINT_SIZE ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "multiLine", BOOLEAN, MULTI_LINE ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "horizontalAlignment", STRING, HORIZONTAL_ALIGNMENT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "verticalAlignment", STRING, VERTICAL_ALIGNMENT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "textColor", VECTOR4, TEXT_COLOR ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "shadowOffset", VECTOR2, SHADOW_OFFSET ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "shadowColor", VECTOR4, SHADOW_COLOR ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underlineEnabled", BOOLEAN, UNDERLINE_ENABLED ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underlineColor", VECTOR4, UNDERLINE_COLOR ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underlineHeight", FLOAT, UNDERLINE_HEIGHT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "enableMarkup", BOOLEAN, ENABLE_MARKUP ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "enableAutoScroll", BOOLEAN, ENABLE_AUTO_SCROLL ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "autoScrollSpeed", INTEGER, AUTO_SCROLL_SPEED ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "autoScrollLoopCount", INTEGER, AUTO_SCROLL_LOOP_COUNT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "autoScrollGap", FLOAT, AUTO_SCROLL_GAP ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "lineSpacing", FLOAT, LINE_SPACING ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "underline", STRING, UNDERLINE ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "shadow", STRING, SHADOW ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "emboss", STRING, EMBOSS ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextLabel, "outline", STRING, OUTLINE ) DALI_TYPE_REGISTRATION_END() +const int TEXT_VISUAL_PROPERTY_TABLE[] = { + Dali::Toolkit::TextVisual::Property::RENDERING_BACKEND, + Dali::Toolkit::TextVisual::Property::TEXT, + Dali::Toolkit::TextVisual::Property::FONT_FAMILY, + Dali::Toolkit::TextVisual::Property::FONT_STYLE, + Dali::Toolkit::TextVisual::Property::POINT_SIZE, + Dali::Toolkit::TextVisual::Property::MULTI_LINE, + Dali::Toolkit::TextVisual::Property::HORIZONTAL_ALIGNMENT, + Dali::Toolkit::TextVisual::Property::VERTICAL_ALIGNMENT, + Dali::Toolkit::TextVisual::Property::TEXT_COLOR, + Dali::Toolkit::TextVisual::Property::SHADOW, + Dali::Toolkit::TextVisual::Property::SHADOW, + Dali::Toolkit::TextVisual::Property::UNDERLINE, + Dali::Toolkit::TextVisual::Property::UNDERLINE, + Dali::Toolkit::TextVisual::Property::UNDERLINE, + Dali::Toolkit::TextVisual::Property::ENABLE_MARKUP, + Dali::Toolkit::TextVisual::Property::ENABLE_AUTO_SCROLL, + Dali::Toolkit::TextVisual::Property::AUTO_SCROLL_SPEED, + Dali::Toolkit::TextVisual::Property::AUTO_SCROLL_LOOP_COUNT, + Dali::Toolkit::TextVisual::Property::AUTO_SCROLL_GAP, + Dali::Toolkit::TextVisual::Property::LINE_SPACING, + Dali::Toolkit::TextVisual::Property::UNDERLINE, + Dali::Toolkit::TextVisual::Property::SHADOW, + Dali::Toolkit::TextVisual::Property::EMBOSS, + Dali::Toolkit::TextVisual::Property::OUTLINE, + Dali::Toolkit::TextVisual::Property::BATCHING_ENABLED +}; + } // namespace Toolkit::TextLabel TextLabel::New() @@ -118,180 +138,10 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr if( label ) { - TextLabel& impl( GetImpl( label ) ); - switch( index ) - { - case Toolkit::TextLabel::Property::RENDERING_BACKEND: - { - const int backend = value.Get< int >(); - - if( impl.mRenderingBackend != backend ) - { - impl.mRenderingBackend = backend; - impl.mRenderer.Reset(); - impl.RequestTextRelayout(); - } - break; - } - case Toolkit::TextLabel::Property::TEXT: - { - if( impl.mController ) - { - impl.mController->SetText( value.Get< std::string >() ); - } - break; - } - case Toolkit::TextLabel::Property::FONT_FAMILY: - { - if( impl.mController ) - { - const std::string fontFamily = value.Get< std::string >(); + TextLabel& impl = GetImpl( label ); - if( impl.mController->GetDefaultFontFamily() != fontFamily ) - { - impl.mController->SetDefaultFontFamily( fontFamily, true ); - } - } - break; - } - case Toolkit::TextLabel::Property::FONT_STYLE: - { - SetFontStyleProperty( impl.mController, value ); - break; - } - case Toolkit::TextLabel::Property::POINT_SIZE: - { - if( impl.mController ) - { - const float pointSize = value.Get< float >(); - - if( !Equals( impl.mController->GetDefaultPointSize(), pointSize ) ) - { - impl.mController->SetDefaultPointSize( pointSize ); - } - } - break; - } - case Toolkit::TextLabel::Property::MULTI_LINE: - { - if( impl.mController ) - { - impl.mController->SetMultiLineEnabled( value.Get< bool >() ); - } - break; - } - case Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT: - { - if( impl.mController ) - { - LayoutEngine::HorizontalAlignment alignment( LayoutEngine::HORIZONTAL_ALIGN_BEGIN ); - if( Scripting::GetEnumeration< Toolkit::Text::LayoutEngine::HorizontalAlignment >( value.Get< std::string >().c_str(), - HORIZONTAL_ALIGNMENT_STRING_TABLE, - HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT, - alignment ) ) - { - impl.mController->SetHorizontalAlignment( alignment ); - } - } - break; - } - case Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT: - { - if( impl.mController ) - { - LayoutEngine::VerticalAlignment alignment( LayoutEngine::VERTICAL_ALIGN_BOTTOM ); - if( Scripting::GetEnumeration< Toolkit::Text::LayoutEngine::VerticalAlignment >( value.Get< std::string >().c_str(), - VERTICAL_ALIGNMENT_STRING_TABLE, - VERTICAL_ALIGNMENT_STRING_TABLE_COUNT, - alignment ) ) - { - impl.mController->SetVerticalAlignment( alignment ); - } - } - break; - } - - case Toolkit::TextLabel::Property::TEXT_COLOR: - { - if( impl.mController ) - { - const Vector4 textColor = value.Get< Vector4 >(); - if( impl.mController->GetTextColor() != textColor ) - { - impl.mController->SetTextColor( textColor ); - impl.mRenderer.Reset(); - } - } - break; - } - - case Toolkit::TextLabel::Property::SHADOW_OFFSET: - { - if( impl.mController ) - { - const Vector2 shadowOffset = value.Get< Vector2 >(); - if ( impl.mController->GetShadowOffset() != shadowOffset ) - { - impl.mController->SetShadowOffset( shadowOffset ); - impl.mRenderer.Reset(); - } - } - break; - } - case Toolkit::TextLabel::Property::SHADOW_COLOR: - { - if( impl.mController ) - { - const Vector4 shadowColor = value.Get< Vector4 >(); - if ( impl.mController->GetShadowColor() != shadowColor ) - { - impl.mController->SetShadowColor( shadowColor ); - impl.mRenderer.Reset(); - } - } - break; - } - case Toolkit::TextLabel::Property::UNDERLINE_COLOR: - { - if( impl.mController ) - { - const Vector4 color = value.Get< Vector4 >(); - if ( impl.mController->GetUnderlineColor() != color ) - { - impl.mController->SetUnderlineColor( color ); - impl.mRenderer.Reset(); - } - } - break; - } - case Toolkit::TextLabel::Property::UNDERLINE_ENABLED: - { - if( impl.mController ) - { - const bool enabled = value.Get< bool >(); - if ( impl.mController->IsUnderlineEnabled() != enabled ) - { - impl.mController->SetUnderlineEnabled( enabled ); - impl.mRenderer.Reset(); - } - } - break; - } - - case Toolkit::TextLabel::Property::UNDERLINE_HEIGHT: - { - if( impl.mController ) - { - float height = value.Get< float >(); - if ( impl.mController->GetUnderlineHeight() != height ) - { - impl.mController->SetUnderlineHeight( height ); - impl.mRenderer.Reset(); - } - } - break; - } - } + // Sets the property to the to the text visual. + impl.mVisual.SetProperty( TEXT_VISUAL_PROPERTY_TABLE[index - Toolkit::TextLabel::PROPERTY_START_INDEX], value ); } } @@ -303,130 +153,127 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde if( label ) { - TextLabel& impl( GetImpl( label ) ); - switch( index ) + TextLabel& impl = GetImpl( label ); + + if( ( Toolkit::TextLabel::Property::SHADOW_OFFSET == index ) || + ( Toolkit::TextLabel::Property::SHADOW_COLOR == index ) || + ( Toolkit::TextLabel::Property::UNDERLINE_ENABLED == index ) || + ( Toolkit::TextLabel::Property::UNDERLINE_COLOR == index ) || + ( Toolkit::TextLabel::Property::UNDERLINE_HEIGHT == index ) ) { - case Toolkit::TextLabel::Property::RENDERING_BACKEND: - { - value = impl.mRenderingBackend; - break; - } - case Toolkit::TextLabel::Property::TEXT: - { - if( impl.mController ) - { - std::string text; - impl.mController->GetText( text ); - value = text; - } - break; - } - case Toolkit::TextLabel::Property::FONT_FAMILY: - { - if( impl.mController ) - { - value = impl.mController->GetDefaultFontFamily(); - } - break; - } - case Toolkit::TextLabel::Property::FONT_STYLE: - { - GetFontStyleProperty( impl.mController, value ); - break; - } - case Toolkit::TextLabel::Property::POINT_SIZE: - { - if( impl.mController ) - { - value = impl.mController->GetDefaultPointSize(); - } - break; - } - case Toolkit::TextLabel::Property::MULTI_LINE: - { - if( impl.mController ) - { - value = impl.mController->IsMultiLineEnabled(); - } - break; - } - case Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT: + // TODO : Branch to be removed when the deprecated properties are finally removed. + value = impl.mVisual.GetProperty( TEXT_VISUAL_PROPERTY_TABLE[index - Toolkit::TextLabel::PROPERTY_START_INDEX] ); + + switch( index ) { - if( impl.mController ) + case Toolkit::TextLabel::Property::SHADOW_OFFSET: // Converts the deprecated property to the new one. { - const char* name = Scripting::GetEnumerationName< Toolkit::Text::LayoutEngine::HorizontalAlignment >( impl.mController->GetHorizontalAlignment(), - HORIZONTAL_ALIGNMENT_STRING_TABLE, - HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT ); - if( name ) + bool colorDefined = false; + Vector4 color; + bool offsetDefined = false; + Vector2 offset; + const bool empty = Text::ParseProperties( value.Get(), + colorDefined, + color, + offsetDefined, + offset ); + + if( !empty ) { - value = std::string( name ); + value = offset; } + break; } - break; - } - case Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT: - { - if( impl.mController ) + case Toolkit::TextLabel::Property::SHADOW_COLOR: // Converts the deprecated property to the new one. { - const char* name = Scripting::GetEnumerationName< Toolkit::Text::LayoutEngine::VerticalAlignment >( impl.mController->GetVerticalAlignment(), - VERTICAL_ALIGNMENT_STRING_TABLE, - VERTICAL_ALIGNMENT_STRING_TABLE_COUNT ); - if( name ) + bool colorDefined = false; + Vector4 color; + bool offsetDefined = false; + Vector2 offset; + const bool empty = Text::ParseProperties( value.Get(), + colorDefined, + color, + offsetDefined, + offset ); + + if( !empty ) { - value = std::string( name ); + value = color; } + break; } - break; - } - case Toolkit::TextLabel::Property::TEXT_COLOR: - { - if ( impl.mController ) - { - value = impl.mController->GetTextColor(); - } - break; - } - case Toolkit::TextLabel::Property::SHADOW_OFFSET: - { - if ( impl.mController ) - { - value = impl.mController->GetShadowOffset(); - } - break; - } - case Toolkit::TextLabel::Property::SHADOW_COLOR: - { - if ( impl.mController ) + case Toolkit::TextLabel::Property::UNDERLINE_ENABLED: // Converts the deprecated property to the new one. { - value = impl.mController->GetShadowColor(); + bool enabled = false; + bool colorDefined = false; + Vector4 color; + bool heightDefined = false; + float height = 0.f; + const bool empty = Text::ParseProperties( value.Get(), + enabled, + colorDefined, + color, + heightDefined, + height ); + + if( !empty ) + { + value = enabled; + } + break; } - break; - } - case Toolkit::TextLabel::Property::UNDERLINE_COLOR: - { - if ( impl.mController ) + case Toolkit::TextLabel::Property::UNDERLINE_COLOR: // Converts the deprecated property to the new one. { - value = impl.mController->GetUnderlineColor(); + bool enabled = false; + bool colorDefined = false; + Vector4 color; + bool heightDefined = false; + float height = 0.f; + const bool empty = Text::ParseProperties( value.Get(), + enabled, + colorDefined, + color, + heightDefined, + height ); + + if( !empty && colorDefined ) + { + value = color; + } + break; } - break; - } - case Toolkit::TextLabel::Property::UNDERLINE_ENABLED: - { - if ( impl.mController ) + case Toolkit::TextLabel::Property::UNDERLINE_HEIGHT: // Converts the deprecated property to the new one. { - value = impl.mController->IsUnderlineEnabled(); + bool enabled = false; + bool colorDefined = false; + Vector4 color; + bool heightDefined = false; + float height = 0.f; + const bool empty = Text::ParseProperties( value.Get(), + enabled, + colorDefined, + color, + heightDefined, + height ); + + if( !empty && heightDefined ) + { + value = height; + } + break; } - break; - } - case Toolkit::TextLabel::Property::UNDERLINE_HEIGHT: - { - if ( impl.mController ) + default: { - value = impl.mController->GetUnderlineHeight(); + // Nothing to do. + break; } - break; } } + else + { + // Retrieves the property from the text visual. + value = impl.mVisual.GetProperty( TEXT_VISUAL_PROPERTY_TABLE[index - Toolkit::TextLabel::PROPERTY_START_INDEX] ); + } } return value; @@ -436,45 +283,44 @@ void TextLabel::OnInitialize() { Actor self = Self(); - mController = Text::Controller::New( *this ); + // Creates the text's visual. + Property::Map visualMap; + visualMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::TEXT; + visualMap[Toolkit::TextVisual::Property::RENDERING_BACKEND] = static_cast( DEFAULT_RENDERING_BACKEND ); + + mVisual = Toolkit::VisualFactory::Get().CreateVisual( visualMap ); + RegisterVisual( Toolkit::TextLabel::Property::TEXT, self, mVisual ); + + Internal::Visual::Base& visualBase = Toolkit::GetImplementation( mVisual ); + TextVisual* textVisual = static_cast( &visualBase ); + + // Sets the text's control interface. + textVisual->SetTextControlInterface( this ); // Use height-for-width negotiation by default self.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); self.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT ); - - // Enable the text ellipsis. - LayoutEngine& engine = mController->GetLayoutEngine(); - engine.SetTextEllipsisEnabled( true ); - self.OnStageSignal().Connect( this, &TextLabel::OnStageConnect ); } void TextLabel::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change ) { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextLabel::OnStyleChange\n"); switch ( change ) { case StyleChange::DEFAULT_FONT_CHANGE: { - DALI_LOG_INFO( gLogFilter, Debug::General, "TextLabel::OnStyleChange StyleChange::DEFAULT_FONT_CHANGE\n"); - if ( mController->GetDefaultFontFamily() == "" ) - { - // Property system did not set the font so should update it. - // todo instruct text-controller to update model - } + // Property system did not set the font so should update it. + const std::string& newFont = GetImpl( styleManager ).GetDefaultFontFamily(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextLabel::OnStyleChange StyleChange::DEFAULT_FONT_CHANGE newFont(%s)\n", newFont.c_str() ); + + const std::string fontString = "{\"family\":\"" + newFont + "\",\"type\":\"system\"}"; + mVisual.SetProperty( Toolkit::TextVisual::Property::FONT_FAMILY, fontString ); break; } - case StyleChange::DEFAULT_FONT_SIZE_CHANGE: { - DALI_LOG_INFO( gLogFilter, Debug::General, "TextLabel::OnStyleChange StyleChange::DEFAULT_FONT_SIZE_CHANGE (%f)\n", mController->GetDefaultPointSize() ); - - if ( (mController->GetDefaultPointSize() <= 0.0f) ) // If DefaultPointSize not set by Property system it will be 0.0f - { - // Property system did not set the PointSize so should update it. - // todo instruct text-controller to update model - } + GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) ); break; } case StyleChange::THEME_CHANGE: @@ -487,25 +333,22 @@ void TextLabel::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange:: Vector3 TextLabel::GetNaturalSize() { - return mController->GetNaturalSize(); + Vector2 naturalSize; + mVisual.GetNaturalSize( naturalSize ); + + return Vector3( naturalSize ); } float TextLabel::GetHeightForWidth( float width ) { - return mController->GetHeightForWidth( width ); + return mVisual.GetHeightForWidth( width ); } void TextLabel::OnRelayout( const Vector2& size, RelayoutContainer& container ) { - if( mController->Relayout( size ) || - !mRenderer ) - { - if( !mRenderer ) - { - mRenderer = Backend::Get().NewRenderer( mRenderingBackend ); - } - RenderText(); - } + DALI_LOG_INFO( gLogFilter, Debug::General, "TextLabel::OnRelayout\n" ); + + mVisual.SetSize( size ); } void TextLabel::RequestTextRelayout() @@ -513,69 +356,16 @@ void TextLabel::RequestTextRelayout() RelayoutRequest(); } -void TextLabel::RenderText() -{ - Actor self = Self(); - Actor renderableActor; - if( mRenderer ) - { - renderableActor = mRenderer->Render( mController->GetView(), self.GetHierarchyDepth() ); - } - - if( renderableActor != mRenderableActor ) - { - UnparentAndReset( mRenderableActor ); - - if( renderableActor ) - { - const Vector2& alignmentOffset = mController->GetAlignmentOffset(); - renderableActor.SetPosition( alignmentOffset.x, alignmentOffset.y ); - - self.Add( renderableActor ); - } - mRenderableActor = renderableActor; - } -} - -void TextLabel::OnStageConnect( Dali::Actor actor ) -{ - if ( mHasBeenStaged ) - { - RenderText(); - } - else - { - mHasBeenStaged = true; - } -} - -void TextLabel::AddDecoration( Actor& actor, bool needsClipping ) -{ - // TextLabel does not show decorations -} - void TextLabel::OnStageConnection( int depth ) { // Call the Control::OnStageConnection() to set the depth of the background. Control::OnStageConnection( depth ); - // The depth of the text renderer is set in the RenderText() called from OnRelayout(). -} - -void TextLabel::TextChanged() -{ - // TextLabel does not provide a signal for this -} - -void TextLabel::MaxLengthReached() -{ - // Pure Virtual from TextController Interface, only needed when inputting text + // The depth of the text renderer is set by the text-visual called from OnRelayout(). } TextLabel::TextLabel() -: Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ), - mRenderingBackend( DEFAULT_RENDERING_BACKEND ), - mHasBeenStaged( false ) +: Control( ControlBehaviour( CONTROL_BEHAVIOUR_DEFAULT ) ) { }