[dali_1.9.14] 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 uint32_t Actor::GetId() const
69 {
70   return GetImplementation(*this).GetId();
71 }
72
73 bool Actor::IsRoot() const
74 {
75   return GetImplementation(*this).IsRoot();
76 }
77
78 bool Actor::OnStage() const
79 {
80   return GetImplementation(*this).OnStage();
81 }
82
83 bool Actor::IsLayer() const
84 {
85   return GetImplementation(*this).IsLayer();
86 }
87
88 Layer Actor::GetLayer()
89 {
90   return GetImplementation(*this).GetLayer();
91 }
92
93 void Actor::Add(Actor actor)
94 {
95   GetImplementation(*this).Add(GetImplementation(actor));
96 }
97
98 void Actor::Remove(Actor actor)
99 {
100   GetImplementation(*this).Remove(GetImplementation(actor));
101 }
102
103 void Actor::Unparent()
104 {
105   GetImplementation(*this).Unparent();
106 }
107
108 uint32_t Actor::GetChildCount() const
109 {
110   return GetImplementation(*this).GetChildCount();
111 }
112
113 Actor Actor::GetChildAt( uint32_t index ) const
114 {
115   Internal::ActorPtr child = GetImplementation(*this).GetChildAt( index );
116   return Actor( child.Get() );
117 }
118
119 Actor Actor::FindChildByName(const std::string& actorName)
120 {
121   Internal::ActorPtr child = GetImplementation(*this).FindChildByName( actorName );
122   return Actor( child.Get() );
123 }
124
125 Actor Actor::FindChildById( const uint32_t id )
126 {
127   Internal::ActorPtr child = GetImplementation(*this).FindChildById( id );
128   return Actor( child.Get() );
129 }
130
131 Actor Actor::GetParent() const
132 {
133   Internal::Actor* parent = GetImplementation(*this).GetParent();
134
135   return Actor(parent);
136 }
137
138 void Actor::SetSize(float width, float height)
139 {
140   GetImplementation(*this).SetSize(width, height);
141 }
142
143 void Actor::SetSize(float width, float height, float depth)
144 {
145   GetImplementation(*this).SetSize(width, height, depth);
146 }
147
148 void Actor::SetSize(const Vector2& size)
149 {
150   GetImplementation(*this).SetSize( size );
151 }
152
153 void Actor::SetSize(const Vector3& size)
154 {
155   GetImplementation(*this).SetSize( size );
156 }
157
158 Vector3 Actor::GetTargetSize() const
159 {
160   return GetImplementation(*this).GetTargetSize();
161 }
162
163 Vector3 Actor::GetNaturalSize() const
164 {
165   return GetImplementation(*this).GetNaturalSize();
166 }
167
168 void Actor::SetPosition(float x, float y)
169 {
170   GetImplementation(*this).SetPosition(x, y);
171 }
172
173 void Actor::SetPosition(float x, float y, float z)
174 {
175   GetImplementation(*this).SetPosition(x, y, z);
176 }
177
178 void Actor::SetPosition(const Vector3& position)
179 {
180   GetImplementation(*this).SetPosition(position);
181 }
182
183 void Actor::SetX(float x)
184 {
185   GetImplementation(*this).SetX(x);
186 }
187
188 void Actor::SetY(float y)
189 {
190   GetImplementation(*this).SetY(y);
191 }
192
193 void Actor::SetZ(float z)
194 {
195   GetImplementation(*this).SetZ(z);
196 }
197
198 void Actor::TranslateBy(const Vector3& distance)
199 {
200   GetImplementation(*this).TranslateBy(distance);
201 }
202
203 void Actor::RotateBy(const Radian& angle, const Vector3& axis)
204 {
205   GetImplementation(*this).RotateBy(angle, axis);
206 }
207
208 void Actor::RotateBy(const Quaternion& relativeRotation)
209 {
210   GetImplementation(*this).RotateBy(relativeRotation);
211 }
212
213 void Actor::SetScale(float scale)
214 {
215   GetImplementation(*this).SetScale(scale);
216 }
217
218 void Actor::SetScale(float scaleX, float scaleY, float scaleZ)
219 {
220   GetImplementation(*this).SetScale(scaleX, scaleY, scaleZ);
221 }
222
223 void Actor::SetScale(const Vector3& scale)
224 {
225   GetImplementation(*this).SetScale(scale);
226 }
227
228 void Actor::ScaleBy(const Vector3& relativeScale)
229 {
230   GetImplementation(*this).ScaleBy(relativeScale);
231 }
232
233 bool Actor::ScreenToLocal(float& localX, float& localY, float screenX, float screenY) const
234 {
235   return GetImplementation(*this).ScreenToLocal(localX, localY, screenX, screenY);
236 }
237
238 void Actor::SetKeyboardFocusable( bool focusable )
239 {
240   GetImplementation(*this).SetKeyboardFocusable(focusable);
241 }
242
243 bool Actor::IsKeyboardFocusable() const
244 {
245   return GetImplementation(*this).IsKeyboardFocusable();
246 }
247
248 void Actor::Raise()
249 {
250   GetImplementation( *this ).Raise();
251 }
252
253 void Actor::Lower()
254 {
255   GetImplementation( *this ).Lower();
256 }
257
258 void Actor::RaiseToTop()
259 {
260   GetImplementation( *this ).RaiseToTop();
261 }
262
263 void Actor::LowerToBottom()
264 {
265   GetImplementation( *this ).LowerToBottom();
266 }
267
268 void Actor::RaiseAbove( Actor target )
269 {
270   GetImplementation( *this ).RaiseAbove( GetImplementation( target ) );
271 }
272
273 void Actor::LowerBelow( Actor target )
274 {
275   GetImplementation( *this ).LowerBelow( GetImplementation( target ) );
276 }
277
278 void Actor::SetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
279 {
280   GetImplementation(*this).SetResizePolicy( policy, dimension );
281 }
282
283 ResizePolicy::Type Actor::GetResizePolicy( Dimension::Type dimension ) const
284 {
285   return GetImplementation(*this).GetResizePolicy( dimension );
286 }
287
288 float Actor::GetHeightForWidth( float width )
289 {
290   return GetImplementation(*this).GetHeightForWidth( width );
291 }
292
293 float Actor::GetWidthForHeight( float height )
294 {
295   return GetImplementation(*this).GetWidthForHeight( height );
296 }
297
298 float Actor::GetRelayoutSize( Dimension::Type dimension ) const
299 {
300   return GetImplementation(*this).GetRelayoutSize( dimension );
301 }
302
303 int32_t Actor::GetHierarchyDepth()
304 {
305   return GetImplementation(*this).GetHierarchyDepth();
306 }
307
308 Actor::TouchSignalType& Actor::TouchedSignal()
309 {
310   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: TouchedSignal() is deprecated and will be removed from next release. Use TouchSignal() instead.\n" );
311
312   return GetImplementation(*this).TouchedSignal();
313 }
314
315 Actor::TouchDataSignalType& Actor::TouchSignal()
316 {
317   return GetImplementation( *this ).TouchSignal();
318 }
319
320 Actor::HoverSignalType& Actor::HoveredSignal()
321 {
322   return GetImplementation(*this).HoveredSignal();
323 }
324
325 Actor::WheelEventSignalType& Actor::WheelEventSignal()
326 {
327   return GetImplementation(*this).WheelEventSignal();
328 }
329
330 Actor::OnStageSignalType& Actor::OnStageSignal()
331 {
332   return GetImplementation(*this).OnStageSignal();
333 }
334
335 Actor::OffStageSignalType& Actor::OffStageSignal()
336 {
337   return GetImplementation(*this).OffStageSignal();
338 }
339
340 uint32_t Actor::AddRenderer( Renderer& renderer )
341 {
342   return GetImplementation(*this).AddRenderer( GetImplementation( renderer ) );
343 }
344
345 uint32_t Actor::GetRendererCount() const
346 {
347   return GetImplementation(*this).GetRendererCount();
348 }
349
350 Renderer Actor::GetRendererAt( uint32_t index )
351 {
352   Internal::RendererPtr renderer = GetImplementation(*this).GetRendererAt( index );
353   return Renderer( renderer.Get() );
354 }
355
356 void Actor::RemoveRenderer( Renderer& renderer )
357 {
358   GetImplementation(*this).RemoveRenderer( GetImplementation( renderer ) );
359 }
360
361 void Actor::RemoveRenderer( uint32_t index )
362 {
363   GetImplementation(*this).RemoveRenderer( index );
364 }
365
366 Actor::OnRelayoutSignalType& Actor::OnRelayoutSignal()
367 {
368   return GetImplementation(*this).OnRelayoutSignal();
369 }
370
371 Actor::LayoutDirectionChangedSignalType& Actor::LayoutDirectionChangedSignal()
372 {
373   return GetImplementation( *this ).LayoutDirectionChangedSignal();
374 }
375
376 Actor::Actor(Internal::Actor* internal)
377 : Handle(internal)
378 {
379 }
380
381 } // namespace Dali