X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-base-impl.cpp;h=b03a5ef3c7d174dc9dd94037bc560b3dec692cc1;hb=3ad20543558830da2b46ec83e3be4f8daf77add0;hp=05a318ba84370913eb1389ebae0b77c2a95f5721;hpb=f22d66972ab2939d6e8135bc938294f494e15ef6;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/visual-base-impl.cpp b/dali-toolkit/internal/visuals/visual-base-impl.cpp index 05a318b..b03a5ef 100755 --- a/dali-toolkit/internal/visuals/visual-base-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-impl.cpp @@ -19,7 +19,7 @@ #include "visual-base-impl.h" // EXTERNAL HEADER -#include +#include #include #include #include @@ -121,6 +121,10 @@ void Visual::Base::SetProperties( const Property::Map& propertyMap ) { matchKey = Property::Key( Toolkit::DevelVisual::Property::VISUAL_FITTING_MODE ); } + else if( matchKey == CORNER_RADIUS ) + { + matchKey = Property::Key( Toolkit::DevelVisual::Property::CORNER_RADIUS ); + } } switch( matchKey.indexKey ) @@ -188,6 +192,15 @@ void Visual::Base::SetProperties( const Property::Map& propertyMap ) value, VISUAL_FITTING_MODE_TABLE, VISUAL_FITTING_MODE_TABLE_COUNT, mImpl->mFittingMode ); break; } + case Toolkit::DevelVisual::Property::CORNER_RADIUS: + { + float radius; + if( value.Get( radius ) ) + { + mImpl->mCornerRadius = radius; + } + break; + } } } @@ -214,7 +227,7 @@ void Visual::Base::SetName( const std::string& name ) mImpl->mName = name; } -const std::string& Visual::Base::GetName() +const std::string& Visual::Base::GetName() const { return mImpl->mName; } @@ -279,6 +292,13 @@ void Visual::Base::SetOnStage( Actor& actor ) { RegisterMixColor(); + if( IsRoundedCornerRequired() ) + { + mImpl->mCornerRadiusIndex = mImpl->mRenderer.RegisterProperty( CORNER_RADIUS, mImpl->mCornerRadius ); + + mImpl->mRenderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON ); + } + mImpl->mRenderer.SetProperty( Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA, IsPreMultipliedAlphaEnabled()); mImpl->mRenderer.SetProperty( Renderer::Property::DEPTH_INDEX, mImpl->mDepthIndex ); mImpl->mFlags |= Impl::IS_ON_STAGE; // Only sets the flag if renderer exists @@ -292,6 +312,7 @@ void Visual::Base::SetOffStage( Actor& actor ) { DoSetOffStage( actor ); mImpl->mMixColorIndex = Property::INVALID_INDEX; + mImpl->mCornerRadiusIndex = Property::INVALID_INDEX; mImpl->mFlags &= ~Impl::IS_ON_STAGE; } } @@ -316,10 +337,13 @@ void Visual::Base::CreatePropertyMap( Property::Map& map ) const // which is ok, because they have a different key value range. map.Insert( Toolkit::Visual::Property::MIX_COLOR, mImpl->mMixColor ); // vec4 map.Insert( Toolkit::Visual::Property::OPACITY, mImpl->mMixColor.a ); + map.Insert( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, IsSynchronousLoadingRequired() ); auto fittingModeString = Scripting::GetLinearEnumerationName< FittingMode >( mImpl->mFittingMode, VISUAL_FITTING_MODE_TABLE, VISUAL_FITTING_MODE_TABLE_COUNT ); map.Insert( Toolkit::DevelVisual::Property::VISUAL_FITTING_MODE, fittingModeString ); + + map.Insert( Toolkit::DevelVisual::Property::CORNER_RADIUS, mImpl->mCornerRadius ); } void Visual::Base::CreateInstancePropertyMap( Property::Map& map ) const @@ -370,6 +394,11 @@ bool Visual::Base::IsOnStage() const return mImpl->mFlags & Impl::IS_ON_STAGE; } +bool Visual::Base::IsRoundedCornerRequired() const +{ + return !EqualsZero( mImpl->mCornerRadius ); +} + void Visual::Base::OnDoAction( const Property::Index actionId, const Property::Value& attributes ) { // May be overriden by derived class @@ -435,14 +464,14 @@ const Vector4& Visual::Base::GetMixColor() const return mImpl->mMixColor; } -void Visual::Base::AddResourceObserver( Visual::ResourceObserver& observer) +void Visual::Base::AddEventObserver( Visual::EventObserver& observer) { - mImpl->mResourceObserver = &observer; + mImpl->mEventObserver = &observer; } -void Visual::Base::RemoveResourceObserver( Visual::ResourceObserver& observer ) +void Visual::Base::RemoveEventObserver( Visual::EventObserver& observer ) { - mImpl->mResourceObserver = NULL; + mImpl->mEventObserver = NULL; } void Visual::Base::ResourceReady(Toolkit::Visual::ResourceStatus resourceStatus) @@ -451,10 +480,10 @@ void Visual::Base::ResourceReady(Toolkit::Visual::ResourceStatus resourceStatus) { mImpl->mResourceStatus = resourceStatus; - if( mImpl->mResourceObserver ) + if( mImpl->mEventObserver ) { // observer is currently a control impl - mImpl->mResourceObserver->ResourceReady( *this ); + mImpl->mEventObserver->ResourceReady( *this ); } } } @@ -464,6 +493,11 @@ bool Visual::Base::IsResourceReady() const return ( mImpl->mResourceStatus == Toolkit::Visual::ResourceStatus::READY ); } +bool Visual::Base::IsSynchronousLoadingRequired() const +{ + return ( mImpl->mFlags & Impl::IS_SYNCHRONOUS_RESOURCE_LOADING ); +} + Toolkit::Visual::ResourceStatus Visual::Base::GetResourceStatus() const { return mImpl->mResourceStatus; @@ -474,6 +508,11 @@ Visual::FittingMode Visual::Base::GetFittingMode() const return mImpl->mFittingMode; } +Visual::Base& Visual::Base::GetVisualObject() +{ + return *this; +} + Renderer Visual::Base::GetRenderer() { return mImpl->mRenderer; @@ -699,17 +738,20 @@ void Visual::Base::SetupBlendMode( Animation& transition, bool isInitialOpaque, // turned off after the animation ends if the final value is opaque if( ! isInitialOpaque || mImpl->mMixColor.a < 1.0f ) { - mImpl->mRenderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON ); - - if( animating == true && mImpl->mMixColor.a >= 1.0f ) + if( mImpl->mRenderer ) { - // When it becomes opaque, set the blend mode back to automatically - if( ! mImpl->mBlendSlotDelegate ) + mImpl->mRenderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON ); + + if( animating == true && mImpl->mMixColor.a >= 1.0f ) { - mImpl->mBlendSlotDelegate = new SlotDelegate(this); + // When it becomes opaque, set the blend mode back to automatically + if( ! mImpl->mBlendSlotDelegate ) + { + mImpl->mBlendSlotDelegate = new SlotDelegate(this); + } + transition.FinishedSignal().Connect( *(mImpl->mBlendSlotDelegate), + &Visual::Base::OnMixColorFinished ); } - transition.FinishedSignal().Connect( *(mImpl->mBlendSlotDelegate), - &Visual::Base::OnMixColorFinished ); } } }