package org.ebookdroid.ui.viewer; import org.ebookdroid.common.settings.types.PageAlign; import org.ebookdroid.core.EventGLDraw; import org.ebookdroid.core.Page; import org.ebookdroid.core.ViewState; import org.ebookdroid.core.events.ZoomListener; import android.graphics.Rect; import android.graphics.RectF; import android.support.annotation.WorkerThread; import android.view.KeyEvent; import android.view.MotionEvent; import org.emdev.ui.progress.IProgressIndicator; public interface IViewController extends ZoomListener { @WorkerThread void init(IProgressIndicator bookLoadTask); void show(); /* Page related methods */ void goToPage(int page); void goToPage(int page, float offsetX, float offsetY); void goToLink(int pageDocIndex, RectF targetRect, boolean addToHistory); RectF calcPageBounds(PageAlign pageAlign, float pageAspectRatio, int width, int height); void invalidatePageSizes(InvalidateSizeReason reason, Page changedPage); int getFirstVisiblePage(); int calculateCurrentPage(ViewState viewState, int firstVisible, int lastVisible); int getLastVisiblePage(); void verticalConfigScroll(int i); void redrawView(); void redrawView(ViewState viewState); void setAlign(PageAlign byResValue); /* Infrastructure methods */ IActivityController getBase(); IView getView(); void updateAnimationType(); void updateMemorySettings(); public static enum InvalidateSizeReason { INIT, LAYOUT, PAGE_ALIGN, PAGE_LOADED; } boolean onLayoutChanged(boolean layoutChanged, boolean layoutLocked, Rect oldLaout, Rect newLayout); Rect getScrollLimits(); boolean isPageVisible(Page page, ViewState viewState, RectF outBounds); boolean onTouchEvent(MotionEvent ev); void onScrollChanged(int dX, final int dY); boolean dispatchKeyEvent(final KeyEvent event); void toggleRenderingEffects(); void drawView(EventGLDraw eventGLDraw); void pageUpdated(ViewState viewState, Page page); void invalidateScroll(); void onDestroy(); }