Updated demos to use DALi clang-format
[platform/core/uifw/dali-demo.git] / examples / model3d-view / model3d-view-example.cpp
index b2b4b57..d8d0316 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 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.
@@ -24,23 +24,21 @@ namespace
 {
 const int MODEL_NUMBER(3);
 
-const char * const MODEL_FILE[] = {
-    DEMO_MODEL_DIR "Dino.obj",
-    DEMO_MODEL_DIR "ToyRobot-Metal.obj",
-    DEMO_MODEL_DIR "Toyrobot-Plastic.obj"
-};
+const char* const MODEL_FILE[] = {
+  DEMO_MODEL_DIR "Dino.obj",
+  DEMO_MODEL_DIR "ToyRobot-Metal.obj",
+  DEMO_MODEL_DIR "Toyrobot-Plastic.obj"};
 
-const char * const MATERIAL_FILE[] = {
-    DEMO_MODEL_DIR "Dino.mtl",
-    DEMO_MODEL_DIR "ToyRobot-Metal.mtl",
-    DEMO_MODEL_DIR "Toyrobot-Plastic.mtl"
-};
+const char* const MATERIAL_FILE[] = {
+  DEMO_MODEL_DIR "Dino.mtl",
+  DEMO_MODEL_DIR "ToyRobot-Metal.mtl",
+  DEMO_MODEL_DIR "Toyrobot-Plastic.mtl"};
 
-const char * const IMAGE_PATH( DEMO_IMAGE_DIR "" );
+const char* const IMAGE_PATH(DEMO_IMAGE_DIR "");
 
-const char * BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-1.jpg");
+const char* BACKGROUND_IMAGE(DEMO_IMAGE_DIR "background-1.jpg");
 
-}
+} // namespace
 
 /*
  * This example shows how to create and display a model3d-view control.
@@ -55,12 +53,20 @@ const char * BACKGROUND_IMAGE( DEMO_IMAGE_DIR "background-1.jpg");
 class Model3dViewController : public ConnectionTracker
 {
 public:
-
-  Model3dViewController( Application& application )
-  : mApplication( application )
+  Model3dViewController(Application& application)
+  : mApplication(application),
+    mModelCounter(0),
+    mModel3dView(),
+    mButtonLayer(),
+    mTapDetector(),
+    mIlluminationShader(Model3dView::DIFFUSE),
+    mRotationAnimation(),
+    mLightAnimation(),
+    mPlaying(false),
+    mScaled(false)
   {
     // Connect to the Application's Init signal
-    mApplication.InitSignal().Connect( this, &Model3dViewController::Create );
+    mApplication.InitSignal().Connect(this, &Model3dViewController::Create);
   }
 
   ~Model3dViewController()
@@ -69,123 +75,116 @@ 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();
-    Vector2 screenSize = stage.GetSize();
+    // Get a handle to the window
+    Window  window     = application.GetWindow();
+    Vector2 screenSize = window.GetSize();
 
     //Add background
     Toolkit::ImageView backView = Toolkit::ImageView::New(BACKGROUND_IMAGE);
-    backView.SetAnchorPoint( AnchorPoint::TOP_LEFT );
-    stage.Add(backView);
-
-    //Add 3D model control
-    m3DLayer = Layer::New();
-    stage.GetRootLayer().Add(m3DLayer);
-
-    //3D models require 3D based rendering method, so it can use depth buffer, etc.
-    m3DLayer.SetBehavior(Layer::LAYER_3D);
-    m3DLayer.SetParentOrigin( ParentOrigin::CENTER );
-    m3DLayer.SetAnchorPoint( AnchorPoint::CENTER );
+    backView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+    backView.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
+    window.Add(backView);
 
     mModelCounter = 0;
 
-    mModel3dView = Model3dView::New( MODEL_FILE[0], MATERIAL_FILE[0], IMAGE_PATH );
-    mModel3dView.SetParentOrigin( ParentOrigin::CENTER );
-    mModel3dView.SetAnchorPoint( AnchorPoint::CENTER );
-    mModel3dView.SetName( "model3dViewControl" );
+    mModel3dView = Model3dView::New(MODEL_FILE[0], MATERIAL_FILE[0], IMAGE_PATH);
+    mModel3dView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+    mModel3dView.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
+    mModel3dView.SetProperty(Dali::Actor::Property::NAME, "model3dViewControl");
     mModel3dView.SetResizePolicy(ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS);
-    mModel3dView.SetSize(screenSize);
+    mModel3dView.SetProperty(Actor::Property::SIZE, screenSize);
 
-    mModel3dView.SetProperty(Model3dView::Property::LIGHT_POSITION, Vector3(5,10.,0));
+    mModel3dView.SetProperty(Model3dView::Property::LIGHT_POSITION, Vector3(5, 10., 0));
 
-    m3DLayer.Add( mModel3dView );
+    backView.Add(mModel3dView);
 
     mIlluminationShader = Model3dView::IlluminationType(mModel3dView.GetProperty<int>(Model3dView::Property::ILLUMINATION_TYPE));
 
     mButtonLayer = Layer::New();
-    mButtonLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
-    mButtonLayer.SetParentOrigin( ParentOrigin::CENTER );
-    mButtonLayer.SetAnchorPoint( AnchorPoint::CENTER );
-    stage.GetRootLayer().Add(mButtonLayer);
+    mButtonLayer.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
+    mButtonLayer.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+    mButtonLayer.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
+    window.Add(mButtonLayer);
 
     // Create button for model changing
     Toolkit::PushButton editButton = Toolkit::PushButton::New();
-    editButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
-    editButton.ClickedSignal().Connect( this, &Model3dViewController::OnChangeModelClicked);
-    editButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
-    editButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
-    editButton.SetLabelText( "Change Model" );
-    mButtonLayer.Add( editButton  );
+    editButton.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS);
+    editButton.ClickedSignal().Connect(this, &Model3dViewController::OnChangeModelClicked);
+    editButton.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+    editButton.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+    editButton.SetProperty(Toolkit::Button::Property::LABEL, "Change Model");
+    mButtonLayer.Add(editButton);
 
     // Create button for shader changing
     editButton = Toolkit::PushButton::New();
-    editButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
-    editButton.ClickedSignal().Connect( this, &Model3dViewController::OnChangeLightingClicked);
-    editButton.SetParentOrigin( ParentOrigin::TOP_RIGHT );
-    editButton.SetAnchorPoint( AnchorPoint::TOP_RIGHT );
-    editButton.SetLabelText( "Change Shader" );
-    mButtonLayer.Add( editButton  );
+    editButton.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS);
+    editButton.ClickedSignal().Connect(this, &Model3dViewController::OnChangeLightingClicked);
+    editButton.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_RIGHT);
+    editButton.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_RIGHT);
+    editButton.SetProperty(Toolkit::Button::Property::LABEL, "Change Shader");
+    mButtonLayer.Add(editButton);
 
     // Create button for pause/resume animation
     editButton = Toolkit::PushButton::New();
-    editButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
-    editButton.ClickedSignal().Connect( this, &Model3dViewController::OnPauseAnimationsClicked);
-    editButton.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
-    editButton.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
-    editButton.SetLabelText( "Pause Animations" );
-    mButtonLayer.Add( editButton  );
+    editButton.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS);
+    editButton.ClickedSignal().Connect(this, &Model3dViewController::OnPauseAnimationsClicked);
+    editButton.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER);
+    editButton.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER);
+    editButton.SetProperty(Toolkit::Button::Property::LABEL, "Pause Animations");
+    mButtonLayer.Add(editButton);
 
     //Create animations
     mLightAnimation = Animation::New(6.f);
-    mLightAnimation.AnimateTo(Property(mModel3dView, Model3dView::Property::LIGHT_POSITION), Vector3(-5,10.0,0), TimePeriod( 0.0f, 3.0f ));
-    mLightAnimation.AnimateTo(Property(mModel3dView, Model3dView::Property::LIGHT_POSITION), Vector3(5,10.0,0), TimePeriod( 3.0f, 3.0f ));
+    mLightAnimation.AnimateTo(Property(mModel3dView, Model3dView::Property::LIGHT_POSITION), Vector3(-5, 10.0, 0), TimePeriod(0.0f, 3.0f));
+    mLightAnimation.AnimateTo(Property(mModel3dView, Model3dView::Property::LIGHT_POSITION), Vector3(5, 10.0, 0), TimePeriod(3.0f, 3.0f));
     mLightAnimation.SetLooping(true);
     mLightAnimation.Play();
 
     mRotationAnimation = Animation::New(15.f);
-    mRotationAnimation.AnimateBy(Property(mModel3dView, Actor::Property::ORIENTATION), Quaternion(Degree(0.f), Degree(360.f), Degree(0.f)) );
+    mRotationAnimation.AnimateBy(Property(mModel3dView, Actor::Property::ORIENTATION), Quaternion(Degree(0.f), Degree(360.f), Degree(0.f)));
     mRotationAnimation.SetLooping(true);
     mRotationAnimation.Play();
 
     mPlaying = true;
-    mScaled = false;
+    mScaled  = false;
 
-    // Respond to a click anywhere on the stage
-    stage.KeyEventSignal().Connect(this, &Model3dViewController::OnKeyEvent);
+    // Respond to a click anywhere on the window
+    window.KeyEventSignal().Connect(this, &Model3dViewController::OnKeyEvent);
 
     //Create a tap gesture detector for zoom
-    mTapDetector = TapGestureDetector::New( 2 );
+    mTapDetector = TapGestureDetector::New(2);
     mTapDetector.DetectedSignal().Connect(this, &Model3dViewController::OnTap);
 
-    mTapDetector.Attach( backView );
+    mTapDetector.Attach(backView);
   }
 
   /**
    * Main Tap event handler
    */
