|
|
@ -25,10 +25,12 @@ import kotlinx.coroutines.flow.collectLatest
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
import kotlinx.coroutines.supervisorScope
|
|
|
|
import kotlinx.coroutines.supervisorScope
|
|
|
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
|
|
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
|
|
|
|
|
|
|
import logcat.LogPriority
|
|
|
|
import tachiyomi.core.util.lang.launchIO
|
|
|
|
import tachiyomi.core.util.lang.launchIO
|
|
|
|
import tachiyomi.core.util.lang.withIOContext
|
|
|
|
import tachiyomi.core.util.lang.withIOContext
|
|
|
|
import tachiyomi.core.util.lang.withUIContext
|
|
|
|
import tachiyomi.core.util.lang.withUIContext
|
|
|
|
import tachiyomi.core.util.system.ImageUtil
|
|
|
|
import tachiyomi.core.util.system.ImageUtil
|
|
|
|
|
|
|
|
import tachiyomi.core.util.system.logcat
|
|
|
|
import java.io.BufferedInputStream
|
|
|
|
import java.io.BufferedInputStream
|
|
|
|
import java.io.InputStream
|
|
|
|
import java.io.InputStream
|
|
|
|
|
|
|
|
|
|
|
@ -234,19 +236,24 @@ class WebtoonPageHolder(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun onStripSplit(imageStream: BufferedInputStream): InputStream {
|
|
|
|
private fun onStripSplit(imageStream: BufferedInputStream): InputStream {
|
|
|
|
// If we have reached this point [page] and its stream shouldn't be null
|
|
|
|
try {
|
|
|
|
val page = page!!
|
|
|
|
// If we have reached this point [page] and its stream shouldn't be null
|
|
|
|
val stream = page.stream!!
|
|
|
|
val page = page!!
|
|
|
|
val splitData = ImageUtil.getSplitDataForStream(imageStream).toMutableList()
|
|
|
|
val stream = page.stream!!
|
|
|
|
val currentSplitData = splitData.removeFirst()
|
|
|
|
val splitData = ImageUtil.getSplitDataForStream(imageStream).toMutableList()
|
|
|
|
val newPages = splitData.map {
|
|
|
|
val currentSplitData = splitData.removeFirst()
|
|
|
|
StencilPage(page) { ImageUtil.splitStrip(it, stream) }
|
|
|
|
val newPages = splitData.map {
|
|
|
|
}
|
|
|
|
StencilPage(page) { ImageUtil.splitStrip(it, stream) }
|
|
|
|
return ImageUtil.splitStrip(currentSplitData) { imageStream }
|
|
|
|
|
|
|
|
.also {
|
|
|
|
|
|
|
|
// Running [onLongStripSplit] first results in issues with splitting
|
|
|
|
|
|
|
|
viewer.onLongStripSplit(page, newPages)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return ImageUtil.splitStrip(currentSplitData) { imageStream }
|
|
|
|
|
|
|
|
.also {
|
|
|
|
|
|
|
|
// Running [onLongStripSplit] first results in issues with splitting
|
|
|
|
|
|
|
|
viewer.onLongStripSplit(page, newPages)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (e: Exception) {
|
|
|
|
|
|
|
|
logcat(LogPriority.ERROR, e) { "Failed to split image" }
|
|
|
|
|
|
|
|
return imageStream
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|