Add Overlay Layer in scene
[platform/core/uifw/dali-core.git] / dali / public-api / render-tasks / render-task-list.h
index cb18112..0de427c 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_RENDER_TASK_LIST_H__
-#define __DALI_RENDER_TASK_LIST_H__
+#ifndef DALI_RENDER_TASK_LIST_H
+#define DALI_RENDER_TASK_LIST_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.
  *
  */
 
+// EXTERNAL INCLUDES
+#include <cstdint> // uint32_t
+
 // INTERNAL INCLUDES
-#include <dali/public-api/common/vector-wrapper.h>
 #include <dali/public-api/object/base-handle.h>
 
-namespace Dali DALI_IMPORT_API
+namespace Dali
 {
+/**
+ * @addtogroup dali_core_rendering_effects
+ * @{
+ */
 
 class RenderTask;
 
@@ -36,39 +42,43 @@ class RenderTaskList;
  * @brief An ordered list of Dali::RenderTask%s.
  *
  * These tasks describe how the Dali scene should be rendered; @see Dali::RenderTask for more details.
+ * @SINCE_1_0.0
  */
-class RenderTaskList : public BaseHandle
+class DALI_CORE_API RenderTaskList : public BaseHandle
 {
 public:
-
   /**
-   * @brief Create an empty RenderTaskList handle.
+   * @brief Creates an empty RenderTaskList handle.
    *
    * This can be initialised with Stage::GetRenderTaskList().
+   * @SINCE_1_0.0
    */
   RenderTaskList();
 
   /**
-   * @brief Downcast a handle to RenderTaskList handle.
+   * @brief Downcasts a handle to RenderTaskList handle.
    *
    * If handle points to a RenderTaskList the downcast produces valid
-   * handle. If not the returned handle is left uninitialized.
+   * handle. If not, the returned handle is left uninitialized.
    *
-   * @param[in] handle A handle to an object.
-   * @return A handle to a RenderTaskList or an uninitialized handle.
+   * @SINCE_1_0.0
+   * @param[in] handle A handle to an object
+   * @return A handle to a RenderTaskList or an uninitialized handle
    */
-  static RenderTaskList DownCast( BaseHandle handle );
+  static RenderTaskList DownCast(BaseHandle handle);
 
   /**
-   * @brief Destructor
+   * @brief Destructor.
    *
    * This is non-virtual since derived Handle types must not contain data or virtual methods.
+   * @SINCE_1_0.0
    */
   ~RenderTaskList();
 
   /**
    * @brief This copy constructor is required for (smart) pointer semantics.
    *
+   * @SINCE_1_0.0
    * @param [in] handle A reference to the copied handle
    */
   RenderTaskList(const RenderTaskList& handle);
@@ -76,61 +86,87 @@ public:
   /**
    * @brief This assignment operator is required for (smart) pointer semantics.
    *
-   * @param [in] rhs  A reference to the copied handle
+   * @SINCE_1_0.0
+   * @param [in] rhs A reference to the copied handle
    * @return A reference to this
    */
   RenderTaskList& operator=(const RenderTaskList& rhs);
 
   /**
-   * @brief This method is defined to allow assignment of the NULL value,
-   * and will throw an exception if passed any other value.
+   * @brief Move constructor.
    *
-   * Assigning to NULL is an alias for Reset().
-   * @param [in] rhs  A NULL pointer
+   * @SINCE_1_9.22
+   * @param[in] rhs A reference to the moved handle
+   */
+  RenderTaskList(RenderTaskList&& rhs);
+
+  /**
+   * @brief Move assignment operator.
+   *
+   * @SINCE_1_9.22
+   * @param[in] rhs A reference to the moved handle
    * @return A reference to this handle
    */
-  RenderTaskList& operator=(BaseHandle::NullType* rhs);
+  RenderTaskList& operator=(RenderTaskList&& rhs);
 
   /**
-   * @brief Create a new RenderTask.
+   * @brief Creates a new RenderTask.
    *
    * This will be appended to the list of render-tasks.
-   * @return A valid handle to a new RenderTask.
+   * @SINCE_1_0.0
+   * @return A valid handle to a new RenderTask
    */
   RenderTask CreateTask();
 
   /**
-   * @brief Remove a RenderTask from the list of render-tasks.
+   * @brief Removes a RenderTask from the list of render-tasks.
+   * @SINCE_1_0.0
    * @param[in] task The render-task to remove.
    */
-  void RemoveTask( RenderTask task );
+  void RemoveTask(RenderTask task);
 
   /**
-   * @brief Query the number of render-tasks in the list.
+   * @brief Queries the number of render-tasks in the list.
    *
    * This is ordered i.e. the task with index 0 is the first to be processed each frame.
-   * @return The number of render-tasks.
+   * @SINCE_1_0.0
+   * @return The number of render-tasks
    */
-  unsigned int GetTaskCount() const;
+  uint32_t GetTaskCount() const;
 
   /**
-   * @brief Retrieve a render-task.
+   * @brief Retrieves a render-task.
    *
-   * @pre index should be in range i.e. less than GetTaskCount().
+   * @SINCE_1_0.0
    * @param[in] index The index of the render task to retrieve
-   * @return A handle to the render-task.
+   * @return A handle to the render-task
+   * @pre index should be in range i.e. less than GetTaskCount().
    */
-  RenderTask GetTask( unsigned int index ) const;
+  RenderTask GetTask(uint32_t index) const;
 
-public: // Not intended for application developers
+  /**
+   * @brief Retrieves a RenderTask for Overlay
+   * @SINCE_2_2.10
+   * @return A handle to the overlay RenderTask.
+   * If the scene has not created an overlay render task, this returns empty handle.
+   */
+  RenderTask GetOverlayTask() const;
 
+public: // Not intended for application developers
+  /// @cond internal
   /**
-   * @brief This constructor is used by Dali New() methods
+   * @brief This constructor is used by Dali New() methods.
+   *
+   * @SINCE_1_0.0
    * @param [in] renderTask A pointer to a newly allocated render-task
    */
-  explicit DALI_INTERNAL RenderTaskList( Internal::RenderTaskList* renderTask );
+  explicit DALI_INTERNAL RenderTaskList(Internal::RenderTaskList* renderTask);
+  /// @endcond
 };
 
+/**
+ * @}
+ */
 } // namespace Dali
 
-#endif //__DALI_RENDER_TASK_LIST_H__
+#endif //DALI_RENDER_TASK_LIST_H