private fun matrixReset() {
if (model != BackgroundPackInfo.MODEL_ORIGIN)
return
val initRect = RectF()
val viewRect = RectF(0f, 0f, canvasWidth.toFloat(), canvasHeight.toFloat())
targetMatrix.mapRect(initRect, mTextureDrawRectF)
if (initRect.width() <= canvasWidth && initRect.height() <= canvasHeight) {
animateMatrix.reset()
animateMatrix()
} else {
animateMatrix.set(targetMatrix)
val minusRect = RectF(
initRect.left - viewRect.left,
initRect.top - viewRect.top,
initRect.right - viewRect.right,
initRect.bottom - viewRect.bottom
)
var transX = 0f
var transY = 0f
if (minusRect.left > 0) {
transX = -minusRect.left
} else {
if (minusRect.right < 0) {
transX = -minusRect.right
}
}
if (minusRect.top > 0) {
transY = -minusRect.top
} else {
if (minusRect.bottom < 0) {
transY = -minusRect.bottom
}
}
if (viewRect.width() < initRect.width() && viewRect.height() < initRect.height()) {
animateMatrix.postTranslate(transX, transY)
} else if (viewRect.width() <= initRect.width()) {
transY =
((viewRect.top + viewRect.bottom) / 2) - (initRect.top + initRect.bottom) / 2
animateMatrix.postTranslate(transX, transY)
} else if (viewRect.height() <= initRect.height()) {
transX =
((viewRect.right + viewRect.left) / 2) - (initRect.right + initRect.left) / 2
animateMatrix.postTranslate(transX, transY)
}
animateMatrix()
}
}
```
```