Refactoring Gestures Class
[platform/core/uifw/dali-demo.git] / examples / shadows-and-lights / shadows-and-lights-example.cpp
old mode 100644 (file)
new mode 100755 (executable)
index d69e958..157dcbc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -56,7 +56,7 @@ const Vector3 LEFT_POINT( -R3_2, 0.5f,  0.0f);
 const Vector3 RIGHT_POINT( R3_2, 0.5f,  0.0f);
 const Vector3 FRONT_POINT( 0.0f, 0.0f, 20.0f);
 
-const Vector2 DEFAULT_STAGE_SIZE( 480.0f, 800.0f );
+const Vector2 DEFAULT_WINDOW_SIZE( 480.0f, 800.0f );
 
 const float X_ROTATION_DISPLACEMENT_FACTOR = 60.f;
 const float Y_ROTATION_DISPLACEMENT_FACTOR = 60.f;
@@ -145,7 +145,7 @@ public:
   {
     srand(0); // Want repeatable path
 
-    Stage::GetCurrent().KeyEventSignal().Connect(this, &TestApp::OnKeyEvent);
+    app.GetWindow().KeyEventSignal().Connect(this, &TestApp::OnKeyEvent);
 
     CreateToolbarAndView(app);
     CreateShadowViewAndLights();
@@ -155,7 +155,7 @@ public:
   void CreateToolbarAndView(Application& app)
   {
     // Creates a default view with a default tool bar.
-    // The view is added to the stage.
+    // The view is added to the window.
     Toolkit::ToolBar toolBar;
     mContents = DemoHelper::CreateView( app,
                                         mView,
@@ -169,11 +169,11 @@ public:
     effectChangeButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, CHANGE_EFFECT_IMAGE );
     effectChangeButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, CHANGE_EFFECT_IMAGE_SELECTED );
     effectChangeButton.ClickedSignal().Connect( this, &TestApp::OnEffectButtonClicked );
-    toolBar.AddControl( effectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );
+    toolBar.AddControl( effectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HORIZONTAL_RIGHT, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );
 
     // Add title to the tool bar.
     mTitleActor = DemoHelper::CreateToolBarLabel( "" );
-    toolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HorizontalCenter );
+    toolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Toolkit::Alignment::HORIZONTAL_CENTER );
 
     // Set Title text
     mTitleActor.SetProperty( TextLabel::Property::TEXT, std::string(APPLICATION_TITLE_PAN_LIGHT) );
@@ -183,15 +183,15 @@ public:
     resetButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, RESET_ICON );
     resetButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, RESET_ICON_SELECTED );
     resetButton.ClickedSignal().Connect( this, &TestApp::OnResetPressed );
-    toolBar.AddControl( resetButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalCenter, DemoHelper::DEFAULT_PLAY_PADDING );
+    toolBar.AddControl( resetButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HORIZONTAL_CENTER, DemoHelper::DEFAULT_PLAY_PADDING );
 
     // Setup
-    mView.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
+    mView.SetProperty( Actor::Property::POSITION, Vector3( 0.0f, 0.0f, 0.0f ) );
 
-    mContents.SetBehavior(Layer::LAYER_3D);
-    mContents.SetPosition(mTranslation);
+    mContents.SetProperty( Layer::Property::BEHAVIOR, Layer::LAYER_3D );
+    mContents.SetProperty( Actor::Property::POSITION, mTranslation );
     mContents.SetProperty( Actor::Property::ORIENTATION, CalculateWorldRotation( mSceneXRotation, mSceneYRotation ) );
-    mContents.SetScale(mPinchScale, mPinchScale, mPinchScale);
+    mContents.SetProperty( Actor::Property::SCALE, Vector3( mPinchScale, mPinchScale, mPinchScale ) );
 
     mPanGestureDetector = PanGestureDetector::New();
     mPanGestureDetector.Attach( mView );
@@ -222,9 +222,9 @@ public:
     mShadowPlaneBg.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
     mShadowPlaneBg.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::CENTER);
     mShadowPlaneBg.SetProperty( Dali::Actor::Property::NAME,"Plane");
-    mShadowPlaneBg.SetSize(1000.0f, 1000.0f);
+    mShadowPlaneBg.SetProperty( Actor::Property::SIZE, Vector2(1000.0f, 1000.0f) );
     mContents.Add(mShadowPlaneBg);
-    mShadowPlaneBg.SetPosition(Vector3(50.0f, 50.0f, -200.0f));
+    mShadowPlaneBg.SetProperty( Actor::Property::POSITION, Vector3(50.0f, 50.0f, -200.0f));
 
     mShadowView.SetShadowPlaneBackground(mShadowPlaneBg);
     mShadowView.Activate();
@@ -235,14 +235,14 @@ public:
     mLightAnchor.SetProperty( Actor::Property::ORIENTATION, CalculateWorldRotation( mLightXRotation, mLightYRotation ) );
 
     // Work out a scaling factor as the initial light position was calculated for desktop
-    // Need to scale light position as scene actor size is based on stage size (i.e. much bigger on device)
-    Vector2 stageSize( Stage::GetCurrent().GetSize() );
-    float scaleFactor = stageSize.x / DEFAULT_STAGE_SIZE.x;
+    // Need to scale light position as scene actor size is based on window size (i.e. much bigger on device)
+    Vector2 windowSize( mApp.GetWindow().GetSize() );
+    float scaleFactor = windowSize.x / DEFAULT_WINDOW_SIZE.x;
 
     mCastingLight = Actor::New();
     mCastingLight.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER);
     mCastingLight.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::CENTER);
