Change RenderTaskList to behave like any other SceneGraph object
[platform/core/uifw/dali-core.git] / dali / integration-api / system-overlay.h
1 #ifndef __DALI_INTEGRATION_SYSTEM_OVERLAY_H__
2 #define __DALI_INTEGRATION_SYSTEM_OVERLAY_H__
3
4 /*
5  * Copyright (c) 2018 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // INTERNAL INCLUDES
22 #include <dali/public-api/common/dali-common.h>
23
24 namespace Dali
25 {
26
27 class Actor;
28 class CameraActor;
29 class RenderTaskList;
30
31 namespace Internal
32 {
33 class SystemOverlay;
34 }
35
36 namespace Integration
37 {
38
39 /**
40  * Use this interface to draw content for system-level indicators, dialogs etc.
41  * The SystemOverlay is accessible using Dali::Integration::Core::GetSystemOverlay().
42  */
43 class DALI_CORE_API SystemOverlay
44 {
45 public:
46
47   /**
48    * Non-virtual destructor. SystemOverlay is not intended as a base class.
49    */
50   ~SystemOverlay();
51
52   /**
53    * Add an Actor to the SystemOverlay.
54    * @pre The actor handle is not empty.
55    * @param [in] actor A handle to the actor to add.
56    * @post The actor will be referenced.
57    */
58   void Add( Actor actor );
59
60   /**
61    * Remove an Actor that was added to the SystemOverlay.
62    * @pre The actor handle is not empty.
63    * @param [in] actor A handle to the actor to remove.
64    * @post The actor will be unreferenced.
65    */
66   void Remove( Actor actor );
67
68   /**
69    * Set the list of render-tasks for system-level overlays.
70    * This is a separate list, processed after the render-tasks provided by Stage::GetRenderTaskList().
71    * @param[in] taskList  The list of overlay render-tasks.
72    */
73   void SetOverlayRenderTasks(RenderTaskList& taskList);
74
75   /**
76    * Retrieve the list of render-tasks for system-level overlays.
77    * This is a separate list, processed after the render-tasks provided by Stage::GetRenderTaskList().
78    * @return The list of overlay render-tasks.
79    */
80   RenderTaskList GetOverlayRenderTasks();
81
82   /**
83    * Retrieve the default SystemOverlay root actor.
84    * @note This is different to the root actor provided by Dali::Stage.
85    */
86   Actor GetDefaultRootActor();
87
88   /**
89    * Retrieve the default SystemOverlay camera actor.
90    * @note This is different to the default camera actor provided by Dali::Stage.
91    */
92   CameraActor GetDefaultCameraActor();
93
94   /**
95    * Create the SystemOverlay entrance.
96    * This is not intended for adaptor implementors; see also Dali::Integration::Core::GetSystemOverlay().
97    * @param[in] impl The SystemOverlay implementation.
98    */
99   SystemOverlay( Internal::SystemOverlay* impl );
100
101   /**
102    * Retreive the internal implementation; this is not intended for adaptor implementors.
103    * @return The SystemOverlay implementation.
104    */
105   Internal::SystemOverlay* GetImpl();
106
107 private:
108
109   // Undefined copy-constructor.
110   SystemOverlay( const SystemOverlay& core );
111
112   // Undefined assignment operator.
113   SystemOverlay& operator=( const SystemOverlay& rhs );
114
115 private:
116
117   Dali::Internal::SystemOverlay* mImpl;
118 };
119
120 } // namespace Integration
121
122 } // namespace Dali
123
124 #endif // __DALI_INTEGRATION_SYSTEM_OVERLAY_H__