package org.ebookdroid.ui.viewer.views;
import org.sufficientlysecure.viewer.R;
import org.ebookdroid.core.ViewState;
import org.ebookdroid.ui.viewer.IView;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import org.emdev.BaseDroidApp;
import org.emdev.ui.gl.BitmapTexture;
import org.emdev.ui.gl.GLCanvas;
public enum DragMark {
DRAG(R.drawable.components_curler_drag, false),
CURLER(R.drawable.components_curler_arrows, true);
private static final Paint PAINT = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
private final int resId;
private final boolean showAlways;
private Bitmap dragBitmap;
private BitmapTexture dragBitmapTx;
private DragMark(final int resId, final boolean showAlways) {
this.resId = resId;
this.showAlways = showAlways;
}
public synchronized void draw(final Canvas canvas, final ViewState viewState) {
if (dragBitmap == null || dragBitmap.isRecycled()) {
dragBitmap = BitmapFactory.decodeResource(BaseDroidApp.context.getResources(), resId);
}
final Rect l = viewState.ctrl.getScrollLimits();
if (showAlways || (l.width() + l.height() > 0)) {
final IView view = viewState.ctrl.getView();
final float x = view.getScrollX() - viewState.viewBase.x + view.getWidth() - dragBitmap.getWidth() - 1;
final float y = view.getScrollY() - viewState.viewBase.y + view.getHeight() - dragBitmap.getHeight() - 1;
canvas.drawBitmap(dragBitmap, x, y, PAINT);
}
}
public synchronized void draw(final GLCanvas canvas, final ViewState viewState) {
if (dragBitmap == null || dragBitmap.isRecycled()) {
dragBitmap = BitmapFactory.decodeResource(BaseDroidApp.context.getResources(), resId);
if (dragBitmapTx != null) {
dragBitmapTx.recycle();
dragBitmapTx = null;
}
}
if (dragBitmapTx == null) {
dragBitmapTx = new BitmapTexture(dragBitmap);
dragBitmapTx.setOpaque(false);
}
final Rect l = viewState.ctrl.getScrollLimits();
if (showAlways || (l.width() + l.height() > 0)) {
final IView view = viewState.ctrl.getView();
final int w = dragBitmap.getWidth();
final int h = dragBitmap.getHeight();
final float x = view.getScrollX() - viewState.viewBase.x + view.getWidth() - w - 1;
final float y = view.getScrollY() - viewState.viewBase.y + view.getHeight() - h - 1;
canvas.setClipRect(x, y, w, h);
canvas.drawTexture(dragBitmapTx, (int) x, (int) y, dragBitmapTx.getWidth(), dragBitmapTx.getHeight());
canvas.clearClipRect();
}
}
}