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 stream: (() -> InputStream)? = null,
|
||||||
var bg: Drawable? = null,
|
var bg: Drawable? = null,
|
||||||
var bgType: Int? = 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) {
|
) : 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
|
open lateinit var chapter: ReaderChapter
|
||||||
|
|
||||||
/** Value to check if a page is too wide to be doubled up */
|
/** 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
|
if (value == true) shiftedPage = false
|
||||||
}
|
}
|
||||||
|
|
||||||
val alonePage: Boolean
|
val alonePage: Boolean get() = fullPage == true || isolatedPage
|
||||||
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 =
|
fun isFromSamePage(page: ReaderPage): Boolean =
|
||||||
index == page.index && chapter.chapter.id == page.chapter.chapter.id
|
index == page.index && chapter.chapter.id == page.chapter.chapter.id
|
||||||
|
|
|
@ -738,15 +738,13 @@ class PagerPageHolder(
|
||||||
return supportHingeIfThere(imageBytes.inputStream())
|
return supportHingeIfThere(imageBytes.inputStream())
|
||||||
}
|
}
|
||||||
val isNotEndPage: ReaderPage.() -> Boolean =
|
val isNotEndPage: ReaderPage.() -> Boolean =
|
||||||
{ isEndPage != true || page.paddedPageConfidence > paddedPageConfidence }
|
{ isEndPage != true || (page.endPageConfidence ?: 0) > (endPageConfidence ?: 0) }
|
||||||
var earlyImageBitmap2: Bitmap? = null
|
var earlyImageBitmap2: Bitmap? = null
|
||||||
val isFirstPageNotEnd by lazy { pages?.get(0)?.let { it.isNotEndPage() } != false }
|
val isFirstPageNotEnd by lazy { pages?.get(0)?.let { it.isNotEndPage() } != false }
|
||||||
val isThirdPageNotEnd by lazy { pages?.getOrNull(2)?.let { it.isNotEndPage() } == true }
|
val isThirdPageNotEnd by lazy { pages?.getOrNull(2)?.let { it.isNotEndPage() } == true }
|
||||||
val shouldShiftAnyway = !viewer.activity.manuallyShiftedPages && page.isEndPage == true &&
|
val shouldShiftAnyway = !viewer.activity.manuallyShiftedPages && page.endPageConfidence == 3
|
||||||
page.paddedPageConfidence == 3
|
|
||||||
if (page.index <= 2 && page.isEndPage == null && page.fullPage == null) {
|
if (page.index <= 2 && page.isEndPage == null && page.fullPage == null) {
|
||||||
page.paddedPageConfidence = imageBitmap.isPagePadded(rightSide = !isLTR)
|
page.endPageConfidence = imageBitmap.isPagePadded(rightSide = !isLTR)
|
||||||
page.isEndPage = page.paddedPageConfidence > 0
|
|
||||||
if (extraPage?.index == 1 && extraPage?.isEndPage == null) {
|
if (extraPage?.index == 1 && extraPage?.isEndPage == null) {
|
||||||
earlyImageBitmap2 = setExtraPageBitmap(imageBytes2, isLTR)
|
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
|
// 2nd page shouldn't shift if the 1st page is more likely an end page
|
||||||
1 -> isFirstPageNotEnd
|
1 -> isFirstPageNotEnd
|
||||||
// 1st page shouldn't shift if the 2nd page is definitely an end page
|
// 1st page shouldn't shift if the 2nd page is definitely an end page
|
||||||
0 -> extraPage?.run { isEndPage == true && paddedPageConfidence == 3 } != true ||
|
0 -> extraPage?.endPageConfidence != 3 || page.endPageConfidence == 3
|
||||||
page.paddedPageConfidence == 3
|
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
|
@ -813,28 +810,20 @@ class PagerPageHolder(
|
||||||
closeStreams(imageStream, imageStream2)
|
closeStreams(imageStream, imageStream2)
|
||||||
extraPage?.let { extraPage ->
|
extraPage?.let { extraPage ->
|
||||||
val shouldSubShiftAnyway = !viewer.activity.manuallyShiftedPages &&
|
val shouldSubShiftAnyway = !viewer.activity.manuallyShiftedPages &&
|
||||||
extraPage.isStartPage == true && extraPage.paddedPageConfidence >= 2
|
extraPage.isStartPage == true && extraPage.endPageConfidence == 0
|
||||||
if (extraPage.index <= 2 && extraPage.paddedPageConfidence != 3 &&
|
if (extraPage.index <= 2 && extraPage.endPageConfidence != 3 &&
|
||||||
extraPage.isStartPage == null && extraPage.fullPage == null
|
extraPage.isStartPage == null && extraPage.fullPage == null
|
||||||
) {
|
) {
|
||||||
val startingConfidence = imageBitmap2.isPagePadded(rightSide = isLTR)
|
extraPage.startPageConfidence = 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
|
|
||||||
}
|
|
||||||
if (extraPage.isStartPage == true) {
|
if (extraPage.isStartPage == true) {
|
||||||
|
if (extraPage.endPageConfidence != null) {
|
||||||
|
extraPage.endPageConfidence = 0
|
||||||
|
}
|
||||||
shiftDoublePages(page.index == 0 || pages?.get(0)?.fullPage == true)
|
shiftDoublePages(page.index == 0 || pages?.get(0)?.fullPage == true)
|
||||||
this.extraPage = null
|
this.extraPage = null
|
||||||
return supportHingeIfThere(imageBytes.inputStream())
|
return supportHingeIfThere(imageBytes.inputStream())
|
||||||
}
|
}
|
||||||
} else if (shouldSubShiftAnyway && page.index == 1 && extraPage.isEndPage == false &&
|
} else if (shouldSubShiftAnyway && page.index == 1 && !viewer.config.shiftDoublePage) {
|
||||||
!viewer.config.shiftDoublePage
|
|
||||||
) {
|
|
||||||
shiftDoublePages(true)
|
shiftDoublePages(true)
|
||||||
return supportHingeIfThere(imageBytes.inputStream())
|
return supportHingeIfThere(imageBytes.inputStream())
|
||||||
}
|
}
|
||||||
|
@ -858,12 +847,11 @@ class PagerPageHolder(
|
||||||
val earlyImageBitmap2 = try {
|
val earlyImageBitmap2 = try {
|
||||||
BitmapFactory.decodeByteArray(imageBytes2, 0, imageBytes2.size)
|
BitmapFactory.decodeByteArray(imageBytes2, 0, imageBytes2.size)
|
||||||
} catch (_: Exception) {
|
} catch (_: Exception) {
|
||||||
null
|
return null
|
||||||
}
|
}
|
||||||
val paddedPageConfidence = earlyImageBitmap2?.isPagePadded(rightSide = !isLTR) ?: 0
|
val paddedPageConfidence = earlyImageBitmap2.isPagePadded(rightSide = !isLTR)
|
||||||
if (paddedPageConfidence == 3) {
|
if (paddedPageConfidence == 3) {
|
||||||
extraPage?.paddedPageConfidence = paddedPageConfidence
|
extraPage?.endPageConfidence = paddedPageConfidence
|
||||||
extraPage?.isEndPage = true
|
|
||||||
}
|
}
|
||||||
return earlyImageBitmap2
|
return earlyImageBitmap2
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,9 +188,8 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
|
||||||
(it as? ReaderPage)?.apply {
|
(it as? ReaderPage)?.apply {
|
||||||
shiftedPage = false
|
shiftedPage = false
|
||||||
firstHalf = null
|
firstHalf = null
|
||||||
isEndPage = null
|
endPageConfidence = null
|
||||||
isStartPage = null
|
startPageConfidence = null
|
||||||
paddedPageConfidence = 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (viewer.config.splitPages) {
|
if (viewer.config.splitPages) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue