react-native-rectangle-doc-scanner 7.30.0 → 7.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -565,25 +565,28 @@ class CameraController(
565
565
  )
566
566
 
567
567
  val matrix = Matrix()
568
- val viewRect = RectF(0f, 0f, viewWidth, viewHeight)
569
- val centerX = viewRect.centerX()
570
- val centerY = viewRect.centerY()
571
-
572
- if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) {
573
- val bufferRect = RectF(0f, 0f, preview.height.toFloat(), preview.width.toFloat())
574
- bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY())
575
- matrix.setRectToRect(viewRect, bufferRect, Matrix.ScaleToFit.FILL)
576
- val scale = max(viewHeight / preview.height.toFloat(), viewWidth / preview.width.toFloat())
577
- matrix.postScale(scale, scale, centerX, centerY)
578
- matrix.postRotate(90f * (rotation - 2), centerX, centerY)
579
- } else if (rotation == Surface.ROTATION_180) {
580
- matrix.postRotate(180f, centerX, centerY)
581
- } else {
582
- val bufferRect = RectF(0f, 0f, preview.width.toFloat(), preview.height.toFloat())
583
- bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY())
584
- matrix.setRectToRect(viewRect, bufferRect, Matrix.ScaleToFit.FILL)
585
- val scale = max(viewWidth / preview.width.toFloat(), viewHeight / preview.height.toFloat())
586
- matrix.postScale(scale, scale, centerX, centerY)
568
+ val isSwapped = rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270
569
+ val bufferWidth = if (isSwapped) preview.height.toFloat() else preview.width.toFloat()
570
+ val bufferHeight = if (isSwapped) preview.width.toFloat() else preview.height.toFloat()
571
+ val centerX = viewWidth / 2f
572
+ val centerY = viewHeight / 2f
573
+ val scale = max(viewWidth / bufferWidth, viewHeight / bufferHeight)
574
+ val scaledWidth = bufferWidth * scale
575
+ val scaledHeight = bufferHeight * scale
576
+ val dx = (viewWidth - scaledWidth) / 2f
577
+ val dy = (viewHeight - scaledHeight) / 2f
578
+
579
+ matrix.setScale(scale, scale)
580
+ matrix.postTranslate(dx, dy)
581
+
582
+ if (rotation != Surface.ROTATION_0) {
583
+ val rotateDegrees = when (rotation) {
584
+ Surface.ROTATION_90 -> -90f
585
+ Surface.ROTATION_180 -> 180f
586
+ Surface.ROTATION_270 -> 90f
587
+ else -> 0f
588
+ }
589
+ matrix.postRotate(rotateDegrees, centerX, centerY)
587
590
  }
588
591
 
589
592
  previewView.setTransform(matrix)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-rectangle-doc-scanner",
3
- "version": "7.30.0",
3
+ "version": "7.31.0",
4
4
  "description": "Native-backed document scanner for React Native with customizable overlays.",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",