New size negotiation
[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) 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 #include <dali/public-api/common/dali-common.h>
22
23 namespace Dali
24 {
25
26 /**
27  * @brief Actor color mode.
28  *
29  */
30 enum ColorMode
31 {
32   USE_OWN_COLOR,                 ///< Actor will use its own color
33   USE_PARENT_COLOR,              ///< Actor will use its parent color
34   USE_OWN_MULTIPLY_PARENT_COLOR, ///< Actor will blend its color with its parents color.
35   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.
36 };
37
38 /**
39  * @brief Actor position inheritance mode.
40  */
41 enum PositionInheritanceMode
42 {
43   INHERIT_PARENT_POSITION,                 ///< Actor will inherit its parent position. This is the default
44   USE_PARENT_POSITION,                     ///< Actor will copy its parent position. This is useful if many actors are stacked together in the same place. This option ignores parent origin and anchor point.
45   USE_PARENT_POSITION_PLUS_LOCAL_POSITION, ///< Actor will copy its parent position and add local position. This is useful if many actors are stacked together in the same place with an offset.  This option ignores parent origin and anchor point.
46   DONT_INHERIT_POSITION                    ///< Actor will not inherit position. Local position is treated as world position. This is useful if a constraint is used to override local position or if an actor is positioned globally. This option ignores parent origin, anchor point and local position.
47 };
48
49 /**
50  * @brief Actor size relative to parent mode.
51  */
52 enum SizeMode
53 {
54   USE_OWN_SIZE,                            ///< The mode is bypassed. The size Vector3 will be used as normal.
55   SIZE_RELATIVE_TO_PARENT,                 ///< The actors size will be ( ParentSize * SizeRelativeToParentFactor ).
56   SIZE_FIXED_OFFSET_FROM_PARENT            ///< The actors size will be ( ParentSize + SizeRelativeToParentFactor ).
57 };
58
59 /**
60  * @brief Dimensions for layout
61  */
62 enum Dimension
63 {
64   WIDTH  = 0x1,       ///< Width dimension
65   HEIGHT = 0x2,       ///< Height dimension
66
67   DIMENSION_COUNT = 2,  ///< Number of dimensions - update this if adding new dimension
68   ALL_DIMENSIONS = 0x3  ///< Mask to cover all flags
69 };
70
71 /**
72  * @brief Size negotiation resize policies
73  */
74 enum ResizePolicy
75 {
76   FIXED,                 ///< Size is fixed as set by SetSize
77   USE_NATURAL_SIZE,      ///< Size is to use the actor's natural size
78   USE_ASSIGNED_SIZE,     ///< The size will be assigned to the actor
79   FILL_TO_PARENT,        ///< Size is to fill up to the actor's parent's bounds. Aspect ratio not maintained.
80   FIT_TO_CHILDREN,       ///< Size will adjust to wrap around all children
81   DIMENSION_DEPENDENCY   ///< One dimension is dependent on the other
82 };
83
84 /**
85  * @brief Policies to determine how an actor should resize itself when having its size set in size negotiation
86  */
87 enum SizeScalePolicy
88 {
89   USE_SIZE_SET,                ///< Use the size that was set
90   FIT_WITH_ASPECT_RATIO,       ///< Fit within the size set maintaining natural size aspect ratio
91   FILL_WITH_ASPECT_RATIO       ///< Fill up the size set maintaining natural size aspect ratio. May exceed size bounds in one dimension.
92 };
93
94 /**
95  * @brief Different types of alignment.
96  */
97 namespace HorizontalAlignment
98 {
99 enum Type
100 {
101   LEFT,         ///< Align horizontally left
102   CENTER,       ///< Align horizontally center
103   RIGHT         ///< Align horiztonally right
104 };
105 }
106
107 namespace VerticalAlignment
108 {
109 enum Type
110 {
111   TOP,          ///< Align vertically top
112   CENTER,       ///< Align vertically center
113   BOTTOM        ///< Align vertically bottom
114 };
115 }
116
117 } // namespace Dali
118
119 #endif // __DALI_ACTOR_ENUMERATIONS_H__