1 #ifndef __DALI_PROPERTY_INPUT_ACCESSOR_H__
2 #define __DALI_PROPERTY_INPUT_ACCESSOR_H__
5 * Copyright (c) 2015 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/object/property-types.h>
23 #include <dali/internal/event/common/property-input-impl.h>
31 class PropertyInputAccessor
36 * Create the PropertyInputAccessor.
38 PropertyInputAccessor()
45 * Create the PropertyInputAccessor.
47 PropertyInputAccessor( const PropertyInputImpl* input, int componentIndex )
49 mComponentIndex( componentIndex )
54 * Copy from a PropertyInputAccessor
56 PropertyInputAccessor( const PropertyInputAccessor& accessor )
57 : mInput( accessor.mInput ),
58 mComponentIndex( accessor.mComponentIndex )
63 * Copy from a PropertyInputAccessor
65 PropertyInputAccessor& operator=(const PropertyInputAccessor& accessor)
67 mInput = accessor.mInput;
68 mComponentIndex = accessor.mComponentIndex;
73 * Set the property input.
75 void SetInput( const PropertyInputImpl& input, int componentIndex )
78 mComponentIndex = componentIndex;
82 * Retrieve the property input.
84 const PropertyInputImpl* GetInput() const
90 * @copydoc Dali::Internal::PropertyInputImpl::GetType()
92 Property::Type GetType() const
94 return mInput->GetType();
98 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputBoolean()
100 const bool& GetConstraintInputBoolean( BufferIndex updateBufferIndex ) const
102 return mInput->GetConstraintInputBoolean( updateBufferIndex );
106 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputInteger() const
108 const int& GetConstraintInputInteger( BufferIndex updateBufferIndex ) const
110 DALI_ASSERT_DEBUG( mComponentIndex < 0 && "Did not expect valid component index" );
112 return mInput->GetConstraintInputInteger( updateBufferIndex );
116 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputUnsignedInteger() const
118 const unsigned int& GetConstraintInputUnsignedInteger( BufferIndex updateBufferIndex ) const
120 DALI_ASSERT_DEBUG( mComponentIndex < 0 && "Did not expect valid component index" );
122 return mInput->GetConstraintInputUnsignedInteger( updateBufferIndex );
126 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputFloat()
128 const float& GetConstraintInputFloat( BufferIndex updateBufferIndex ) const
130 // Invalid index is ok
131 if ( mComponentIndex < 0 )
133 // Not a Vector2, Vector3 or Vector4 component, expecting float type
134 return mInput->GetConstraintInputFloat( updateBufferIndex );
136 else if ( PropertyTypes::Get< Vector2 >() == mInput->GetType() )
138 if ( 0 == mComponentIndex )
140 return mInput->GetConstraintInputVector2( updateBufferIndex ).x;
143 DALI_ASSERT_DEBUG( 1 == mComponentIndex && "Invalid Vector2 component index" );
144 return mInput->GetConstraintInputVector2( updateBufferIndex ).y;
146 else if ( PropertyTypes::Get< Vector3 >() == mInput->GetType() )
148 if ( 0 == mComponentIndex )
150 return mInput->GetConstraintInputVector3( updateBufferIndex ).x;
152 else if ( 1 == mComponentIndex )
154 return mInput->GetConstraintInputVector3( updateBufferIndex ).y;
157 DALI_ASSERT_DEBUG( 2 == mComponentIndex && "Invalid Vector3 component index" );
158 return mInput->GetConstraintInputVector3( updateBufferIndex ).z;
162 if ( 0 == mComponentIndex )
164 return mInput->GetConstraintInputVector4( updateBufferIndex ).x;
166 else if ( 1 == mComponentIndex )
168 return mInput->GetConstraintInputVector4( updateBufferIndex ).y;
170 else if ( 2 == mComponentIndex )
172 return mInput->GetConstraintInputVector4( updateBufferIndex ).z;
175 DALI_ASSERT_DEBUG( 3 == mComponentIndex && "Invalid Vector4 component index" );
176 return mInput->GetConstraintInputVector4( updateBufferIndex ).w;
180 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputVector2()
182 const Vector2& GetConstraintInputVector2( BufferIndex updateBufferIndex ) const
184 return mInput->GetConstraintInputVector2( updateBufferIndex );
188 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputVector3()
190 const Vector3& GetConstraintInputVector3( BufferIndex updateBufferIndex ) const
192 return mInput->GetConstraintInputVector3( updateBufferIndex );
196 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputVector4()
198 const Vector4& GetConstraintInputVector4( BufferIndex updateBufferIndex ) const
200 return mInput->GetConstraintInputVector4( updateBufferIndex );
204 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputQuaternion()
206 const Quaternion& GetConstraintInputQuaternion( BufferIndex updateBufferIndex ) const
208 return mInput->GetConstraintInputQuaternion( updateBufferIndex );
212 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputMatrix3()
214 const Matrix3& GetConstraintInputMatrix3( BufferIndex updateBufferIndex ) const
216 return mInput->GetConstraintInputMatrix3( updateBufferIndex );
220 * @copydoc Dali::Internal::PropertyInputImpl::GetConstraintInputMatrix()
222 const Matrix& GetConstraintInputMatrix( BufferIndex updateBufferIndex ) const
224 return mInput->GetConstraintInputMatrix( updateBufferIndex );
229 const PropertyInputImpl* mInput;
233 } // namespace Internal
237 #endif // __DALI_PROPERTY_INPUT_ACCESSOR_H__