/*
* Created by LuaView.
* Copyright (c) 2017, Alibaba Group. All rights reserved.
*
* This source code is licensed under the MIT.
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
*/
package com.taobao.luaview.fun.mapper.ui;
import com.taobao.luaview.fun.base.BaseMethodMapper;
import com.taobao.luaview.fun.mapper.LuaViewLib;
import com.taobao.luaview.userdata.ui.UDAnimation;
import com.taobao.luaview.util.ParamUtil;
import org.luaj.vm2.LuaFunction;
import org.luaj.vm2.LuaTable;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.Varargs;
import java.util.List;
/**
* Animation 接口封装
*
* @author song
* @date 15/8/21
*/
@Deprecated
@LuaViewLib
public class UIAnimationMethodMapper<U extends UDAnimation> extends BaseMethodMapper<U> {
private static final String TAG = "UIAnimationMethodMapper";
private static final String[] sMethods = new String[]{
"alpha",//0
"rotate",//1
"scale",//2
"translate",//3
"duration",//4
"startDelay",//5
"repeatCount",//6
"to",//7
"callback",//8
"onStartCallback",//9
"onEndCallback",//10
"onRepeatCallback"//11
};
@Override
public List<String> getAllFunctionNames() {
return mergeFunctionNames(TAG, super.getAllFunctionNames(), sMethods);
}
@Override
public Varargs invoke(int code, U target, Varargs varargs) {
final int optcode = code - super.getAllFunctionNames().size();
switch (optcode) {
case 0:
return alpha(target, varargs);
case 1:
return rotate(target, varargs);
case 2:
return scale(target, varargs);
case 3:
return translate(target, varargs);
case 4:
return duration(target, varargs);
case 5:
return startDelay(target, varargs);
case 6:
return repeatCount(target, varargs);
case 7:
return to(target, varargs);
case 8:
return callback(target, varargs);
case 9:
return onStartCallback(target, varargs);
case 10:
return onEndCallback(target, varargs);
case 11:
return onRepeatCallback(target, varargs);
}
return super.invoke(code, target, varargs);
}
//--------------------------------------- API --------------------------------------------------
public LuaValue alpha(U udAnimation, Varargs varargs) {
return udAnimation.alpha(ParamUtil.getFloatValues(varargs, 2));
}
public LuaValue rotate(U udAnimation, Varargs varargs) {
return udAnimation.rotate(ParamUtil.getFloatValues(varargs, 2));
}
public LuaValue scale(U udAnimation, Varargs varargs) {
return udAnimation.scale(ParamUtil.getFloatValues(varargs, 2));
}
public LuaValue translate(U udAnimation, Varargs varargs) {
return udAnimation.translate(ParamUtil.getFloatValues(varargs, 2));
}
public LuaValue duration(U udAnimation, Varargs varargs) {
final long duration = (long) (varargs.optdouble(2, 0.3f) * 1000);
return udAnimation.setDuration(duration);
}
public LuaValue startDelay(U udAnimation, Varargs varargs) {
final long delay = (long) (varargs.optdouble(2, 0) * 1000);
return udAnimation.setStartDelay(delay);
}
public LuaValue repeatCount(U udAnimation, Varargs varargs) {
final int repeatCount = varargs.optint(2, 0);
return udAnimation.setRepeatCount(repeatCount);
}
public LuaValue to(U udAnimation, Varargs varargs) {
return udAnimation.setValue(ParamUtil.getFloatValues(varargs, 2));
}
public LuaValue callback(U udAnimation, Varargs varargs) {
final LuaTable callback = varargs.opttable(2, null);
return udAnimation.setCallback(callback);
}
public LuaValue onStartCallback(U udAnimation, Varargs varargs) {
final LuaFunction callback = varargs.optfunction(2, null);
return udAnimation.setOnStartCallback(callback);
}
public LuaValue onEndCallback(U udAnimation, Varargs varargs) {
final LuaFunction callback = varargs.optfunction(2, null);
return udAnimation.setOnEndCallback(callback);
}
public LuaValue onRepeatCallback(U udAnimation, Varargs varargs) {
final LuaFunction callback = varargs.optfunction(2, null);
return udAnimation.setOnRepeatCallback(callback);
}
}