-    mCastingLight.SetPosition( Vector3( 0.0f, 0.0f, 800.0f ) * scaleFactor );
+    mCastingLight.SetProperty( Actor::Property::POSITION, Vector3( 0.0f, 0.0f, 800.0f ) * scaleFactor );
 
     TextLabel text = TextLabel::New( "Light" );
     text.SetProperty( TextLabel::Property::POINT_SIZE, 20.0f );
@@ -303,8 +303,8 @@ public:
     mSceneAnimation.SetLooping(true);
     mSceneAnimation.Play();
 
-    mSceneActor.SetSize(250.0f, 250.0f);
-    mSceneActor.SetPosition(0.0f, 0.0f, 130.0f);
+    mSceneActor.SetProperty( Actor::Property::SIZE, Vector2( 250.0f, 250.0f ) );
+    mSceneActor.SetProperty( Actor::Property::POSITION, Vector3( 0.0f, 0.0f, 130.0f ) );
     mShadowView.Add(mSceneActor);
   }
 
@@ -335,17 +335,18 @@ public:
 
   void OnPan(Actor actor, const PanGesture& gesture)
   {
-    switch (gesture.state)
+    switch (gesture.GetState())
     {
       case Gesture::Continuing:
       {
+        const Vector2& displacement = gesture.GetDisplacement();
         switch(mPanState)
         {
           case PAN_LIGHT:
           {
-            mLightXRotation = mLightXRotation - gesture.displacement.y * LIGHT_PAN_X_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis
+            mLightXRotation = mLightXRotation - displacement.y * LIGHT_PAN_X_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis
             mLightXRotation = Clamp(mLightXRotation, -Dali::ANGLE_45, Dali::ANGLE_45 );
-            mLightYRotation = mLightYRotation + gesture.displacement.x * LIGHT_PAN_Y_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis
+            mLightYRotation = mLightYRotation + displacement.x * LIGHT_PAN_Y_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis
             mLightYRotation = Clamp(mLightYRotation, -Dali::ANGLE_45, Dali::ANGLE_45 );
             mLightAnchor.SetProperty( Actor::Property::ORIENTATION, CalculateWorldRotation( mLightXRotation, mLightYRotation ) );
             break;
@@ -353,16 +354,16 @@ public:
 
           case PAN_SCENE:
           {
-            mTranslation += Vector3(gesture.displacement.x, gesture.displacement.y, 0.f);
-            mContents.SetPosition(mTranslation);
+            mTranslation += Vector3(displacement.x, displacement.y, 0.f);
+            mContents.SetProperty( Actor::Property::POSITION, mTranslation );
             break;
           }
 
           case ROTATE_SCENE:
           {
-            mSceneXRotation = mSceneXRotation - gesture.displacement.y / X_ROTATION_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis
+            mSceneXRotation = mSceneXRotation - displacement.y / X_ROTATION_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis
             mSceneXRotation = Clamp( mSceneXRotation, -Dali::ANGLE_90, Dali::ANGLE_90 );
-            mSceneYRotation = mSceneYRotation + gesture.displacement.x / Y_ROTATION_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis
+            mSceneYRotation = mSceneYRotation + displacement.x / Y_ROTATION_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis
             mSceneYRotation = Clamp( mSceneYRotation, -Dali::ANGLE_90, Dali::ANGLE_90 );
             mContents.SetProperty( Actor::Property::ORIENTATION, CalculateWorldRotation( mSceneXRotation, mSceneYRotation ) );
             break;
@@ -370,8 +371,8 @@ public:
 
           case ROTATE_OBJECT:
           {
-            mObjectXRotation = mObjectXRotation - gesture.displacement.y / X_ROTATION_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis
-            mObjectYRotation = mObjectYRotation + gesture.displacement.x / Y_ROTATION_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis
+            mObjectXRotation = mObjectXRotation - displacement.y / X_ROTATION_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis
+            mObjectYRotation = mObjectYRotation + displacement.x / Y_ROTATION_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis
             mSceneActor.SetProperty( Actor::Property::ORIENTATION, CalculateWorldRotation( mObjectXRotation, mObjectYRotation ) );
             break;
           }
@@ -390,30 +391,30 @@ public:
 
   void OnPinch(Actor actor, const PinchGesture& gesture)
   {
-    if (gesture.state == Gesture::Started)
+    if (gesture.GetState() == Gesture::Started)
     {
       mScaleAtPinchStart = mContents.GetCurrentProperty< Vector3 >( Actor::Property::SCALE ).x;
     }
-    mPinchScale = Clamp(mScaleAtPinchStart * gesture.scale, MIN_PINCH_SCALE, MAX_PINCH_SCALE);
+    mPinchScale = Clamp(mScaleAtPinchStart * gesture.GetScale(), MIN_PINCH_SCALE, MAX_PINCH_SCALE);
 
-    mContents.SetScale(mPinchScale, mPinchScale, mPinchScale);
+    mContents.SetProperty( Actor::Property::SCALE, Vector3( mPinchScale, mPinchScale, mPinchScale ) );
   }
 
   void Terminate(Application& app)
   {
     if( mSceneActor )
     {
-      Stage::GetCurrent().Remove(mSceneActor);
+      mApp.GetWindow().Remove(mSceneActor);
     }
     if( mView )
     {
-      Stage::GetCurrent().Remove(mView);
+      mApp.GetWindow().Remove(mView);
     }
   }
 
   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) )
       {
@@ -453,7 +454,7 @@ public:
   {
     // Reset translation
     mTranslation = Vector3::ZERO;
-    mContents.SetPosition(mTranslation);
+    mContents.SetProperty( Actor::Property::POSITION, mTranslation );
 
     // Align scene so that light anchor orientation is Z Axis
     mSceneXRotation = -mLightXRotation;