Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4512f2a375 | ||
|
|
68442afa0f | ||
|
|
ddf4d0cbc3 | ||
|
|
4be185e428 | ||
|
|
f75e66ac19 | ||
|
|
abda781f02 | ||
|
|
c1533ec66d |
No files matched your search
+4
-3
@@ -33,7 +33,7 @@ android {
|
||||
minSdkVersion 28
|
||||
targetSdkVersion 33
|
||||
versionCode 180030
|
||||
versionName "1.8.5.3-alpha06"
|
||||
versionName "1.8.5.3-rc01"
|
||||
resConfigs 'zh', 'zh-rCN', 'zh-rHK', 'zh-rTW', 'es', 'ja', 'ko', 'fr', 'de', 'th'
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ android {
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = "1.4.0-dev-k1.8.0-33c0ad36f83"
|
||||
kotlinCompilerExtensionVersion = "1.4.0"
|
||||
}
|
||||
|
||||
namespace 'com.hippo.ehviewer'
|
||||
@@ -154,7 +154,8 @@ dependencies {
|
||||
implementation 'dev.rikka.rikkax.preference:simplemenu-preference:1.0.3'
|
||||
implementation 'dev.rikka.rikkax.material:material-preference:2.0.0'
|
||||
// https://coil-kt.github.io/coil/changelog/
|
||||
implementation 'io.coil-kt:coil:2.2.2'
|
||||
// implementation 'io.coil-kt:coil:2.2.2'
|
||||
implementation 'com.github.Ehviewer-Overhauled.coil:coil:d65881d'
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
|
||||
implementation 'org.jsoup:jsoup:1.15.3'
|
||||
}
|
||||
|
||||
@@ -28,41 +28,35 @@ import com.hippo.ehviewer.EhApplication
|
||||
import java.nio.ByteBuffer
|
||||
import kotlin.math.min
|
||||
|
||||
class Image private constructor(source: Source, private var releaseCall: (() -> Unit)? = null) {
|
||||
var mObtainedDrawable: Drawable?
|
||||
|
||||
init {
|
||||
mObtainedDrawable =
|
||||
ImageDecoder.decodeDrawable(source) { decoder: ImageDecoder, info: ImageInfo, _: Source ->
|
||||
decoder.setTargetColorSpace(colorSpace)
|
||||
decoder.setTargetSampleSize(
|
||||
min(
|
||||
info.size.width / (2 * screenWidth),
|
||||
info.size.height / (2 * screenHeight)
|
||||
).coerceAtLeast(1)
|
||||
)
|
||||
class Image private constructor(source: Source, private var src: ByteBufferSource?) {
|
||||
var mObtainedDrawable: Drawable? =
|
||||
ImageDecoder.decodeDrawable(source) { decoder: ImageDecoder, info: ImageInfo, _: Source ->
|
||||
decoder.setTargetColorSpace(colorSpace)
|
||||
decoder.setTargetSampleSize(
|
||||
min(
|
||||
info.size.width / (2 * screenWidth),
|
||||
info.size.height / (2 * screenHeight)
|
||||
).coerceAtLeast(1)
|
||||
)
|
||||
}.also {
|
||||
(it as? BitmapDrawable)?.run {
|
||||
src?.close()
|
||||
src = null
|
||||
}
|
||||
if (mObtainedDrawable is BitmapDrawable) {
|
||||
releaseCall?.invoke()
|
||||
releaseCall = null
|
||||
}
|
||||
}
|
||||
private set
|
||||
|
||||
val width: Int
|
||||
get() = mObtainedDrawable?.intrinsicWidth ?: 0
|
||||
val height: Int
|
||||
get() = mObtainedDrawable?.intrinsicHeight ?: 0
|
||||
val size: Int
|
||||
get() = mObtainedDrawable!!.run { intrinsicHeight * intrinsicWidth * 4 * if (this is Animatable) 4 else 1 }
|
||||
|
||||
@Synchronized
|
||||
fun recycle() {
|
||||
(mObtainedDrawable as? Animatable)?.run {
|
||||
stop()
|
||||
releaseCall?.invoke()
|
||||
releaseCall = null
|
||||
}
|
||||
(mObtainedDrawable as? BitmapDrawable)?.run { bitmap.recycle() }
|
||||
(mObtainedDrawable as? Animatable)?.stop()
|
||||
(mObtainedDrawable as? BitmapDrawable)?.bitmap?.recycle()
|
||||
mObtainedDrawable?.callback = null
|
||||
mObtainedDrawable = null
|
||||
src?.close()
|
||||
src = null
|
||||
}
|
||||
|
||||
companion object {
|
||||
@@ -82,9 +76,7 @@ class Image private constructor(source: Source, private var releaseCall: (() ->
|
||||
check(directBuffer.isDirect)
|
||||
rewriteGifSource(directBuffer)
|
||||
return runCatching {
|
||||
Image(ImageDecoder.createSource(directBuffer)) {
|
||||
src.close()
|
||||
}
|
||||
Image(ImageDecoder.createSource(directBuffer), src)
|
||||
}.onFailure {
|
||||
src.close()
|
||||
it.printStackTrace()
|
||||
|
||||
@@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat
|
||||
import coil.imageLoader
|
||||
import coil.request.Disposable
|
||||
import coil.request.ImageRequest
|
||||
import coil.size.Size
|
||||
import com.hippo.drawable.PreciselyClipDrawable
|
||||
import com.hippo.ehviewer.R
|
||||
|
||||
@@ -134,7 +135,8 @@ open class LoadImageView @JvmOverloads constructor(
|
||||
clearRetry()
|
||||
task?.dispose()
|
||||
mRequest =
|
||||
ImageRequest.Builder(context).data(url).memoryCacheKey(key).diskCacheKey(key).target(
|
||||
ImageRequest.Builder(context).data(url).memoryCacheKey(key).diskCacheKey(key)
|
||||
.size(Size.ORIGINAL).target(
|
||||
{ onWait() },
|
||||
{ onFailure() },
|
||||
{ onGetValue(it, isLoaded) }
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package eu.kanade.tachiyomi.ui.reader.loader
|
||||
|
||||
import android.graphics.drawable.Animatable
|
||||
import androidx.annotation.CallSuper
|
||||
import androidx.collection.LruCache
|
||||
import com.hippo.image.Image
|
||||
@@ -100,8 +99,7 @@ abstract class PageLoader {
|
||||
}
|
||||
|
||||
override fun sizeOf(key: Int, value: Image): Int {
|
||||
if (value.mObtainedDrawable is Animatable) return value.height * value.width * 15
|
||||
return value.height * value.width * 4
|
||||
return value.size
|
||||
}
|
||||
|
||||
override fun entryRemoved(evicted: Boolean, key: Int, oldValue: Image, newValue: Image?) {
|
||||
|
||||
Reference in new issue
Block a user