Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / effects / inc / renderer / engine-model / FUiEffects_RendererEngineModelCamera.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file                FUiEffects_RendererEngineModelCamera.h
20  * @brief       Camera class defines onscreen projection of 3D data
21  *
22  */
23
24 #ifndef _FUI_EFFECTS_INTERNAL_RENDERER_ENGINE_MODEL_CAMERA_H_
25 #define _FUI_EFFECTS_INTERNAL_RENDERER_ENGINE_MODEL_CAMERA_H_
26
27 #include <renderer/engine-model/FUiEffects_RendererEngineModelForwardDeclaration.h>
28 #include <renderer/engine-model/FUiEffects_RendererEngineModelVisitor.h>
29 #include <renderer/engine-model/FUiEffects_RendererEngineModelNode.h>
30 #include <renderer/engine-model/FUiEffects_RendererEngineModelFrustum.h>
31
32 #include <vector>
33
34 namespace Tizen { namespace Ui { namespace Effects { namespace _Renderer { namespace EngineModel
35 {
36 class Camera:
37         public Node
38 {
39 public:
40         Camera(void);
41         virtual ~Camera(void);
42
43         virtual void Visit(Visitor& v);
44
45         virtual const Math::Matrix4f& GetProj(void);
46         virtual void SetProj(const Math::Matrix4f& arg);
47         virtual void SetLocal(const Math::Matrix4f& arg);
48         virtual void SetWorld(const Math::Matrix4f& arg);
49
50         virtual void SetViewport(const Math::Vector2f& minPos, const Math::Vector2f& maxPos);
51         virtual const Math::Vector2f& GetViewportMin(void);
52         virtual const Math::Vector2f& GetViewportMax(void);
53
54         virtual void SetClearColor(const Math::Vector4f& color);
55         virtual const Math::Vector4f& GetClearColor(void);
56
57         virtual bool AttachedToParent(Group* pParent);
58         virtual bool RemoveFromParent(Group* pParent);
59         virtual void ParentMoved(Group* pParent);
60
61         virtual const Frustum& GetFrustum(void);
62
63 protected:
64         virtual void ValidateFrustum(void);
65
66         Math::Vector4f _clearColor;
67         Math::Vector2f _minPos;
68         Math::Vector2f _maxPos;
69         Attribute<Tizen::Ui::Effects::_Renderer::Math::Matrix4f> _proj;
70         Attribute<Frustum> _frustum;
71 };
72
73 }}}}} //Tizen::Ui::Effects::_Renderer::EngineModel
74
75 #endif //_FUI_EFFECTS_INTERNAL_RENDERER_ENGINE_MODEL_CAMERA_H_