From 7b09f888bc98f59e15a1d5fc8b56a36e779ad517 Mon Sep 17 00:00:00 2001 From: Adeel Kazmi Date: Wed, 23 Apr 2014 20:08:32 +0100 Subject: [PATCH] (SuperBlurView) Ensure the image can be set as a property [Problem] Cannot set the image on super-blur-view from scripting. [Cause] Image is not a property. [Solution] Make image a property. Change-Id: Ifc9b5996fd98f365b1ff36322021b6013ea445e4 Signed-off-by: Adeel Kazmi --- .../controls/super-blur-view/super-blur-view.h | 4 ++ .../super-blur-view/super-blur-view-impl.cpp | 79 ++++++++++++++++++++-- .../super-blur-view/super-blur-view-impl.h | 27 ++++++++ 3 files changed, 106 insertions(+), 4 deletions(-) diff --git a/capi/dali-toolkit/public-api/controls/super-blur-view/super-blur-view.h b/capi/dali-toolkit/public-api/controls/super-blur-view/super-blur-view.h index 2a6b748..1533654 100644 --- a/capi/dali-toolkit/public-api/controls/super-blur-view/super-blur-view.h +++ b/capi/dali-toolkit/public-api/controls/super-blur-view/super-blur-view.h @@ -59,6 +59,10 @@ class SuperBlurView; class SuperBlurView : public Control { public: + + // Properties + static const Property::Index PROPERTY_IMAGE; ///< name "image", @see SetImage, type MAP + /** * @brief Signal type for notifications. */ diff --git a/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp b/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp index fa98392..17f2b55 100644 --- a/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp +++ b/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp @@ -16,6 +16,7 @@ //EXTERNAL INCLUDES #include +#include // CLASS HEADER #include "super-blur-view-impl.h" @@ -25,9 +26,6 @@ namespace //unnamed namespace using namespace Dali; -//Type registration -TypeRegistration mType( typeid(Toolkit::SuperBlurView), typeid(Toolkit::Control), NULL ); - //Todo: make these properties instead of constants const unsigned int GAUSSIAN_BLUR_DEFAULT_NUM_SAMPLES = 11; const unsigned int GAUSSIAN_BLUR_NUM_SAMPLES_INCREMENTATION = 10; @@ -77,9 +75,27 @@ namespace Dali namespace Toolkit { +const Property::Index SuperBlurView::PROPERTY_IMAGE( Internal::SuperBlurView::SUPER_BLUR_VIEW_PROPERTY_START_INDEX ); + namespace Internal { +namespace +{ +const unsigned int DEFAULT_BLUR_LEVEL(5u); ///< The default blur level when creating SuperBlurView from the type registry + +BaseHandle Create() +{ + return Toolkit::SuperBlurView::New( DEFAULT_BLUR_LEVEL ); +} + +// Type registration +TypeRegistration typeRegistration( typeid(Toolkit::SuperBlurView), typeid(Toolkit::Control), Create ); + +PropertyRegistration property1( typeRegistration, "image", Toolkit::SuperBlurView::PROPERTY_IMAGE, Property::MAP, &SuperBlurView::SetProperty, &SuperBlurView::GetProperty ); + +} // unnamed namespace + SuperBlurView::SuperBlurView( unsigned int blurLevels ) : ControlImpl( false ), mBlurLevels( blurLevels ), @@ -114,7 +130,7 @@ Toolkit::SuperBlurView SuperBlurView::New( unsigned int blurLevels ) void SuperBlurView::OnInitialize() { - mBlurStrengthPropertyIndex = Self().RegisterProperty( "BLUR_STRENGTH",0.f ); + mBlurStrengthPropertyIndex = Self().RegisterProperty( "blur-strength",0.f ); DALI_ASSERT_ALWAYS( mImageActors.size() == mBlurLevels+1 && "must synchronize the ImageActor group if blur levels got changed " ); for(unsigned int i=0; i<=mBlurLevels;i++) @@ -251,6 +267,61 @@ void SuperBlurView::OnControlSizeSet( const Vector3& targetSize ) } } +void SuperBlurView::SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ) +{ + Toolkit::SuperBlurView superBlurView = Toolkit::SuperBlurView::DownCast( Dali::BaseHandle( object ) ); + + if ( superBlurView ) + { + SuperBlurView& superBlurViewImpl( GetImpl( superBlurView ) ); + + switch ( propertyIndex ) + { + case Toolkit::SuperBlurView::PROPERTY_IMAGE: + { + Dali::Image image = Scripting::NewImage( value ); + if ( image ) + { + superBlurViewImpl.SetImage( image ); + } + else + { + DALI_LOG_ERROR( "Cannot create image from property value\n" ); + } + break; + } + } + } +} + +Property::Value SuperBlurView::GetProperty( BaseObject* object, Property::Index propertyIndex ) +{ + Property::Value value; + + Toolkit::SuperBlurView pushButton = Toolkit::SuperBlurView::DownCast( Dali::BaseHandle( object ) ); + + if ( pushButton ) + { + SuperBlurView& superBlurViewImpl( GetImpl( pushButton ) ); + + switch ( propertyIndex ) + { + case Toolkit::SuperBlurView::PROPERTY_IMAGE: + { + Property::Map map; + if ( !superBlurViewImpl.mImageActors.empty() && superBlurViewImpl.mImageActors[0] ) + { + Scripting::CreatePropertyMap( superBlurViewImpl.mImageActors[0], map ); + } + value = Property::Value( map ); + break; + } + } + } + + return value; +} + } // namespace Internal } // namespace Toolkit diff --git a/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.h b/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.h index 846451a..b5d35c5 100644 --- a/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.h +++ b/dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.h @@ -41,6 +41,15 @@ class SuperBlurView : public ControlImpl { public: + // Properties + enum + { + SUPER_BLUR_VIEW_PROPERTY_START_INDEX = ControlImpl::CONTROL_PROPERTY_END_INDEX + 1, + SUPER_BLUR_VIEW_PROPERTY_END_INDEX = SUPER_BLUR_VIEW_PROPERTY_START_INDEX + 1000 ///< Reserving 1000 property indices + }; + +public: + /** * @copydoc Dali::Toolkit::SuperBlurView::New */ @@ -76,6 +85,24 @@ public: */ Image GetBlurredImage( unsigned int level ); + // Properties + + /** + * Called when a property of an object of this type is set. + * @param[in] object The object whose property is set. + * @param[in] index The property index. + * @param[in] value The new property value. + */ + static void SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ); + + /** + * Called to retrieve a property of an object of this type. + * @param[in] object The object whose property is to be retrieved. + * @param[in] index The property index. + * @return The current value of the property. + */ + static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex ); + protected: /** -- 2.7.4