From 8f9d51e65a72e022bc49973b5e4214addac22614 Mon Sep 17 00:00:00 2001
From: Pierre-Yves Nicolas <6371790+pynicolas@users.noreply.github.com>
Date: Tue, 18 Nov 2025 17:04:33 +0100
Subject: [PATCH] Reorg: new package for domain
---
.../fairscan/app/{ => domain}/DocumentDetectionTest.kt | 6 +++---
.../main/java/org/fairscan/app/LiveAnalysisState.kt | 1 +
app/src/main/java/org/fairscan/app/MainViewModel.kt | 4 ++++
.../org/fairscan/app/{ => domain}/DocumentDetection.kt | 10 +++++-----
.../java/org/fairscan/app/{ => domain}/Geometry.kt | 5 +++--
.../org/fairscan/app/{ => domain}/ImageSegmentation.kt | 2 +-
.../org/fairscan/app/{ => domain}/PostProcessing.kt | 3 +--
.../app/{ => domain}/quad/AdaptiveThreshold.kt | 2 +-
.../org/fairscan/app/{ => domain}/quad/MinAreaRect.kt | 4 ++--
.../org/fairscan/app/{ => domain}/quad/RightAngles.kt | 4 ++--
.../main/java/org/fairscan/app/view/CameraPreview.kt | 4 ++--
.../java/org/fairscan/app/{ => domain}/GeometryTest.kt | 2 +-
12 files changed, 26 insertions(+), 21 deletions(-)
rename app/src/androidTest/java/org/fairscan/app/{ => domain}/DocumentDetectionTest.kt (95%)
rename app/src/main/java/org/fairscan/app/{ => domain}/DocumentDetection.kt (96%)
rename app/src/main/java/org/fairscan/app/{ => domain}/Geometry.kt (97%)
rename app/src/main/java/org/fairscan/app/{ => domain}/ImageSegmentation.kt (99%)
rename app/src/main/java/org/fairscan/app/{ => domain}/PostProcessing.kt (98%)
rename app/src/main/java/org/fairscan/app/{ => domain}/quad/AdaptiveThreshold.kt (99%)
rename app/src/main/java/org/fairscan/app/{ => domain}/quad/MinAreaRect.kt (97%)
rename app/src/main/java/org/fairscan/app/{ => domain}/quad/RightAngles.kt (98%)
rename app/src/test/java/org/fairscan/app/{ => domain}/GeometryTest.kt (98%)
diff --git a/app/src/androidTest/java/org/fairscan/app/DocumentDetectionTest.kt b/app/src/androidTest/java/org/fairscan/app/domain/DocumentDetectionTest.kt
similarity index 95%
rename from app/src/androidTest/java/org/fairscan/app/DocumentDetectionTest.kt
rename to app/src/androidTest/java/org/fairscan/app/domain/DocumentDetectionTest.kt
index 6060474..9a542be 100644
--- a/app/src/androidTest/java/org/fairscan/app/DocumentDetectionTest.kt
+++ b/app/src/androidTest/java/org/fairscan/app/domain/DocumentDetectionTest.kt
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.domain
import android.content.Context
import android.graphics.Bitmap
@@ -51,8 +51,8 @@ class DocumentDetectionTest {
segmentationService.runSegmentationAndReturn(bitmap, 0)
}
if (segmentationResult != null) {
- val mask = segmentationResult.segmentation.toBinaryMask()
- val quad = detectDocumentQuad(mask)
+ val mask = segmentationResult.segmentation
+ val quad = detectDocumentQuad(mask, false)
if (quad != null) {
val resizedQuad =
quad.scaledTo(mask.width, mask.height, bitmap.width, bitmap.height)
diff --git a/app/src/main/java/org/fairscan/app/LiveAnalysisState.kt b/app/src/main/java/org/fairscan/app/LiveAnalysisState.kt
index 50b5686..93b9bfa 100644
--- a/app/src/main/java/org/fairscan/app/LiveAnalysisState.kt
+++ b/app/src/main/java/org/fairscan/app/LiveAnalysisState.kt
@@ -16,6 +16,7 @@ package org.fairscan.app
import android.graphics.Bitmap
import androidx.compose.runtime.Immutable
+import org.fairscan.app.domain.Quad
@Immutable
data class LiveAnalysisState(
diff --git a/app/src/main/java/org/fairscan/app/MainViewModel.kt b/app/src/main/java/org/fairscan/app/MainViewModel.kt
index 1e2ae1a..97f3a5e 100644
--- a/app/src/main/java/org/fairscan/app/MainViewModel.kt
+++ b/app/src/main/java/org/fairscan/app/MainViewModel.kt
@@ -40,6 +40,10 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.fairscan.app.data.recentDocumentsDataStore
+import org.fairscan.app.domain.ImageSegmentationService
+import org.fairscan.app.domain.detectDocumentQuad
+import org.fairscan.app.domain.extractDocument
+import org.fairscan.app.domain.scaledTo
import org.fairscan.app.ui.PdfGenerationUiState
import org.fairscan.app.ui.RecentDocumentUiState
import org.fairscan.app.view.DocumentUiModel
diff --git a/app/src/main/java/org/fairscan/app/DocumentDetection.kt b/app/src/main/java/org/fairscan/app/domain/DocumentDetection.kt
similarity index 96%
rename from app/src/main/java/org/fairscan/app/DocumentDetection.kt
rename to app/src/main/java/org/fairscan/app/domain/DocumentDetection.kt
index afe9121..7db33d6 100644
--- a/app/src/main/java/org/fairscan/app/DocumentDetection.kt
+++ b/app/src/main/java/org/fairscan/app/domain/DocumentDetection.kt
@@ -12,14 +12,14 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.domain
import android.graphics.Bitmap
import androidx.core.graphics.createBitmap
-import org.fairscan.app.ImageSegmentationService.Segmentation
-import org.fairscan.app.quad.detectDocumentQuadFromProbmap
-import org.fairscan.app.quad.findQuadFromRightAngles
-import org.fairscan.app.quad.minAreaRect
+import org.fairscan.app.domain.ImageSegmentationService.Segmentation
+import org.fairscan.app.domain.quad.detectDocumentQuadFromProbmap
+import org.fairscan.app.domain.quad.findQuadFromRightAngles
+import org.fairscan.app.domain.quad.minAreaRect
import org.opencv.android.Utils
import org.opencv.core.Core
import org.opencv.core.CvType
diff --git a/app/src/main/java/org/fairscan/app/Geometry.kt b/app/src/main/java/org/fairscan/app/domain/Geometry.kt
similarity index 97%
rename from app/src/main/java/org/fairscan/app/Geometry.kt
rename to app/src/main/java/org/fairscan/app/domain/Geometry.kt
index 76b3aa0..8209444 100644
--- a/app/src/main/java/org/fairscan/app/Geometry.kt
+++ b/app/src/main/java/org/fairscan/app/domain/Geometry.kt
@@ -12,9 +12,10 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.domain
import kotlin.math.atan2
+import kotlin.math.hypot
data class Point(val x: Double, val y: Double) {
constructor(x: Int, y: Int) : this (x.toDouble(), y.toDouble())
@@ -29,7 +30,7 @@ data class Line(val from: Point, val to: Point) {
fun norm(p1: Point, p2: Point): Double {
val dx = (p2.x - p1.x)
val dy = (p2.y - p1.y)
- return kotlin.math.hypot(dx, dy)
+ return hypot(dx, dy)
}
data class Quad(
diff --git a/app/src/main/java/org/fairscan/app/ImageSegmentation.kt b/app/src/main/java/org/fairscan/app/domain/ImageSegmentation.kt
similarity index 99%
rename from app/src/main/java/org/fairscan/app/ImageSegmentation.kt
rename to app/src/main/java/org/fairscan/app/domain/ImageSegmentation.kt
index a753594..4f1c1d2 100644
--- a/app/src/main/java/org/fairscan/app/ImageSegmentation.kt
+++ b/app/src/main/java/org/fairscan/app/domain/ImageSegmentation.kt
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.domain
import android.content.Context
import android.graphics.Bitmap
diff --git a/app/src/main/java/org/fairscan/app/PostProcessing.kt b/app/src/main/java/org/fairscan/app/domain/PostProcessing.kt
similarity index 98%
rename from app/src/main/java/org/fairscan/app/PostProcessing.kt
rename to app/src/main/java/org/fairscan/app/domain/PostProcessing.kt
index 1c2c531..65af518 100644
--- a/app/src/main/java/org/fairscan/app/PostProcessing.kt
+++ b/app/src/main/java/org/fairscan/app/domain/PostProcessing.kt
@@ -12,13 +12,12 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.domain
import android.util.Log
import org.opencv.core.Core
import org.opencv.core.CvType
import org.opencv.core.Mat
-import org.opencv.core.MatOfDouble
import org.opencv.core.Scalar
import org.opencv.core.Size
import org.opencv.imgproc.Imgproc
diff --git a/app/src/main/java/org/fairscan/app/quad/AdaptiveThreshold.kt b/app/src/main/java/org/fairscan/app/domain/quad/AdaptiveThreshold.kt
similarity index 99%
rename from app/src/main/java/org/fairscan/app/quad/AdaptiveThreshold.kt
rename to app/src/main/java/org/fairscan/app/domain/quad/AdaptiveThreshold.kt
index da5ed18..4be20a1 100644
--- a/app/src/main/java/org/fairscan/app/quad/AdaptiveThreshold.kt
+++ b/app/src/main/java/org/fairscan/app/domain/quad/AdaptiveThreshold.kt
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app.quad
+package org.fairscan.app.domain.quad
import org.opencv.core.Mat
import org.opencv.core.CvType
diff --git a/app/src/main/java/org/fairscan/app/quad/MinAreaRect.kt b/app/src/main/java/org/fairscan/app/domain/quad/MinAreaRect.kt
similarity index 97%
rename from app/src/main/java/org/fairscan/app/quad/MinAreaRect.kt
rename to app/src/main/java/org/fairscan/app/domain/quad/MinAreaRect.kt
index fcf824d..2e42dcf 100644
--- a/app/src/main/java/org/fairscan/app/quad/MinAreaRect.kt
+++ b/app/src/main/java/org/fairscan/app/domain/quad/MinAreaRect.kt
@@ -12,9 +12,9 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app.quad
+package org.fairscan.app.domain.quad
-import org.fairscan.app.Point
+import org.fairscan.app.domain.Point
import kotlin.math.cos
import kotlin.math.sin
diff --git a/app/src/main/java/org/fairscan/app/quad/RightAngles.kt b/app/src/main/java/org/fairscan/app/domain/quad/RightAngles.kt
similarity index 98%
rename from app/src/main/java/org/fairscan/app/quad/RightAngles.kt
rename to app/src/main/java/org/fairscan/app/domain/quad/RightAngles.kt
index 61666bb..b79cccd 100644
--- a/app/src/main/java/org/fairscan/app/quad/RightAngles.kt
+++ b/app/src/main/java/org/fairscan/app/domain/quad/RightAngles.kt
@@ -12,9 +12,9 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app.quad
+package org.fairscan.app.domain.quad
-import org.fairscan.app.Point
+import org.fairscan.app.domain.Point
import kotlin.math.abs
import kotlin.math.acos
import kotlin.math.sqrt
diff --git a/app/src/main/java/org/fairscan/app/view/CameraPreview.kt b/app/src/main/java/org/fairscan/app/view/CameraPreview.kt
index 402a2b4..513872e 100644
--- a/app/src/main/java/org/fairscan/app/view/CameraPreview.kt
+++ b/app/src/main/java/org/fairscan/app/view/CameraPreview.kt
@@ -55,8 +55,8 @@ import androidx.lifecycle.compose.LocalLifecycleOwner
import com.google.common.util.concurrent.ListenableFuture
import org.fairscan.app.CameraPermissionState
import org.fairscan.app.LiveAnalysisState
-import org.fairscan.app.Point
-import org.fairscan.app.scaledTo
+import org.fairscan.app.domain.Point
+import org.fairscan.app.domain.scaledTo
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
diff --git a/app/src/test/java/org/fairscan/app/GeometryTest.kt b/app/src/test/java/org/fairscan/app/domain/GeometryTest.kt
similarity index 98%
rename from app/src/test/java/org/fairscan/app/GeometryTest.kt
rename to app/src/test/java/org/fairscan/app/domain/GeometryTest.kt
index 1242e42..a5dfc1c 100644
--- a/app/src/test/java/org/fairscan/app/GeometryTest.kt
+++ b/app/src/test/java/org/fairscan/app/domain/GeometryTest.kt
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.domain
import org.assertj.core.api.Assertions.assertThat
import org.assertj.core.api.Assertions.assertThatThrownBy