Corner Radius become Vector4
[platform/core/uifw/dali-demo.git] / examples / color-visual / color-visual-example.cpp
index ea630d9..ca2f9d7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali-toolkit/devel-api/controls/control-devel.h>
-#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
 #include <dali-toolkit/devel-api/visuals/color-visual-properties-devel.h>
-#include <dali-toolkit/devel-api/visual-factory/transition-data.h>
+#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
 
 using namespace Dali;
 using namespace Dali::Toolkit;
 
 namespace
 {
+const char* IMAGE_FILE(DEMO_IMAGE_DIR "gallery-medium-1.jpg");
 
-const char* IMAGE_FILE( DEMO_IMAGE_DIR "gallery-medium-1.jpg" );
+const float   BLUR_RADIUS_VALUE(15.0f);
+const Vector2 BLUR_OFFSET_VALUE(0.05f, 0.05f);
+const Vector2 BLUR_SIZE_VALUE(1.1f, 1.1f);
+const Vector2 NO_BLUR_SIZE_VALUE(1.05f, 1.05f);
+const float   ANIMATION_DURATION(2.0f);
 
-const float BLUR_RADIUS_VALUE( 10.0f );
-const float NO_BLUR_VALUE( 0.0f );
-const float ANIMATION_DURATION( 2.0f );
+constexpr Vector4 CORNER_RADIUS_VALUE(30.0f, 30.0f, 30.0f, 30.0f);
+constexpr Vector4 SHADOW_CORNER_RADIUS_VALUE(33.0f, 33.0f, 33.0f, 33.0f);
 
-const Property::Value SHADOW
-{
-  { Visual::Property::TYPE, Visual::COLOR },
-  { Visual::Property::MIX_COLOR, Vector4( 0.0f, 0.0f, 0.0f, 0.5f ) },
-  { Visual::Property::TRANSFORM, Property::Map{ { Visual::Transform::Property::OFFSET, Vector2( 0.05f, 0.05f ) },
-                                                { Visual::Transform::Property::SIZE, Vector2( 1.05f, 1.05f ) },
-                                                { Visual::Transform::Property::ORIGIN, Align::CENTER },
-                                                { Visual::Transform::Property::ANCHOR_POINT, Align::CENTER } } },
-  { DevelColorVisual::Property::BLUR_RADIUS, BLUR_RADIUS_VALUE }
-};
+const Property::Value SHADOW{
+  {Visual::Property::TYPE, Visual::COLOR},
+  {Visual::Property::MIX_COLOR, Vector4(0.0f, 0.0f, 0.0f, 0.5f)},
+  {Visual::Property::TRANSFORM,
+   Property::Map{{Visual::Transform::Property::SIZE, NO_BLUR_SIZE_VALUE},
+                 {Visual::Transform::Property::ORIGIN, Align::CENTER},
+                 {Visual::Transform::Property::ANCHOR_POINT, Align::CENTER}}}};
 
 } // namespace
 
@@ -51,13 +51,12 @@ const Property::Value SHADOW
 class ColorVisualExample : public ConnectionTracker
 {
 public:
-
-  ColorVisualExample( Application& application )
-  : mApplication( application ),
-    mShadowVisible( true )
+  ColorVisualExample(Application& application)
+  : mApplication(application),
+    mBlurEnabled(false)
   {
     // Connect to the Application's Init signal
-    mApplication.InitSignal().Connect( this, &ColorVisualExample::Create );
+    mApplication.InitSignal().Connect(this, &ColorVisualExample::Create);
   }
 
   ~ColorVisualExample()
@@ -66,60 +65,66 @@ public:
   }
 
   // The Init signal is received once (only) during the Application lifetime
-  void Create( Application& application )
+  void Create(Application& application)
   {
-    // Get a handle to the stage
-    Stage stage = Stage::GetCurrent();
-    stage.SetBackgroundColor( Color::WHITE );
+    // Get a handle to the window
+    Window window = application.GetWindow();
+    window.SetBackgroundColor(Color::WHITE);
 
-    mImageView = ImageView::New( IMAGE_FILE );
-    mImageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
-    mImageView.SetProperty( Actor::Property::SIZE, Vector2( 200.0f, 200.0f ) );
-    mImageView.SetProperty( DevelControl::Property::SHADOW, SHADOW );
+    mImageView = ImageView::New(IMAGE_FILE);
+    mImageView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+    mImageView.SetProperty(Actor::Property::SIZE, Vector2(200.0f, 200.0f));
+    mImageView.SetProperty(DevelControl::Property::SHADOW, SHADOW);
 
-    stage.Add( mImageView );
+    window.Add(mImageView);
 
-    // Respond to a click anywhere on the stage
-    stage.GetRootLayer().TouchSignal().Connect( this, &ColorVisualExample::OnTouch );
+    // Respond to a click anywhere on the window
+    window.GetRootLayer().TouchedSignal().Connect(this, &ColorVisualExample::OnTouch);
 
     // Respond to key events
-    stage.KeyEventSignal().Connect( this, &ColorVisualExample::OnKeyEvent );
+    window.KeyEventSignal().Connect(this, &ColorVisualExample::OnKeyEvent);
   }
 
