Fix Using Crop in OCR by #1873

This commit is contained in:
T8RIN
2025-05-06 21:21:36 +03:00
parent e6f0104375
commit 99b0050cb0
3 changed files with 26 additions and 25 deletions

View File

@ -20,6 +20,7 @@ package ru.tech.imageresizershrinker.app.presentation.components.utils
import com.t8rin.logger.makeLog
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.bouncycastle.asn1.ASN1ObjectIdentifier
import org.bouncycastle.jce.provider.BouncyCastleProvider
@ -30,6 +31,8 @@ import java.security.Security
internal fun registerSecurityProviders() {
CoroutineScope(Dispatchers.Default).launch {
delay(1000)
initBouncyCastle()
HashingType.registerSecurityMessageDigests(

View File

@ -68,6 +68,7 @@ import ru.tech.imageresizershrinker.feature.recognize.text.presentation.componen
import ru.tech.imageresizershrinker.feature.recognize.text.presentation.components.RecognizeTextDownloadDataDialog
import ru.tech.imageresizershrinker.feature.recognize.text.presentation.components.RecognizeTextNoDataControls
import ru.tech.imageresizershrinker.feature.recognize.text.presentation.screenLogic.RecognizeTextComponent
import ru.tech.imageresizershrinker.feature.single_edit.presentation.components.CropEditOption
@Composable
@ -175,6 +176,8 @@ fun RecognizeTextContent(
}
)
var showCropper by rememberSaveable { mutableStateOf(false) }
AdaptiveLayoutScreen(
shouldDisableBackHandler = true,
title = {
@ -300,7 +303,10 @@ fun RecognizeTextContent(
},
showImagePreviewAsStickyHeader = isExtraction,
controls = {
RecognizeTextControls(component)
RecognizeTextControls(
component = component,
onShowCropper = { showCropper = true }
)
},
buttons = { actions ->
RecognizeTextButtons(
@ -329,4 +335,17 @@ fun RecognizeTextContent(
onCancelLoading = component::cancelSaving,
canCancel = component.isSaving
)
CropEditOption(
visible = showCropper,
onDismiss = { showCropper = false },
useScaffold = isPortrait,
bitmap = component.previewBitmap,
onGetBitmap = component::updateBitmap,
cropProperties = component.cropProperties,
setCropAspectRatio = component::setCropAspectRatio,
setCropMask = component::setCropMask,
selectedAspectRatio = component.selectedAspectRatio,
loadImage = component::loadImage
)
}

View File

@ -28,10 +28,6 @@ import androidx.compose.material.icons.rounded.CameraAlt
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
@ -46,23 +42,21 @@ import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.localImagePick
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberFileCreator
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberFilePicker
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker
import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState
import ru.tech.imageresizershrinker.core.ui.utils.navigation.Screen
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
import ru.tech.imageresizershrinker.core.ui.widget.controls.ImageTransformBar
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedIconButton
import ru.tech.imageresizershrinker.core.ui.widget.other.LinkPreviewList
import ru.tech.imageresizershrinker.feature.recognize.text.presentation.screenLogic.RecognizeTextComponent
import ru.tech.imageresizershrinker.feature.single_edit.presentation.components.CropEditOption
@Composable
internal fun RecognizeTextControls(
component: RecognizeTextComponent
component: RecognizeTextComponent,
onShowCropper: () -> Unit
) {
val type = component.type
val isExtraction = type is Screen.RecognizeText.Type.Extraction
val imagePickerMode = localImagePickerMode(Picker.Single)
val isPortrait by isPortraitOrientationAsState()
val context = LocalContext.current
val essentials = rememberLocalEssentials()
@ -137,31 +131,16 @@ internal fun RecognizeTextControls(
}
Spacer(Modifier.weight(1f))
}
var showCropper by rememberSaveable { mutableStateOf(false) }
EnhancedIconButton(
containerColor = MaterialTheme.colorScheme.mixedContainer,
contentColor = MaterialTheme.colorScheme.onMixedContainer,
onClick = {
showCropper = true
}
onClick = onShowCropper
) {
Icon(
imageVector = Icons.Rounded.CropSmall,
contentDescription = stringResource(R.string.crop)
)
}
CropEditOption(
visible = showCropper,
onDismiss = { showCropper = false },
useScaffold = isPortrait,
bitmap = component.previewBitmap,
onGetBitmap = component::updateBitmap,
cropProperties = component.cropProperties,
setCropAspectRatio = component::setCropAspectRatio,
setCropMask = component::setCropMask,
selectedAspectRatio = component.selectedAspectRatio,
loadImage = component::loadImage
)
}
Spacer(modifier = Modifier.height(8.dp))
}