X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=6d1a28d0dfd8d054978eb175248977e037a0e612;hp=649946c76f1e17de5ef41cea4e3f70c86dbd1701;hb=0ccf79d8c24cc732f22d9c80cb089d70883aa363;hpb=421d28ac0c56bca53a4c187983de6c20b56957c5 diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index 649946c..6d1a28d 100644 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -40,7 +40,6 @@ #include #include #include -#include namespace Dali { @@ -165,6 +164,7 @@ TypeAction registerAction( typeRegistration, ACTION_ACCESSIBILITY_ACTIVATED, &Do DALI_TYPE_REGISTRATION_END() const char * const BACKGROUND_COLOR_NAME("color"); +const char * const COLOR_RENDERER_COLOR_NAME("blendColor"); } // unnamed namespace @@ -244,23 +244,27 @@ public: controlImpl.SetStyleName( value.Get< std::string >() ); break; } - case Toolkit::Control::Property::BACKGROUND: + + case Toolkit::Control::Property::BACKGROUND_COLOR: + { + DALI_LOG_WARNING( "BACKGROUND_COLOR property is deprecated. Use BACKGROUND property instead\n" ); + controlImpl.SetBackgroundColor( value.Get< Vector4 >() ); + break; + } + + case Toolkit::Control::Property::BACKGROUND_IMAGE: { + DALI_LOG_WARNING( "BACKGROUND_IMAGE property is deprecated. Use BACKGROUND property instead\n" ); Image image = Scripting::NewImage( value ); if ( image ) { controlImpl.SetBackgroundImage( image ); - break; } - const Property::Map* map = value.GetMap(); - if( map ) + else { - controlImpl.SetBackground( *map ); - break; + // An empty map means the background is no longer required + controlImpl.ClearBackground(); } - - // The background is neither a valid image nor a property map, so it is no longer required - controlImpl.ClearBackground(); break; } @@ -276,6 +280,26 @@ public: } break; } + + case Toolkit::Control::Property::BACKGROUND: + { + Image image = Scripting::NewImage( value ); + if ( image ) + { + controlImpl.SetBackgroundImage( image ); + break; + } + const Property::Map* map = value.GetMap(); + if( map ) + { + controlImpl.SetBackground( *map ); + break; + } + + // The background is neither a valid image nor a property map, so it is no longer required + controlImpl.ClearBackground(); + break; + } } } } @@ -304,14 +328,21 @@ public: break; } - case Toolkit::Control::Property::BACKGROUND: + case Toolkit::Control::Property::BACKGROUND_COLOR: + { + DALI_LOG_WARNING( "BACKGROUND_COLOR property is deprecated. Use BACKGROUND property instead\n" ); + value = controlImpl.GetBackgroundColor(); + break; + } + + case Toolkit::Control::Property::BACKGROUND_IMAGE: { + DALI_LOG_WARNING( "BACKGROUND_IMAGE property is deprecated. Use BACKGROUND property instead\n" ); Property::Map map; if( controlImpl.mImpl->mBackgroundRenderer ) { - (controlImpl.mImpl->mBackgroundRenderer).CreatePropertyMap( map ); + controlImpl.mImpl->mBackgroundRenderer.CreatePropertyMap( map ); } - value = map; break; } @@ -321,6 +352,19 @@ public: value = controlImpl.HasKeyInputFocus(); break; } + + case Toolkit::Control::Property::BACKGROUND: + { + Property::Map map; + if( controlImpl.mImpl->mBackgroundRenderer ) + { + (controlImpl.mImpl->mBackgroundRenderer).CreatePropertyMap( map ); + } + + value = map; + break; + } + } } @@ -349,15 +393,19 @@ public: bool mAddRemoveBackgroundChild:1; ///< Flag to know when we are adding or removing our own actor to avoid call to OnControlChildAdd // Properties - these need to be members of Internal::Control::Impl as they need to function within this class. - static PropertyRegistration PROPERTY_1; - static PropertyRegistration PROPERTY_2; - static PropertyRegistration PROPERTY_3; + static const PropertyRegistration PROPERTY_1; + static const PropertyRegistration PROPERTY_2; + static const PropertyRegistration PROPERTY_3; + static const PropertyRegistration PROPERTY_4; + static const PropertyRegistration PROPERTY_5; }; // Properties registered without macro to use specific member variables. -PropertyRegistration Control::Impl::PROPERTY_1( typeRegistration, "styleName", Toolkit::Control::Property::STYLE_NAME, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "background", Toolkit::Control::Property::BACKGROUND, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "keyInputFocus", Toolkit::Control::Property::KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_1( typeRegistration, "styleName", Toolkit::Control::Property::STYLE_NAME, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "backgroundColor", Toolkit::Control::Property::BACKGROUND_COLOR, Property::VECTOR4, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "backgroundImage", Toolkit::Control::Property::BACKGROUND_IMAGE, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_4( typeRegistration, "keyInputFocus", Toolkit::Control::Property::KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_5( typeRegistration, "background", Toolkit::Control::Property::BACKGROUND, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); Toolkit::Control Control::New() { @@ -399,42 +447,28 @@ const std::string& Control::GetStyleName() const return mImpl->mStyleName; } -void Control::UpdateBackgroundState() -{ - // Set the depth of the background renderer after creating/modifying it. - // We do this regardless of whether or not it is on stage as the index - // is relative and still valid if this control is re-parented. - if( mImpl->mBackgroundRenderer ) - { - mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX ); - - Actor self( Self() ); - if( self.OnStage() ) - { - mImpl->mBackgroundRenderer.SetOnStage( self ); - } - } -} - void Control::SetBackgroundColor( const Vector4& color ) { Actor self( Self() ); Toolkit::RendererFactory factory = Toolkit::RendererFactory::Get(); - - if( mImpl->mBackgroundRenderer ) - { - factory.ResetRenderer( mImpl->mBackgroundRenderer, self, color ); - } - else - { - mImpl->mBackgroundRenderer = factory.GetControlRenderer( color ); - } - - UpdateBackgroundState(); + factory.ResetRenderer( mImpl->mBackgroundRenderer, self, color ); + mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX ); } Vector4 Control::GetBackgroundColor() const { + if( mImpl->mBackgroundRenderer && ( &typeid( GetImplementation(mImpl->mBackgroundRenderer) ) == &typeid( ColorRenderer ) ) ) + { + Property::Map map; + mImpl->mBackgroundRenderer.CreatePropertyMap( map ); + const Property::Value* colorValue = map.Find( COLOR_RENDERER_COLOR_NAME ); + Vector4 color; + if( colorValue && colorValue->Get(color)) + { + return color; + } + } + return Color::TRANSPARENT; } @@ -450,28 +484,21 @@ void Control::SetBackground(const Property::Map& map) Actor self( Self() ); mImpl->mBackgroundRenderer.RemoveAndReset( self ); - Toolkit::RendererFactory factory = Toolkit::RendererFactory::Get(); mImpl->mBackgroundRenderer = factory.GetControlRenderer( map ); - - UpdateBackgroundState(); + if( mImpl->mBackgroundRenderer && self.OnStage() ) // Request control renderer with a property map might return an empty handle + { + mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX ); + mImpl->mBackgroundRenderer.SetOnStage( self ); + } } void Control::SetBackgroundImage( Image image ) { Actor self( Self() ); Toolkit::RendererFactory factory = Toolkit::RendererFactory::Get(); - - if( mImpl->mBackgroundRenderer ) - { - factory.ResetRenderer( mImpl->mBackgroundRenderer, self, image ); - } - else - { - mImpl->mBackgroundRenderer = factory.GetControlRenderer( image ); - } - - UpdateBackgroundState(); + factory.ResetRenderer( mImpl->mBackgroundRenderer, self, image ); + mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX ); } void Control::ClearBackground()