import smovielib.Clip;
import smovielib.Effect;
/**
* Implements a clip that corresponds to an effect.
*/
public class EffectClip implements Clip {
private static final long DEFAULT_LENGTH = 1000;
private static final String DEFAULT_LABEL = "EFFECT";
private int effectOrder;
private long length;
private long globalStart;
private Effect effect;
public EffectClip(Effect effect, int order) {
length = DEFAULT_LENGTH;
globalStart = 1;
effectOrder = order;
this.effect = effect;
}
public boolean withinClip(long frame) {
return (frame >= globalStart && frame < getFramePastTheEnd());
}
public void setEffect(Effect effect) {
this.effect = effect;
}
public String getLabel() {
if(effect == null) return "NONE";
return effect.toString();
}
public Effect getEffect() {
return effect;
}
public int getEffectOrder() {
return effectOrder;
}
public void setEffectOrder(int o) {
effectOrder = o;
}
public void setStartFrame(long start) {
globalStart = start;
}
public void adjustStartFrame(long delta) {
globalStart = Math.max(0, globalStart + delta);
}
public long getStartFrame() {
// You'll want to change this
return globalStart;
}
public long getFramePastTheEnd() {
return globalStart + length + 1;
}
public void adjustNumFrames(long delta) {
length = Math.max(1, length + delta);
}
public long numFrames() {
return getFramePastTheEnd() - getStartFrame();
}
}