1 #ifndef __DALI_PROPERTY_CONSTRAINT_H__
2 #define __DALI_PROPERTY_CONSTRAINT_H__
5 * Copyright (c) 2014 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/animation/property-input-accessor.h>
24 #include <dali/internal/event/animation/property-input-indexer.h>
25 #include <dali/internal/event/common/property-input-impl.h>
34 * A base class for connecting properties to a constraint function.
36 template < typename PropertyType >
37 class PropertyConstraintBase
42 * Create a property constraint.
44 PropertyConstraintBase()
45 : mInputsInitialized( false )
52 virtual ~PropertyConstraintBase()
57 * Clone a property constraint.
59 virtual PropertyConstraintBase< PropertyType >* Clone() = 0;
62 * Clone a property constraint supporting component indices.
64 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc() = 0;
67 * Set the input for one of the property constraint parameters.
68 * @param [in] index The parameter index.
69 * @param [in] input The interface for receiving a property value.
71 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input ) = 0;
74 * Retrieve the input for one of the property constraint parameters.
75 * @param [in] index The parameter index.
76 * @return The property input, or NULL if no input exists with this index.
78 virtual const PropertyInputImpl* GetInput( unsigned int index ) const = 0;
81 * Query whether all of the inputs have been initialized.
82 * @return True if all of the inputs have been initialized.
84 bool InputsInitialized()
86 if ( !mInputsInitialized )
88 // Check whether the inputs are initialized yet
89 unsigned int index( 0u );
90 for ( const PropertyInputImpl* input = GetInput( index );
92 input = GetInput( ++index ) )
94 if ( !input->InputInitialized() )
100 // All inputs are now initialized
101 mInputsInitialized = true;
108 * Query whether any of the inputs have changed
109 * @return True if any of the inputs have changed.
113 unsigned int index( 0u );
114 for ( const PropertyInputImpl* input = GetInput( index );
116 input = GetInput( ++index ) )
118 if ( input->InputChanged() )
120 // At least one of the inputs has changed
129 * Apply the constraint.
130 * @param [in] bufferIndex The current update buffer index.
131 * @param [in] current The current property value.
132 * @return The constrained property value.
134 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current ) = 0;
138 bool mInputsInitialized;
142 * Connects a constraint function with a target property & zero input properties.
144 template < typename PropertyType >
145 class PropertyConstraint0 : public PropertyConstraintBase< PropertyType >
149 typedef boost::function< PropertyType (const PropertyType&)> ConstraintFunction;
153 * @param [in] func A constraint function.
155 PropertyConstraint0( const ConstraintFunction& func )
161 * Virtual destructor.
163 virtual ~PropertyConstraint0()
168 * @copydoc PropertyConstraintBase::Clone()
170 virtual PropertyConstraintBase< PropertyType >* Clone()
172 return new PropertyConstraint0< PropertyType >( mFunction );
176 * @copydoc PropertyConstraintBase::CloneComponentFunc()
178 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
180 DALI_ASSERT_ALWAYS( false && "PropertyConstraint0 does not support (property component) inputs" );
185 * @copydoc PropertyConstraintBase::SetInput()
187 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
189 DALI_ASSERT_ALWAYS( false && "PropertyConstraintBase::SetInput() needs overriding" ); // No additional inputs
193 * @copydoc PropertyConstraintBase::GetInput()
195 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
197 return NULL; // No additional inputs
201 * @copydoc PropertyConstraintBase::Apply()
203 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
205 return mFunction( current );
211 PropertyConstraint0(const PropertyConstraint0&);
214 PropertyConstraint0& operator=(const PropertyConstraint0& rhs);
218 ConstraintFunction mFunction;
222 * Connects a constraint function with a target property & 1 input property.
224 template < typename PropertyType, typename PropertyInputAccessorType >
225 class PropertyConstraint1 : public PropertyConstraintBase< PropertyType >
229 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&) > ConstraintFunction;
233 * @param [in] func A constraint function.
235 PropertyConstraint1( const ConstraintFunction& func )
242 * @param [in] func A constraint function.
243 * @param [in] input1 A property input.
245 PropertyConstraint1( const ConstraintFunction& func,
246 const PropertyInputAccessorType& input1 )
253 * Virtual destructor.
255 virtual ~PropertyConstraint1()
260 * @copydoc PropertyConstraintBase::Clone()
262 virtual PropertyConstraintBase< PropertyType >* Clone()
264 return new PropertyConstraint1< PropertyType, PropertyInputAccessorType >( mFunction, mInput1 );
268 * @copydoc PropertyConstraintBase::CloneComponentFunc()
270 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
272 return new PropertyConstraint1< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1 );
276 * @copydoc PropertyConstraintBase::SetInput()
278 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
280 DALI_ASSERT_ALWAYS( 0u == index && "Constraint only has one input property" );
282 mInput1.SetInput( input, componentIndex );
286 * @copydoc PropertyConstraintBase::GetInput()
288 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
292 return mInput1.GetInput();
299 * @copydoc PropertyConstraintBase::Apply()
301 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
303 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
305 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
307 return mFunction( current, input1 );
313 PropertyConstraint1(const PropertyConstraint1&);
316 PropertyConstraint1& operator=(const PropertyConstraint1& rhs);
320 ConstraintFunction mFunction;
322 PropertyInputAccessorType mInput1;
326 * Connects a constraint function with a target property & 2 input properties.
328 template < typename PropertyType, typename PropertyInputAccessorType >
329 class PropertyConstraint2 : public PropertyConstraintBase< PropertyType >
333 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&) > ConstraintFunction;
337 * @param [in] func A constraint function.
339 PropertyConstraint2( const ConstraintFunction& func )
346 * @param [in] func A constraint function.
347 * @param [in] input1 A property input.
348 * @param [in] input2 A 2nd property input.
350 PropertyConstraint2( const ConstraintFunction& func,
351 const PropertyInputAccessorType& input1,
352 const PropertyInputAccessorType& input2 )
360 * Virtual destructor.
362 virtual ~PropertyConstraint2()
367 * @copydoc PropertyConstraintBase::Clone()
369 virtual PropertyConstraintBase< PropertyType >* Clone()
371 return new PropertyConstraint2< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2 );
375 * @copydoc PropertyConstraintBase::CloneComponentFunc()
377 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
379 return new PropertyConstraint2< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2 );
383 * @copydoc PropertyConstraintBase::SetInput()
385 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
387 DALI_ASSERT_ALWAYS( 2u > index && "Constraint only has 2 properties" );
391 mInput1.SetInput( input, componentIndex );
395 mInput2.SetInput( input, componentIndex );
400 * @copydoc PropertyConstraintBase::GetInput()
402 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
406 return mInput1.GetInput();
408 else if ( 1u == index )
410 return mInput2.GetInput();
417 * @copydoc PropertyConstraintBase::Apply()
419 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
421 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
422 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
424 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
425 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
427 return mFunction( current,
435 PropertyConstraint2(const PropertyConstraint2&);
438 PropertyConstraint2& operator=(const PropertyConstraint2& rhs);
442 ConstraintFunction mFunction;
444 PropertyInputAccessorType mInput1;
445 PropertyInputAccessorType mInput2;
449 * Connects a constraint function with a target property & 3 input properties.
451 template < class PropertyType, typename PropertyInputAccessorType >
452 class PropertyConstraint3 : public PropertyConstraintBase< PropertyType >
456 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&, const PropertyInput&)> ConstraintFunction;
460 * @param [in] func A constraint function.
462 PropertyConstraint3( const ConstraintFunction& func )
469 * @param [in] func A constraint function.
470 * @param [in] input1 A property input.
471 * @param [in] input2 A 2nd property input.
472 * @param [in] input3 A 3rd property input.
474 PropertyConstraint3( const ConstraintFunction& func,
475 const PropertyInputAccessorType& input1,
476 const PropertyInputAccessorType& input2,
477 const PropertyInputAccessorType& input3 )
486 * Virtual destructor.
488 virtual ~PropertyConstraint3()
493 * @copydoc PropertyConstraintBase::Clone()
495 virtual PropertyConstraintBase< PropertyType >* Clone()
497 return new PropertyConstraint3< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2, mInput3 );
501 * @copydoc PropertyConstraintBase::CloneComponentFunc()
503 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
505 return new PropertyConstraint3< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2, mInput3 );
509 * @copydoc PropertyConstraintBase::SetInput()
511 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
513 DALI_ASSERT_ALWAYS( 3u > index && "Constraint only has 3 properties" );
517 mInput1.SetInput( input, componentIndex );
519 else if ( 1u == index )
521 mInput2.SetInput( input, componentIndex );
525 mInput3.SetInput( input, componentIndex );
530 * @copydoc PropertyConstraintBase::GetInput()
532 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
536 return mInput1.GetInput();
538 else if ( 1u == index )
540 return mInput2.GetInput();
542 else if ( 2u == index )
544 return mInput3.GetInput();
551 * @copydoc PropertyConstraintBase::Apply()
553 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
555 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
556 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
557 DALI_ASSERT_DEBUG( NULL != mInput3.GetInput() );
559 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
560 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
561 const PropertyInputIndexer< PropertyInputAccessorType > input3( bufferIndex, &mInput3 );
563 return mFunction( current,
572 PropertyConstraint3(const PropertyConstraint3&);
575 PropertyConstraint3& operator=(const PropertyConstraint3& rhs);
579 ConstraintFunction mFunction;
581 PropertyInputAccessorType mInput1;
582 PropertyInputAccessorType mInput2;
583 PropertyInputAccessorType mInput3;
587 * Connects a constraint function with a target property & 4 input properties.
589 template < class PropertyType, typename PropertyInputAccessorType >
590 class PropertyConstraint4 : public PropertyConstraintBase< PropertyType >
594 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&) > ConstraintFunction;
598 * @param [in] func A constraint function.
600 PropertyConstraint4( const ConstraintFunction& func )
607 * @param [in] func A constraint function.
608 * @param [in] input1 A property input.
609 * @param [in] input2 A 2nd property input.
610 * @param [in] input3 A 3rd property input.
611 * @param [in] input4 A 4th property input.
613 PropertyConstraint4( const ConstraintFunction& func,
614 const PropertyInputAccessorType& input1,
615 const PropertyInputAccessorType& input2,
616 const PropertyInputAccessorType& input3,
617 const PropertyInputAccessorType& input4 )
627 * Create a PropertyConstraint4 instance.
628 * @param [in] func A constraint function.
629 * @return A newly heap-allocated object.
631 static PropertyConstraintBase< PropertyType >* New( ConstraintFunction func )
633 return new PropertyConstraint4< PropertyType, PropertyInputAccessorType >( func );
637 * Virtual destructor.
639 virtual ~PropertyConstraint4()
644 * @copydoc PropertyConstraintBase::Clone()
646 virtual PropertyConstraintBase< PropertyType >* Clone()
648 return new PropertyConstraint4< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2, mInput3, mInput4 );
652 * @copydoc PropertyConstraintBase::CloneComponentFunc()
654 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
656 return new PropertyConstraint4< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2, mInput3, mInput4 );
660 * @copydoc PropertyConstraintBase::SetInput()
662 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
664 DALI_ASSERT_ALWAYS( 4u > index && "Constraint only has 4 properties" );
668 mInput1.SetInput( input, componentIndex );
670 else if ( 1u == index )
672 mInput2.SetInput( input, componentIndex );
674 else if ( 2u == index )
676 mInput3.SetInput( input, componentIndex );
680 mInput4.SetInput( input, componentIndex );
685 * @copydoc PropertyConstraintBase::GetInput()
687 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
691 return mInput1.GetInput();
693 else if ( 1u == index )
695 return mInput2.GetInput();
697 else if ( 2u == index )
699 return mInput3.GetInput();
701 else if ( 3u == index )
703 return mInput4.GetInput();
710 * @copydoc PropertyConstraintBase::Apply()
712 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
714 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
715 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
716 DALI_ASSERT_DEBUG( NULL != mInput3.GetInput() );
717 DALI_ASSERT_DEBUG( NULL != mInput4.GetInput() );
719 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
720 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
721 const PropertyInputIndexer< PropertyInputAccessorType > input3( bufferIndex, &mInput3 );
722 const PropertyInputIndexer< PropertyInputAccessorType > input4( bufferIndex, &mInput4 );
724 return mFunction( current,
734 PropertyConstraint4(const PropertyConstraint4&);
737 PropertyConstraint4& operator=(const PropertyConstraint4& rhs);
741 ConstraintFunction mFunction;
743 PropertyInputAccessorType mInput1;
744 PropertyInputAccessorType mInput2;
745 PropertyInputAccessorType mInput3;
746 PropertyInputAccessorType mInput4;
750 * Connects a constraint function with a target property & 5 input properties.
752 template < class PropertyType, typename PropertyInputAccessorType >
753 class PropertyConstraint5 : public PropertyConstraintBase< PropertyType >
757 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&) > ConstraintFunction;
761 * @param [in] func A constraint function.
763 PropertyConstraint5( const ConstraintFunction& func )
770 * @param [in] func A constraint function.
771 * @param [in] input1 A property input.
772 * @param [in] input2 A 2nd property input.
773 * @param [in] input3 A 3rd property input.
774 * @param [in] input4 A 4th property input.
775 * @param [in] input5 A 5th property input.
777 PropertyConstraint5( const ConstraintFunction& func,
778 const PropertyInputAccessorType& input1,
779 const PropertyInputAccessorType& input2,
780 const PropertyInputAccessorType& input3,
781 const PropertyInputAccessorType& input4,
782 const PropertyInputAccessorType& input5 )
793 * Virtual destructor.
795 virtual ~PropertyConstraint5()
800 * @copydoc PropertyConstraintBase::Clone()
802 virtual PropertyConstraintBase< PropertyType >* Clone()
804 return new PropertyConstraint5< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2, mInput3, mInput4, mInput5 );
808 * @copydoc PropertyConstraintBase::CloneComponentFunc()
810 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
812 return new PropertyConstraint5< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2, mInput3, mInput4, mInput5 );
816 * @copydoc PropertyConstraintBase::SetInput()
818 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
820 DALI_ASSERT_ALWAYS( 5u > index && "Constraint only has 5 properties");
824 mInput1.SetInput( input, componentIndex );
826 else if ( 1u == index )
828 mInput2.SetInput( input, componentIndex );
830 else if ( 2u == index )
832 mInput3.SetInput( input, componentIndex );
834 else if ( 3u == index )
836 mInput4.SetInput( input, componentIndex );
840 mInput5.SetInput( input, componentIndex );
845 * @copydoc PropertyConstraintBase::GetInput()
847 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
851 return mInput1.GetInput();
853 else if ( 1u == index )
855 return mInput2.GetInput();
857 else if ( 2u == index )
859 return mInput3.GetInput();
861 else if ( 3u == index )
863 return mInput4.GetInput();
865 else if ( 4u == index )
867 return mInput5.GetInput();
874 * @copydoc PropertyConstraintBase::Apply()
876 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
878 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
879 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
880 DALI_ASSERT_DEBUG( NULL != mInput3.GetInput() );
881 DALI_ASSERT_DEBUG( NULL != mInput4.GetInput() );
882 DALI_ASSERT_DEBUG( NULL != mInput5.GetInput() );
884 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
885 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
886 const PropertyInputIndexer< PropertyInputAccessorType > input3( bufferIndex, &mInput3 );
887 const PropertyInputIndexer< PropertyInputAccessorType > input4( bufferIndex, &mInput4 );
888 const PropertyInputIndexer< PropertyInputAccessorType > input5( bufferIndex, &mInput5 );
890 return mFunction( current,
901 PropertyConstraint5(const PropertyConstraint5&);
904 PropertyConstraint5& operator=(const PropertyConstraint5& rhs);
908 ConstraintFunction mFunction;
910 PropertyInputAccessorType mInput1;
911 PropertyInputAccessorType mInput2;
912 PropertyInputAccessorType mInput3;
913 PropertyInputAccessorType mInput4;
914 PropertyInputAccessorType mInput5;
918 * Connects a constraint function with a target property & 6 input properties.
920 template < class PropertyType, typename PropertyInputAccessorType >
921 class PropertyConstraint6 : public PropertyConstraintBase< PropertyType >
925 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&)> ConstraintFunction;
929 * @param [in] func A constraint function.
931 PropertyConstraint6( const ConstraintFunction& func )
938 * @param [in] func A constraint function.
939 * @param [in] input1 A property input.
940 * @param [in] input2 A 2nd property input.
941 * @param [in] input3 A 3rd property input.
942 * @param [in] input4 A 4th property input.
943 * @param [in] input5 A 5th property input.
944 * @param [in] input6 A 6th property input.
946 PropertyConstraint6( const ConstraintFunction& func,
947 const PropertyInputAccessorType& input1,
948 const PropertyInputAccessorType& input2,
949 const PropertyInputAccessorType& input3,
950 const PropertyInputAccessorType& input4,
951 const PropertyInputAccessorType& input5,
952 const PropertyInputAccessorType& input6 )
964 * Virtual destructor.
966 virtual ~PropertyConstraint6()
971 * @copydoc PropertyConstraintBase::Clone()
973 virtual PropertyConstraintBase< PropertyType >* Clone()
975 return new PropertyConstraint6< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2, mInput3, mInput4, mInput5, mInput6 );
979 * @copydoc PropertyConstraintBase::CloneComponentFunc()
981 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
983 return new PropertyConstraint6< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2, mInput3, mInput4, mInput5, mInput6 );
987 * @copydoc PropertyConstraintBase::SetInput()
989 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
991 DALI_ASSERT_ALWAYS( 6u > index && "Constraint only has 6 properties" );
995 mInput1.SetInput( input, componentIndex );
997 else if ( 1u == index )
999 mInput2.SetInput( input, componentIndex );
1001 else if ( 2u == index )
1003 mInput3.SetInput( input, componentIndex );
1005 else if ( 3u == index )
1007 mInput4.SetInput( input, componentIndex );
1009 else if ( 4u == index )
1011 mInput5.SetInput( input, componentIndex );
1015 mInput6.SetInput( input, componentIndex );
1020 * @copydoc PropertyConstraintBase::GetInput()
1022 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
1026 return mInput1.GetInput();
1028 else if ( 1u == index )
1030 return mInput2.GetInput();
1032 else if ( 2u == index )
1034 return mInput3.GetInput();
1036 else if ( 3u == index )
1038 return mInput4.GetInput();
1040 else if ( 4u == index )
1042 return mInput5.GetInput();
1044 else if ( 5u == index )
1046 return mInput6.GetInput();
1053 * @copydoc PropertyConstraintBase::Apply()
1055 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
1057 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
1058 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
1059 DALI_ASSERT_DEBUG( NULL != mInput3.GetInput() );
1060 DALI_ASSERT_DEBUG( NULL != mInput4.GetInput() );
1061 DALI_ASSERT_DEBUG( NULL != mInput5.GetInput() );
1062 DALI_ASSERT_DEBUG( NULL != mInput6.GetInput() );
1064 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
1065 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
1066 const PropertyInputIndexer< PropertyInputAccessorType > input3( bufferIndex, &mInput3 );
1067 const PropertyInputIndexer< PropertyInputAccessorType > input4( bufferIndex, &mInput4 );
1068 const PropertyInputIndexer< PropertyInputAccessorType > input5( bufferIndex, &mInput5 );
1069 const PropertyInputIndexer< PropertyInputAccessorType > input6( bufferIndex, &mInput6 );
1071 return mFunction( current,
1083 PropertyConstraint6(const PropertyConstraint6&);
1086 PropertyConstraint6& operator=(const PropertyConstraint6& rhs);
1090 ConstraintFunction mFunction;
1092 PropertyInputAccessorType mInput1;
1093 PropertyInputAccessorType mInput2;
1094 PropertyInputAccessorType mInput3;
1095 PropertyInputAccessorType mInput4;
1096 PropertyInputAccessorType mInput5;
1097 PropertyInputAccessorType mInput6;
1100 } // namespace Internal
1104 #endif // __DALI_PROPERTY_CONSTRAINT_H__