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=d14dcd3be608874b1261c4c0e62ab62ef946c5bf;hpb=f558388c388bcdf4939ca7af098cbcfc1631ad89;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 d14dcd3..b03a5ef 100755 --- a/dali-toolkit/internal/visuals/visual-base-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-impl.cpp @@ -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; + } } } @@ -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 @@ -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;