Renamed KeyEvent enum values to comply with coding standards.
[platform/core/uifw/dali-demo.git] / examples / text-memory-profiling / text-memory-profiling-example.cpp
index 09e6f69..8ab9ec1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 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.
@@ -23,7 +23,6 @@
 // EXTERNAL INCLUDES
 #include <dali/dali.h>
 #include <dali-toolkit/dali-toolkit.h>
-#include <dali-toolkit/devel-api/controls/buttons/button-devel.h>
 #include <dali-toolkit/devel-api/controls/navigation-view/navigation-view.h>
 
 // INTERNAL INCLUDES
@@ -45,6 +44,7 @@ enum TextType
   MULTI_COLOR_TEXT_WITH_STYLE,
   MULTI_COLOR_TEXT_WITH_EMOJI,
   MULTI_COLOR_TEXT_WITH_STYLE_EMOJI,
+  SMALL_TEXT_IN_LARGE_TEXT_LABEL,
   NUMBER_OF_TYPES
 };
 
@@ -57,7 +57,8 @@ std::string TEXT_TYPE_STRING[ NUMBER_OF_TYPES ] =
   "Multi color text",
   "Multi color text with style",
   "Multi color text with emoji",
-  "Multi color text with style and emoji"
+  "Multi color text with style and emoji",
+  "Small text in large Text Label"
 };
 
 const int NUMBER_OF_LABELS = 500;
@@ -96,64 +97,91 @@ public:
   TextLabel SetupTextLabel( int type )
   {
     TextLabel label = TextLabel::New();
-    label.SetAnchorPoint( ParentOrigin::TOP_LEFT );
-    label.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+    label.SetProperty( Actor::Property::ANCHOR_POINT, ParentOrigin::TOP_LEFT );
+    label.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
     label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::BLACK );
     label.SetProperty( TextLabel::Property::POINT_SIZE, 12.0f );
-    label.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::YELLOW );
+    Property::Map shadowMap;
+    shadowMap.Insert( "color", Color::YELLOW );
+    label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
     label.SetProperty( TextLabel::Property::ENABLE_MARKUP, true );
 