-  void OnTap( Actor actor, const TapGesture& tap )
+  void OnTap(Actor actor, const TapGesture& tap)
   {
-    if (mScaled)
+    if(mScaled)
     {
-      mModel3dView.SetScale(1.0);
-      mModel3dView.SetPosition(0,0,0);
+      mModel3dView.SetProperty(Actor::Property::SCALE, 1.0f);
+      mModel3dView.SetProperty(Actor::Property::POSITION, Vector3(0, 0, 0));
       mScaled = false;
     }
     else
     {
-      Stage stage = Stage::GetCurrent();
-      Vector2 screenSize = stage.GetSize();
+      Window  window     = mApplication.GetWindow();
+      Vector2 screenSize = window.GetSize();
 
-      Vector2 position;
-      position.x = tap.screenPoint.x - screenSize.x * 0.5;
-      position.y = tap.screenPoint.y - screenSize.y * 0.5;
+      const Vector2& screenPoint = tap.GetScreenPoint();
+      Vector2        position;
+      position.x = screenPoint.x - screenSize.x * 0.5;
+      position.y = screenPoint.y - screenSize.y * 0.5;
 
       float size = 2.5;
 
-      mModel3dView.SetScale(size);
-      mModel3dView.SetPosition(-position.x * size,-position.y * size, 0);
+      mModel3dView.SetProperty(Actor::Property::SCALE, size);
+      mModel3dView.SetProperty(Actor::Property::POSITION, Vector3(-position.x * size, -position.y * size, 0));
       mScaled = true;
     }
   }
