0844835e1a21292185facc0c66e820d898c44e1b
[platform/core/uifw/dali-core.git] / dali / public-api / object / handle.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/object/handle.h>
20
21 // INTERNAL INCLUDES
22 #include <dali/public-api/animation/constraint.h>
23 #include <dali/public-api/object/property-conditions.h>
24 #include <dali/public-api/object/property-notification.h>
25 #include <dali/internal/event/animation/constraint-impl.h>
26 #include <dali/internal/event/common/object-impl.h>
27 #include <dali/integration-api/debug.h>
28
29 namespace Dali
30 {
31
32 Handle::Handle( Dali::Internal::Object* handle )
33 : BaseHandle(handle)
34 {
35 }
36
37
38 Handle::Handle()
39 {
40 }
41
42 Handle Handle::New()
43 {
44   return Handle( Internal::Object::New().Get() );
45 }
46
47 Handle::~Handle()
48 {
49 }
50
51 Handle::Handle( const Handle& handle )
52 : BaseHandle( handle )
53 {
54 }
55
56 Handle& Handle::operator=( const Handle& rhs )
57 {
58   if( this != &rhs )
59   {
60     BaseHandle::operator=(rhs);
61   }
62
63   return *this;
64 }
65
66 Handle::Handle( Handle&& rhs ) = default;
67
68 Handle& Handle::operator=( Handle&& rhs ) = default;
69
70 Handle Handle::DownCast( BaseHandle handle )
71 {
72   return Handle( dynamic_cast<Dali::Internal::Object*>(handle.GetObjectPtr()) );
73 }
74
75 bool Handle::Supports( Capability capability ) const
76 {
77   return GetImplementation(*this).Supports( capability );
78 }
79
80 uint32_t Handle::GetPropertyCount() const
81 {
82   return GetImplementation(*this).GetPropertyCount();
83 }
84
85 std::string Handle::GetPropertyName( Property::Index index ) const
86 {
87   return GetImplementation(*this).GetPropertyName( index );
88 }
89
90 Property::Index Handle::GetPropertyIndex( const std::string& name ) const
91 {
92   return GetImplementation(*this).GetPropertyIndex( name );
93 }
94
95 bool Handle::IsPropertyWritable( Property::Index index ) const
96 {
97   return GetImplementation(*this).IsPropertyWritable( index );
98 }
99
100 bool Handle::IsPropertyAnimatable( Property::Index index ) const
101 {
102   return GetImplementation(*this).IsPropertyAnimatable( index );
103 }
104
105 bool Handle::IsPropertyAConstraintInput( Property::Index index ) const
106 {
107   return GetImplementation(*this).IsPropertyAConstraintInput( index );
108 }
109
110 Property::Type Handle::GetPropertyType( Property::Index index ) const
111 {
112   return GetImplementation(*this).GetPropertyType( index );
113 }
114
115 void Handle::SetProperty( Property::Index index, const Property::Value& propertyValue )
116 {
117   GetImplementation(*this).SetProperty( index, propertyValue );
118 }
119
120 Property::Index Handle::RegisterProperty( const std::string& name, const Property::Value& propertyValue )
121 {
122   return GetImplementation(*this).RegisterProperty( name, propertyValue );
123 }
124
125 Property::Index Handle::RegisterProperty( const std::string& name, const Property::Value& propertyValue, Property::AccessMode accessMode )
126 {
127   return GetImplementation(*this).RegisterProperty( name, propertyValue, accessMode );
128 }
129
130 Property::Value Handle::GetProperty( Property::Index index ) const
131 {
132   return GetImplementation(*this).GetProperty( index );
133 }
134
135 Property::Value Handle::GetCurrentProperty( Property::Index index ) const
136 {
137   return GetImplementation(*this).GetCurrentProperty( index );
138 }
139
140 void Handle::GetPropertyIndices( Property::IndexContainer& indices ) const
141 {
142   GetImplementation(*this).GetPropertyIndices( indices );
143 }
144
145 Dali::PropertyNotification Handle::AddPropertyNotification( Property::Index index,
146                                                             const PropertyCondition& condition )
147 {
148   return GetImplementation(*this).AddPropertyNotification( index, -1, condition );
149 }
150
151 Dali::PropertyNotification Handle::AddPropertyNotification( Property::Index index,
152                                                             int componentIndex,
153                                                             const PropertyCondition& condition )
154 {
155   return GetImplementation(*this).AddPropertyNotification( index, componentIndex, condition );
156 }
157
158 void Handle::RemovePropertyNotification( Dali::PropertyNotification propertyNotification )
159 {
160   GetImplementation(*this).RemovePropertyNotification( propertyNotification );
161 }
162
163 void Handle::RemovePropertyNotifications()
164 {
165   GetImplementation(*this).RemovePropertyNotifications();
166 }
167
168 void Handle::RemoveConstraints()
169 {
170   GetImplementation(*this).RemoveConstraints();
171 }
172
173 void Handle::RemoveConstraints( uint32_t tag )
174 {
175   GetImplementation(*this).RemoveConstraints( tag );
176 }
177
178 namespace WeightObject
179 {
180
181 const Property::Index WEIGHT = PROPERTY_CUSTOM_START_INDEX;
182
183 Handle New()
184 {
185   Handle handle = Handle::New();
186
187   handle.RegisterProperty( "weight", 0.0f );
188
189   return handle;
190 }
191
192 } // namespace WeightObject
193
194 } // namespace Dali