nsresult nsSMILMappedAttribute::SetAnimValue(const nsSMILValue& aValue) { NS_ENSURE_TRUE(IsPropertyAnimatable(mPropID), NS_ERROR_FAILURE); // Convert nsSMILValue to string nsAutoString valStr; if (!nsSMILCSSValueType::ValueToString(aValue, valStr)) { NS_WARNING("Failed to convert nsSMILValue for mapped attr into a string"); return NS_ERROR_FAILURE; } // Set the string as this mapped attribute's animated value. nsStringBuffer* valStrBuf = nsCSSValue::BufferFromString(nsString(valStr)).get(); nsRefPtr<nsIAtom> attrName = GetAttrNameAtom(); nsresult rv = mElement->SetProperty(SMIL_MAPPED_ATTR_ANIMVAL, attrName, valStrBuf, ReleaseStringBufferPropertyValue); if (rv == NS_PROPTABLE_PROP_OVERWRITTEN) { rv = NS_OK; } FlushChangesToTargetAttr(); return rv; }
const SceneGraph::PropertyBase* PanGestureDetector::GetSceneObjectAnimatableProperty( Property::Index index ) const { DALI_ASSERT_ALWAYS( IsPropertyAnimatable(index) && "Property is not animatable" ); // None of our properties are animatable return NULL; }
const SceneGraph::PropertyBase* AnimatableMesh::GetSceneObjectAnimatableProperty( Property::Index index ) const { DALI_ASSERT_ALWAYS( IsPropertyAnimatable(index) && "Property is not animatable" ); const SceneGraph::PropertyBase* property( NULL ); // This method should only return a property which is part of the scene-graph if( mSceneObject != NULL ) { int vertexProperty = index % VERTEX_PROPERTY_COUNT; int vertexIndex = index / VERTEX_PROPERTY_COUNT; switch ( vertexProperty ) { case Dali::AnimatableVertex::POSITION: property = &mSceneObject->mVertices[vertexIndex].position; break; case Dali::AnimatableVertex::COLOR: property = &mSceneObject->mVertices[vertexIndex].color; break; case Dali::AnimatableVertex::TEXTURE_COORDS: property = &mSceneObject->mVertices[vertexIndex].textureCoords; break; } } return property; }
nsresult nsSMILMappedAttribute::ValueFromString(const nsAString& aStr, const mozilla::dom::SVGAnimationElement* aSrcElement, nsSMILValue& aValue, bool& aPreventCachingOfSandwich) const { NS_ENSURE_TRUE(IsPropertyAnimatable(mPropID), NS_ERROR_FAILURE); nsSMILCSSValueType::ValueFromString(mPropID, mElement, aStr, aValue, &aPreventCachingOfSandwich); return aValue.IsNull() ? NS_ERROR_FAILURE : NS_OK; }
nsresult nsSMILMappedAttribute::ValueFromString(const nsAString& aStr, const nsISMILAnimationElement* aSrcElement, nsSMILValue& aValue, PRBool& aPreventCachingOfSandwich) const { NS_ENSURE_TRUE(IsPropertyAnimatable(mPropID), NS_ERROR_FAILURE); nsSMILCSSValueType::ValueFromString(mPropID, mElement, aStr, aValue); if (aValue.IsNull()) { return NS_ERROR_FAILURE; } // XXXdholbert: For simplicity, just assume that all CSS values have to // reparsed every sample. See note in nsSMILCSSProperty::ValueFromString. aPreventCachingOfSandwich = PR_TRUE; return NS_OK; }