-    Vector2 stageSize = Stage::GetCurrent().GetSize();
-    label.SetPosition( Vector3( Random::Range( 0.0f, stageSize.x ), Random::Range( 0.0f, stageSize.y ), 0.0f) );
+    Vector2 windowSize = mApplication.GetWindow().GetSize();
+    label.SetProperty( Actor::Property::POSITION, Vector3( Random::Range( 0.0f, windowSize.x ), Random::Range( 0.0f, windowSize.y ), 0.0f) );
 
     switch ( type )
     {
       case SINGLE_COLOR_TEXT:
       {
         label.SetProperty( TextLabel::Property::TEXT, "A Quick Brown Fox Jumps Over The Lazy Dog" );
-        label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 0.0f, 0.0f ) );
+
+        shadowMap.Insert( "offset", Vector2( 0.0f, 0.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
         break;
       }
       case SINGLE_COLOR_TEXT_WITH_STYLE:
       {
         label.SetProperty( TextLabel::Property::TEXT, "A Quick Brown Fox Jumps Over The Lazy Dog" );
-        label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 2.0f, 2.0f ) );
+
+        shadowMap.Insert( "offset", Vector2( 2.0f, 2.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
         break;
       }
       case SINGLE_COLOR_TEXT_WITH_EMOJI:
       {
         label.SetProperty( TextLabel::Property::TEXT, "\xF0\x9F\x98\x81 A Quick Brown Fox Jumps Over The Lazy Dog" );
-        label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 0.0f, 0.0f ) );
+
+        shadowMap.Insert( "offset", Vector2( 0.0f, 0.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
         break;
       }
       case SINGLE_COLOR_TEXT_WITH_STYLE_EMOJI:
       {
         label.SetProperty( TextLabel::Property::TEXT, "\xF0\x9F\x98\x81 A Quick Brown Fox Jumps Over The Lazy Dog" );
-        label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 2.0f, 2.0f ) );
+
+        shadowMap.Insert( "offset", Vector2( 2.0f, 2.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
         break;
       }
       case MULTI_COLOR_TEXT:
       {
         label.SetProperty( TextLabel::Property::TEXT, "A <color value='cyan'>Quick Brown Fox</color> Jumps Over The <color value='yellow'>Lazy Dog</color>" );
-        label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 0.0f, 0.0f ) );
+
+        shadowMap.Insert( "offset", Vector2( 0.0f, 0.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
         break;
       }
       case MULTI_COLOR_TEXT_WITH_STYLE:
       {
         label.SetProperty( TextLabel::Property::TEXT, "A <color value='cyan'>Quick Brown Fox</color> Jumps Over The <color value='yellow'>Lazy Dog</color>" );
-        label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 2.0f, 2.0f ) );
+
+        shadowMap.Insert( "offset", Vector2( 2.0f, 2.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
         break;
       }
       case MULTI_COLOR_TEXT_WITH_EMOJI:
       {
         label.SetProperty( TextLabel::Property::TEXT, " \xF0\x9F\x98\x81 A <color value='cyan'>Quick Brown Fox</color> Jumps Over The <color value='yellow'>Lazy Dog</color>" );
-        label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 0.0f, 0.0f ) );
+
+        shadowMap.Insert( "offset", Vector2( 0.0f, 0.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
         break;
       }
       case MULTI_COLOR_TEXT_WITH_STYLE_EMOJI:
       {
         label.SetProperty( TextLabel::Property::TEXT, " \xF0\x9F\x98\x81 A <color value='cyan'>Quick Brown Fox</color> Jumps Over The <color value='yellow'>Lazy Dog</color>" );
-        label.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 2.0f, 2.0f ) );
+
+        shadowMap.Insert( "offset", Vector2( 2.0f, 2.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
+        break;
+      }
+      case SMALL_TEXT_IN_LARGE_TEXT_LABEL:
+      {
+        label.SetProperty( TextLabel::Property::TEXT, "A Quick Brown Fox Jumps Over The Lazy Dog" );
+
+        shadowMap.Insert( "offset", Vector2( 0.0f, 0.0f ) );
+        label.SetProperty( TextLabel::Property::SHADOW, shadowMap );
+        label.SetProperty( Actor::Property::SIZE, Vector2(windowSize.x, windowSize.y * 0.25f) ); // Set the text label in larger size
         break;
       }
       default:
@@ -168,8 +196,7 @@ public:
    */
   void CreateMainMenu()
   {
-    Stage stage = Stage::GetCurrent();
-    Vector2 stageSize = stage.GetSize();
+    Vector2 windowSize = mApplication.GetWindow().GetSize();
 
     mTapDetector = TapGestureDetector::New();
     mTapDetector.DetectedSignal().Connect( this, &TextMemoryProfilingExample::OnTap );
@@ -177,16 +204,16 @@ public:
     // Create an item view for the main menu
     mItemView = ItemView::New( *this );
 
-    mItemView.SetParentOrigin( ParentOrigin::CENTER );
-    mItemView.SetAnchorPoint( AnchorPoint::CENTER );
+    mItemView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    mItemView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
 
     mLayout = DefaultItemLayout::New( DefaultItemLayout::LIST );
-    mLayout->SetItemSize( Vector3( stageSize.width, 60.0f, 0.0f ) );
+    mLayout->SetItemSize( Vector3( windowSize.width, 60.0f, 0.0f ) );
 
     mItemView.AddLayout( *mLayout );
 
     // Activate the layout
-    mItemView.ActivateLayout( 0, Vector3( stageSize ), 0.0f );
+    mItemView.ActivateLayout( 0, Vector3( windowSize ), 0.0f );
   }
 
   /**
@@ -217,31 +244,6 @@ public:
    */
   void CreateTextLabels( int type )
   {
-    Stage stage = Stage::GetCurrent();
-
-    // Render tasks may have been setup last load so remove them
-    RenderTaskList taskList = stage.GetRenderTaskList();
-    if( taskList.GetTaskCount() > 1 )
-    {
-      typedef std::vector<RenderTask> Collection;
-      typedef Collection::iterator ColIter;
-      Collection tasks;
-
-      for( unsigned int i = 1; i < taskList.GetTaskCount(); ++i )
-      {
-        tasks.push_back( taskList.GetTask(i) );
-      }
-
-      for( ColIter iter = tasks.begin(); iter != tasks.end(); ++iter )
-      {
-        taskList.RemoveTask(*iter);
-      }
-
-      RenderTask defaultTask = taskList.GetTask( 0 );
-      defaultTask.SetSourceActor( stage.GetRootLayer() );
-      defaultTask.SetTargetFrameBuffer( FrameBufferImage() );
-    }
-
     // Delete any existing text labels
     unsigned int numChildren = mLayer.GetChildCount();
 
@@ -250,11 +252,11 @@ public:
       mLayer.Remove( mLayer.GetChildAt( 0 ) );
     }
 
-    mLayer.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
-    mLayer.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
+    mLayer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER );
+    mLayer.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER );
     mLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
     mLayer.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::HEIGHT );
