removal of shader inheritance, renderable actors now have shaders and there is a...
[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 #include <dali/internal/update/controllers/light-controller.h>
24
25 namespace Dali
26 {
27
28 namespace Internal
29 {
30
31 namespace SceneGraph
32 {
33
34 /**
35  * concrete implementation of the scene controller interface
36  */
37 class SceneControllerImpl: public SceneController
38 {
39
40 public:
41
42   /**
43    * Constructor
44    * @param[in] context  dali context
45    * @param[in] rendererDispatcher Used for passing ownership of renderers to the render-thread.
46    * @param[in] renderQueue  The renderQueue
47    * @param[in] discardQueue The discardQueue
48    * @param[in] completeStatusTracker The resource complete status tracker
49    * @param[in] defaultShader to use for renderable attachments
50    */
51   SceneControllerImpl( RenderMessageDispatcher& renderMessageDispatcher,
52                        RenderQueue& renderQueue,
53                        DiscardQueue& discardQueue,
54                        TextureCache& textureCache,
55                        CompleteStatusManager& completeStatusManager,
56                        Shader*& defaultShader );
57
58   /**
59    * Destructor
60    */
61   virtual ~SceneControllerImpl();
62
63 public:  // from SceneController
64
65   /**
66    * @copydoc SceneController::GetLightController()
67    */
68   virtual LightController& GetLightController() { return *mLightController; }
69
70   /**
71    * @copydoc SceneController::GetRenderMessageDispatcher()
72    */
73   virtual RenderMessageDispatcher& GetRenderMessageDispatcher() { return mRenderMessageDispatcher; }
74
75   /**
76    * @copydoc SceneController::GetRenderQueue()
77    */
78   virtual RenderQueue& GetRenderQueue() { return mRenderQueue; }
79
80   /**
81    * @copydoc SceneController::GetDiscardQueue()
82    */
83   virtual DiscardQueue& GetDiscardQueue() { return mDiscardQueue; }
84
85   /**
86    * @copydoc SceneController::GetTextureCache()
87    */
88   virtual TextureCache& GetTextureCache() { return mTextureCache; }
89
90   /**
91    * @copydoc SceneController::GetCompleteStatusManager()
92    */
93   virtual CompleteStatusManager& GetCompleteStatusManager() { return mCompleteStatusManager;  }
94
95   /**
96    * @copydoc SceneController::GetDefaultShader()
97    */
98   virtual Shader* GetDefaultShader() { return mDefaultShader; }
99
100 private:
101
102   // Undefined copy constructor.
103   SceneControllerImpl( const SceneControllerImpl& );
104
105   // Undefined assignment operator.
106   SceneControllerImpl& operator=( const SceneControllerImpl& );
107
108 private:
109
110   LightController*         mLightController;       ///< light controller
111   RenderMessageDispatcher& mRenderMessageDispatcher;    ///< Used for passing messages to the render-thread
112   RenderQueue&             mRenderQueue;           ///< render queue
113   DiscardQueue&            mDiscardQueue;          ///< discard queue
114   TextureCache&            mTextureCache;          ///< texture cache
115   CompleteStatusManager&   mCompleteStatusManager; ///< Complete Status manager
116   Shader*&                 mDefaultShader;         ///< default shader, reference to a pointer as it will be setup later
117
118 };
119
120 } // namespace SceneGraph
121
122 } // namespace Internal
123
124 } // namespace Dali
125
126 #endif // __DALI_INTERNAL_SCENE_GRAPH_SCENE_CONTROLLER_IMPL_H__