diff --git a/app/src/main/java/org/fairscan/app/MainActivity.kt b/app/src/main/java/org/fairscan/app/MainActivity.kt index 1d3dc9f..a73e1f5 100644 --- a/app/src/main/java/org/fairscan/app/MainActivity.kt +++ b/app/src/main/java/org/fairscan/app/MainActivity.kt @@ -55,7 +55,7 @@ import org.fairscan.app.ui.Navigation import org.fairscan.app.ui.Screen import org.fairscan.app.ui.components.rememberCameraPermissionState import org.fairscan.app.ui.screens.document.DocumentScreen -import org.fairscan.app.ui.screens.edit.EditPageScreen +import org.fairscan.app.ui.screens.crop.CropScreen import org.fairscan.app.ui.screens.LibrariesScreen import org.fairscan.app.ui.screens.about.AboutEvent import org.fairscan.app.ui.screens.about.AboutScreen @@ -180,7 +180,7 @@ class MainActivity : ComponentActivity() { ) } is Screen.Main.EditImage -> { - EditPageScreen( + CropScreen( pageId = documentUiState.currentPage?.key?.pageId ?: "", initState = cropInitialState, navigation = navigation, diff --git a/app/src/main/java/org/fairscan/app/MainViewModel.kt b/app/src/main/java/org/fairscan/app/MainViewModel.kt index b27d424..730e826 100644 --- a/app/src/main/java/org/fairscan/app/MainViewModel.kt +++ b/app/src/main/java/org/fairscan/app/MainViewModel.kt @@ -44,7 +44,7 @@ import org.fairscan.app.ui.NavigationState import org.fairscan.app.ui.Screen import org.fairscan.app.ui.screens.document.CurrentPageUiState import org.fairscan.app.ui.screens.document.DocumentUiState -import org.fairscan.app.ui.screens.edit.CropInitState +import org.fairscan.app.ui.screens.crop.CropInitState import org.fairscan.app.ui.state.DocumentUiModel import org.fairscan.app.ui.state.PageThumbnail import org.fairscan.imageprocessing.ColorMode diff --git a/app/src/main/java/org/fairscan/app/ui/screens/edit/EditPageScreen.kt b/app/src/main/java/org/fairscan/app/ui/screens/crop/CropScreen.kt similarity index 97% rename from app/src/main/java/org/fairscan/app/ui/screens/edit/EditPageScreen.kt rename to app/src/main/java/org/fairscan/app/ui/screens/crop/CropScreen.kt index 46f552f..4f3781a 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/edit/EditPageScreen.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/crop/CropScreen.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import android.annotation.SuppressLint import android.content.res.Configuration @@ -64,13 +64,13 @@ import org.fairscan.imageprocessing.Quad @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @OptIn(ExperimentalMaterial3Api::class) @Composable -fun EditPageScreen( +fun CropScreen( pageId: String, initState: CropInitState, navigation: Navigation, onUpdatePageQuad: (Quad) -> Unit, ) { - val state = remember(pageId) { EditPageScreenState() } + val state = remember(pageId) { CropScreenState() } val quadHandler = remember { QuadEditingHandler() } if (initState is CropInitState.Ready && initState.pageId == pageId && state.bitmap == null) { @@ -145,7 +145,7 @@ private fun ActionButtons( @Composable private fun DragQuadOverlay( - state: EditPageScreenState, + state: CropScreenState, quadHandler: QuadEditingHandler, bmp: Bitmap ) { @@ -154,7 +154,7 @@ private fun DragQuadOverlay( val containerSize = state.containerSize!! val displaySize = QuadCoordinateUtils.calculateDisplaySize(bmp.width, bmp.height, containerSize) val liftWiggleThresholdPx = with(LocalDensity.current) { - EditPageScreenState.LIFT_WIGGLE_MAX_DISTANCE.toPx() + CropScreenState.LIFT_WIGGLE_MAX_DISTANCE.toPx() } QuadOverlay( @@ -238,7 +238,7 @@ private fun DragQuadOverlay( } @Composable -private fun DragMagnifyingGlass(state: EditPageScreenState) { +private fun DragMagnifyingGlass(state: CropScreenState) { // showLoupe becomes true immediately on touch-down and stays true for // one additional second after the finger is lifted. val showLoupe = remember { mutableStateOf(false) } @@ -314,7 +314,7 @@ fun EditPageScreenPreview() { BitmapFactory.decodeStream(input) } val quad = Quad(Point(.1, .1), Point(.9, .1), Point(.9, .9), Point(.1, .9)) - EditPageScreen( + CropScreen( pageId = "123", initState = CropInitState.Ready("123",dummyImage, quad), navigation = dummyNavigation(), diff --git a/app/src/main/java/org/fairscan/app/ui/screens/edit/EditPageScreenState.kt b/app/src/main/java/org/fairscan/app/ui/screens/crop/CropScreenState.kt similarity index 98% rename from app/src/main/java/org/fairscan/app/ui/screens/edit/EditPageScreenState.kt rename to app/src/main/java/org/fairscan/app/ui/screens/crop/CropScreenState.kt index 509da2a..b3969fe 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/edit/EditPageScreenState.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/crop/CropScreenState.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import android.graphics.Bitmap import androidx.compose.runtime.getValue @@ -34,7 +34,7 @@ sealed interface CropInitState { ) : CropInitState } -class EditPageScreenState { +class CropScreenState { companion object { val LIFT_WIGGLE_MAX_DISTANCE = 8.dp const val LIFT_WIGGLE_WINDOW_MS = 70L diff --git a/app/src/main/java/org/fairscan/app/ui/screens/edit/MagnifyingGlass.kt b/app/src/main/java/org/fairscan/app/ui/screens/crop/MagnifyingGlass.kt similarity index 99% rename from app/src/main/java/org/fairscan/app/ui/screens/edit/MagnifyingGlass.kt rename to app/src/main/java/org/fairscan/app/ui/screens/crop/MagnifyingGlass.kt index a3d6404..2dcbca6 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/edit/MagnifyingGlass.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/crop/MagnifyingGlass.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import android.graphics.Bitmap import androidx.compose.foundation.Canvas diff --git a/app/src/main/java/org/fairscan/app/ui/screens/edit/QuadCoordinateUtils.kt b/app/src/main/java/org/fairscan/app/ui/screens/crop/QuadCoordinateUtils.kt similarity index 98% rename from app/src/main/java/org/fairscan/app/ui/screens/edit/QuadCoordinateUtils.kt rename to app/src/main/java/org/fairscan/app/ui/screens/crop/QuadCoordinateUtils.kt index f0720f8..c5cf499 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/edit/QuadCoordinateUtils.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/crop/QuadCoordinateUtils.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import androidx.compose.ui.geometry.Offset import androidx.compose.ui.unit.IntSize diff --git a/app/src/main/java/org/fairscan/app/ui/screens/edit/QuadEditingHandler.kt b/app/src/main/java/org/fairscan/app/ui/screens/crop/QuadEditingHandler.kt similarity index 98% rename from app/src/main/java/org/fairscan/app/ui/screens/edit/QuadEditingHandler.kt rename to app/src/main/java/org/fairscan/app/ui/screens/crop/QuadEditingHandler.kt index 61a0c90..350fbd6 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/edit/QuadEditingHandler.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/crop/QuadEditingHandler.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import androidx.compose.ui.geometry.Offset import androidx.compose.ui.unit.IntSize diff --git a/app/src/main/java/org/fairscan/app/ui/screens/edit/QuadOverlay.kt b/app/src/main/java/org/fairscan/app/ui/screens/crop/QuadOverlay.kt similarity index 98% rename from app/src/main/java/org/fairscan/app/ui/screens/edit/QuadOverlay.kt rename to app/src/main/java/org/fairscan/app/ui/screens/crop/QuadOverlay.kt index 1bd8339..c14fb10 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/edit/QuadOverlay.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/crop/QuadOverlay.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.fillMaxSize diff --git a/app/src/test/java/org/fairscan/app/ui/screens/edit/EditPageScreenStateTest.kt b/app/src/test/java/org/fairscan/app/ui/screens/crop/EditPageScreenStateTest.kt similarity index 92% rename from app/src/test/java/org/fairscan/app/ui/screens/edit/EditPageScreenStateTest.kt rename to app/src/test/java/org/fairscan/app/ui/screens/crop/EditPageScreenStateTest.kt index a1e6be6..4114f93 100644 --- a/app/src/test/java/org/fairscan/app/ui/screens/edit/EditPageScreenStateTest.kt +++ b/app/src/test/java/org/fairscan/app/ui/screens/crop/EditPageScreenStateTest.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import androidx.compose.ui.geometry.Offset import org.assertj.core.api.Assertions.assertThat @@ -42,7 +42,7 @@ class EditPageScreenStateTest { @Test fun initialState_hasCorrectDefaults() { - val state = EditPageScreenState() + val state = CropScreenState() assertThat(state.bitmap).isNull() assertThat(state.containerSize).isNull() @@ -57,7 +57,7 @@ class EditPageScreenStateTest { @Test fun quadUpdates_workCorrectly() { - val state = EditPageScreenState() + val state = CropScreenState() state.updateQuad(testQuad) assertThat(state.editableQuad).isEqualTo(testQuad) @@ -68,7 +68,7 @@ class EditPageScreenStateTest { @Test fun cornerDragging_managesStateCorrectly() { - val state = EditPageScreenState() + val state = CropScreenState() // Corner drag starts correctly for (i in 0 until 4) { @@ -91,7 +91,7 @@ class EditPageScreenStateTest { @Test fun fullDragCycle_preservesQuadAfterDragEnds() { - val state = EditPageScreenState() + val state = CropScreenState() assertThat(state.isDragging()).isFalse() state.startCornerDrag(1) @@ -108,7 +108,7 @@ class EditPageScreenStateTest { @Test fun onTouchDown_setsIsTouchingAndDragPosition() { - val state = EditPageScreenState() + val state = CropScreenState() val pos = Offset(100f, 200f) state.onTouchDown(pos) @@ -120,7 +120,7 @@ class EditPageScreenStateTest { @Test fun onTouchDown_withCornerIndex_storesCornerIndex() { - val state = EditPageScreenState() + val state = CropScreenState() state.onTouchDown(Offset(50f, 50f), cornerIndex = 2) @@ -131,7 +131,7 @@ class EditPageScreenStateTest { @Test fun onTouchDown_withEdgeIndex_storesEdgeIndex() { // Edge index no longer exists; onTouchDown with no corner index leaves touchDownCornerIndex as -1. - val state = EditPageScreenState() + val state = CropScreenState() state.onTouchDown(Offset(50f, 50f)) @@ -141,7 +141,7 @@ class EditPageScreenStateTest { @Test fun onTouchDown_overwritesPreviousTouchDown() { - val state = EditPageScreenState() + val state = CropScreenState() state.onTouchDown(Offset(10f, 10f), cornerIndex = 0) state.onTouchDown(Offset(50f, 50f), cornerIndex = 3) @@ -154,7 +154,7 @@ class EditPageScreenStateTest { @Test fun onTouchUp_clearsIsTouchingAndTouchDownIndices() { - val state = EditPageScreenState() + val state = CropScreenState() state.onTouchDown(Offset(100f, 200f), cornerIndex = 1) state.onTouchUp() @@ -165,7 +165,7 @@ class EditPageScreenStateTest { @Test fun onTouchUp_preservesDragPosition() { - val state = EditPageScreenState() + val state = CropScreenState() val pos = Offset(100f, 200f) state.onTouchDown(pos, cornerIndex = 1) @@ -177,7 +177,7 @@ class EditPageScreenStateTest { @Test fun onTouchUp_whenNotTouching_isIdempotent() { - val state = EditPageScreenState() + val state = CropScreenState() state.onTouchUp() @@ -189,7 +189,7 @@ class EditPageScreenStateTest { @Test fun endDrag_preservesDragPosition() { - val state = EditPageScreenState() + val state = CropScreenState() state.setInitialQuad(testQuad) val pos = Offset(100f, 200f) state.onTouchDown(pos, cornerIndex = 0) @@ -205,7 +205,7 @@ class EditPageScreenStateTest { @Test fun endDrag_doesNotResetTouchDownIndices() { - val state = EditPageScreenState() + val state = CropScreenState() state.setInitialQuad(testQuad) state.onTouchDown(Offset(100f, 200f), cornerIndex = 2) state.startCornerDrag(2) @@ -218,7 +218,7 @@ class EditPageScreenStateTest { @Test fun rollbackLastDragStepIfLikelyLiftWiggle_revertsRecentSmallStep() { - val state = EditPageScreenState() + val state = CropScreenState() state.updateQuad(testQuad) state.startCornerDrag(0) @@ -232,7 +232,7 @@ class EditPageScreenStateTest { @Test fun rollbackLastDragStepIfLikelyLiftWiggle_keepsLargeStep() { - val state = EditPageScreenState() + val state = CropScreenState() state.updateQuad(testQuad) state.startCornerDrag(0) @@ -246,7 +246,7 @@ class EditPageScreenStateTest { @Test fun rollbackLastDragStepIfLikelyLiftWiggle_keepsOldSmallStep() { - val state = EditPageScreenState() + val state = CropScreenState() state.updateQuad(testQuad) state.startCornerDrag(0) @@ -260,7 +260,7 @@ class EditPageScreenStateTest { @Test fun endDrag_clearsLastDragStepTracking() { - val state = EditPageScreenState() + val state = CropScreenState() state.updateQuad(testQuad) state.startCornerDrag(0) @@ -277,7 +277,7 @@ class EditPageScreenStateTest { @Test fun tapCycle_leavesStateConsistent() { - val state = EditPageScreenState() + val state = CropScreenState() val pos = Offset(100f, 200f) state.onTouchDown(pos, cornerIndex = 3) @@ -294,7 +294,7 @@ class EditPageScreenStateTest { @Test fun dragCycle_corner_leavesStateConsistent() { - val state = EditPageScreenState() + val state = CropScreenState() state.setInitialQuad(testQuad) val pos = Offset(100f, 200f) @@ -321,7 +321,7 @@ class EditPageScreenStateTest { fun dragCycle_edge_leavesStateConsistent() { // Edge dragging is no longer supported; this test verifies that a touch // without a valid corner index simply does not trigger a drag. - val state = EditPageScreenState() + val state = CropScreenState() state.setInitialQuad(testQuad) val pos = Offset(150f, 80f) @@ -339,7 +339,7 @@ class EditPageScreenStateTest { @Test fun consecutiveTaps_eachSetsCorrectTouchDownIndex() { - val state = EditPageScreenState() + val state = CropScreenState() state.onTouchDown(Offset(10f, 10f), cornerIndex = 0) assertThat(state.touchDownCornerIndex).isEqualTo(0) diff --git a/app/src/test/java/org/fairscan/app/ui/screens/edit/MagnifyingGlassTest.kt b/app/src/test/java/org/fairscan/app/ui/screens/crop/MagnifyingGlassTest.kt similarity index 99% rename from app/src/test/java/org/fairscan/app/ui/screens/edit/MagnifyingGlassTest.kt rename to app/src/test/java/org/fairscan/app/ui/screens/crop/MagnifyingGlassTest.kt index 2ae3237..82a5356 100644 --- a/app/src/test/java/org/fairscan/app/ui/screens/edit/MagnifyingGlassTest.kt +++ b/app/src/test/java/org/fairscan/app/ui/screens/crop/MagnifyingGlassTest.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import androidx.compose.ui.geometry.Offset import org.assertj.core.api.Assertions.assertThat diff --git a/app/src/test/java/org/fairscan/app/ui/screens/edit/QuadCoordinateUtilsTest.kt b/app/src/test/java/org/fairscan/app/ui/screens/crop/QuadCoordinateUtilsTest.kt similarity index 99% rename from app/src/test/java/org/fairscan/app/ui/screens/edit/QuadCoordinateUtilsTest.kt rename to app/src/test/java/org/fairscan/app/ui/screens/crop/QuadCoordinateUtilsTest.kt index 45762a7..bc09fb4 100644 --- a/app/src/test/java/org/fairscan/app/ui/screens/edit/QuadCoordinateUtilsTest.kt +++ b/app/src/test/java/org/fairscan/app/ui/screens/crop/QuadCoordinateUtilsTest.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import androidx.compose.ui.geometry.Offset import androidx.compose.ui.unit.IntSize diff --git a/app/src/test/java/org/fairscan/app/ui/screens/edit/QuadEditingHandlerTest.kt b/app/src/test/java/org/fairscan/app/ui/screens/crop/QuadEditingHandlerTest.kt similarity index 99% rename from app/src/test/java/org/fairscan/app/ui/screens/edit/QuadEditingHandlerTest.kt rename to app/src/test/java/org/fairscan/app/ui/screens/crop/QuadEditingHandlerTest.kt index 3fdb094..cb8dd77 100644 --- a/app/src/test/java/org/fairscan/app/ui/screens/edit/QuadEditingHandlerTest.kt +++ b/app/src/test/java/org/fairscan/app/ui/screens/crop/QuadEditingHandlerTest.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.ui.screens.edit +package org.fairscan.app.ui.screens.crop import androidx.compose.ui.geometry.Offset import androidx.compose.ui.unit.IntSize