-  bool OnTouch( Actor actor, const TouchData& touch )
+  bool OnTouch(Actor actor, const TouchEvent& touch)
   {
-    if( touch.GetState( 0 ) == PointState::UP )
+    if(touch.GetState(0) == PointState::UP)
     {
-      float initialValue, targetValue;
-      if( !mShadowVisible )
+      Animation animation = Animation::New(ANIMATION_DURATION);
+
+      if(!mBlurEnabled)
       {
-        initialValue = NO_BLUR_VALUE;
-        targetValue = BLUR_RADIUS_VALUE;
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, Visual::Property::MIX_COLOR), Vector3(1.0f, 0.0f, 0.0f));
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, Visual::Property::OPACITY), 0.5f);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, DevelVisual::Property::CORNER_RADIUS), CORNER_RADIUS_VALUE);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, ColorVisual::Property::MIX_COLOR), Vector3(0.0f, 0.0f, 1.0f));
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelVisual::Property::CORNER_RADIUS), SHADOW_CORNER_RADIUS_VALUE);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelColorVisual::Property::BLUR_RADIUS), BLUR_RADIUS_VALUE);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, Visual::Transform::Property::OFFSET), BLUR_OFFSET_VALUE);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, Visual::Transform::Property::SIZE), BLUR_SIZE_VALUE);
       }
       else
       {
-        initialValue = BLUR_RADIUS_VALUE;
-        targetValue = NO_BLUR_VALUE;
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, Visual::Property::MIX_COLOR), Vector3(1.0f, 1.0f, 1.0f));
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, Visual::Property::OPACITY), 1.0f);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, ImageView::Property::IMAGE, DevelVisual::Property::CORNER_RADIUS), Vector4::ZERO);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, ColorVisual::Property::MIX_COLOR), Vector3(0.0f, 0.0f, 0.0f));
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelVisual::Property::CORNER_RADIUS), Vector4::ZERO);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, DevelColorVisual::Property::BLUR_RADIUS), 0.0f);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, Visual::Transform::Property::OFFSET), Vector2::ZERO);
+        animation.AnimateTo(DevelControl::GetVisualProperty(mImageView, DevelControl::Property::SHADOW, Visual::Transform::Property::SIZE), NO_BLUR_SIZE_VALUE);
       }
-
-      mShadowVisible = !mShadowVisible;
-
-      TransitionData transitionData = TransitionData::New( Property::Map().Add( "target", "shadow" )
-                                                                          .Add( "property", "blurRadius" )
-                                                                          .Add( "initialValue", initialValue )
-                                                                          .Add( "targetValue", targetValue )
-                                                                          .Add( "animator", Property::Map().Add( "duration", ANIMATION_DURATION ) ) );
-      Animation animation = DevelControl::CreateTransition( Toolkit::Internal::GetImplementation( mImageView ), transitionData );
       animation.Play();
+
+      mBlurEnabled = !mBlurEnabled;
     }
     return true;
   }
 
-  void OnKeyEvent( const KeyEvent& event )
+  void OnKeyEvent(const KeyEvent& event)
   {
-    if( event.state == KeyEvent::Down )
+    if(event.GetState() == KeyEvent::DOWN)
     {
-      if ( IsKey( event, Dali::DALI_KEY_ESCAPE ) || IsKey( event, Dali::DALI_KEY_BACK ) )
+      if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK))
       {
         mApplication.Quit();
       }
@@ -127,15 +132,15 @@ public:
   }
 
 private:
-  Application&  mApplication;
-  ImageView mImageView;
-  bool mShadowVisible;
+  Application& mApplication;
+  ImageView    mImageView;
+  bool         mBlurEnabled;
 };
 
-int DALI_EXPORT_API main( int argc, char **argv )
+int DALI_EXPORT_API main(int argc, char** argv)
 {
-  Application application = Application::New( &argc, &argv );
-  ColorVisualExample test( application );
+  Application        application = Application::New(&argc, &argv);
+  ColorVisualExample test(application);
   application.MainLoop();
   return 0;
 }