[dali_2.3.19] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / visuals / gradient-visual-properties.h
1 #ifndef DALI_TOOLKIT_GRADIENT_VISUAL_PROPERTIES_H
2 #define DALI_TOOLKIT_GRADIENT_VISUAL_PROPERTIES_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 // INTERNAL INCLUDES
22 #include <dali-toolkit/public-api/toolkit-property-index-ranges.h>
23
24 namespace Dali
25 {
26 namespace Toolkit
27 {
28 /**
29  * @addtogroup dali_toolkit_visuals
30  * @{
31  */
32
33 /**
34  * @brief GradientVisual is to render a smooth transition of colors to the control's quad.
35  * @SINCE_1_1.45
36  */
37 namespace GradientVisual
38 {
39 /**
40  * @brief GradientVisual Property.
41  * @SINCE_1_1.45
42  */
43 namespace Property
44 {
45 /**
46  * @brief Enumeration for the instance of properties belonging to the GradientVisual.
47  * @SINCE_1_1.45
48  */
49 enum
50 {
51   /**
52    * @brief The start position of a linear gradient.
53    * @details Name "startPosition", type Property::VECTOR2.
54    * @SINCE_1_1.45
55    * @note Mandatory for Linear.
56    */
57   START_POSITION = VISUAL_PROPERTY_START_INDEX,
58
59   /**
60    * @brief The end position of a linear gradient.
61    * @details Name "endPosition", type Property::VECTOR2.
62    * @SINCE_1_1.45
63    * @note Mandatory for Linear.
64    */
65   END_POSITION,
66
67   /**
68    * @brief The center point of a radial gradient.
69    * @details Name "center", type Property::VECTOR2.
70    * @SINCE_1_1.45
71    * @note Mandatory for Radial.
72    */
73   CENTER,
74
75   /**
76    * @brief The size of the radius of a radial gradient.
77    * @details Name "radius", type Property::FLOAT.
78    * @SINCE_1_1.45
79    * @note Mandatory for Radial.
80    */
81   RADIUS,
82
83   /**
84    * @brief All the stop offsets.
85    * @details Name "stopOffset", type Property::ARRAY of Property::FLOAT.
86    * @SINCE_1_1.45
87    * @note Optional. If not supplied, default is 0.0 and 1.0.
88    */
89   STOP_OFFSET,
90
91   /**
92    * @brief The color at the stop offsets.
93    * @details Name "stopColor", type Property::ARRAY of Property::VECTOR4.
94    * @SINCE_1_1.45
95    * @note Mandatory. At least 2 values required to show a gradient.
96    */
97   STOP_COLOR,
98
99   /**
100    * @brief Defines the coordinate system for certain attributes of the points in a gradient.
101    * @details Name "units", type Units::Type (Property::INTEGER) or Property::STRING.
102    * @SINCE_1_1.45
103    * @note Optional. If not supplied, default is Units::OBJECT_BOUNDING_BOX.
104    * @see Units::Type
105    */
106   UNITS,
107
108   /**
109    * @brief Indicates what happens if the gradient starts or ends inside the bounds of the target rectangle.
110    * @details Name "spreadMethod", type SpreadMethod::Type (Property::INTEGER) or Property::STRING.
111    * @SINCE_1_1.45
112    * @note Optional. If not supplied, default is SpreadMethod::PAD.
113    * @see SpreadMethod::Type
114    */
115   SPREAD_METHOD
116 };
117
118 } // namespace Property
119
120 /**
121  * @brief The type of coordinate system for certain attributes of the points in a gradient.
122  *
123  * This applies to the:
124  * - Start (x1, y1) and End (x2 and y2) points of a line if using a linear gradient.
125  * - Center point (cx, cy) and radius (r) of a circle if using a radial gradient.
126  * @SINCE_1_1.45
127  */
128 namespace Units
129 {
130 /**
131  * @brief The type of coordinate system for certain attributes of the points in a gradient.
132  *
133  * This applies to the:
134  * - Start (x1, y1) and End (x2 and y2) points of a line if using a linear gradient.
135  * - Center point (cx, cy) and radius (r) of a circle if using a radial gradient.
136  * @SINCE_1_1.45
137  */
138 enum Type
139 {
140   OBJECT_BOUNDING_BOX, ///< Uses the normals for the start, end & center points, i.e. top-left is (-0.5, -0.5) and bottom-right is (0.5, 0.5). @SINCE_1_1.45
141   USER_SPACE           ///< Uses the user coordinates for the start, end & center points, i.e. in a 200 by 200 control, top-left is (0, 0) and bottom-right is (200, 200). @SINCE_1_1.45
142 };
143
144 } // namespace Units
145
146 /**
147  * @brief Policies that define what happens if the gradient starts or ends inside the bounds of the target rectangle.
148  * @SINCE_1_1.45
149  */
150 namespace SpreadMethod
151 {
152 /**
153  * @brief Policies that define what happens if the gradient starts or ends inside the bounds of the target rectangle.
154  * @SINCE_1_1.45
155  */
156 enum Type
157 {
158   PAD,     ///< Uses the terminal colors of the gradient to fill the remainder of the quad. @SINCE_1_1.45
159   REFLECT, ///< Reflect the gradient pattern start-to-end, end-to-start, start-to-end etc. until the quad is filled. @SINCE_1_1.45
160   REPEAT   ///< Repeat the gradient pattern start-to-end, start-to-end, start-to-end etc. until the quad is filled. @SINCE_1_1.45
161 };
162
163 } // namespace SpreadMethod
164
165 } // namespace GradientVisual
166
167 /**
168  * @}
169  */
170
171 } // namespace Toolkit
172
173 } // namespace Dali
174
175 #endif // DALI_TOOLKIT_GRADIENT_VISUAL_PROPERTIES_H