Refactored more code into Actor::Relayouter
[platform/core/uifw/dali-core.git] / dali / public-api / actors / actor-enumerations.h
1 #ifndef DALI_ACTOR_ENUMERATIONS_H
2 #define DALI_ACTOR_ENUMERATIONS_H
3
4 /*
5  * Copyright (c) 2021 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 #include <dali/public-api/common/dali-common.h>
22
23 namespace Dali
24 {
25 /**
26  * @addtogroup dali_core_actors
27  * @{
28  */
29
30 /**
31  * @brief Enumeration for Actor color mode.
32  *
33  * @SINCE_1_0.0
34  */
35 enum ColorMode
36 {
37   USE_OWN_COLOR,                 ///< Actor will use its own color @SINCE_1_0.0
38   USE_PARENT_COLOR,              ///< Actor will use its parent color @SINCE_1_0.0
39   USE_OWN_MULTIPLY_PARENT_COLOR, ///< Actor will blend its color with its parents color. @SINCE_1_0.0
40   USE_OWN_MULTIPLY_PARENT_ALPHA  ///< Actor will blend its alpha with its parents alpha. This means when parent fades in or out child does as well. This is the default. @SINCE_1_0.0
41 };
42
43 /**
44  * @brief Enumeration for layout Dimensions.
45  * @SINCE_1_0.0
46  */
47 namespace Dimension
48 {
49 /**
50  * @brief Enumeration for Dimension types.
51  * @SINCE_1_0.0
52  */
53 enum Type
54 {
55   WIDTH  = 0x1, ///< Width dimension @SINCE_1_0.0
56   HEIGHT = 0x2, ///< Height dimension @SINCE_1_0.0
57
58   ALL_DIMENSIONS = 0x3 ///< Mask to cover all flags @SINCE_1_0.0
59 };
60
61 /**
62  * @brief Enumeration for Dimension number.
63  * @SINCE_1_0.0
64  */
65 enum Meta
66 {
67   DIMENSION_COUNT = 2 ///< Number of dimensions - update this if adding new dimension @SINCE_1_0.0
68 };
69
70 } // namespace Dimension
71
72 /**
73  * @brief Enumeration for size negotiation resize policies.
74  * @SINCE_1_0.0
75  */
76 namespace ResizePolicy
77 {
78 /**
79  * @brief Enumeration for ResizePolicy types.
80  * @SINCE_1_0.0
81  */
82 enum Type
83 {
84   FIXED,                         ///< Size is fixed as set by SetSize @SINCE_1_0.0
85   USE_NATURAL_SIZE,              ///< Size is to use the actor's natural size @SINCE_1_0.0 @see Actor::GetNaturalSize()
86   FILL_TO_PARENT,                ///< Size is to fill up to the actor's parent's bounds. Aspect ratio is not maintained. @SINCE_1_0.0
87   SIZE_RELATIVE_TO_PARENT,       ///< The actor's size will be ( ParentSize * SizeModeFactor ). @SINCE_1_0.0
88   SIZE_FIXED_OFFSET_FROM_PARENT, ///< The actor's size will be ( ParentSize + SizeModeFactor ). @SINCE_1_0.0
89   FIT_TO_CHILDREN,               ///< Size will adjust to wrap around all children @SINCE_1_0.0
90   DIMENSION_DEPENDENCY,          ///< One dimension is dependent on the other @SINCE_1_0.0
91   USE_ASSIGNED_SIZE              ///< The size will be assigned to the actor @SINCE_1_0.0
92 };
93 const Type DEFAULT = USE_NATURAL_SIZE; ///< Default resize policy
94
95 } // namespace ResizePolicy
96
97 /**
98  * @brief Enumeration for policies to determine how an actor should resize itself when having its size set in size negotiation.
99  * @SINCE_1_0.0
100  */
101 namespace SizeScalePolicy
102 {
103 /**
104  * @brief Enumeration for SizeScalePolicy types.
105  * @SINCE_1_0.0
106  */
107 enum Type
108 {
109   USE_SIZE_SET,          ///< Use the size that was set @SINCE_1_0.0
110   FIT_WITH_ASPECT_RATIO, ///< Fit within the size set maintaining natural size aspect ratio @SINCE_1_0.0
111   FILL_WITH_ASPECT_RATIO ///< Fill up the size set maintaining natural size aspect ratio. May exceed size bounds in one dimension. @SINCE_1_0.0
112 };
113
114 } // namespace SizeScalePolicy
115
116 /**
117  * @brief Enumeration for horizontal alignment types.
118  * @SINCE_1_0.0
119  */
120 namespace HorizontalAlignment
121 {
122 /**
123  * @brief Enumeration for HorizontalAlignment types.
124  * @SINCE_1_0.0
125  */
126 enum Type
127 {
128   LEFT,   ///< Align horizontally left @SINCE_1_0.0
129   CENTER, ///< Align horizontally center @SINCE_1_0.0
130   RIGHT   ///< Align horizontally right @SINCE_1_0.0
131 };
132
133 } // namespace HorizontalAlignment
134
135 /**
136  * @brief Enumeration for vertical alignment types.
137  * @SINCE_1_0.0
138  */
139 namespace VerticalAlignment
140 {
141 /**
142  * @brief Enumeration for VerticalAlignment types.
143  * @SINCE_1_0.0
144  */
145 enum Type
146 {
147   TOP,    ///< Align vertically top @SINCE_1_0.0
148   CENTER, ///< Align vertically center @SINCE_1_0.0
149   BOTTOM  ///< Align vertically bottom @SINCE_1_0.0
150 };
151
152 } // namespace VerticalAlignment
153
154 /**
155  * @brief Enumeration for ClippingMode describing how this Actor's children will be clipped against it.
156  * @SINCE_1_2_5
157  */
158 namespace ClippingMode
159 {
160 /**
161  * @brief Enumeration for ClippingMode types.
162  * @SINCE_1_2_5
163  */
164 enum Type
165 {
166   DISABLED,            ///< This Actor will not clip its children. @SINCE_1_2_5
167   CLIP_CHILDREN,       ///< This Actor will clip itself and all children to within the pixel areas of this actors renderers. @SINCE_1_2_5
168   CLIP_TO_BOUNDING_BOX ///< This Actor will clip itself and all children to within a screen-aligned rectangle encompassing its boundaries. @SINCE_1_2.61
169 };
170
171 } // namespace ClippingMode
172
173 /**
174  * @brief Enumeration for the direction of the layout.
175  * @SINCE_1_2.60
176  */
177 namespace LayoutDirection
178 {
179 /**
180  * @brief Enumeration for the LayoutDirection types.
181  * @SINCE_1_2.60
182  */
183 enum Type
184 {
185   LEFT_TO_RIGHT, ///< Layout direction is from Left to Right direction. @SINCE_1_2.60
186   RIGHT_TO_LEFT  ///< Layout direction is from Right to Left direction. @SINCE_1_2.60
187 };
188
189 } // namespace LayoutDirection
190
191 /**
192  * @}
193  */
194 } // namespace Dali
195
196 #endif // DALI_ACTOR_ENUMERATIONS_H