1 #ifndef __DALI_PROPERTY_CONSTRAINT_H__
2 #define __DALI_PROPERTY_CONSTRAINT_H__
5 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
21 #include <dali/public-api/object/property-types.h>
22 #include <dali/internal/event/animation/property-input-accessor.h>
23 #include <dali/internal/event/animation/property-input-indexer.h>
24 #include <dali/internal/event/common/property-input-impl.h>
33 * A base class for connecting properties to a constraint function.
35 template < typename PropertyType >
36 class PropertyConstraintBase
41 * Create a property constraint.
43 PropertyConstraintBase()
44 : mInputsInitialized( false )
51 virtual ~PropertyConstraintBase()
56 * Clone a property constraint.
58 virtual PropertyConstraintBase< PropertyType >* Clone() = 0;
61 * Clone a property constraint supporting component indices.
63 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc() = 0;
66 * Set the input for one of the property constraint parameters.
67 * @param [in] index The parameter index.
68 * @param [in] input The interface for receiving a property value.
70 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input ) = 0;
73 * Retrieve the input for one of the property constraint parameters.
74 * @param [in] index The parameter index.
75 * @return The property input, or NULL if no input exists with this index.
77 virtual const PropertyInputImpl* GetInput( unsigned int index ) const = 0;
80 * Query whether all of the inputs have been initialized.
81 * @return True if all of the inputs have been initialized.
83 bool InputsInitialized()
85 if ( !mInputsInitialized )
87 // Check whether the inputs are initialized yet
88 unsigned int index( 0u );
89 for ( const PropertyInputImpl* input = GetInput( index );
91 input = GetInput( ++index ) )
93 if ( !input->InputInitialized() )
99 // All inputs are now initialized
100 mInputsInitialized = true;
107 * Query whether any of the inputs have changed
108 * @return True if any of the inputs have changed.
112 unsigned int index( 0u );
113 for ( const PropertyInputImpl* input = GetInput( index );
115 input = GetInput( ++index ) )
117 if ( input->InputChanged() )
119 // At least one of the inputs has changed
128 * Apply the constraint.
129 * @param [in] bufferIndex The current update buffer index.
130 * @param [in] current The current property value.
131 * @return The constrained property value.
133 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current ) = 0;
137 bool mInputsInitialized;
141 * Connects a constraint function with a target property & zero input properties.
143 template < typename PropertyType >
144 class PropertyConstraint0 : public PropertyConstraintBase< PropertyType >
148 typedef boost::function< PropertyType (const PropertyType&)> ConstraintFunction;
152 * @param [in] func A constraint function.
154 PropertyConstraint0( const ConstraintFunction& func )
160 * Virtual destructor.
162 virtual ~PropertyConstraint0()
167 * @copydoc PropertyConstraintBase::Clone()
169 virtual PropertyConstraintBase< PropertyType >* Clone()
171 return new PropertyConstraint0< PropertyType >( mFunction );
175 * @copydoc PropertyConstraintBase::CloneComponentFunc()
177 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
179 DALI_ASSERT_ALWAYS( false && "PropertyConstraint0 does not support (property component) inputs" );
184 * @copydoc PropertyConstraintBase::SetInput()
186 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
188 DALI_ASSERT_ALWAYS( false && "PropertyConstraintBase::SetInput() needs overriding" ); // No additional inputs
192 * @copydoc PropertyConstraintBase::GetInput()
194 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
196 return NULL; // No additional inputs
200 * @copydoc PropertyConstraintBase::Apply()
202 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
204 return mFunction( current );
210 PropertyConstraint0(const PropertyConstraint0&);
213 PropertyConstraint0& operator=(const PropertyConstraint0& rhs);
217 ConstraintFunction mFunction;
221 * Connects a constraint function with a target property & 1 input property.
223 template < typename PropertyType, typename PropertyInputAccessorType >
224 class PropertyConstraint1 : public PropertyConstraintBase< PropertyType >
228 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&) > ConstraintFunction;
232 * @param [in] func A constraint function.
234 PropertyConstraint1( const ConstraintFunction& func )
241 * @param [in] func A constraint function.
242 * @param [in] input1 A property input.
244 PropertyConstraint1( const ConstraintFunction& func,
245 const PropertyInputAccessorType& input1 )
252 * Virtual destructor.
254 virtual ~PropertyConstraint1()
259 * @copydoc PropertyConstraintBase::Clone()
261 virtual PropertyConstraintBase< PropertyType >* Clone()
263 return new PropertyConstraint1< PropertyType, PropertyInputAccessorType >( mFunction, mInput1 );
267 * @copydoc PropertyConstraintBase::CloneComponentFunc()
269 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
271 return new PropertyConstraint1< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1 );
275 * @copydoc PropertyConstraintBase::SetInput()
277 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
279 DALI_ASSERT_ALWAYS( 0u == index && "Constraint only has one input property" );
281 mInput1.SetInput( input, componentIndex );
285 * @copydoc PropertyConstraintBase::GetInput()
287 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
291 return mInput1.GetInput();
298 * @copydoc PropertyConstraintBase::Apply()
300 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
302 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
304 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
306 return mFunction( current, input1 );
312 PropertyConstraint1(const PropertyConstraint1&);
315 PropertyConstraint1& operator=(const PropertyConstraint1& rhs);
319 ConstraintFunction mFunction;
321 PropertyInputAccessorType mInput1;
325 * Connects a constraint function with a target property & 2 input properties.
327 template < typename PropertyType, typename PropertyInputAccessorType >
328 class PropertyConstraint2 : public PropertyConstraintBase< PropertyType >
332 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&) > ConstraintFunction;
336 * @param [in] func A constraint function.
338 PropertyConstraint2( const ConstraintFunction& func )
345 * @param [in] func A constraint function.
346 * @param [in] input1 A property input.
347 * @param [in] input2 A 2nd property input.
349 PropertyConstraint2( const ConstraintFunction& func,
350 const PropertyInputAccessorType& input1,
351 const PropertyInputAccessorType& input2 )
359 * Virtual destructor.
361 virtual ~PropertyConstraint2()
366 * @copydoc PropertyConstraintBase::Clone()
368 virtual PropertyConstraintBase< PropertyType >* Clone()
370 return new PropertyConstraint2< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2 );
374 * @copydoc PropertyConstraintBase::CloneComponentFunc()
376 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
378 return new PropertyConstraint2< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2 );
382 * @copydoc PropertyConstraintBase::SetInput()
384 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
386 DALI_ASSERT_ALWAYS( 2u > index && "Constraint only has 2 properties" );
390 mInput1.SetInput( input, componentIndex );
394 mInput2.SetInput( input, componentIndex );
399 * @copydoc PropertyConstraintBase::GetInput()
401 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
405 return mInput1.GetInput();
407 else if ( 1u == index )
409 return mInput2.GetInput();
416 * @copydoc PropertyConstraintBase::Apply()
418 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
420 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
421 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
423 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
424 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
426 return mFunction( current,
434 PropertyConstraint2(const PropertyConstraint2&);
437 PropertyConstraint2& operator=(const PropertyConstraint2& rhs);
441 ConstraintFunction mFunction;
443 PropertyInputAccessorType mInput1;
444 PropertyInputAccessorType mInput2;
448 * Connects a constraint function with a target property & 3 input properties.
450 template < class PropertyType, typename PropertyInputAccessorType >
451 class PropertyConstraint3 : public PropertyConstraintBase< PropertyType >
455 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&, const PropertyInput&)> ConstraintFunction;
459 * @param [in] func A constraint function.
461 PropertyConstraint3( const ConstraintFunction& func )
468 * @param [in] func A constraint function.
469 * @param [in] input1 A property input.
470 * @param [in] input2 A 2nd property input.
471 * @param [in] input3 A 3rd property input.
473 PropertyConstraint3( const ConstraintFunction& func,
474 const PropertyInputAccessorType& input1,
475 const PropertyInputAccessorType& input2,
476 const PropertyInputAccessorType& input3 )
485 * Virtual destructor.
487 virtual ~PropertyConstraint3()
492 * @copydoc PropertyConstraintBase::Clone()
494 virtual PropertyConstraintBase< PropertyType >* Clone()
496 return new PropertyConstraint3< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2, mInput3 );
500 * @copydoc PropertyConstraintBase::CloneComponentFunc()
502 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
504 return new PropertyConstraint3< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2, mInput3 );
508 * @copydoc PropertyConstraintBase::SetInput()
510 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
512 DALI_ASSERT_ALWAYS( 3u > index && "Constraint only has 3 properties" );
516 mInput1.SetInput( input, componentIndex );
518 else if ( 1u == index )
520 mInput2.SetInput( input, componentIndex );
524 mInput3.SetInput( input, componentIndex );
529 * @copydoc PropertyConstraintBase::GetInput()
531 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
535 return mInput1.GetInput();
537 else if ( 1u == index )
539 return mInput2.GetInput();
541 else if ( 2u == index )
543 return mInput3.GetInput();
550 * @copydoc PropertyConstraintBase::Apply()
552 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
554 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
555 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
556 DALI_ASSERT_DEBUG( NULL != mInput3.GetInput() );
558 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
559 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
560 const PropertyInputIndexer< PropertyInputAccessorType > input3( bufferIndex, &mInput3 );
562 return mFunction( current,
571 PropertyConstraint3(const PropertyConstraint3&);
574 PropertyConstraint3& operator=(const PropertyConstraint3& rhs);
578 ConstraintFunction mFunction;
580 PropertyInputAccessorType mInput1;
581 PropertyInputAccessorType mInput2;
582 PropertyInputAccessorType mInput3;
586 * Connects a constraint function with a target property & 4 input properties.
588 template < class PropertyType, typename PropertyInputAccessorType >
589 class PropertyConstraint4 : public PropertyConstraintBase< PropertyType >
593 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&) > ConstraintFunction;
597 * @param [in] func A constraint function.
599 PropertyConstraint4( const ConstraintFunction& func )
606 * @param [in] func A constraint function.
607 * @param [in] input1 A property input.
608 * @param [in] input2 A 2nd property input.
609 * @param [in] input3 A 3rd property input.
610 * @param [in] input4 A 4th property input.
612 PropertyConstraint4( const ConstraintFunction& func,
613 const PropertyInputAccessorType& input1,
614 const PropertyInputAccessorType& input2,
615 const PropertyInputAccessorType& input3,
616 const PropertyInputAccessorType& input4 )
626 * Create a PropertyConstraint4 instance.
627 * @param [in] func A constraint function.
628 * @return A newly heap-allocated object.
630 static PropertyConstraintBase< PropertyType >* New( ConstraintFunction func )
632 return new PropertyConstraint4< PropertyType, PropertyInputAccessorType >( func );
636 * Virtual destructor.
638 virtual ~PropertyConstraint4()
643 * @copydoc PropertyConstraintBase::Clone()
645 virtual PropertyConstraintBase< PropertyType >* Clone()
647 return new PropertyConstraint4< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2, mInput3, mInput4 );
651 * @copydoc PropertyConstraintBase::CloneComponentFunc()
653 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
655 return new PropertyConstraint4< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2, mInput3, mInput4 );
659 * @copydoc PropertyConstraintBase::SetInput()
661 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
663 DALI_ASSERT_ALWAYS( 4u > index && "Constraint only has 4 properties" );
667 mInput1.SetInput( input, componentIndex );
669 else if ( 1u == index )
671 mInput2.SetInput( input, componentIndex );
673 else if ( 2u == index )
675 mInput3.SetInput( input, componentIndex );
679 mInput4.SetInput( input, componentIndex );
684 * @copydoc PropertyConstraintBase::GetInput()
686 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
690 return mInput1.GetInput();
692 else if ( 1u == index )
694 return mInput2.GetInput();
696 else if ( 2u == index )
698 return mInput3.GetInput();
700 else if ( 3u == index )
702 return mInput4.GetInput();
709 * @copydoc PropertyConstraintBase::Apply()
711 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
713 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
714 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
715 DALI_ASSERT_DEBUG( NULL != mInput3.GetInput() );
716 DALI_ASSERT_DEBUG( NULL != mInput4.GetInput() );
718 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
719 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
720 const PropertyInputIndexer< PropertyInputAccessorType > input3( bufferIndex, &mInput3 );
721 const PropertyInputIndexer< PropertyInputAccessorType > input4( bufferIndex, &mInput4 );
723 return mFunction( current,
733 PropertyConstraint4(const PropertyConstraint4&);
736 PropertyConstraint4& operator=(const PropertyConstraint4& rhs);
740 ConstraintFunction mFunction;
742 PropertyInputAccessorType mInput1;
743 PropertyInputAccessorType mInput2;
744 PropertyInputAccessorType mInput3;
745 PropertyInputAccessorType mInput4;
749 * Connects a constraint function with a target property & 5 input properties.
751 template < class PropertyType, typename PropertyInputAccessorType >
752 class PropertyConstraint5 : public PropertyConstraintBase< PropertyType >
756 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&) > ConstraintFunction;
760 * @param [in] func A constraint function.
762 PropertyConstraint5( const ConstraintFunction& func )
769 * @param [in] func A constraint function.
770 * @param [in] input1 A property input.
771 * @param [in] input2 A 2nd property input.
772 * @param [in] input3 A 3rd property input.
773 * @param [in] input4 A 4th property input.
774 * @param [in] input5 A 5th property input.
776 PropertyConstraint5( const ConstraintFunction& func,
777 const PropertyInputAccessorType& input1,
778 const PropertyInputAccessorType& input2,
779 const PropertyInputAccessorType& input3,
780 const PropertyInputAccessorType& input4,
781 const PropertyInputAccessorType& input5 )
792 * Virtual destructor.
794 virtual ~PropertyConstraint5()
799 * @copydoc PropertyConstraintBase::Clone()
801 virtual PropertyConstraintBase< PropertyType >* Clone()
803 return new PropertyConstraint5< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2, mInput3, mInput4, mInput5 );
807 * @copydoc PropertyConstraintBase::CloneComponentFunc()
809 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
811 return new PropertyConstraint5< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2, mInput3, mInput4, mInput5 );
815 * @copydoc PropertyConstraintBase::SetInput()
817 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
819 DALI_ASSERT_ALWAYS( 5u > index && "Constraint only has 5 properties");
823 mInput1.SetInput( input, componentIndex );
825 else if ( 1u == index )
827 mInput2.SetInput( input, componentIndex );
829 else if ( 2u == index )
831 mInput3.SetInput( input, componentIndex );
833 else if ( 3u == index )
835 mInput4.SetInput( input, componentIndex );
839 mInput5.SetInput( input, componentIndex );
844 * @copydoc PropertyConstraintBase::GetInput()
846 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
850 return mInput1.GetInput();
852 else if ( 1u == index )
854 return mInput2.GetInput();
856 else if ( 2u == index )
858 return mInput3.GetInput();
860 else if ( 3u == index )
862 return mInput4.GetInput();
864 else if ( 4u == index )
866 return mInput5.GetInput();
873 * @copydoc PropertyConstraintBase::Apply()
875 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
877 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
878 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
879 DALI_ASSERT_DEBUG( NULL != mInput3.GetInput() );
880 DALI_ASSERT_DEBUG( NULL != mInput4.GetInput() );
881 DALI_ASSERT_DEBUG( NULL != mInput5.GetInput() );
883 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
884 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
885 const PropertyInputIndexer< PropertyInputAccessorType > input3( bufferIndex, &mInput3 );
886 const PropertyInputIndexer< PropertyInputAccessorType > input4( bufferIndex, &mInput4 );
887 const PropertyInputIndexer< PropertyInputAccessorType > input5( bufferIndex, &mInput5 );
889 return mFunction( current,
900 PropertyConstraint5(const PropertyConstraint5&);
903 PropertyConstraint5& operator=(const PropertyConstraint5& rhs);
907 ConstraintFunction mFunction;
909 PropertyInputAccessorType mInput1;
910 PropertyInputAccessorType mInput2;
911 PropertyInputAccessorType mInput3;
912 PropertyInputAccessorType mInput4;
913 PropertyInputAccessorType mInput5;
917 * Connects a constraint function with a target property & 6 input properties.
919 template < class PropertyType, typename PropertyInputAccessorType >
920 class PropertyConstraint6 : public PropertyConstraintBase< PropertyType >
924 typedef boost::function< PropertyType (const PropertyType&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&, const PropertyInput&)> ConstraintFunction;
928 * @param [in] func A constraint function.
930 PropertyConstraint6( const ConstraintFunction& func )
937 * @param [in] func A constraint function.
938 * @param [in] input1 A property input.
939 * @param [in] input2 A 2nd property input.
940 * @param [in] input3 A 3rd property input.
941 * @param [in] input4 A 4th property input.
942 * @param [in] input5 A 5th property input.
943 * @param [in] input6 A 6th property input.
945 PropertyConstraint6( const ConstraintFunction& func,
946 const PropertyInputAccessorType& input1,
947 const PropertyInputAccessorType& input2,
948 const PropertyInputAccessorType& input3,
949 const PropertyInputAccessorType& input4,
950 const PropertyInputAccessorType& input5,
951 const PropertyInputAccessorType& input6 )
963 * Virtual destructor.
965 virtual ~PropertyConstraint6()
970 * @copydoc PropertyConstraintBase::Clone()
972 virtual PropertyConstraintBase< PropertyType >* Clone()
974 return new PropertyConstraint6< PropertyType, PropertyInputAccessorType >( mFunction, mInput1, mInput2, mInput3, mInput4, mInput5, mInput6 );
978 * @copydoc PropertyConstraintBase::CloneComponentFunc()
980 virtual PropertyConstraintBase< PropertyType >* CloneComponentFunc()
982 return new PropertyConstraint6< PropertyType, PropertyInputComponentAccessor >( mFunction, mInput1, mInput2, mInput3, mInput4, mInput5, mInput6 );
986 * @copydoc PropertyConstraintBase::SetInput()
988 virtual void SetInput( unsigned int index, int componentIndex, const PropertyInputImpl& input )
990 DALI_ASSERT_ALWAYS( 6u > index && "Constraint only has 6 properties" );
994 mInput1.SetInput( input, componentIndex );
996 else if ( 1u == index )
998 mInput2.SetInput( input, componentIndex );
1000 else if ( 2u == index )
1002 mInput3.SetInput( input, componentIndex );
1004 else if ( 3u == index )
1006 mInput4.SetInput( input, componentIndex );
1008 else if ( 4u == index )
1010 mInput5.SetInput( input, componentIndex );
1014 mInput6.SetInput( input, componentIndex );
1019 * @copydoc PropertyConstraintBase::GetInput()
1021 virtual const PropertyInputImpl* GetInput( unsigned int index ) const
1025 return mInput1.GetInput();
1027 else if ( 1u == index )
1029 return mInput2.GetInput();
1031 else if ( 2u == index )
1033 return mInput3.GetInput();
1035 else if ( 3u == index )
1037 return mInput4.GetInput();
1039 else if ( 4u == index )
1041 return mInput5.GetInput();
1043 else if ( 5u == index )
1045 return mInput6.GetInput();
1052 * @copydoc PropertyConstraintBase::Apply()
1054 virtual PropertyType Apply( BufferIndex bufferIndex, const PropertyType& current )
1056 DALI_ASSERT_DEBUG( NULL != mInput1.GetInput() );
1057 DALI_ASSERT_DEBUG( NULL != mInput2.GetInput() );
1058 DALI_ASSERT_DEBUG( NULL != mInput3.GetInput() );
1059 DALI_ASSERT_DEBUG( NULL != mInput4.GetInput() );
1060 DALI_ASSERT_DEBUG( NULL != mInput5.GetInput() );
1061 DALI_ASSERT_DEBUG( NULL != mInput6.GetInput() );
1063 const PropertyInputIndexer< PropertyInputAccessorType > input1( bufferIndex, &mInput1 );
1064 const PropertyInputIndexer< PropertyInputAccessorType > input2( bufferIndex, &mInput2 );
1065 const PropertyInputIndexer< PropertyInputAccessorType > input3( bufferIndex, &mInput3 );
1066 const PropertyInputIndexer< PropertyInputAccessorType > input4( bufferIndex, &mInput4 );
1067 const PropertyInputIndexer< PropertyInputAccessorType > input5( bufferIndex, &mInput5 );
1068 const PropertyInputIndexer< PropertyInputAccessorType > input6( bufferIndex, &mInput6 );
1070 return mFunction( current,
1082 PropertyConstraint6(const PropertyConstraint6&);
1085 PropertyConstraint6& operator=(const PropertyConstraint6& rhs);
1089 ConstraintFunction mFunction;
1091 PropertyInputAccessorType mInput1;
1092 PropertyInputAccessorType mInput2;
1093 PropertyInputAccessorType mInput3;
1094 PropertyInputAccessorType mInput4;
1095 PropertyInputAccessorType mInput5;
1096 PropertyInputAccessorType mInput6;
1099 } // namespace Internal
1103 #endif // __DALI_PROPERTY_CONSTRAINT_H__