@Override
  public boolean onSingleTapUp(MotionEvent e) {

    // Links get preference
    if (bookView.hasLinkAt(e.getX(), e.getY())) {
      return false;
    }

    final int TAP_RANGE_H = bookView.getWidth() / 5;
    final int TAP_RANGE_V = bookView.getHeight() / 5;

    if (e.getX() < TAP_RANGE_H) {
      return bookViewListener.onTapLeftEdge();
    } else if (e.getX() > bookView.getWidth() - TAP_RANGE_H) {
      return bookViewListener.onTapRightEdge();
    }

    int yBase = bookView.getScrollY();

    if (e.getY() < TAP_RANGE_V + yBase) {
      return bookViewListener.onTapTopEdge();
    } else if (e.getY() > (yBase + bookView.getHeight()) - TAP_RANGE_V) {
      return bookViewListener.onTopBottomEdge();
    }

    this.bookViewListener.onScreenTap();
    return false;
  }