*
*/
+// EXTERNAL INCLUDES
+#include <iostream>
+
// INTERNAL INCLUDES
#include <dali/public-api/object/property-input.h>
#include <dali/public-api/math/vector2.h>
{
/**
- * These dummy values are used to handle PropertyInputImpl errors
- */
-static const bool DUMMY_BOOLEAN_VALUE( false );
-static const float DUMMY_FLOAT_VALUE( 0.0f );
-static const Vector2 DUMMY_VECTOR2_VALUE( 0.0f, 0.0f );
-static const Vector3 DUMMY_VECTOR3_VALUE( 0.0f, 0.0f, 0.0f );
-static const Vector4 DUMMY_VECTOR4_VALUE( 0.0f, 0.0f, 0.0f, 0.0f );
-static const Matrix3 DUMMY_MATRIX3_VALUE;
-static const Matrix DUMMY_MATRIX_VALUE;
-static const Quaternion DUMMY_QUATERNION_VALUE( 1.0f, 0.0f, 0.0f, 0.0f );
-
-/**
* An abstract interface for receiving property values, and for querying whether
* a property value has changed i.e. whether a constraint needs to be reapplied.
*/
*/
virtual const bool& GetBoolean( BufferIndex bufferIndex ) const
{
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_BOOLEAN_VALUE;
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const bool&>(*this);
+ }
+
+ /**
+ * Retrieve an integer value.
+ * @pre GetType() returns Property::INTEGER.
+ * @param[in] bufferIndex The buffer to read from.
+ * @return The integer value.
+ */
+ virtual const int& GetInteger( BufferIndex bufferIndex ) const
+ {
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const int&>(*this);
}
/**
*/
virtual const float& GetFloat( BufferIndex bufferIndex ) const
{
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_FLOAT_VALUE;
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const float&>(*this);
}
/**
*/
virtual const Vector2& GetVector2( BufferIndex bufferIndex ) const
{
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_VECTOR2_VALUE;
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const Vector2&>(*this);
}
/**
*/
virtual const Vector3& GetVector3( BufferIndex bufferIndex ) const
{
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_VECTOR3_VALUE;
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const Vector3&>(*this);
}
/**
*/
virtual const Vector4& GetVector4( BufferIndex bufferIndex ) const
{
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_VECTOR4_VALUE;
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const Vector4&>(*this);
}
/**
*/
virtual const Quaternion& GetQuaternion( BufferIndex bufferIndex ) const
{
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_QUATERNION_VALUE;
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const Quaternion&>(*this);
}
/**
*/
virtual const Matrix3& GetMatrix3( BufferIndex bufferIndex ) const
{
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_MATRIX3_VALUE;
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const Matrix3&>(*this);
}
/**
*/
virtual const Matrix& GetMatrix( BufferIndex bufferIndex ) const
{
- DALI_ASSERT_ALWAYS( false && "Property type mismatch" );
- return DUMMY_MATRIX_VALUE;
+ // the return will never be executed, it's just to keep the compiler happy
+ return reinterpret_cast<const Matrix&>(*this);
}
// Accessors for Constraint functions
}
/**
+ * Retrieve an integer input for a constraint function.
+ * @note For inherited properties, this method should be overriden to return the value
+ * from the previous frame i.e. not from the current update buffer.
+ * @pre GetType() returns Property::INTEGER.
+ * @param[in] updateBufferIndex The current update buffer index.
+ * @return The integer value.
+ */
+ virtual const int& GetConstraintInputInteger( BufferIndex updateBufferIndex ) const
+ {
+ return GetInteger( updateBufferIndex );
+ }
+
+ /**
* Retrieve a float input for a constraint function.
* @note For inherited properties, this method should be overriden to return the value
* from the previous frame i.e. not from the current update buffer.
}
/**
+ * Query whether the property belongs to the
+ * transform manager or not.
+ * @return True if it is a transform manager property, false otherwise
+ */
+ virtual bool IsTransformManagerProperty() const
+ {
+ return false;
+ }
+
+ /**
* Print the property value using a stream.
* @param[in] debugStream The output stream.
* @param[in] bufferIndex The buffer to read from.
+ * @todo Place this far-too-large-to-be-inlined function in a cpp and remove <iostream> header dependency from this file.
*/
void DebugPrint( std::ostream& debugStream, BufferIndex bufferIndex ) const
{
break;
}
+ case Property::INTEGER:
+ {
+ debugStream << GetInteger( bufferIndex );
+ break;
+ }
+
case Property::FLOAT:
{
debugStream << GetFloat( bufferIndex );