added Erase and EraseIf function to dali-vector
[platform/core/uifw/dali-core.git] / dali / public-api / common / constants.h
1 #ifndef DALI_CONSTANTS_H
2 #define DALI_CONSTANTS_H
3
4 /*
5  * Copyright (c) 2020 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 // EXTERNAL INCLUDES
22 #include <math.h> // M_PI
23
24 // INTERNAL INCLUDES
25 #include <dali/public-api/math/compile-time-math.h>
26 #include <dali/public-api/math/vector3.h>
27 #include <dali/public-api/math/vector4.h>
28
29 namespace Dali
30 {
31 /**
32  * @addtogroup dali_core_common
33  * @{
34  */
35
36 /**
37  * @brief ParentOrigin constants.
38  *
39  * Note that for 2D layouting, the typical Z position is 0.5f (not 0.0f).
40  * @SINCE_1_0.0
41  */
42 namespace ParentOrigin
43 {
44 static constexpr float   TOP    = 0.0f;
45 static constexpr float   BOTTOM = 1.0f;
46 static constexpr float   LEFT   = 0.0f;
47 static constexpr float   RIGHT  = 1.0f;
48 static constexpr float   MIDDLE = 0.5f;
49 static constexpr Vector3 TOP_LEFT(0.0f, 0.0f, 0.5f);
50 static constexpr Vector3 TOP_CENTER(0.5f, 0.0f, 0.5f);
51 static constexpr Vector3 TOP_RIGHT(1.0f, 0.0f, 0.5f);
52 static constexpr Vector3 CENTER_LEFT(0.0f, 0.5f, 0.5f);
53 static constexpr Vector3 CENTER(0.5f, 0.5f, 0.5f);
54 static constexpr Vector3 CENTER_RIGHT(1.0f, 0.5f, 0.5f);
55 static constexpr Vector3 BOTTOM_LEFT(0.0f, 1.0f, 0.5f);
56 static constexpr Vector3 BOTTOM_CENTER(0.5f, 1.0f, 0.5f);
57 static constexpr Vector3 BOTTOM_RIGHT(1.0f, 1.0f, 0.5f);
58 static constexpr Vector3 DEFAULT(TOP_LEFT);
59 } // namespace ParentOrigin
60
61 /**
62  * @brief AnchorPoint constants.
63  *
64  * Note that for 2D layouting, the typical Z position is 0.5f (not 0.0f).
65  * @SINCE_1_0.0
66  */
67 namespace AnchorPoint
68 {
69 static constexpr float   TOP    = 0.0f;
70 static constexpr float   BOTTOM = 1.0f;
71 static constexpr float   LEFT   = 0.0f;
72 static constexpr float   RIGHT  = 1.0f;
73 static constexpr float   MIDDLE = 0.5f;
74 static constexpr Vector3 TOP_LEFT(0.0f, 0.0f, 0.5f);
75 static constexpr Vector3 TOP_CENTER(0.5f, 0.0f, 0.5f);
76 static constexpr Vector3 TOP_RIGHT(1.0f, 0.0f, 0.5f);
77 static constexpr Vector3 CENTER_LEFT(0.0f, 0.5f, 0.5f);
78 static constexpr Vector3 CENTER(0.5f, 0.5f, 0.5f);
79 static constexpr Vector3 CENTER_RIGHT(1.0f, 0.5f, 0.5f);
80 static constexpr Vector3 BOTTOM_LEFT(0.0f, 1.0f, 0.5f);
81 static constexpr Vector3 BOTTOM_CENTER(0.5f, 1.0f, 0.5f);
82 static constexpr Vector3 BOTTOM_RIGHT(1.0f, 1.0f, 0.5f);
83 static constexpr Vector3 DEFAULT(CENTER);
84 } // namespace AnchorPoint
85
86 /**
87  * @brief Color Constants.
88  *
89  * Color is represented by the Vector4 class (see vector4.h).
90  * @SINCE_1_0.0
91  */
92 namespace Color
93 {
94 static constexpr Vector4 BLACK(0.0f, 0.0f, 0.0f, 1.0f);
95 static constexpr Vector4 WHITE(1.0f, 1.0f, 1.0f, 1.0f);
96 static constexpr Vector4 RED(1.0f, 0.0f, 0.0f, 1.0f);
97 static constexpr Vector4 GREEN(0.0f, 1.0f, 0.0f, 1.0f);
98 static constexpr Vector4 BLUE(0.0f, 0.0f, 1.0f, 1.0f);
99 static constexpr Vector4 YELLOW(1.0f, 1.0f, 0.0f, 1.0f);
100 static constexpr Vector4 MAGENTA(1.0f, 0.0f, 1.0f, 1.0f);
101 static constexpr Vector4 CYAN(0.0f, 1.0f, 1.0f, 1.0f);
102 static constexpr Vector4 TRANSPARENT(0.0f, 0.0f, 0.0f, 0.0f);
103
104 } // namespace Color
105
106 /**
107  * @brief Math constants.
108  * @SINCE_1_0.0
109  */
110 namespace Math
111 {
112 static constexpr float MACHINE_EPSILON_0     = Epsilon<0>::value;
113 static constexpr float MACHINE_EPSILON_1     = Epsilon<1>::value;
114 static constexpr float MACHINE_EPSILON_10    = Epsilon<10>::value;
115 static constexpr float MACHINE_EPSILON_100   = Epsilon<100>::value;
116 static constexpr float MACHINE_EPSILON_1000  = Epsilon<1000>::value;
117 static constexpr float MACHINE_EPSILON_10000 = Epsilon<10000>::value;
118
119 // float is preferred to double for performance on ARM targets
120 static constexpr float PI            = static_cast<float>(M_PI);   ///< Pi
121 static constexpr float PI_2          = static_cast<float>(M_PI_2); ///< Pi/2
122 static constexpr float PI_4          = static_cast<float>(M_PI_4); ///< Pi/4
123 static constexpr float PI_OVER_180   = Dali::Math::PI / 180.0f;    ///< Constant used to convert degree to radian
124 static constexpr float ONE80_OVER_PI = 180.0f / Dali::Math::PI;    ///< Constant used to convert radian to degree
125
126 } // namespace Math
127
128 // background colors
129 static constexpr Vector4 DEFAULT_BACKGROUND_COLOR = Color::BLACK;
130 static constexpr Vector4 DEBUG_BACKGROUND_COLOR(0.2f, 0.5f, 0.2f, 1.0f); ///< Dark green, useful for debugging visuals (texture / shader issues / culling etc.).
131
132 /**
133  * @}
134  */
135 } // namespace Dali
136
137 #endif // DALI_CONSTANTS_H