package org.ebookdroid.core.curl;
import org.ebookdroid.core.EventGLDraw;
import org.ebookdroid.core.SinglePageController;
import org.ebookdroid.core.ViewState;
import org.ebookdroid.ui.viewer.views.DragMark;
import org.emdev.ui.gl.GLCanvas;
public abstract class AbstractPageSlider extends AbstractPageAnimator {
public AbstractPageSlider(final PageAnimationType type, final SinglePageController singlePageDocumentView) {
super(type, singlePageDocumentView);
}
/**
* {@inheritDoc}
*
* @see org.ebookdroid.core.curl.AbstractPageAnimator#init()
*/
@Override
public void init() {
super.init();
mInitialEdgeOffset = 0;
}
/**
* {@inheritDoc}
*
* @see org.ebookdroid.core.curl.AbstractPageAnimator#onFirstDrawEvent(org.emdev.ui.gl.GLCanvas,
* org.ebookdroid.core.ViewState)
*/
@Override
protected void onFirstDrawEvent(final GLCanvas canvas, final ViewState viewState) {
lock.writeLock().lock();
try {
updateValues();
} finally {
lock.writeLock().unlock();
}
}
/**
* {@inheritDoc}
*
* @see org.ebookdroid.core.curl.AbstractPageAnimator#resetClipEdge()
*/
@Override
protected void resetClipEdge() {
// Set our base movement
mMovement.x = mInitialEdgeOffset;
mMovement.y = mInitialEdgeOffset;
mOldMovement.x = 0;
mOldMovement.y = 0;
// Now set the points
mA.set(mInitialEdgeOffset, 0);
}
/**
* {@inheritDoc}
*
* @see org.ebookdroid.core.curl.AbstractPageAnimator#updateValues()
*/
@Override
protected void updateValues() {
// Calculate point A
mA.x = mMovement.x;
mA.y = 0;
}
/**
* {@inheritDoc}
*
* @see org.ebookdroid.core.curl.AbstractPageAnimator#drawExtraObjects(org.ebookdroid.core.EventDraw)
*/
@Override
protected final void drawExtraObjects(final EventGLDraw event) {
if (event.viewState.app.showAnimIcon) {
DragMark.CURLER.draw(event.canvas, event.viewState);
}
}
/**
* {@inheritDoc}
*
* @see org.ebookdroid.core.curl.AbstractPageAnimator#fixMovement(org.ebookdroid.core.curl.Vector2D, boolean)
*/
@Override
protected Vector2D fixMovement(final Vector2D movement, final boolean bMaintainMoveDir) {
return movement;
}
}