Compute min/max value if min/max is not defined.
[platform/core/uifw/dali-toolkit.git] / dali-scene-loader / public-api / view-projection.h
1 #ifndef DALI_SCENE_LOADER_VIEW_PROJECTION_H_
2 #define DALI_SCENE_LOADER_VIEW_PROJECTION_H_
3 /*
4  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 // INTERNAL INCLUDES
21 #include "dali-scene-loader/public-api/api.h"
22
23 // EXTERNAL INCLUDES
24 #include "dali/public-api/math/matrix.h"
25
26 namespace Dali
27 {
28 namespace SceneLoader
29 {
30 /**
31  * @brief Contains view and projection matrices, also caching the view-projection
32  *      and inverse projection matrices.
33  */
34 class ViewProjection
35 {
36 public:
37   Matrix& GetView()
38   {
39     return mView;
40   }
41   Matrix& GetProjection()
42   {
43     return mProjection;
44   }
45
46   /*
47    * @brief Updates the cached view projection and inverse projection matrices.
48    */
49   void Update();
50
51   const Matrix& GetView() const
52   {
53     return mView;
54   }
55   const Matrix& GetProjection() const
56   {
57     return mProjection;
58   }
59   const Matrix& GetInverseProjection() const
60   {
61     return mInvProjection;
62   }
63   const Matrix& GetViewProjection() const
64   {
65     return mViewProjection;
66   }
67
68 private:
69   Matrix mView;
70   Matrix mProjection;
71   Matrix mInvProjection;
72   Matrix mViewProjection;
73 };
74
75 } // namespace SceneLoader
76 } // namespace Dali
77
78 #endif //DALI_SCENE_LOADER_VIEW_PROJECTION_H_