-    mLayer.SetSizeModeFactor( Vector3( 0.0f, -DemoHelper::DEFAULT_VIEW_STYLE.mToolBarHeight, 0.0f ) );
+    mLayer.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( 0.0f, -DemoHelper::DEFAULT_VIEW_STYLE.mToolBarHeight, 0.0f ) );
 
     mNavigationView.Push( mLayer );
 
@@ -273,9 +275,9 @@ public:
    */
   void Create( Application& application )
   {
-    Stage stage = Stage::GetCurrent();
+    Window window = application.GetWindow();
 
-    stage.KeyEventSignal().Connect(this, &TextMemoryProfilingExample::OnKeyEvent);
+    window.KeyEventSignal().Connect(this, &TextMemoryProfilingExample::OnKeyEvent);
 
     Layer contents = DemoHelper::CreateView( mApplication,
                                              mView,
@@ -294,24 +296,24 @@ public:
     mLayer = Layer::New();
 
     mIndicator = Toolkit::ImageView::New(INDICATOR_IMAGE);
-    mIndicator.SetParentOrigin( ParentOrigin::CENTER );
-    mIndicator.SetAnchorPoint( AnchorPoint::CENTER );
+    mIndicator.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    mIndicator.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
     mIndicator.SetProperty( Actor::Property::VISIBLE, false );
 
     // Create a back button in the left of toolbar
     PushButton backButton = PushButton::New();
-    backButton.SetProperty( DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, BACK_IMAGE );
-    backButton.SetProperty( DevelButton::Property::SELECTED_BACKGROUND_VISUAL, BACK_IMAGE_SELECTED );
+    backButton.SetProperty( Button::Property::UNSELECTED_BACKGROUND_VISUAL, BACK_IMAGE );
+    backButton.SetProperty( Button::Property::SELECTED_BACKGROUND_VISUAL, BACK_IMAGE_SELECTED );
     backButton.ClickedSignal().Connect( this, &TextMemoryProfilingExample::OnBackButtonPressed );
-    backButton.SetLeaveRequired( true );
+    backButton.SetProperty( Actor::Property::LEAVE_REQUIRED, true );
     mToolBar.AddControl( backButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Alignment::HorizontalLeft, DemoHelper::DEFAULT_MODE_SWITCH_PADDING );
 
     // Create a navigation view to navigate different types of text labels
     mNavigationView = NavigationView::New();
     mNavigationView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
-    mNavigationView.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+    mNavigationView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
     mNavigationView.SetBackgroundColor( Color::WHITE );
-    stage.Add( mNavigationView );
+    window.Add( mNavigationView );
 
     CreateMainMenu();
     mNavigationView.Push( mItemView );
@@ -327,7 +329,7 @@ public:
    */
   void OnKeyEvent( const KeyEvent& event )
   {
-    if( event.state == KeyEvent::Down )
+    if( event.GetState() == KeyEvent::DOWN )
     {
       if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) )
       {
@@ -384,7 +386,7 @@ public:
    */
   void ReturnToPreviousScreen()
   {
-    if ( mItemView.OnStage() )
+    if ( mItemView.GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) )
     {
       // Quit the application if it is in the main menu
       mApplication.Quit();