/**
* @file MotionDirection.java
*
* @revision: none
*
* @version 0.0.01
* @author: Zenki (zhajun), zenki2001cn@163.com
* @date: 2011-6-7 下午03:20:48
*/
package com.easyview.ebook.reader.engine.util.motion;
/*
* | L/U | U | R/U |
* | L | U | R |
* | L | C | R |
* | L | D | R |
* | L/D | D | R/D |
*/
public abstract class MotionDirection {
public interface DirectPoint {
public int OUTSIDE = -1;
public int LEFT = 0;
public int UP = 1;
public int CENTER = 2;
public int RIGHT = 3;
public int DOWN = 4;
}
public interface MoveDirect {
public int DIRECT_HOLD = 0;
public int DIRECT_LEFT_TO_RIGHT = 1;
public int DIRECT_RIGHT_TO_LEFT = 2;
public int DIRECT_UP_TO_DOWN = 3;
public int DIRECT_DOWN_TO_UP = 4;
public int DIRECT_LEFT = 5;
public int DIRECT_RIGHT = 6;
}
public interface IMotionDirectionPolicy {
public void setStartDirection(boolean horizontal, int x, int y);
public void setStopDirection(boolean horizontal, int x, int y);
}
public int mMoveStart = DirectPoint.OUTSIDE;
public int mMoveEnd = DirectPoint.OUTSIDE;
private IMotionDirectionPolicy mCall;
public void setImotionDirectCall(IMotionDirectionPolicy call) {
mCall = call;
}
public IMotionDirectionPolicy getImotionDirectCall() {
return mCall;
}
protected void start(boolean direct, int x, int y) {
if (mCall != null) {
mCall.setStartDirection(direct, x, y);
}
}
protected void stop(boolean direct, int x, int y) {
if (mCall != null) {
mCall.setStopDirection(direct, x, y);
}
}
public void setMoveStart(int direct) {
mMoveStart = direct;
}
public void setMoveEnd(int direct) {
mMoveEnd = direct;
}
public int getMoveStart() {
return mMoveStart;
}
public int getMoveEnd() {
return mMoveEnd;
}
abstract public int getDirect();
public void reset() {
mMoveStart = DirectPoint.OUTSIDE;
mMoveEnd = DirectPoint.OUTSIDE;
}
}