package com.plattysoft.leonids.modifiers;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
import com.plattysoft.leonids.Particle;
public class ScaleModifier implements ParticleModifier {
private float mInitialValue;
private float mFinalValue;
private long mEndTime;
private long mStartTime;
private long mDuration;
private float mValueIncrement;
private Interpolator mInterpolator;
public ScaleModifier (float initialValue, float finalValue, long startMilis, long endMilis, Interpolator interpolator) {
mInitialValue = initialValue;
mFinalValue = finalValue;
mStartTime = startMilis;
mEndTime = endMilis;
mDuration = mEndTime - mStartTime;
mValueIncrement = mFinalValue-mInitialValue;
mInterpolator = interpolator;
}
public ScaleModifier (float initialValue, float finalValue, long startMilis, long endMilis) {
this (initialValue, finalValue, startMilis, endMilis, new LinearInterpolator());
}
@Override
public void apply(Particle particle, long miliseconds) {
if (miliseconds < mStartTime) {
particle.mScale = mInitialValue;
}
else if (miliseconds > mEndTime) {
particle.mScale = mFinalValue;
}
else {
float interpolaterdValue = mInterpolator.getInterpolation((miliseconds- mStartTime)*1f/mDuration);
float newScale = mInitialValue + mValueIncrement*interpolaterdValue;
particle.mScale = newScale;
}
}
}