(Partial Update) Mark as not rendered if the node is transparent or culled
[platform/core/uifw/dali-core.git] / dali / internal / update / controllers / scene-controller-impl.h
1 #ifndef DALI_INTERNAL_SCENE_GRAPH_SCENE_CONTROLLER_IMPL_H
2 #define DALI_INTERNAL_SCENE_GRAPH_SCENE_CONTROLLER_IMPL_H
3
4 /*
5  * Copyright (c) 2021 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/internal/update/controllers/scene-controller.h>
23
24 namespace Dali
25 {
26 namespace Internal
27 {
28 namespace SceneGraph
29 {
30 /**
31  * concrete implementation of the scene controller interface
32  */
33 class SceneControllerImpl : public SceneController
34 {
35 public:
36   /**
37    * Constructor
38    * @param[in] rendererDispatcher Used for passing ownership of renderers to the render-thread.
39    * @param[in] renderQueue  The renderQueue
40    * @param[in] discardQueue The discardQueue
41    */
42   SceneControllerImpl(RenderMessageDispatcher& renderMessageDispatcher,
43                       RenderQueue&             renderQueue,
44                       DiscardQueue&            discardQueue);
45
46   /**
47    * Destructor
48    */
49   ~SceneControllerImpl() override;
50
51 public: // from SceneController
52   /**
53    * @copydoc SceneController::GetRenderMessageDispatcher()
54    */
55   RenderMessageDispatcher& GetRenderMessageDispatcher() override
56   {
57     return mRenderMessageDispatcher;
58   }
59
60   /**
61    * @copydoc SceneController::GetRenderQueue()
62    */
63   RenderQueue& GetRenderQueue() override
64   {
65     return mRenderQueue;
66   }
67
68   /**
69    * @copydoc SceneController::GetDiscardQueue()
70    */
71   DiscardQueue& GetDiscardQueue() override
72   {
73     return mDiscardQueue;
74   }
75
76 private:
77   // Undefined copy constructor.
78   SceneControllerImpl(const SceneControllerImpl&);
79
80   // Undefined assignment operator.
81   SceneControllerImpl& operator=(const SceneControllerImpl&);
82
83 private:
84   RenderMessageDispatcher& mRenderMessageDispatcher; ///< Used for passing messages to the render-thread
85   RenderQueue&             mRenderQueue;             ///< render queue
86   DiscardQueue&            mDiscardQueue;            ///< discard queue
87 };
88
89 } // namespace SceneGraph
90
91 } // namespace Internal
92
93 } // namespace Dali
94
95 #endif // DALI_INTERNAL_SCENE_GRAPH_SCENE_CONTROLLER_IMPL_H