private void fixCropWindowRectByRules(RectF rect){
  if (rect.width() < mCropWindowHandler.getMinCropWidth()) {
    float adj=(mCropWindowHandler.getMinCropWidth() - rect.width()) / 2;
    rect.left-=adj;
    rect.right+=adj;
  }
  if (rect.height() < mCropWindowHandler.getMinCropHeight()) {
    float adj=(mCropWindowHandler.getMinCropHeight() - rect.height()) / 2;
    rect.top-=adj;
    rect.bottom+=adj;
  }
  if (rect.width() > mCropWindowHandler.getMaxCropWidth()) {
    float adj=(rect.width() - mCropWindowHandler.getMaxCropWidth()) / 2;
    rect.left+=adj;
    rect.right-=adj;
  }
  if (rect.height() > mCropWindowHandler.getMaxCropHeight()) {
    float adj=(rect.height() - mCropWindowHandler.getMaxCropHeight()) / 2;
    rect.top+=adj;
    rect.bottom-=adj;
  }
  calculateBounds(rect);
  if (mCalcBounds.width() > 0 && mCalcBounds.height() > 0) {
    float leftLimit=Math.max(mCalcBounds.left,0);
    float topLimit=Math.max(mCalcBounds.top,0);
    float rightLimit=Math.min(mCalcBounds.right,getWidth());
    float bottomLimit=Math.min(mCalcBounds.bottom,getHeight());
    if (rect.left < leftLimit) {
      rect.left=leftLimit;
    }
    if (rect.top < topLimit) {
      rect.top=topLimit;
    }
    if (rect.right > rightLimit) {
      rect.right=rightLimit;
    }
    if (rect.bottom > bottomLimit) {
      rect.bottom=bottomLimit;
    }
  }
  if (mFixAspectRatio && Math.abs(rect.width() - rect.height() * mTargetAspectRatio) > 0.1) {
    if (rect.width() > rect.height() * mTargetAspectRatio) {
      float adj=Math.abs(rect.height() * mTargetAspectRatio - rect.width()) / 2;
      rect.left+=adj;
      rect.right-=adj;
    }
 else {
      float adj=Math.abs(rect.width() / mTargetAspectRatio - rect.height()) / 2;
      rect.top+=adj;
      rect.bottom-=adj;
    }
  }
}

private void fixCropWindowRectByRules ( RectF rect ) { if ( rect . width ( ) < mCropWindowHandler . getMinCropWidth ( ) ) { float adj = ( mCropWindowHandler . getMinCropWidth ( ) - rect . width ( ) ) / 2 ; rect . left -= adj ; rect . right += adj ; } if ( rect . height ( ) < mCropWindowHandler . getMinCropHeight ( ) ) { float adj = ( mCropWindowHandler . getMinCropHeight ( ) - rect . height ( ) ) / 2 ; rect . top -= adj ; rect . bottom += adj ; } if ( rect . width ( ) > mCropWindowHandler . getMaxCropWidth ( ) ) { float adj = ( rect . width ( ) - mCropWindowHandler . getMaxCropWidth ( ) ) / 2 ; rect . left += adj ; rect . right -= adj ; } if ( rect . height ( ) > mCropWindowHandler . getMaxCropHeight ( ) ) { float adj = ( rect . height ( ) - mCropWindowHandler . getMaxCropHeight ( ) ) / 2 ; rect . top += adj ; rect . bottom -= adj ; } calculateBounds ( rect ) ; if ( mCalcBounds . width ( ) > 0 && mCalcBounds . height ( ) > 0 ) { float leftLimit = Math . max ( mCalcBounds . left , 0 ) ; float topLimit = Math . max ( mCalcBounds . top , 0 ) ; float rightLimit = Math . min ( mCalcBounds . right , getWidth ( ) ) ; float bottomLimit = Math . min ( mCalcBounds . bottom , getHeight ( ) ) ; if ( rect . left < leftLimit ) { rect . left = leftLimit ; } if ( rect . top < topLimit ) { rect . top = topLimit ; } if ( rect . right > rightLimit ) { rect . right = rightLimit ; } if ( rect . bottom > bottomLimit ) { rect . bottom = bottomLimit ; } } if ( mFixAspectRatio && Math . abs ( rect . width ( ) - rect . height ( ) * mTargetAspectRatio ) > 0.1 ) { if ( rect . width ( ) > rect . height ( ) * mTargetAspectRatio ) { float adj = Math . abs ( rect . height ( ) * mTargetAspectRatio - rect . width ( ) ) / 2 ; rect . left += adj ; rect . right -= adj ; } else { float adj = Math . abs ( rect . width ( ) / mTargetAspectRatio - rect . height ( ) ) / 2 ; rect . top += adj ; rect . bottom -= adj ; } } }
fix the given rect to fit into bitmap rect and follow min , max and aspect ratio rules .
