Add partial update support.
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / test-application.h
index c5ecc4f..1df0743 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_TEST_APPLICATION_H__
-#define __DALI_TEST_APPLICATION_H__
+#ifndef DALI_TEST_APPLICATION_H
+#define DALI_TEST_APPLICATION_H
 
 /*
- * Copyright (c) 2014 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.
 
 // INTERNAL INCLUDES
 #include <test-platform-abstraction.h>
-#include "test-gesture-manager.h"
 #include "test-gl-sync-abstraction.h"
 #include "test-gl-abstraction.h"
+#include "test-gl-context-helper-abstraction.h"
 #include "test-render-controller.h"
 #include <dali/public-api/common/dali-common.h>
 #include <dali/integration-api/resource-policies.h>
+#include <dali/integration-api/trace.h>
+#include <dali/integration-api/scene.h>
 
 namespace Dali
 {
 
-class DALI_IMPORT_API TestApplication : public ConnectionTracker
+class DALI_CORE_API TestApplication : public ConnectionTracker
 {
 public:
 
   // Default values derived from H2 device.
-  static const unsigned int DEFAULT_SURFACE_WIDTH = 480;
-  static const unsigned int DEFAULT_SURFACE_HEIGHT = 800;
-
-#ifdef _CPP11
-  static constexpr float DEFAULT_HORIZONTAL_DPI = 220.0f;
-  static constexpr float DEFAULT_VERTICAL_DPI   = 217.0f;
-#else
-  static const float DEFAULT_HORIZONTAL_DPI = 220.0f;
-  static const float DEFAULT_VERTICAL_DPI   = 217.0f;
-#endif
-
-  static const unsigned int DEFAULT_RENDER_INTERVAL = 1;
-
-  static const unsigned int RENDER_FRAME_INTERVAL = 16;
-
-  TestApplication( size_t surfaceWidth  = DEFAULT_SURFACE_WIDTH,
-                   size_t surfaceHeight = DEFAULT_SURFACE_HEIGHT,
-                   float  horizontalDpi = DEFAULT_HORIZONTAL_DPI,
-                   float  verticalDpi   = DEFAULT_VERTICAL_DPI,
-                   ResourcePolicy::DataRetention policy = ResourcePolicy::DALI_DISCARDS_ALL_DATA);
-
-  TestApplication( bool   initialize,
-                   size_t surfaceWidth  = DEFAULT_SURFACE_WIDTH,
-                   size_t surfaceHeight = DEFAULT_SURFACE_HEIGHT,
-                   float  horizontalDpi = DEFAULT_HORIZONTAL_DPI,
-                   float  verticalDpi   = DEFAULT_VERTICAL_DPI,
-                   ResourcePolicy::DataRetention policy = ResourcePolicy::DALI_DISCARDS_ALL_DATA);
+  static const uint32_t DEFAULT_SURFACE_WIDTH = 480;
+  static const uint32_t DEFAULT_SURFACE_HEIGHT = 800;
+
+  static constexpr uint32_t DEFAULT_HORIZONTAL_DPI = 220;
+  static constexpr uint32_t DEFAULT_VERTICAL_DPI   = 217;
+
+  static const uint32_t DEFAULT_RENDER_INTERVAL = 1;
+
+  static const uint32_t RENDER_FRAME_INTERVAL = 16;
+
+  TestApplication( uint32_t surfaceWidth  = DEFAULT_SURFACE_WIDTH,
+                   uint32_t surfaceHeight = DEFAULT_SURFACE_HEIGHT,
+                   uint32_t horizontalDpi = DEFAULT_HORIZONTAL_DPI,
+                   uint32_t verticalDpi   = DEFAULT_VERTICAL_DPI,
+                   bool initialize = true,
+                   bool enablePartialUpdate = false );
 
   void Initialize();
+  void CreateCore();
+  void CreateScene();
+  void InitializeCore();
   virtual ~TestApplication();
   static void LogMessage( Dali::Integration::Log::DebugPriority level, std::string& message );
+  static void LogContext( bool start, const char* tag );
   Dali::Integration::Core& GetCore();
   TestPlatformAbstraction& GetPlatform();
   TestRenderController& GetRenderController();
   TestGlAbstraction& GetGlAbstraction();
   TestGlSyncAbstraction& GetGlSyncAbstraction();
-  TestGestureManager& GetGestureManager();
+  TestGlContextHelperAbstraction& GetGlContextHelperAbstraction();
   void ProcessEvent(const Integration::Event& event);
   void SendNotification();
-  void SetSurfaceWidth( unsigned int width, unsigned height );
-  void SetTopMargin( unsigned int margin );
-  bool Render( unsigned int intervalMilliseconds = DEFAULT_RENDER_INTERVAL, const char* location=NULL );
-  unsigned int GetUpdateStatus();
-  bool UpdateOnly( unsigned int intervalMilliseconds = DEFAULT_RENDER_INTERVAL );
+  bool Render( uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL, const char* location=NULL );
+  bool PreRenderWithPartialUpdate(uint32_t intervalMilliseconds, const char* location, std::vector<Rect<int>>& damagedRects);
+  bool RenderWithPartialUpdate(std::vector<Rect<int>>& damagedRects, Rect<int>& clippingRect);
+  uint32_t GetUpdateStatus();
+  bool UpdateOnly( uint32_t intervalMilliseconds = DEFAULT_RENDER_INTERVAL );
   bool RenderOnly( );
   void ResetContext();
   bool GetRenderNeedsUpdate();
-  unsigned int Wait( unsigned int durationToWait );
+  bool GetRenderNeedsPostRender();
+  uint32_t Wait( uint32_t durationToWait );
+  static void EnableLogging( bool enabled )
+  {
+    mLoggingEnabled = enabled;
+  }
+
+  Integration::Scene GetScene() const
+  {
+    return mScene;
+  }
 
 private:
-  void DoUpdate( unsigned int intervalMilliseconds, const char* location=NULL );
+  void DoUpdate( uint32_t intervalMilliseconds, const char* location=NULL );
 
 protected:
   TestPlatformAbstraction   mPlatformAbstraction;
   TestRenderController      mRenderController;
   TestGlAbstraction         mGlAbstraction;
   TestGlSyncAbstraction     mGlSyncAbstraction;
-  TestGestureManager        mGestureManager;
+  TestGlContextHelperAbstraction mGlContextHelperAbstraction;
 
   Integration::UpdateStatus mStatus;
   Integration::RenderStatus mRenderStatus;
 
   Integration::Core* mCore;
+  Dali::Integration::Scene mScene;
 
-  unsigned int mSurfaceWidth;
-  unsigned int mSurfaceHeight;
-  unsigned int mFrame;
+  uint32_t mSurfaceWidth;
+  uint32_t mSurfaceHeight;
+  uint32_t mFrame;
 
-  Vector2 mDpi;
-  unsigned int mLastVSyncTime;
-  ResourcePolicy::DataRetention mDataRetentionPolicy;
+  struct { uint32_t x; uint32_t y; } mDpi;
+  uint32_t mLastVSyncTime;
+  bool mPartialUpdateEnabled;
+  static bool mLoggingEnabled;
 };
 
 } // Dali
 
-#endif
+#endif // DALI_TEST_APPLICATION_H