diff --git a/app/src/main/java/org/fairscan/app/MainViewModel.kt b/app/src/main/java/org/fairscan/app/MainViewModel.kt index 2740cd1..db07988 100644 --- a/app/src/main/java/org/fairscan/app/MainViewModel.kt +++ b/app/src/main/java/org/fairscan/app/MainViewModel.kt @@ -63,7 +63,7 @@ class MainViewModel(val imageRepository: ImageRepository, launchMode: LaunchMode _pages.map { pages -> pages.map { val jpeg = imageRepository.getThumbnail(it.key()) - PageThumbnail(it.key(), jpeg?.toBitmap()) + PageThumbnail(it.key(), jpeg) }.toImmutableList() } .flowOn(Dispatchers.IO) diff --git a/app/src/main/java/org/fairscan/app/data/ImageRepository.kt b/app/src/main/java/org/fairscan/app/data/ImageRepository.kt index 3b45627..ab6bd62 100644 --- a/app/src/main/java/org/fairscan/app/data/ImageRepository.kt +++ b/app/src/main/java/org/fairscan/app/data/ImageRepository.kt @@ -67,7 +67,7 @@ class ImageRepository( private val processingJobs = synchronizedMap(mutableMapOf>()) private val imageCache = createLruCache>(maxEntries = 50) - private val thumbnailCache = createLruCache>(maxEntries = 200) + private val thumbnailCache = createLruCache>(maxEntries = 1000) private fun createLruCache(maxEntries: Int): MutableMap = synchronizedMap(object : LinkedHashMap(16, 0.75f, true) { diff --git a/app/src/main/java/org/fairscan/app/ui/PreviewUtils.kt b/app/src/main/java/org/fairscan/app/ui/PreviewUtils.kt index 0fc6e41..2c6ae74 100644 --- a/app/src/main/java/org/fairscan/app/ui/PreviewUtils.kt +++ b/app/src/main/java/org/fairscan/app/ui/PreviewUtils.kt @@ -15,11 +15,10 @@ package org.fairscan.app.ui import android.content.Context -import android.graphics.Bitmap -import android.graphics.BitmapFactory import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList +import org.fairscan.app.domain.Jpeg import org.fairscan.app.domain.PageViewKey import org.fairscan.app.domain.Rotation import org.fairscan.app.ui.state.DocumentUiModel @@ -41,8 +40,5 @@ fun fakeDocument(pageIds: ImmutableList, context: Context): DocumentUiMo return DocumentUiModel(pageKeys) } -fun fakeImage(id: String, context: Context): Bitmap = - context.assets.open("${id}.jpg").use { input -> - BitmapFactory.decodeStream(input) - } - +fun fakeImage(id: String, context: Context): Jpeg = + Jpeg(context.assets.open("${id}.jpg").readBytes()) diff --git a/app/src/main/java/org/fairscan/app/ui/screens/document/DocumentScreen.kt b/app/src/main/java/org/fairscan/app/ui/screens/document/DocumentScreen.kt index 5930fdf..498986e 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/document/DocumentScreen.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/document/DocumentScreen.kt @@ -339,7 +339,7 @@ private fun BottomBar( @Preview(name = "Landscape", showBackground = true, widthDp = 640, heightDp = 320) fun DocumentScreenPreview() { FairScanTheme { - val image = fakeImage("gallica.bnf.fr-bpt6k5530456s-1", LocalContext.current) + val image = fakeImage("gallica.bnf.fr-bpt6k5530456s-1", LocalContext.current).toBitmap() val document = fakeDocument( listOf(1, 2).map { "gallica.bnf.fr-bpt6k5530456s-$it" }.toImmutableList(), LocalContext.current diff --git a/app/src/main/java/org/fairscan/app/ui/state/DocumentUiModel.kt b/app/src/main/java/org/fairscan/app/ui/state/DocumentUiModel.kt index 1a47814..c0dea9f 100644 --- a/app/src/main/java/org/fairscan/app/ui/state/DocumentUiModel.kt +++ b/app/src/main/java/org/fairscan/app/ui/state/DocumentUiModel.kt @@ -17,6 +17,7 @@ package org.fairscan.app.ui.state import android.graphics.Bitmap import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf +import org.fairscan.app.domain.Jpeg import org.fairscan.app.domain.PageViewKey data class DocumentUiModel( @@ -32,11 +33,11 @@ data class DocumentUiModel( return pages.lastIndex } fun thumbnail(index: Int): Bitmap? { - return pages[index].thumbnail + return pages[index].thumbnail?.toBitmap() } } data class PageThumbnail( val key: PageViewKey, - val thumbnail: Bitmap?, + val thumbnail: Jpeg?, )