mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Fixes for double page mode when reading .rar chapters
Fixes #1478 somewhat
This commit is contained in:
parent
5139e98dea
commit
908fa3bfa1
3 changed files with 9 additions and 21 deletions
|
@ -42,18 +42,16 @@ class RarPageLoader(file: File) : PageLoader() {
|
|||
* comparator.
|
||||
*/
|
||||
override fun getPages(): Observable<List<ReaderPage>> {
|
||||
return archive.fileHeaders
|
||||
return archive.fileHeaders.asSequence()
|
||||
.filter { !it.isDirectory && ImageUtil.isImage(it.fileName) { archive.getInputStream(it) } }
|
||||
.sortedWith { f1, f2 -> f1.fileName.compareToCaseInsensitiveNaturalOrder(f2.fileName) }
|
||||
.mapIndexed { i, header ->
|
||||
val streamFn = { getStream(header) }
|
||||
|
||||
ReaderPage(i).apply {
|
||||
stream = streamFn
|
||||
stream = { getStream(header) }
|
||||
status = Page.READY
|
||||
}
|
||||
}
|
||||
.let { Observable.just(it) }
|
||||
.let { Observable.just(it.toList()) }
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -492,7 +492,7 @@ class PagerPageHolder(
|
|||
.fromCallable {
|
||||
val stream = streamFn().buffered(16)
|
||||
|
||||
val stream2 = if (extraPage != null) streamFn2?.invoke()?.buffered(16) else null
|
||||
val stream2 = streamFn2?.invoke()?.buffered(16)
|
||||
openStream = this@PagerPageHolder.mergeOrSplitPages(stream, stream2)
|
||||
ImageUtil.isAnimatedAndSupported(stream) ||
|
||||
if (stream2 != null) ImageUtil.isAnimatedAndSupported(stream2) else false
|
||||
|
@ -781,16 +781,6 @@ class PagerPageHolder(
|
|||
return supportHingeIfThere(imageStream)
|
||||
}
|
||||
if (page.fullPage == true) return supportHingeIfThere(imageStream)
|
||||
if (ImageUtil.isAnimatedAndSupported(imageStream)) {
|
||||
page.fullPage = true
|
||||
splitDoublePages()
|
||||
return imageStream
|
||||
} else if (ImageUtil.isAnimatedAndSupported(imageStream2)) {
|
||||
page.isolatedPage = true
|
||||
extraPage?.fullPage = true
|
||||
splitDoublePages()
|
||||
return supportHingeIfThere(imageStream)
|
||||
}
|
||||
val imageBytes = imageStream.readBytes()
|
||||
val imageBitmap = try {
|
||||
BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size)
|
||||
|
@ -800,7 +790,7 @@ class PagerPageHolder(
|
|||
page.fullPage = true
|
||||
splitDoublePages()
|
||||
Timber.e("Cannot combine pages ${e.message}")
|
||||
return imageBytes.inputStream()
|
||||
return supportHingeIfThere(imageBytes.inputStream())
|
||||
}
|
||||
scope?.launchUI { progressBar.setProgress(96) }
|
||||
val height = imageBitmap.height
|
||||
|
@ -824,7 +814,7 @@ class PagerPageHolder(
|
|||
page.isolatedPage = true
|
||||
splitDoublePages()
|
||||
Timber.e("Cannot combine pages ${e.message}")
|
||||
return imageBytes.inputStream()
|
||||
return supportHingeIfThere(imageBytes.inputStream())
|
||||
}
|
||||
scope?.launchUI { progressBar.setProgress(97) }
|
||||
val height2 = imageBitmap2.height
|
||||
|
|
|
@ -53,8 +53,8 @@ object ImageUtil {
|
|||
}
|
||||
|
||||
fun findImageType(stream: InputStream): ImageType? {
|
||||
try {
|
||||
return when (getImageType(stream)?.format) {
|
||||
return try {
|
||||
when (getImageType(stream)?.format) {
|
||||
Format.Avif -> ImageType.AVIF
|
||||
Format.Gif -> ImageType.GIF
|
||||
Format.Heif -> ImageType.HEIF
|
||||
|
@ -65,8 +65,8 @@ object ImageUtil {
|
|||
else -> null
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
null
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun resizeBitMapDrawable(drawable: Drawable, resources: Resources?, size: Int): Drawable? {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue