diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt index 2df74a5798..d6d78b4ff2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt @@ -11,17 +11,17 @@ open class ReaderPage( var stream: (() -> InputStream)? = null, var bg: Drawable? = null, var bgType: Int? = null, - /** Value to check if this page is used to as if it was too wide */ - var shiftedPage: Boolean = false, - /** Value to check if a page is can be doubled up, but can't because the next page is too wide */ - var isolatedPage: Boolean = false, - var firstHalf: Boolean? = null, - var longPage: Boolean? = null, - var isEndPage: Boolean? = null, - var paddedPageConfidence: Int = 0, - var isStartPage: Boolean? = null, ) : Page(index, url, imageUrl, null) { + /** Value to check if this page is used to as if it was too wide */ + var shiftedPage: Boolean = false + + /** Value to check if a page is can be doubled up, but can't because the next page is too wide */ + var isolatedPage: Boolean = false + var firstHalf: Boolean? = null + var longPage: Boolean? = null + var endPageConfidence: Int? = null + var startPageConfidence: Int? = null open lateinit var chapter: ReaderChapter /** Value to check if a page is too wide to be doubled up */ @@ -32,8 +32,9 @@ open class ReaderPage( if (value == true) shiftedPage = false } - val alonePage: Boolean - get() = fullPage == true || isolatedPage + val alonePage: Boolean get() = fullPage == true || isolatedPage + val isEndPage get() = endPageConfidence?.let { it > 0 && it > (startPageConfidence ?: 0) } + val isStartPage get() = startPageConfidence?.let { it > 0 && it > (endPageConfidence ?: 0) } fun isFromSamePage(page: ReaderPage): Boolean = index == page.index && chapter.chapter.id == page.chapter.chapter.id diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt index bb50cefcd6..fe39bc941a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt @@ -738,15 +738,13 @@ class PagerPageHolder( return supportHingeIfThere(imageBytes.inputStream()) } val isNotEndPage: ReaderPage.() -> Boolean = - { isEndPage != true || page.paddedPageConfidence > paddedPageConfidence } + { isEndPage != true || (page.endPageConfidence ?: 0) > (endPageConfidence ?: 0) } var earlyImageBitmap2: Bitmap? = null val isFirstPageNotEnd by lazy { pages?.get(0)?.let { it.isNotEndPage() } != false } val isThirdPageNotEnd by lazy { pages?.getOrNull(2)?.let { it.isNotEndPage() } == true } - val shouldShiftAnyway = !viewer.activity.manuallyShiftedPages && page.isEndPage == true && - page.paddedPageConfidence == 3 + val shouldShiftAnyway = !viewer.activity.manuallyShiftedPages && page.endPageConfidence == 3 if (page.index <= 2 && page.isEndPage == null && page.fullPage == null) { - page.paddedPageConfidence = imageBitmap.isPagePadded(rightSide = !isLTR) - page.isEndPage = page.paddedPageConfidence > 0 + page.endPageConfidence = imageBitmap.isPagePadded(rightSide = !isLTR) if (extraPage?.index == 1 && extraPage?.isEndPage == null) { earlyImageBitmap2 = setExtraPageBitmap(imageBytes2, isLTR) } @@ -762,8 +760,7 @@ class PagerPageHolder( // 2nd page shouldn't shift if the 1st page is more likely an end page 1 -> isFirstPageNotEnd // 1st page shouldn't shift if the 2nd page is definitely an end page - 0 -> extraPage?.run { isEndPage == true && paddedPageConfidence == 3 } != true || - page.paddedPageConfidence == 3 + 0 -> extraPage?.endPageConfidence != 3 || page.endPageConfidence == 3 else -> false } ) { @@ -813,28 +810,20 @@ class PagerPageHolder( closeStreams(imageStream, imageStream2) extraPage?.let { extraPage -> val shouldSubShiftAnyway = !viewer.activity.manuallyShiftedPages && - extraPage.isStartPage == true && extraPage.paddedPageConfidence >= 2 - if (extraPage.index <= 2 && extraPage.paddedPageConfidence != 3 && + extraPage.isStartPage == true && extraPage.endPageConfidence == 0 + if (extraPage.index <= 2 && extraPage.endPageConfidence != 3 && extraPage.isStartPage == null && extraPage.fullPage == null ) { - val startingConfidence = imageBitmap2.isPagePadded(rightSide = isLTR) - if (startingConfidence > extraPage.paddedPageConfidence) { - extraPage.paddedPageConfidence = startingConfidence - extraPage.isStartPage = extraPage.paddedPageConfidence > 0 - if (extraPage.isEndPage == true) { - extraPage.isEndPage = false - } - } else { - extraPage.isStartPage = false - } + extraPage.startPageConfidence = imageBitmap2.isPagePadded(rightSide = isLTR) if (extraPage.isStartPage == true) { + if (extraPage.endPageConfidence != null) { + extraPage.endPageConfidence = 0 + } shiftDoublePages(page.index == 0 || pages?.get(0)?.fullPage == true) this.extraPage = null return supportHingeIfThere(imageBytes.inputStream()) } - } else if (shouldSubShiftAnyway && page.index == 1 && extraPage.isEndPage == false && - !viewer.config.shiftDoublePage - ) { + } else if (shouldSubShiftAnyway && page.index == 1 && !viewer.config.shiftDoublePage) { shiftDoublePages(true) return supportHingeIfThere(imageBytes.inputStream()) } @@ -858,12 +847,11 @@ class PagerPageHolder( val earlyImageBitmap2 = try { BitmapFactory.decodeByteArray(imageBytes2, 0, imageBytes2.size) } catch (_: Exception) { - null + return null } - val paddedPageConfidence = earlyImageBitmap2?.isPagePadded(rightSide = !isLTR) ?: 0 + val paddedPageConfidence = earlyImageBitmap2.isPagePadded(rightSide = !isLTR) if (paddedPageConfidence == 3) { - extraPage?.paddedPageConfidence = paddedPageConfidence - extraPage?.isEndPage = true + extraPage?.endPageConfidence = paddedPageConfidence } return earlyImageBitmap2 } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt index 14e4194a81..50f9a11f06 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt @@ -188,9 +188,8 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { (it as? ReaderPage)?.apply { shiftedPage = false firstHalf = null - isEndPage = null - isStartPage = null - paddedPageConfidence = 0 + endPageConfidence = null + startPageConfidence = null } } if (viewer.config.splitPages) {