react-native-rectangle-doc-scanner 7.13.0 → 7.14.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.
@@ -484,7 +484,12 @@ class CameraController(
484
484
  val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
485
485
  ?: throw IllegalStateException("Failed to decode JPEG")
486
486
 
487
- val rotation = if (exifRotation != 0) exifRotation else computeRotationDegrees()
487
+ val computedRotation = computeRotationDegrees()
488
+ val rotation = if (exifRotation == 0 || exifRotation != computedRotation) {
489
+ computedRotation
490
+ } else {
491
+ exifRotation
492
+ }
488
493
  val rotated = rotateAndMirror(bitmap, rotation, useFrontCamera)
489
494
  val photoFile = File(pending.outputDirectory, "doc_scan_${System.currentTimeMillis()}.jpg")
490
495
  FileOutputStream(photoFile).use { out ->
@@ -553,20 +558,17 @@ class CameraController(
553
558
  Log.d(TAG, "[TRANSFORM] rotation=$rotationDegrees view=${viewWidth}x${viewHeight} preview=${preview.width}x${preview.height}")
554
559
 
555
560
  val matrix = Matrix()
556
- val centerX = viewWidth / 2f
557
- val centerY = viewHeight / 2f
558
- val isSwapped = rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270
559
- val bufferWidth = if (isSwapped) preview.height.toFloat() else preview.width.toFloat()
560
- val bufferHeight = if (isSwapped) preview.width.toFloat() else preview.height.toFloat()
561
- val scale = maxOf(viewWidth / bufferWidth, viewHeight / bufferHeight)
562
- val scaledWidth = bufferWidth * scale
563
- val scaledHeight = bufferHeight * scale
564
- val dx = (viewWidth - scaledWidth) / 2f
565
- val dy = (viewHeight - scaledHeight) / 2f
566
-
567
- matrix.setScale(scale, scale)
568
- matrix.postTranslate(dx, dy)
561
+ val viewRect = RectF(0f, 0f, viewWidth, viewHeight)
562
+ val bufferRect = if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) {
563
+ RectF(0f, 0f, preview.height.toFloat(), preview.width.toFloat())
564
+ } else {
565
+ RectF(0f, 0f, preview.width.toFloat(), preview.height.toFloat())
566
+ }
567
+ val centerX = viewRect.centerX()
568
+ val centerY = viewRect.centerY()
569
569
 
570
+ bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY())
571
+ matrix.setRectToRect(bufferRect, viewRect, Matrix.ScaleToFit.FILL)
570
572
  if (rotation != Surface.ROTATION_0) {
571
573
  val rotateDegrees = when (rotation) {
572
574
  Surface.ROTATION_90 -> -90f
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-rectangle-doc-scanner",
3
- "version": "7.13.0",
3
+ "version": "7.14.0",
4
4
  "description": "Native-backed document scanner for React Native with customizable overlays.",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",