react-native-rectangle-doc-scanner 7.34.0 → 7.36.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.
@@ -566,25 +566,27 @@ class CameraController(
566
566
  )
567
567
 
568
568
  val matrix = Matrix()
569
- val bufferWidth = preview.width.toFloat()
570
- val bufferHeight = preview.height.toFloat()
571
- val rotateDegrees = when (rotation) {
572
- Surface.ROTATION_90 -> -90f
573
- Surface.ROTATION_180 -> 180f
574
- Surface.ROTATION_270 -> 90f
575
- else -> 0f
576
- }
577
-
578
- // Move buffer center to origin, rotate, scale uniformly to fill view, then move to view center.
579
- matrix.postTranslate(-bufferWidth / 2f, -bufferHeight / 2f)
580
- if (rotateDegrees != 0f) {
581
- matrix.postRotate(rotateDegrees)
582
- }
583
- val rotatedWidth = if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) bufferHeight else bufferWidth
584
- val rotatedHeight = if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) bufferWidth else bufferHeight
585
- val scale = max(viewWidth / rotatedWidth, viewHeight / rotatedHeight)
586
- matrix.postScale(scale, scale)
587
- matrix.postTranslate(viewWidth / 2f, viewHeight / 2f)
569
+ val viewRect = RectF(0f, 0f, viewWidth, viewHeight)
570
+ val bufferRect = if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) {
571
+ RectF(0f, 0f, preview.height.toFloat(), preview.width.toFloat())
572
+ } else {
573
+ RectF(0f, 0f, preview.width.toFloat(), preview.height.toFloat())
574
+ }
575
+ val centerX = viewRect.centerX()
576
+ val centerY = viewRect.centerY()
577
+
578
+ if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) {
579
+ bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY())
580
+ matrix.setRectToRect(bufferRect, viewRect, Matrix.ScaleToFit.FILL)
581
+ val scale = max(
582
+ viewWidth / preview.width.toFloat(),
583
+ viewHeight / preview.height.toFloat()
584
+ )
585
+ matrix.postScale(scale, scale, centerX, centerY)
586
+ matrix.postRotate(90f * (rotation - 2), centerX, centerY)
587
+ } else if (rotation == Surface.ROTATION_180) {
588
+ matrix.postRotate(180f, centerX, centerY)
589
+ }
588
590
 
589
591
  previewView.setTransform(matrix)
590
592
  Log.d(TAG, "[TRANSFORM] Matrix applied successfully")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-rectangle-doc-scanner",
3
- "version": "7.34.0",
3
+ "version": "7.36.0",
4
4
  "description": "Native-backed document scanner for React Native with customizable overlays.",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",