[Tizen] Sync for libds
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / adaptor-framework / offscreen-application.h
index 19588c8..b549cb6 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>
+#include <dali/public-api/signals/dali-signal.h>
 
 namespace Dali
 {
+/**
+ * @addtogroup dali_adaptor_framework
+ * @{
+ */
 
 class OffscreenWindow;
 
@@ -39,102 +39,117 @@ 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:
+  using OffscreenApplicationSignalType = Signal<void(void)>;
 
-  typedef Signal<void (void)> OffscreenApplicationSignalType;
+  /**
+   * @brief Enumeration for the render mode
+   */
+  enum class RenderMode
+  {
+    AUTO,  // Scene is rendered automatically
+    MANUAL // Scene is rendered by RenderOnce()
+  };
 
 public:
-
   /**
    * @brief This is the constructor of OffscreenApplication
    *
    * @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
    */
   void Stop();
 
-
   /**
-   * @brief Get the default Window handle
-   * @return The default Window
+   * @brief Get the default OffscreenWindow handle
+   * @return The default OffscreenWindow
    */
   OffscreenWindow GetWindow();
 
-public:  // Signals
-
   /**
+   * @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
    */
- OffscreenApplicationSignalType& InitSignal();
 OffscreenApplicationSignalType& InitSignal();
 
   /**
    * @brief Signal to notify the user when the application is about to be terminated
    *
    * @return The signal
    */
- OffscreenApplicationSignalType& TerminateSignal();
 OffscreenApplicationSignalType& TerminateSignal();
 
 public: // Not intended for application developers
   /**
    * @brief Internal constructor
    */
-  explicit DALI_INTERNAL OffscreenApplication( Internal::OffscreenApplication* offscreenApplication );
-
+  explicit DALI_INTERNAL OffscreenApplication(Internal::OffscreenApplication* offscreenApplication);
 };
 
 /**
  * @}
  */
 
-}  // namespace Dali
+} // namespace Dali
 
 #endif // DALI_OFFSCREEN_APPLICATION_H