[dali_1.0.32] Merge branch 'tizen'
[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) 2014 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
27 namespace Internal
28 {
29
30 namespace SceneGraph
31 {
32
33 /**
34  * concrete implementation of the scene controller interface
35  */
36 class SceneControllerImpl: public SceneController
37 {
38
39 public:
40
41   /**
42    * Constructor
43    * @param[in] context  dali context
44    * @param[in] rendererDispatcher Used for passing ownership of renderers to the render-thread.
45    * @param[in] renderQueue  The renderQueue
46    * @param[in] discardQueue The discardQueue
47    * @param[in] completeStatusTracker The resource complete status tracker
48    * @param[in] defaultShader to use for renderable attachments
49    */
50   SceneControllerImpl( RenderMessageDispatcher& renderMessageDispatcher,
51                        RenderQueue& renderQueue,
52                        DiscardQueue& discardQueue,
53                        TextureCache& textureCache,
54                        CompleteStatusManager& completeStatusManager );
55
56   /**
57    * Destructor
58    */
59   virtual ~SceneControllerImpl();
60
61 public:  // from SceneController
62
63   /**
64    * @copydoc SceneController::GetRenderMessageDispatcher()
65    */
66   virtual RenderMessageDispatcher& GetRenderMessageDispatcher() { return mRenderMessageDispatcher; }
67
68   /**
69    * @copydoc SceneController::GetRenderQueue()
70    */
71   virtual RenderQueue& GetRenderQueue() { return mRenderQueue; }
72
73   /**
74    * @copydoc SceneController::GetDiscardQueue()
75    */
76   virtual DiscardQueue& GetDiscardQueue() { return mDiscardQueue; }
77
78   /**
79    * @copydoc SceneController::GetTextureCache()
80    */
81   virtual TextureCache& GetTextureCache() { return mTextureCache; }
82
83   /**
84    * @copydoc SceneController::GetCompleteStatusManager()
85    */
86   virtual CompleteStatusManager& GetCompleteStatusManager() { return mCompleteStatusManager;  }
87
88 private:
89
90   // Undefined copy constructor.
91   SceneControllerImpl( const SceneControllerImpl& );
92
93   // Undefined assignment operator.
94   SceneControllerImpl& operator=( const SceneControllerImpl& );
95
96 private:
97
98   RenderMessageDispatcher& mRenderMessageDispatcher;    ///< Used for passing messages to the render-thread
99   RenderQueue&             mRenderQueue;           ///< render queue
100   DiscardQueue&            mDiscardQueue;          ///< discard queue
101   TextureCache&            mTextureCache;          ///< texture cache
102   CompleteStatusManager&   mCompleteStatusManager; ///< Complete Status manager
103
104 };
105
106 } // namespace SceneGraph
107
108 } // namespace Internal
109
110 } // namespace Dali
111
112 #endif // __DALI_INTERNAL_SCENE_GRAPH_SCENE_CONTROLLER_IMPL_H__