package org.itsnat.droid.impl.xmlinflater.drawable.classtree;
import android.graphics.drawable.GradientDrawable;
import org.itsnat.droid.impl.dom.drawable.DOMElemDrawable;
import org.itsnat.droid.impl.util.MapSmart;
import org.itsnat.droid.impl.xmlinflated.drawable.ElementDrawableChild;
import org.itsnat.droid.impl.xmlinflated.drawable.ElementDrawableChildBase;
import org.itsnat.droid.impl.xmlinflated.drawable.GradientDrawableChildGradient;
import org.itsnat.droid.impl.xmlinflater.PercFloatImpl;
import org.itsnat.droid.impl.xmlinflater.drawable.AttrDrawableContext;
import org.itsnat.droid.impl.xmlinflater.drawable.ClassDescDrawableMgr;
import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDescReflecMethodBoolean;
import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDescReflecMethodColor;
import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDescReflecMethodDimensionPercFloat;
import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDescReflecMethodFloat;
import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDescReflecMethodNameSingle;
/**
* Created by jmarranz on 10/11/14.
*/
public class ClassDescGradientDrawableChildGradient extends ClassDescElementDrawableChildNormal<GradientDrawableChildGradient>
{
public ClassDescGradientDrawableChildGradient(ClassDescDrawableMgr classMgr)
{
super(classMgr,"shape:gradient",null);
}
@Override
public Class<GradientDrawableChildGradient> getDrawableOrElementDrawableClass()
{
return GradientDrawableChildGradient.class;
}
@Override
public ElementDrawableChild createElementDrawableChild(DOMElemDrawable domElement, DOMElemDrawable domElementParent, ElementDrawableChildBase parentChildDrawable, AttrDrawableContext attrCtx)
{
return new GradientDrawableChildGradient(parentChildDrawable);
}
@SuppressWarnings("unchecked")
protected void init()
{
super.init();
addAttrDescAN(new AttrDescReflecMethodFloat(this, "angle", 0f));
addAttrDescAN(new AttrDescReflecMethodColor(this, "centerColor", 0));
addAttrDescAN(new AttrDescReflecMethodDimensionPercFloat(this, "centerX", true, new PercFloatImpl(0.5f)));
addAttrDescAN(new AttrDescReflecMethodDimensionPercFloat(this, "centerY", true, new PercFloatImpl(0.5f)));
addAttrDescAN(new AttrDescReflecMethodColor(this, "endColor", 0));
addAttrDescAN(new AttrDescReflecMethodDimensionPercFloat(this, "gradientRadius",true, new PercFloatImpl(0.5f)));
addAttrDescAN(new AttrDescReflecMethodColor(this, "startColor", 0));
addAttrDescAN(new AttrDescReflecMethodNameSingle(this, "type", int.class, GradientTypeUtil.nameValueMap, "linear"));
addAttrDescAN(new AttrDescReflecMethodBoolean(this, "useLevel", false));
}
public static class GradientTypeUtil
{
public static final MapSmart<String,Integer> nameValueMap = MapSmart.<String,Integer>create(3);
static
{
nameValueMap.put("linear", GradientDrawable.LINEAR_GRADIENT);
nameValueMap.put("radial", GradientDrawable.RADIAL_GRADIENT);
nameValueMap.put("sweep", GradientDrawable.SWEEP_GRADIENT);
}
}
}