diff --git a/app/src/main/java/org/fairscan/app/domain/ExportPreparation.kt b/app/src/main/java/org/fairscan/app/domain/ExportPreparation.kt index 82d53d3..dbd6842 100644 --- a/app/src/main/java/org/fairscan/app/domain/ExportPreparation.kt +++ b/app/src/main/java/org/fairscan/app/domain/ExportPreparation.kt @@ -27,10 +27,11 @@ fun interface JpegProvider { } data class PageToExport( - val metadata: PageMetadata?, + val page: ScanPage, val jpeg: JpegProvider, ) { fun estimatedDimensions(): EstimatedDimensions? { + val metadata = page.metadata if (metadata == null) return null val size = metadata.sourceSize @@ -40,7 +41,7 @@ data class PageToExport( val realDimensions = estimateRealDimensions( quad, size.width.toInt(), size.height.toInt(), metadata.opticalMeasures ).snapToStandardFormat() - return realDimensions.applyRotation(metadata.baseRotation) + return realDimensions.applyRotation(page.totalRotation()) } } @@ -60,11 +61,11 @@ suspend fun pagesToExport( val pages = imageRepository.pages() return when (exportQuality) { ExportQuality.BALANCED -> pages.map { - PageToExport(it.metadata) { jpeg(it, imageRepository) } + PageToExport(it) { jpeg(it, imageRepository) } } ExportQuality.LOW -> pages.map { page -> - PageToExport(page.metadata) { + PageToExport(page) { resizeJpegBytesForMaxPixels( jpeg = jpeg(page, imageRepository), maxPixels = exportQuality.maxPixels.toDouble(), @@ -74,7 +75,7 @@ suspend fun pagesToExport( } ExportQuality.HIGH -> pages.map { page -> - PageToExport(page.metadata) { + PageToExport(page) { val source = imageRepository.source(page.id) val metadata = page.metadata val colorMode = page.colorMode diff --git a/app/src/test/java/org/fairscan/app/data/FileManagerTest.kt b/app/src/test/java/org/fairscan/app/data/FileManagerTest.kt index 62b961d..9b20532 100644 --- a/app/src/test/java/org/fairscan/app/data/FileManagerTest.kt +++ b/app/src/test/java/org/fairscan/app/data/FileManagerTest.kt @@ -18,6 +18,8 @@ import kotlinx.coroutines.test.runTest import org.assertj.core.api.Assertions.assertThat import org.fairscan.app.domain.Jpeg import org.fairscan.app.domain.PageToExport +import org.fairscan.app.domain.Rotation +import org.fairscan.app.domain.ScanPage import org.junit.Test import java.io.File import java.io.OutputStream @@ -81,7 +83,7 @@ class FileManagerTest { } val manager = FileManager(pdfDir, externalDir, fakePdfWriter) val pages = listOf(byteArrayOf(0x01, 0x02), byteArrayOf(0x11)) - .map { PageToExport(null) { Jpeg(it) } } + .map { PageToExport(ScanPage("1", Rotation.R0, null, 1, null)) { Jpeg(it) } } val pdf = manager.generatePdf(pages) assertThat(pdf.pageCount).isEqualTo(2) assertThat(pdf.sizeInBytes).isEqualTo(3)