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 ) ; } }
The edge parameter specifies which edges the user is dragging .