X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Ftext%2Ftext-visual.cpp;h=ea514b02585bdd212d1858bf9b4127b5c268f640;hb=406208364fe0ee31f31f475ba7ee7709e56d3e27;hp=e9278f9c7b69cd5a967ac6a580271bc91c031c4b;hpb=63f9b5207c2794cdc460d587723be89585872a51;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/text/text-visual.cpp b/dali-toolkit/internal/visuals/text/text-visual.cpp index e9278f9..ea514b0 100644 --- a/dali-toolkit/internal/visuals/text/text-visual.cpp +++ b/dali-toolkit/internal/visuals/text/text-visual.cpp @@ -25,6 +25,7 @@ // INTERNAL HEADER #include #include +#include #include #include #include @@ -154,26 +155,11 @@ Geometry CreateGeometry( VisualFactoryCache& factoryCache, ImageDimensions gridS return geometry; } -} // namespace +} // unnamed namespace -TextVisual::TextVisual( VisualFactoryCache& factoryCache ) -: Visual::Base( factoryCache ), - mController( Text::Controller::New() ), - mRenderingBackend( Toolkit::Text::DEFAULT_RENDERING_BACKEND ), - mHasBeenStaged( false ) -{ -} - -TextVisual::~TextVisual() -{ -} - -void TextVisual::SetTextControlInterface( Text::ControlInterface* controlInterface ) +TextVisualPtr TextVisual::New( VisualFactoryCache& factoryCache ) { - if( mController ) - { - mController->SetTextControlInterface( controlInterface ); - } + return new TextVisual( factoryCache ); } void TextVisual::SetSize( const Vector2& size ) @@ -207,7 +193,7 @@ void TextVisual::DoCreatePropertyMap( Property::Map& map ) const Property::Value value; map.Clear(); - map.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::TEXT ); + map.Insert( Toolkit::VisualProperty::TYPE, Toolkit::Visual::TEXT ); map.Insert( Toolkit::TextVisual::Property::RENDERING_BACKEND, mRenderingBackend ); @@ -232,14 +218,6 @@ void TextVisual::DoCreatePropertyMap( Property::Map& map ) const map.Insert( Toolkit::TextVisual::Property::ENABLE_MARKUP, mController->IsMarkupProcessorEnabled() ); - map.Insert( Toolkit::TextVisual::Property::ENABLE_AUTO_SCROLL, mController->IsAutoScrollEnabled() ); - - map.Insert( Toolkit::TextVisual::Property::AUTO_SCROLL_SPEED, mController->GetAutoScrollSpeed() ); - - map.Insert( Toolkit::TextVisual::Property::AUTO_SCROLL_LOOP_COUNT, mController->GetAutoScrollLoopCount() ); - - map.Insert( Toolkit::TextVisual::Property::AUTO_SCROLL_GAP, mController->GetAutoScrollWrapGap() ); - map.Insert( Toolkit::TextVisual::Property::LINE_SPACING, mController->GetDefaultLineSpacing() ); GetUnderlineProperties( mController, value, Text::EffectStyle::DEFAULT ); @@ -254,10 +232,20 @@ void TextVisual::DoCreatePropertyMap( Property::Map& map ) const map.Insert( Toolkit::TextVisual::Property::BATCHING_ENABLED, false ); // TODO } -void TextVisual::DoInitialize( Actor& actor, const Property::Map& propertyMap ) +TextVisual::TextVisual( VisualFactoryCache& factoryCache ) +: Visual::Base( factoryCache ), + mController( Text::Controller::New() ), + mRenderingBackend( Toolkit::Text::DEFAULT_RENDERING_BACKEND ), + mHasBeenStaged( false ) { - mSelf = actor; +} +TextVisual::~TextVisual() +{ +} + +void TextVisual::DoSetProperties( const Property::Map& propertyMap ) +{ for( Property::Map::SizeType index = 0u, count = propertyMap.Count(); index < count; ++index ) { const KeyValuePair& keyValue = propertyMap.GetKeyValue( index ); @@ -266,7 +254,7 @@ void TextVisual::DoInitialize( Actor& actor, const Property::Map& propertyMap ) { case Property::Key::INDEX: { - if( Toolkit::Visual::Property::TYPE != keyValue.first.indexKey ) // Toolkit::Visual::Property::TYPE is not a TextVisual's property. + if( Toolkit::VisualProperty::TYPE != keyValue.first.indexKey ) // Toolkit::VisualProperty::TYPE is not a TextVisual's property. { DoSetProperty( keyValue.first.indexKey, keyValue.second ); } @@ -497,47 +485,22 @@ void TextVisual::DoSetProperty( Dali::Property::Index index, const Dali::Propert } case Toolkit::TextVisual::Property::ENABLE_AUTO_SCROLL: { - const bool enableAutoScroll = propertyValue.Get(); - - // If request to auto scroll is the same as current state then do nothing. - if( enableAutoScroll != mController->IsAutoScrollEnabled() ) - { - // If request is disable (false) and auto scrolling is enabled then need to stop it - if( !enableAutoScroll ) - { - StopTextAutoScrolling(); // Causes the current animation to finish playing. - } - // If request is enable (true) then start autoscroll as not already running - else - { - mController->GetLayoutEngine().SetTextEllipsisEnabled( false ); - mController->SetAutoScrollEnabled( enableAutoScroll ); - mController->RequestRelayout(); - } - } + // nothing to do. break; } case Toolkit::TextVisual::Property::AUTO_SCROLL_SPEED: { - mController->SetAutoscrollSpeed( propertyValue.Get() ); + // nothing to do. break; } case Toolkit::TextVisual::Property::AUTO_SCROLL_LOOP_COUNT: { - const int loopCount = propertyValue.Get(); - if( loopCount > 0 ) - { - mController->SetAutoScrollLoopCount( loopCount ); - } - else - { - StopTextAutoScrolling(); // Causes the current animation to finish playing. - } + // nothing to do. break; } case Toolkit::TextVisual::Property::AUTO_SCROLL_GAP: { - mController->SetAutoScrollWrapGap( propertyValue.Get() ); + // nothing to do. break; } case Toolkit::TextVisual::Property::LINE_SPACING: @@ -550,7 +513,7 @@ void TextVisual::DoSetProperty( Dali::Property::Index index, const Dali::Propert case Toolkit::TextVisual::Property::UNDERLINE: { // TODO : This switch can be removed when the deprecated SHADOW_OFFSET and SHADOW_COLOR properties are finally removed. - // Only the code for the STRING case should be kept. + // Only the code for the MAP case should be kept. switch( propertyValue.GetType() ) { case Property::VECTOR4: @@ -583,7 +546,7 @@ void TextVisual::DoSetProperty( Dali::Property::Index index, const Dali::Propert } break; } - case Property::STRING: + case Property::MAP: { const bool update = SetUnderlineProperties( mController, propertyValue, Text::EffectStyle::DEFAULT ); if( update ) @@ -604,7 +567,7 @@ void TextVisual::DoSetProperty( Dali::Property::Index index, const Dali::Propert case Toolkit::TextVisual::Property::SHADOW: { // TODO : This switch can be removed when the deprecated SHADOW_OFFSET and SHADOW_COLOR properties are finally removed. - // Only the code for the STRING case should be kept. + // Only the code for the MAP case should be kept. switch( propertyValue.GetType() ) { case Property::VECTOR2: @@ -627,7 +590,7 @@ void TextVisual::DoSetProperty( Dali::Property::Index index, const Dali::Propert } break; } - case Property::STRING: + case Property::MAP: { const bool update = SetShadowProperties( mController, propertyValue, Text::EffectStyle::DEFAULT ); if( update ) @@ -747,22 +710,22 @@ Dali::Property::Value TextVisual::DoGetProperty( Dali::Property::Index index ) } case Toolkit::TextVisual::Property::ENABLE_AUTO_SCROLL: { - value = mController->IsAutoScrollEnabled(); + // nothing to do. break; } case Toolkit::TextVisual::Property::AUTO_SCROLL_SPEED: { - value = mController->GetAutoScrollSpeed(); + // nothing to do. break; } case Toolkit::TextVisual::Property::AUTO_SCROLL_LOOP_COUNT: { - value = mController->GetAutoScrollLoopCount(); + // nothing to do. break; } case Toolkit::TextVisual::Property::AUTO_SCROLL_GAP: { - value = mController->GetAutoScrollWrapGap(); + // nothing to do. break; } case Toolkit::TextVisual::Property::LINE_SPACING: @@ -807,6 +770,13 @@ Dali::Property::Value TextVisual::DoGetProperty( Dali::Property::Index index ) void TextVisual::RenderText() { + Actor self = mSelf.GetHandle(); + if( !self ) + { + // Nothing to do if the handle is not initialized. + return; + } + Actor renderableActor; if( mRenderer ) @@ -823,42 +793,9 @@ void TextVisual::RenderText() const Vector2& scrollOffset = mController->GetScrollPosition(); renderableActor.SetPosition( scrollOffset.x, scrollOffset.y ); - mSelf.Add( renderableActor ); + self.Add( renderableActor ); } mRenderableActor = renderableActor; - - if( mController->IsAutoScrollEnabled() ) - { - SetUpAutoScrolling(); - } - } -} - -void TextVisual::StopTextAutoScrolling() -{ - if( mTextScroller ) - { - mTextScroller->StopScrolling(); - } -} - -void TextVisual::SetUpAutoScrolling() -{ - const Text::ScrollerData* const data = mController->GetAutoScrollData(); - - if( NULL != data ) - { - if( !mTextScroller ) - { - // If speed, loopCount or gap not set via property system then will need to create a TextScroller with defaults - mTextScroller = Text::TextScroller::New( *mController ); - } - - mTextScroller->StartScrolling( mRenderableActor, - *data ); - - mSelf.Add( mTextScroller->GetScrollingText() ); - mSelf.Add( mTextScroller->GetSourceCamera() ); } }