package org.itsnat.droid.impl.xmlinflater.anim.attr;
import android.view.animation.ScaleAnimation;
import org.itsnat.droid.impl.dom.DOMAttr;
import org.itsnat.droid.impl.util.MiscUtil;
import org.itsnat.droid.impl.xmlinflater.FieldContainer;
import org.itsnat.droid.impl.xmlinflater.PercFloatImpl;
import org.itsnat.droid.impl.xmlinflater.anim.AttrAnimationContext;
import org.itsnat.droid.impl.xmlinflater.anim.classtree.ClassDescAnimationScale;
import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDesc;
/**
* Created by jmarranz on 30/04/14.
*/
public class AttrDescAnimation_view_animation_ScaleAnimation_fromToXYScale extends AttrDesc<ClassDescAnimationScale,ScaleAnimation,AttrAnimationContext>
{
protected FieldContainer<Float> fieldMFromToXY;
public AttrDescAnimation_view_animation_ScaleAnimation_fromToXYScale(ClassDescAnimationScale parent, String name)
{
super(parent,name);
String fieldMFromToXYName;
if ("fromXScale".equals(name))
{
fieldMFromToXYName = "mFromX";
}
else if ("fromYScale".equals(name))
{
fieldMFromToXYName = "mFromY";
}
else if ("toXScale".equals(name))
{
fieldMFromToXYName = "mToX";
}
else if ("toYScale".equals(name))
{
fieldMFromToXYName = "mToY";
}
else throw MiscUtil.internalError();
this.fieldMFromToXY = new FieldContainer<Float>(ScaleAnimation.class, fieldMFromToXYName);
}
@Override
public void setAttribute(ScaleAnimation scaleAnimation, DOMAttr attr, AttrAnimationContext attrCtx)
{
PercFloatImpl convValue = getDimensionPercFloat(attr.getResourceDesc(),attrCtx.getXMLInflaterContext());
// En PercFloat.toFloatBasedOnDataType() acabamos calculando tanto si es % (10% => 0.1) como si es float normal (ej 1.5) o es un dimension (se calcula el resultado en pixeles)
// por tanto no necesitamos mFromXType y mFromXData (idem Y y los To), sólo mFromX . Es como si hubieramos especificado siempre un float calculado ya el valor final
fieldMFromToXY.set(scaleAnimation,convValue.toFloatBasedOnDataType());
}
@Override
public void removeAttribute(ScaleAnimation scaleAnimation, AttrAnimationContext attrCtx)
{
setAttributeToRemove(scaleAnimation, "0", attrCtx);
}
}