[Tizen] Sync for libds
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / adaptor-framework / offscreen-application.h
index 19588c8..994545c 100644 (file)
  *
  */
 
-/**
- * @addtogroup dali_adaptor_framework
- * @{
- */
-
 // EXTERNAL INCLUDES
 #include <dali/public-api/signals/dali-signal.h>
 #include <dali/public-api/object/any.h>
+#include <dali/public-api/object/base-handle.h>
 
 namespace Dali
 {
 
+/**
+ * @addtogroup dali_adaptor_framework
+ * @{
+ */
+
 class OffscreenWindow;
 
 namespace Internal
@@ -39,13 +40,23 @@ class OffscreenApplication;
 
 /**
  * @brief Appliations can draw UI on offscreen surface with the OffscreenApplication.
- * When you use a OffscreenApplication, you don't have to make a Window.
+ * When you use a OffscreenApplication, you don't have to create a Window.
  */
 class DALI_IMPORT_API OffscreenApplication : public Dali::BaseHandle
 {
+
 public:
 
-  typedef Signal<void (void)> OffscreenApplicationSignalType;
+  using OffscreenApplicationSignalType = Signal<void (void)>;
+
+  /**
+   * @brief Enumeration for the render mode
+   */
+  enum class RenderMode
+  {
+    AUTO,         // Scene is rendered automatically
+    MANUAL        // Scene is rendered by RenderOnce()
+  };
 
 public:
 
@@ -55,43 +66,51 @@ public:
    * @param[in] width The initial width of the default OffscreenWindow
    * @param[in] height The initial height of the default OffscreenWindow
    * @param[in] isTranslucent Whether the OffscreenWindow is translucent or not
+   * @param[in] renderMode The RenderMode of the OffscreenApplication
    */
-  static OffscreenApplication New( uint16_t width, uint16_t height, bool isTranslucent );
+  static OffscreenApplication New( uint16_t width, uint16_t height, bool isTranslucent,
+                                   RenderMode renderMode = RenderMode::AUTO );
 
   /**
    * @brief This is the constructor of OffscreenApplication
    *
    * @param[in] surface The native surface handle to create the OffscreenWindow
    * @param[in] isTranslucent Whether the OffscreenWindow is translucent or not
+   * @param[in] renderMode The RenderMode of the OffscreenApplication
    */
-  static OffscreenApplication New( Dali::Any surface, bool isTranslucent );
+  static OffscreenApplication New( Dali::Any surface, bool isTranslucent, RenderMode renderMode = RenderMode::AUTO );
 
   /**
    * @brief Constructs an empty handle
    */
- OffscreenApplication();
 OffscreenApplication();
 
   /**
    * @brief Copy constructor
+   *
+   * @param [in] offscreenApplication A reference to the copied handle
    */
- OffscreenApplication( const OffscreenApplication& offscreenApplication );
 OffscreenApplication( const OffscreenApplication& offscreenApplication );
 
   /**
    * @brief Assignment operator
+   *
+   * @param [in] offscreenApplication A reference to the copied handle
+   * @return A reference to this
    */
- OffscreenApplication& operator=( const OffscreenApplication& offscreenApplication );
 OffscreenApplication& operator=( const OffscreenApplication& offscreenApplication );
 
   /**
    * @brief Destructor
    */
-   ~OffscreenApplication();
+  ~OffscreenApplication();
 
 public:
 
   /**
-   * @brief Runs the OffscreenApplication (rendering, event handling, etc)
+   * @brief Starts the OffscreenApplication (rendering, event handling, etc)
    */
-  void Run();
+  void Start();
 
   /**
    * @brief Stops the OffscreenApplication
@@ -100,17 +119,22 @@ public:
 
 
   /**
-   * @brief Get the default Window handle
-   * @return The default Window
+   * @brief Get the default OffscreenWindow handle
+   * @return The default OffscreenWindow
    */
   OffscreenWindow GetWindow();
 
+  /**
+   * @brief Renders once more even if we're paused
+   */
+  void RenderOnce();
+
 public:  // Signals
 
   /**
    * @brief Signal to notify the client when the application is ready to be initialized
    *
-   * @note OffscreenApplication::Run() should be called to be initialized
+   * @note OffscreenApplication::Start() should be called to be initialized
    *
    * @return The signal
    */