mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Refactor padded page confidence fields
This commit is contained in:
parent
ea264d7ed0
commit
bccb7c0e03
3 changed files with 28 additions and 40 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue