question: 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 ; } } }
target:  Fix the given rect to fit into bitmap rect and follow min, max and aspect ratio rules.