ec7d8ee6de971f045287bdd851d3383219b606cc
[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) 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 // EXTERNAL INCLUDES
22 #include <math.h> // M_PI
23
24 // INTERNAL INCLUDES
25 #include <dali/public-api/math/vector3.h>
26 #include <dali/public-api/math/vector4.h>
27 #include <dali/public-api/math/radian.h>
28
29 namespace Dali DALI_IMPORT_API
30 {
31
32 /**
33  * @brief ParentOrigin constants
34  *
35  * Note that for 2D layouting, the typical Z position is 0.5f (not 0.0f)
36  */
37 namespace ParentOrigin
38 {
39 extern const Vector3 DEFAULT; ///< TOP_LEFT
40
41 extern const float TOP;    ///< 0.0f
42 extern const float BOTTOM; ///< 1.0f
43 extern const float LEFT;   ///< 0.0f
44 extern const float RIGHT;  ///< 1.0f
45 extern const float MIDDLE; ///< 0.5f
46
47 extern const Vector3 BACK_TOP_LEFT;      ///< 0.0f, 0.0f, 0.0f
48 extern const Vector3 BACK_TOP_CENTER;    ///< 0.5f, 0.0f, 0.0f
49 extern const Vector3 BACK_TOP_RIGHT;     ///< 1.0f, 0.0f, 0.0f
50 extern const Vector3 BACK_CENTER_LEFT;   ///< 0.0f, 0.5f, 0.0f
51 extern const Vector3 BACK_CENTER;        ///< 0.5f, 0.5f, 0.0f
52 extern const Vector3 BACK_CENTER_RIGHT;  ///< 1.0f, 0.5f, 0.0f
53 extern const Vector3 BACK_BOTTOM_LEFT;   ///< 0.0f, 1.0f, 0.0f
54 extern const Vector3 BACK_BOTTOM_CENTER; ///< 0.5f, 1.0f, 0.0f
55 extern const Vector3 BACK_BOTTOM_RIGHT;  ///< 1.0f, 1.0f, 0.0f
56
57 extern const Vector3 TOP_LEFT;           ///< 0.0f, 0.0f, 0.5f
58 extern const Vector3 TOP_CENTER;         ///< 0.5f, 0.0f, 0.5f
59 extern const Vector3 TOP_RIGHT;          ///< 1.0f, 0.0f, 0.5f
60 extern const Vector3 CENTER_LEFT;        ///< 0.0f, 0.5f, 0.5f
61 extern const Vector3 CENTER;             ///< 0.5f, 0.5f, 0.5f
62 extern const Vector3 CENTER_RIGHT;       ///< 1.0f, 0.5f, 0.5f
63 extern const Vector3 BOTTOM_LEFT;        ///< 0.0f, 1.0f, 0.5f
64 extern const Vector3 BOTTOM_CENTER;      ///< 0.5f, 1.0f, 0.5f
65 extern const Vector3 BOTTOM_RIGHT;       ///< 1.0f, 1.0f, 0.5f
66
67 extern const Vector3 FRONT_TOP_LEFT;     ///< 0.0f, 0.0f, 1.0f
68 extern const Vector3 FRONT_TOP_CENTER;   ///< 0.5f, 0.0f, 1.0f
69 extern const Vector3 FRONT_TOP_RIGHT;    ///< 1.0f, 0.0f, 1.0f
70 extern const Vector3 FRONT_CENTER_LEFT;  ///< 0.0f, 0.5f, 1.0f
71 extern const Vector3 FRONT_CENTER;       ///< 0.5f, 0.5f, 1.0f
72 extern const Vector3 FRONT_CENTER_RIGHT; ///< 1.0f, 0.5f, 1.0f
73 extern const Vector3 FRONT_BOTTOM_LEFT;  ///< 0.0f, 1.0f, 1.0f
74 extern const Vector3 FRONT_BOTTOM_CENTER;///< 0.5f, 1.0f, 1.0f
75 extern const Vector3 FRONT_BOTTOM_RIGHT; ///< 1.0f, 1.0f, 1.0f
76
77 }
78
79 /**
80  * @brief AnchorPoint constants
81  *
82  * Note that for 2D layouting, the typical Z position is 0.5f (not 0.0f)
83  */
84 namespace AnchorPoint
85 {
86 extern const float TOP;    ///< 0.0f
87 extern const float BOTTOM; ///< 1.0f
88 extern const float LEFT;   ///< 0.0f
89 extern const float RIGHT;  ///< 1.0f
90 extern const float MIDDLE; ///< 0.5f
91
92 extern const Vector3 DEFAULT; ///< CENTER
93
94 extern const Vector3 BACK_TOP_LEFT;      ///< 0.0f, 0.0f, 0.0f
95 extern const Vector3 BACK_TOP_CENTER;    ///< 0.5f, 0.0f, 0.0f
96 extern const Vector3 BACK_TOP_RIGHT;     ///< 1.0f, 0.0f, 0.0f
97 extern const Vector3 BACK_CENTER_LEFT;   ///< 0.0f, 0.5f, 0.0f
98 extern const Vector3 BACK_CENTER;        ///< 0.5f, 0.5f, 0.0f
99 extern const Vector3 BACK_CENTER_RIGHT;  ///< 1.0f, 0.5f, 0.0f
100 extern const Vector3 BACK_BOTTOM_LEFT;   ///< 0.0f, 1.0f, 0.0f
101 extern const Vector3 BACK_BOTTOM_CENTER; ///< 0.5f, 1.0f, 0.0f
102 extern const Vector3 BACK_BOTTOM_RIGHT;  ///< 1.0f, 1.0f, 0.0f
103
104 extern const Vector3 TOP_LEFT;           ///< 0.0f, 0.0f, 0.5f
105 extern const Vector3 TOP_CENTER;         ///< 0.5f, 0.0f, 0.5f
106 extern const Vector3 TOP_RIGHT;          ///< 1.0f, 0.0f, 0.5f
107 extern const Vector3 CENTER_LEFT;        ///< 0.0f, 0.5f, 0.5f
108 extern const Vector3 CENTER;             ///< 0.5f, 0.5f, 0.5f
109 extern const Vector3 CENTER_RIGHT;       ///< 1.0f, 0.5f, 0.5f
110 extern const Vector3 BOTTOM_LEFT;        ///< 0.0f, 1.0f, 0.5f
111 extern const Vector3 BOTTOM_CENTER;      ///< 0.5f, 1.0f, 0.5f
112 extern const Vector3 BOTTOM_RIGHT;       ///< 1.0f, 1.0f, 0.5f
113
114 extern const Vector3 FRONT_TOP_LEFT;     ///< 0.0f, 0.0f, 1.0f
115 extern const Vector3 FRONT_TOP_CENTER;   ///< 0.5f, 0.0f, 1.0f
116 extern const Vector3 FRONT_TOP_RIGHT;    ///< 1.0f, 0.0f, 1.0f
117 extern const Vector3 FRONT_CENTER_LEFT;  ///< 0.0f, 0.5f, 1.0f
118 extern const Vector3 FRONT_CENTER;       ///< 0.5f, 0.5f, 1.0f
119 extern const Vector3 FRONT_CENTER_RIGHT; ///< 1.0f, 0.5f, 1.0f
120 extern const Vector3 FRONT_BOTTOM_LEFT;  ///< 0.0f, 1.0f, 1.0f
121 extern const Vector3 FRONT_BOTTOM_CENTER;///< 0.5f, 1.0f, 1.0f
122 extern const Vector3 FRONT_BOTTOM_RIGHT; ///< 1.0f, 1.0f, 1.0f
123 }
124
125
126 /**
127  * @brief Color Constants.
128  *
129  * Color is represented by the Vector4 class (see vector4.h).
130  */
131 namespace Color
132 {
133 extern const Vector4 BLACK;       ///< Pure black (0.0f, 0.0f, 0.0f, 1.0f);
134 extern const Vector4 WHITE;       ///< Pure white (1.0f, 1.0f, 1.0f, 1.0f);
135
136 extern const Vector4 RED;         ///< Pure red   (1.0f, 0.0f, 0.0f, 1.0f);
137 extern const Vector4 GREEN;       ///< Pure green (0.0f, 1.0f, 0.0f, 1.0f);
138 extern const Vector4 BLUE;        ///< Pure blue  (0.0f, 0.0f, 1.0f, 1.0f);
139
140 extern const Vector4 YELLOW;      ///< Pure yellow  (1.0f, 1.0f, 0.0f, 1.0f);
141 extern const Vector4 MAGENTA;     ///< Pure magenta (1.0f, 0.0f, 1.0f, 1.0f);
142 extern const Vector4 CYAN;        ///< Pure cyan    (0.0f, 1.0f, 1.0f, 1.0f);
143
144 extern const Vector4 TRANSPARENT; ///< Black transparent (0.0f, 0.0f, 0.0f, 0.0f);
145
146 } // namespace Color
147
148 /**
149  * @brief Math constants
150  */
151 namespace Math
152 {
153 extern const float MACHINE_EPSILON_0;      ///< Epsilon for values near zero
154 extern const float MACHINE_EPSILON_1;      ///< Epsilon for values near 1
155 extern const float MACHINE_EPSILON_10;     ///< Epsilon for values near 10
156 extern const float MACHINE_EPSILON_100;    ///< Epsilon for values near 100
157 extern const float MACHINE_EPSILON_1000;   ///< Epsilon for values near 1000
158 extern const float MACHINE_EPSILON_10000;  ///< Epsilon for values near 10000
159
160 // float is preferred to double for performance on ARM targets
161 const float PI   = static_cast<float>(M_PI);   ///< Constant representing PI
162 const float PI_2 = static_cast<float>(M_PI_2); ///< Constant representing PI/2
163 const float PI_4 = static_cast<float>(M_PI_4); ///< Constant representing PI/4
164
165 } // namespace Math
166
167 /**
168  * @brief String Constants
169  */
170 namespace String
171 {
172 extern const std::string EMPTY; ///< The empty string
173 }
174
175 } // namespace Dali
176
177 #endif // __DALI_CONSTANTS_H__