in drawee/src/main/java/com/facebook/drawee/drawable/RoundedDrawable.java [236:294]
protected void updateTransform() {
if (mTransformCallback != null) {
mTransformCallback.getTransform(mParentTransform);
mTransformCallback.getRootBounds(mRootBounds);
} else {
mParentTransform.reset();
mRootBounds.set(getBounds());
}
mBitmapBounds.set(0, 0, getIntrinsicWidth(), getIntrinsicHeight());
mDrawableBounds.set(mDelegate.getBounds());
mBoundsTransform.setRectToRect(mBitmapBounds, mDrawableBounds, Matrix.ScaleToFit.FILL);
if (mScaleDownInsideBorders) {
if (mInsideBorderBounds == null) {
mInsideBorderBounds = new RectF(mRootBounds);
} else {
mInsideBorderBounds.set(mRootBounds);
}
mInsideBorderBounds.inset(mBorderWidth, mBorderWidth);
if (mInsideBorderTransform == null) {
mInsideBorderTransform = new Matrix();
}
mInsideBorderTransform.setRectToRect(
mRootBounds, mInsideBorderBounds, Matrix.ScaleToFit.FILL);
} else if (mInsideBorderTransform != null) {
mInsideBorderTransform.reset();
}
if (!mParentTransform.equals(mPrevParentTransform)
|| !mBoundsTransform.equals(mPrevBoundsTransform)
|| (mInsideBorderTransform != null
&& !mInsideBorderTransform.equals(mPrevInsideBorderTransform))) {
mIsShaderTransformDirty = true;
mParentTransform.invert(mInverseParentTransform);
mTransform.set(mParentTransform);
if (mScaleDownInsideBorders) {
mTransform.postConcat(mInsideBorderTransform);
}
mTransform.preConcat(mBoundsTransform);
mPrevParentTransform.set(mParentTransform);
mPrevBoundsTransform.set(mBoundsTransform);
if (mScaleDownInsideBorders) {
if (mPrevInsideBorderTransform == null) {
mPrevInsideBorderTransform = new Matrix(mInsideBorderTransform);
} else {
mPrevInsideBorderTransform.set(mInsideBorderTransform);
}
} else if (mPrevInsideBorderTransform != null) {
mPrevInsideBorderTransform.reset();
}
}
if (!mRootBounds.equals(mPrevRootBounds)) {
mIsPathDirty = true;
mPrevRootBounds.set(mRootBounds);
}
}