1 #ifndef DALI_ACTOR_DEVEL_H
2 #define DALI_ACTOR_DEVEL_H
5 * Copyright (c) 2019 Samsung Electronics Co., Ltd.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #include <dali/public-api/actors/actor.h>
23 #include <dali/public-api/math/rect.h>
36 PARENT_ORIGIN = Dali::Actor::Property::PARENT_ORIGIN,
37 PARENT_ORIGIN_X = Dali::Actor::Property::PARENT_ORIGIN_X,
38 PARENT_ORIGIN_Y = Dali::Actor::Property::PARENT_ORIGIN_Y,
39 PARENT_ORIGIN_Z = Dali::Actor::Property::PARENT_ORIGIN_Z,
40 ANCHOR_POINT = Dali::Actor::Property::ANCHOR_POINT,
41 ANCHOR_POINT_X = Dali::Actor::Property::ANCHOR_POINT_X,
42 ANCHOR_POINT_Y = Dali::Actor::Property::ANCHOR_POINT_Y,
43 ANCHOR_POINT_Z = Dali::Actor::Property::ANCHOR_POINT_Z,
44 SIZE = Dali::Actor::Property::SIZE,
45 SIZE_WIDTH = Dali::Actor::Property::SIZE_WIDTH,
46 SIZE_HEIGHT = Dali::Actor::Property::SIZE_HEIGHT,
47 SIZE_DEPTH = Dali::Actor::Property::SIZE_DEPTH,
48 POSITION = Dali::Actor::Property::POSITION,
49 POSITION_X = Dali::Actor::Property::POSITION_X,
50 POSITION_Y = Dali::Actor::Property::POSITION_Y,
51 POSITION_Z = Dali::Actor::Property::POSITION_Z,
52 WORLD_POSITION = Dali::Actor::Property::WORLD_POSITION,
53 WORLD_POSITION_X = Dali::Actor::Property::WORLD_POSITION_X,
54 WORLD_POSITION_Y = Dali::Actor::Property::WORLD_POSITION_Y,
55 WORLD_POSITION_Z = Dali::Actor::Property::WORLD_POSITION_Z,
56 ORIENTATION = Dali::Actor::Property::ORIENTATION,
57 WORLD_ORIENTATION = Dali::Actor::Property::WORLD_ORIENTATION,
58 SCALE = Dali::Actor::Property::SCALE,
59 SCALE_X = Dali::Actor::Property::SCALE_X,
60 SCALE_Y = Dali::Actor::Property::SCALE_Y,
61 SCALE_Z = Dali::Actor::Property::SCALE_Z,
62 WORLD_SCALE = Dali::Actor::Property::WORLD_SCALE,
63 VISIBLE = Dali::Actor::Property::VISIBLE,
64 COLOR = Dali::Actor::Property::COLOR,
65 COLOR_RED = Dali::Actor::Property::COLOR_RED,
66 COLOR_GREEN = Dali::Actor::Property::COLOR_GREEN,
67 COLOR_BLUE = Dali::Actor::Property::COLOR_BLUE,
68 COLOR_ALPHA = Dali::Actor::Property::COLOR_ALPHA,
69 WORLD_COLOR = Dali::Actor::Property::WORLD_COLOR,
70 WORLD_MATRIX = Dali::Actor::Property::WORLD_MATRIX,
71 NAME = Dali::Actor::Property::NAME,
72 SENSITIVE = Dali::Actor::Property::SENSITIVE,
73 LEAVE_REQUIRED = Dali::Actor::Property::LEAVE_REQUIRED,
74 INHERIT_ORIENTATION = Dali::Actor::Property::INHERIT_ORIENTATION,
75 INHERIT_SCALE = Dali::Actor::Property::INHERIT_SCALE,
76 COLOR_MODE = Dali::Actor::Property::COLOR_MODE,
77 RESERVED_PROPERTY_01 = Dali::Actor::Property::RESERVED_PROPERTY_01,
78 DRAW_MODE = Dali::Actor::Property::DRAW_MODE,
79 SIZE_MODE_FACTOR = Dali::Actor::Property::SIZE_MODE_FACTOR,
80 WIDTH_RESIZE_POLICY = Dali::Actor::Property::WIDTH_RESIZE_POLICY,
81 HEIGHT_RESIZE_POLICY = Dali::Actor::Property::HEIGHT_RESIZE_POLICY,
82 SIZE_SCALE_POLICY = Dali::Actor::Property::SIZE_SCALE_POLICY,
83 WIDTH_FOR_HEIGHT = Dali::Actor::Property::WIDTH_FOR_HEIGHT,
84 HEIGHT_FOR_WIDTH = Dali::Actor::Property::HEIGHT_FOR_WIDTH,
85 PADDING = Dali::Actor::Property::PADDING,
86 MINIMUM_SIZE = Dali::Actor::Property::MINIMUM_SIZE,
87 MAXIMUM_SIZE = Dali::Actor::Property::MAXIMUM_SIZE,
88 INHERIT_POSITION = Dali::Actor::Property::INHERIT_POSITION,
89 CLIPPING_MODE = Dali::Actor::Property::CLIPPING_MODE,
90 LAYOUT_DIRECTION = Dali::Actor::Property::LAYOUT_DIRECTION,
91 INHERIT_LAYOUT_DIRECTION = Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION,
94 * @brief Sets the sibling order of the actor so depth position can be defined within the same parent.
95 * @details Name "siblingOrder", type Property::INTEGER.
96 * @note The initial value is 0.
97 * @note Raise, Lower, RaiseToTop, LowerToBottom, RaiseAbove and LowerBelow will override the
98 * sibling order. The values set by this Property will likely change.
100 SIBLING_ORDER = INHERIT_LAYOUT_DIRECTION + 1,
103 * @brief The opacity of the actor.
104 * @details Name "opacity", type Property::FLOAT.
106 OPACITY = INHERIT_LAYOUT_DIRECTION + 2,
109 * @brief Returns the screen position of the Actor
110 * @details Name "screenPosition", type Property::VECTOR2. Read-only
111 * @note This assumes default camera and default render-task and the Z position is ZERO.
112 * @note The last known frame is used for the calculation. May not match a position value just set.
114 SCREEN_POSITION = INHERIT_LAYOUT_DIRECTION + 3,
117 * @brief Determines whether the anchor point should be used to determine the position of the actor.
118 * @details Name "positionUsesAnchorPoint", type Property::BOOLEAN.
119 * @note This is true by default.
120 * @note If false, then the top-left of the actor is used for the position.
121 * @note Setting this to false will allow scaling or rotation around the anchor-point without affecting the actor's position.
123 POSITION_USES_ANCHOR_POINT = INHERIT_LAYOUT_DIRECTION + 4,
126 * @brief Returns whether the actor is culled or not.
127 * @details Name "culled", type Property::BOOLEAN. Read-only
128 * @note True means that the actor is out of the view frustum.
130 CULLED = INHERIT_LAYOUT_DIRECTION + 5,
133 * @brief Sets the update size hint of the actor.
134 * @details Name "updateSizeHint", type Property::VECTOR2.
135 * @note When this value is set, the update area is determined by this value when a partial update.
137 UPDATE_SIZE_HINT = INHERIT_LAYOUT_DIRECTION + 6,
140 } // namespace Property
142 namespace VisibilityChange
147 SELF, ///< The visibility of the actor itself has changed.
148 PARENT ///< The visibility of a parent has changed.
151 } // namespace VisibilityChange
153 typedef Signal< void ( Actor, bool, VisibilityChange::Type ) > VisibilityChangedSignalType; ///< Signal type of VisibilityChangedSignalType
156 * @brief This signal is emitted when the visible property of this or a parent actor is changed.
158 * A callback of the following type may be connected:
160 * void YourCallbackName( Actor actor, bool visible, VisibilityChange::Type& type );
162 * actor: The actor, or child of actor, whose visibility has changed
163 * visible: Whether the actor is now visible or not
164 * type: Whether the actor's visible property has changed or a parent's.
165 * @return The signal to connect to
166 * @pre The Actor has been initialized.
167 * @note This signal is NOT emitted if the actor becomes transparent (or the reverse), it's only linked with Actor::Property::VISIBLE.
169 DALI_CORE_API VisibilityChangedSignalType& VisibilityChangedSignal( Actor actor );
172 * Calculates screen position and size.
174 * @return pair of two values, position of top-left corner on screen and size respectively.
176 DALI_CORE_API Rect<> CalculateScreenExtents( Actor actor );
180 typedef Signal< void (Actor) > ChildChangedSignalType; ///< Called when the actor has a child added or removed
183 * @brief This signal is emitted when a child is added to this actor.
185 * A callback of the following type may be connected:
187 * void MyCallbackName( Actor child );
189 * child: The child that has been added.
191 * @note Use this signal with caution. Changing the parent of the actor
192 * within this callback is possible, but DALi will prevent further signals
195 * @return The signal to connect to
196 * @pre The Actor has been initialized
198 DALI_CORE_API ChildChangedSignalType& ChildAddedSignal( Actor actor );
201 * @brief This signal is emitted when a child is removed from this actor.
203 * A callback of the following type may be connected:
205 * void MyCallbackName( Actor child );
207 * child: The child that has been removed.
209 * @note Use this signal with caution. Changing the parent of the actor
210 * within this callback is possible, but DALi will prevent further signals
213 * @note If the child actor is moved from one actor to another, then
214 * this signal will be emitted followed immediately by an
215 * ChildAddedSignal() on the new parent.
217 * @return The signal to connect to
218 * @pre The Actor has been initialized
220 DALI_CORE_API ChildChangedSignalType& ChildRemovedSignal( Actor actor );
223 typedef Signal< void (Actor) > ChildOrderChangedSignalType; ///< Used when the actor's children have changed order
226 * @brief This signal is emitted when an actor's children change their sibling order
228 * A callback of the following type may be connected:
230 * void MyCallbackName( Actor parent );
232 * parent The parent actor of the moved children
234 * @return The signal to connect to
235 * @pre The Actor has been initialized
237 DALI_CORE_API ChildOrderChangedSignalType& ChildOrderChangedSignal( Actor actor );
241 } // namespace DevelActor
245 #endif // DALI_ACTOR_DEVEL_H