コード例 #1
0
  // Handles motion (dx, dy) in screen space.
  // The "edge" parameter specifies which edges the user is dragging.
  void handleMotion(int edge, float dx, float dy) {

    Rect r = computeLayout();
    if (edge == GROW_NONE) {
      return;
    } else if (edge == MOVE) {
      // Convert to image space before sending to moveBy().
      moveBy(dx * (mCropRect.width() / r.width()), dy * (mCropRect.height() / r.height()));
    } else {
      if (((GROW_LEFT_EDGE | GROW_RIGHT_EDGE) & edge) == 0) {
        dx = 0;
      }

      if (((GROW_TOP_EDGE | GROW_BOTTOM_EDGE) & edge) == 0) {
        dy = 0;
      }

      // Convert to image space before sending to growBy().
      float xDelta = dx * (mCropRect.width() / r.width());
      float yDelta = dy * (mCropRect.height() / r.height());
      growBy(
          (((edge & GROW_LEFT_EDGE) != 0) ? -1 : 1) * xDelta,
          (((edge & GROW_TOP_EDGE) != 0) ? -1 : 1) * yDelta);
    }
  }