[dali_1.0.43] Merge branch 'tizen'
[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) 2015 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
28 namespace Dali
29 {
30
31 /**
32  * @brief ParentOrigin constants
33  *
34  * Note that for 2D layouting, the typical Z position is 0.5f (not 0.0f)
35  */
36 namespace ParentOrigin
37 {
38 extern const Vector3 DEFAULT; ///< TOP_LEFT
39 static const float TOP = 0.0f;
40 static const float BOTTOM = 1.0f;
41 static const float LEFT = 0.0f;
42 static const float RIGHT = 1.0f;
43 static const float MIDDLE = 0.5f;
44
45 DALI_IMPORT_API extern const Vector3 TOP_LEFT;           ///< 0.0f, 0.0f, 0.5f
46 DALI_IMPORT_API extern const Vector3 TOP_CENTER;         ///< 0.5f, 0.0f, 0.5f
47 DALI_IMPORT_API extern const Vector3 TOP_RIGHT;          ///< 1.0f, 0.0f, 0.5f
48 DALI_IMPORT_API extern const Vector3 CENTER_LEFT;        ///< 0.0f, 0.5f, 0.5f
49 DALI_IMPORT_API extern const Vector3 CENTER;             ///< 0.5f, 0.5f, 0.5f
50 DALI_IMPORT_API extern const Vector3 CENTER_RIGHT;       ///< 1.0f, 0.5f, 0.5f
51 DALI_IMPORT_API extern const Vector3 BOTTOM_LEFT;        ///< 0.0f, 1.0f, 0.5f
52 DALI_IMPORT_API extern const Vector3 BOTTOM_CENTER;      ///< 0.5f, 1.0f, 0.5f
53 DALI_IMPORT_API extern const Vector3 BOTTOM_RIGHT;       ///< 1.0f, 1.0f, 0.5f
54
55 }
56
57 /**
58  * @brief AnchorPoint constants
59  *
60  * Note that for 2D layouting, the typical Z position is 0.5f (not 0.0f)
61  */
62 namespace AnchorPoint
63 {
64 static const float TOP = 0.0f;
65 static const float BOTTOM = 1.0f;
66 static const float LEFT = 0.0f;
67 static const float RIGHT = 1.0f;
68 static const float MIDDLE = 0.5f;
69
70 extern const Vector3 DEFAULT; ///< CENTER
71 DALI_IMPORT_API extern const Vector3 TOP_LEFT;           ///< 0.0f, 0.0f, 0.5f
72 DALI_IMPORT_API extern const Vector3 TOP_CENTER;         ///< 0.5f, 0.0f, 0.5f
73 DALI_IMPORT_API extern const Vector3 TOP_RIGHT;          ///< 1.0f, 0.0f, 0.5f
74 DALI_IMPORT_API extern const Vector3 CENTER_LEFT;        ///< 0.0f, 0.5f, 0.5f
75 DALI_IMPORT_API extern const Vector3 CENTER;             ///< 0.5f, 0.5f, 0.5f
76 DALI_IMPORT_API extern const Vector3 CENTER_RIGHT;       ///< 1.0f, 0.5f, 0.5f
77 DALI_IMPORT_API extern const Vector3 BOTTOM_LEFT;        ///< 0.0f, 1.0f, 0.5f
78 DALI_IMPORT_API extern const Vector3 BOTTOM_CENTER;      ///< 0.5f, 1.0f, 0.5f
79 DALI_IMPORT_API extern const Vector3 BOTTOM_RIGHT;       ///< 1.0f, 1.0f, 0.5f
80
81 }
82
83
84 /**
85  * @brief Color Constants.
86  *
87  * Color is represented by the Vector4 class (see vector4.h).
88  */
89 namespace Color
90 {
91 DALI_IMPORT_API extern const Vector4 BLACK;       ///< Pure black (0.0f, 0.0f, 0.0f, 1.0f);
92 DALI_IMPORT_API extern const Vector4 WHITE;       ///< Pure white (1.0f, 1.0f, 1.0f, 1.0f);
93
94 DALI_IMPORT_API extern const Vector4 RED;         ///< Pure red   (1.0f, 0.0f, 0.0f, 1.0f);
95 DALI_IMPORT_API extern const Vector4 GREEN;       ///< Pure green (0.0f, 1.0f, 0.0f, 1.0f);
96 DALI_IMPORT_API extern const Vector4 BLUE;        ///< Pure blue  (0.0f, 0.0f, 1.0f, 1.0f);
97
98 DALI_IMPORT_API extern const Vector4 YELLOW;      ///< Pure yellow  (1.0f, 1.0f, 0.0f, 1.0f);
99 DALI_IMPORT_API extern const Vector4 MAGENTA;     ///< Pure magenta (1.0f, 0.0f, 1.0f, 1.0f);
100 DALI_IMPORT_API extern const Vector4 CYAN;        ///< Pure cyan    (0.0f, 1.0f, 1.0f, 1.0f);
101
102 DALI_IMPORT_API extern const Vector4 TRANSPARENT; ///< Black transparent (0.0f, 0.0f, 0.0f, 0.0f);
103
104 } // namespace Color
105
106 /**
107  * @brief Math constants
108  */
109 namespace Math
110 {
111 DALI_IMPORT_API extern const float MACHINE_EPSILON_0;      ///< Epsilon for values near zero
112 DALI_IMPORT_API extern const float MACHINE_EPSILON_1;      ///< Epsilon for values near 1
113 DALI_IMPORT_API extern const float MACHINE_EPSILON_10;     ///< Epsilon for values near 10
114 DALI_IMPORT_API extern const float MACHINE_EPSILON_100;    ///< Epsilon for values near 100
115 DALI_IMPORT_API extern const float MACHINE_EPSILON_1000;   ///< Epsilon for values near 1000
116 DALI_IMPORT_API extern const float MACHINE_EPSILON_10000;  ///< Epsilon for values near 10000
117
118 // float is preferred to double for performance on ARM targets
119 static const float PI   = static_cast<float>(M_PI);       ///< Constant representing PI
120 static const float PI_2 = static_cast<float>(M_PI_2);     ///< Constant representing PI/2
121 static const float PI_4 = static_cast<float>(M_PI_4);     ///< Constant representing PI/4
122 static const float PI_OVER_180 = Dali::Math::PI/180.0f;   ///< Constant used to convert degree to radian
123 static const float ONE80_OVER_PI = 180.0f/Dali::Math::PI; ///< Constant used to convert radian to degree
124
125 } // namespace Math
126
127 } // namespace Dali
128
129 #endif // __DALI_CONSTANTS_H__