[dali_1.9.17] Merge branch 'devel/master'
[platform/core/uifw/dali-core.git] / dali / public-api / actors / actor.cpp
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include <dali/public-api/actors/actor.h>
20
21 // INTERNAL INCLUDES
22 #include <dali/public-api/actors/layer.h>
23 #include <dali/public-api/animation/constraint.h>
24 #include <dali/public-api/common/dali-common.h>
25 #include <dali/public-api/math/radian.h>
26 #include <dali/public-api/math/vector2.h>
27
28 #include <dali/internal/event/actors/actor-impl.h>
29 #include <dali/internal/event/actors/layer-impl.h>
30 #include <dali/internal/event/rendering/renderer-impl.h>
31 #include <dali/internal/event/animation/constraint-impl.h>
32 #include <dali/internal/event/size-negotiation/relayout-controller-impl.h>
33
34 namespace Dali
35 {
36
37 Actor::Actor()
38 {
39 }
40
41 Actor Actor::New()
42 {
43   Internal::ActorPtr internal = Internal::Actor::New();
44
45   return Actor(internal.Get());
46 }
47
48 Actor Actor::DownCast( BaseHandle handle )
49 {
50   return Actor( dynamic_cast<Dali::Internal::Actor*>(handle.GetObjectPtr()) );
51 }
52
53 Actor::~Actor()
54 {
55 }
56
57 Actor::Actor(const Actor& copy)
58 : Handle(copy)
59 {
60 }
61
62 Actor& Actor::operator=(const Actor& rhs)
63 {
64   BaseHandle::operator=(rhs);
65   return *this;
66 }
67
68 Layer Actor::GetLayer()
69 {
70   return GetImplementation(*this).GetLayer();
71 }
72
73 void Actor::Add(Actor actor)
74 {
75   GetImplementation(*this).Add(GetImplementation(actor));
76 }
77
78 void Actor::Remove(Actor actor)
79 {
80   GetImplementation(*this).Remove(GetImplementation(actor));
81 }
82
83 void Actor::Unparent()
84 {
85   GetImplementation(*this).Unparent();
86 }
87
88 uint32_t Actor::GetChildCount() const
89 {
90   return GetImplementation(*this).GetChildCount();
91 }
92
93 Actor Actor::GetChildAt( uint32_t index ) const
94 {
95   Internal::ActorPtr child = GetImplementation(*this).GetChildAt( index );
96   return Actor( child.Get() );
97 }
98
99 Actor Actor::FindChildByName(const std::string& actorName)
100 {
101   Internal::ActorPtr child = GetImplementation(*this).FindChildByName( actorName );
102   return Actor( child.Get() );
103 }
104
105 Actor Actor::FindChildById( const uint32_t id )
106 {
107   Internal::ActorPtr child = GetImplementation(*this).FindChildById( id );
108   return Actor( child.Get() );
109 }
110
111 Actor Actor::GetParent() const
112 {
113   Internal::Actor* parent = GetImplementation(*this).GetParent();
114
115   return Actor(parent);
116 }
117
118 Vector3 Actor::GetTargetSize() const
119 {
120   return GetImplementation(*this).GetTargetSize();
121 }
122
123 Vector3 Actor::GetNaturalSize() const
124 {
125   return GetImplementation(*this).GetNaturalSize();
126 }
127
128 void Actor::TranslateBy(const Vector3& distance)
129 {
130   GetImplementation(*this).TranslateBy(distance);
131 }
132
133 void Actor::RotateBy(const Radian& angle, const Vector3& axis)
134 {
135   GetImplementation(*this).RotateBy(angle, axis);
136 }
137
138 void Actor::RotateBy(const Quaternion& relativeRotation)
139 {
140   GetImplementation(*this).RotateBy(relativeRotation);
141 }
142
143 void Actor::ScaleBy(const Vector3& relativeScale)
144 {
145   GetImplementation(*this).ScaleBy(relativeScale);
146 }
147
148 bool Actor::ScreenToLocal(float& localX, float& localY, float screenX, float screenY) const
149 {
150   return GetImplementation(*this).ScreenToLocal(localX, localY, screenX, screenY);
151 }
152
153 void Actor::Raise()
154 {
155   GetImplementation( *this ).Raise();
156 }
157
158 void Actor::Lower()
159 {
160   GetImplementation( *this ).Lower();
161 }
162
163 void Actor::RaiseToTop()
164 {
165   GetImplementation( *this ).RaiseToTop();
166 }
167
168 void Actor::LowerToBottom()
169 {
170   GetImplementation( *this ).LowerToBottom();
171 }
172
173 void Actor::RaiseAbove( Actor target )
174 {
175   GetImplementation( *this ).RaiseAbove( GetImplementation( target ) );
176 }
177
178 void Actor::LowerBelow( Actor target )
179 {
180   GetImplementation( *this ).LowerBelow( GetImplementation( target ) );
181 }
182
183 void Actor::SetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
184 {
185   GetImplementation(*this).SetResizePolicy( policy, dimension );
186 }
187
188 ResizePolicy::Type Actor::GetResizePolicy( Dimension::Type dimension ) const
189 {
190   return GetImplementation(*this).GetResizePolicy( dimension );
191 }
192
193 float Actor::GetHeightForWidth( float width )
194 {
195   return GetImplementation(*this).GetHeightForWidth( width );
196 }
197
198 float Actor::GetWidthForHeight( float height )
199 {
200   return GetImplementation(*this).GetWidthForHeight( height );
201 }
202
203 float Actor::GetRelayoutSize( Dimension::Type dimension ) const
204 {
205   return GetImplementation(*this).GetRelayoutSize( dimension );
206 }
207
208 Actor::TouchSignalType& Actor::TouchedSignal()
209 {
210   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: TouchedSignal() is deprecated and will be removed from next release. Use TouchSignal() instead.\n" );
211
212   return GetImplementation(*this).TouchedSignal();
213 }
214
215 Actor::TouchDataSignalType& Actor::TouchSignal()
216 {
217   return GetImplementation( *this ).TouchSignal();
218 }
219
220 Actor::HoverSignalType& Actor::HoveredSignal()
221 {
222   return GetImplementation(*this).HoveredSignal();
223 }
224
225 Actor::WheelEventSignalType& Actor::WheelEventSignal()
226 {
227   return GetImplementation(*this).WheelEventSignal();
228 }
229
230 Actor::OnStageSignalType& Actor::OnStageSignal()
231 {
232   return GetImplementation(*this).OnStageSignal();
233 }
234
235 Actor::OffStageSignalType& Actor::OffStageSignal()
236 {
237   return GetImplementation(*this).OffStageSignal();
238 }
239
240 uint32_t Actor::AddRenderer( Renderer& renderer )
241 {
242   return GetImplementation(*this).AddRenderer( GetImplementation( renderer ) );
243 }
244
245 uint32_t Actor::GetRendererCount() const
246 {
247   return GetImplementation(*this).GetRendererCount();
248 }
249
250 Renderer Actor::GetRendererAt( uint32_t index )
251 {
252   Internal::RendererPtr renderer = GetImplementation(*this).GetRendererAt( index );
253   return Renderer( renderer.Get() );
254 }
255
256 void Actor::RemoveRenderer( Renderer& renderer )
257 {
258   GetImplementation(*this).RemoveRenderer( GetImplementation( renderer ) );
259 }
260
261 void Actor::RemoveRenderer( uint32_t index )
262 {
263   GetImplementation(*this).RemoveRenderer( index );
264 }
265
266 Actor::OnRelayoutSignalType& Actor::OnRelayoutSignal()
267 {
268   return GetImplementation(*this).OnRelayoutSignal();
269 }
270
271 Actor::LayoutDirectionChangedSignalType& Actor::LayoutDirectionChangedSignal()
272 {
273   return GetImplementation( *this ).LayoutDirectionChangedSignal();
274 }
275
276 Actor::Actor(Internal::Actor* internal)
277 : Handle(internal)
278 {
279 }
280
281 } // namespace Dali