@@ -198,8 +197,6 @@ public:
     mModelCounter = (mModelCounter + 1) % MODEL_NUMBER;
     mModel3dView.SetProperty(Model3dView::Property::GEOMETRY_URL, MODEL_FILE[mModelCounter]);
     mModel3dView.SetProperty(Model3dView::Property::MATERIAL_URL, MATERIAL_FILE[mModelCounter]);
-    mModel3dView.SetProperty(Model3dView::Property::IMAGES_URL, IMAGE_PATH);
-
     return true;
   }
 
@@ -208,21 +205,21 @@ public:
    */
   bool OnChangeLightingClicked(Toolkit::Button button)
   {
-    if( mIlluminationShader == Model3dView::DIFFUSE_WITH_NORMAL_MAP )
+    if(mIlluminationShader == Model3dView::DIFFUSE_WITH_NORMAL_MAP)
     {
       mModel3dView.SetProperty(Model3dView::Property::ILLUMINATION_TYPE, Model3dView::DIFFUSE_WITH_TEXTURE);
       mIlluminationShader = Model3dView::IlluminationType(mModel3dView.GetProperty<int>(Model3dView::Property::ILLUMINATION_TYPE));
     }
-    else if( mIlluminationShader == Model3dView::DIFFUSE_WITH_TEXTURE )
+    else if(mIlluminationShader == Model3dView::DIFFUSE_WITH_TEXTURE)
     {
       mModel3dView.SetProperty(Model3dView::Property::ILLUMINATION_TYPE, Model3dView::DIFFUSE);
       mIlluminationShader = Model3dView::IlluminationType(mModel3dView.GetProperty<int>(Model3dView::Property::ILLUMINATION_TYPE));
-   }
-    else if( mIlluminationShader == Model3dView::DIFFUSE )
+    }
+    else if(mIlluminationShader == Model3dView::DIFFUSE)
     {
       mModel3dView.SetProperty(Model3dView::Property::ILLUMINATION_TYPE, Model3dView::DIFFUSE_WITH_NORMAL_MAP);
       mIlluminationShader = Model3dView::IlluminationType(mModel3dView.GetProperty<int>(Model3dView::Property::ILLUMINATION_TYPE));
-   }
+    }
 
     return true;
   }
@@ -232,7 +229,7 @@ public:
    */
   void PauseAnimations()
   {
-    if( mPlaying )
+    if(mPlaying)
     {
       mRotationAnimation.Pause();
       mLightAnimation.Pause();
@@ -263,9 +260,9 @@ public:
    */
   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();
       }
@@ -276,40 +273,28 @@ public:
     }
   }
 
-
 private:
-  Application&  mApplication;
+  Application& mApplication;
 
-  int mModelCounter;
+  int         mModelCounter;
   Model3dView mModel3dView;
 
-  Layer m3DLayer;
-  Layer mButtonLayer;
+  Layer              mButtonLayer;
   TapGestureDetector mTapDetector;
 
   Model3dView::IlluminationType mIlluminationShader;
 
   Animation mRotationAnimation;
   Animation mLightAnimation;
-  bool mPlaying;
+  bool      mPlaying;
 
   bool mScaled;
 };
 
-void RunTest( Application& application )
+int DALI_EXPORT_API main(int argc, char** argv)
 {
-  Model3dViewController test( application );
-
+  Application           application = Application::New(&argc, &argv);
+  Model3dViewController test(application);
   application.MainLoop();
-}
-
-// Entry point for Linux & Tizen applications
-//
-int DALI_EXPORT_API main( int argc, char **argv )
-{
-  Application application = Application::New( &argc, &argv );
-
-  RunTest( application );
-
   return 0;
 }