Skip to content

Commit a1b2201

Browse files
committed
Upgraded to 2.0.7, upgraded coil
1 parent 153090a commit a1b2201

File tree

5 files changed

+86
-54
lines changed

5 files changed

+86
-54
lines changed

app/src/main/java/com/awxkee/avif/coil/MainActivity.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import android.os.Build
55
import android.os.Bundle
66
import androidx.appcompat.app.AppCompatActivity
77
import androidx.core.net.toUri
8-
import coil.imageLoader
9-
import coil.load
10-
import coil.util.DebugLogger
8+
import coil3.imageLoader
9+
import coil3.load
10+
import coil3.request.bitmapConfig
11+
import coil3.util.DebugLogger
1112
import com.awxkee.avif.coil.databinding.ActivityMainBinding
1213
import com.github.awxkee.avifcoil.decoder.animation.AnimatedAvifDecoder
1314

avifcoillibrary/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,6 @@ dependencies {
6363
testImplementation("junit:junit:4.13.2")
6464
androidTestImplementation("androidx.test.ext:junit:1.1.5")
6565
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
66-
api("io.coil-kt:coil:2.7.0")
67-
api("com.github.awxkee:avif-coder:2.0.6")
66+
api("io.coil-kt.coil3:coil:3.0.2")
67+
api("com.github.awxkee:avif-coder:2.0.7")
6868
}

avifcoillibrary/src/main/java/com/github/awxkee/avifcoil/decoder/HeifDecoder.kt

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,27 @@ package com.github.awxkee.avifcoil.decoder
3131
import android.graphics.Bitmap
3232
import android.graphics.drawable.BitmapDrawable
3333
import android.os.Build
34-
import coil.ImageLoader
35-
import coil.decode.DecodeResult
36-
import coil.decode.Decoder
37-
import coil.fetch.SourceResult
38-
import coil.request.Options
39-
import coil.size.Scale
40-
import coil.size.pxOrElse
34+
import coil3.ImageLoader
35+
import coil3.asImage
36+
import coil3.decode.DecodeResult
37+
import coil3.decode.Decoder
38+
import coil3.fetch.SourceFetchResult
39+
import coil3.request.Options
40+
import coil3.request.allowHardware
41+
import coil3.request.allowRgb565
42+
import coil3.request.bitmapConfig
43+
import coil3.size.Scale
44+
import coil3.size.ScaleDrawable
45+
import coil3.size.Size
46+
import coil3.size.pxOrElse
4147
import com.radzivon.bartoshyk.avif.coder.HeifCoder
4248
import com.radzivon.bartoshyk.avif.coder.PreferredColorConfig
4349
import com.radzivon.bartoshyk.avif.coder.ScaleMode
4450
import kotlinx.coroutines.runInterruptible
4551
import okio.ByteString.Companion.encodeUtf8
4652

4753
class HeifDecoder(
48-
private val source: SourceResult,
54+
private val source: SourceFetchResult,
4955
private val options: Options,
5056
private val imageLoader: ImageLoader,
5157
private val exceptionLogger: ((Exception) -> Unit)? = null,
@@ -58,31 +64,39 @@ class HeifDecoder(
5864
// ColorSpace is preferred to be ignored due to lib is trying to handle all color profile by itself
5965
val sourceData = source.source.source().readByteArray()
6066

61-
var mPreferredColorConfig: PreferredColorConfig = when (options.config) {
67+
var mPreferredColorConfig: PreferredColorConfig = when (options.bitmapConfig) {
6268
Bitmap.Config.ALPHA_8 -> PreferredColorConfig.RGBA_8888
6369
Bitmap.Config.RGB_565 -> if (options.allowRgb565) PreferredColorConfig.RGB_565 else PreferredColorConfig.DEFAULT
6470
Bitmap.Config.ARGB_8888 -> PreferredColorConfig.RGBA_8888
65-
else -> PreferredColorConfig.DEFAULT
71+
else -> {
72+
if (options.allowHardware) {
73+
PreferredColorConfig.DEFAULT
74+
} else {
75+
PreferredColorConfig.RGBA_8888
76+
}
77+
}
6678
}
67-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && options.config == Bitmap.Config.RGBA_F16) {
79+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && options.bitmapConfig == Bitmap.Config.RGBA_F16) {
6880
mPreferredColorConfig = PreferredColorConfig.RGBA_F16
69-
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && options.config == Bitmap.Config.HARDWARE) {
81+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && options.bitmapConfig == Bitmap.Config.HARDWARE) {
7082
mPreferredColorConfig = PreferredColorConfig.HARDWARE
71-
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && options.config == Bitmap.Config.RGBA_1010102) {
83+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && options.bitmapConfig == Bitmap.Config.RGBA_1010102) {
7284
mPreferredColorConfig = PreferredColorConfig.RGBA_1010102
7385
}
7486

75-
if (options.size == coil.size.Size.ORIGINAL) {
87+
if (options.size == Size.ORIGINAL) {
7688
val originalImage =
7789
coder.decode(
7890
sourceData,
7991
preferredColorConfig = mPreferredColorConfig
8092
)
8193
return@runInterruptible DecodeResult(
82-
BitmapDrawable(
83-
options.context.resources,
84-
originalImage
85-
), false
94+
ScaleDrawable(
95+
BitmapDrawable(
96+
options.context.resources,
97+
originalImage
98+
), options.scale
99+
).asImage(), false
86100
)
87101
}
88102

@@ -102,10 +116,12 @@ class HeifDecoder(
102116
scaleMode,
103117
)
104118
return@runInterruptible DecodeResult(
105-
BitmapDrawable(
106-
options.context.resources,
107-
originalImage
108-
), true
119+
ScaleDrawable(
120+
BitmapDrawable(
121+
options.context.resources,
122+
originalImage
123+
), options.scale
124+
).asImage(), true
109125
)
110126
} catch (e: Exception) {
111127
exceptionLogger?.invoke(e)
@@ -115,7 +131,7 @@ class HeifDecoder(
115131

116132
class Factory : Decoder.Factory {
117133
override fun create(
118-
result: SourceResult,
134+
result: SourceFetchResult,
119135
options: Options,
120136
imageLoader: ImageLoader
121137
): Decoder? {

avifcoillibrary/src/main/java/com/github/awxkee/avifcoil/decoder/animation/AnimatedAvifDecoder.kt

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,27 @@ import android.graphics.Bitmap
3232
import android.graphics.drawable.BitmapDrawable
3333
import android.graphics.drawable.Drawable
3434
import android.os.Build
35-
import coil.ImageLoader
36-
import coil.decode.DecodeResult
37-
import coil.decode.Decoder
38-
import coil.fetch.SourceResult
39-
import coil.request.Options
40-
import coil.size.Scale
41-
import coil.size.Size
42-
import coil.size.pxOrElse
35+
import coil3.ImageLoader
36+
import coil3.asImage
37+
import coil3.decode.DecodeResult
38+
import coil3.decode.Decoder
39+
import coil3.fetch.SourceFetchResult
40+
import coil3.request.Options
41+
import coil3.request.allowHardware
42+
import coil3.request.allowRgb565
43+
import coil3.request.bitmapConfig
44+
import coil3.size.Scale
45+
import coil3.size.ScaleDrawable
46+
import coil3.size.Size
47+
import coil3.size.pxOrElse
4348
import com.radzivon.bartoshyk.avif.coder.AvifAnimatedDecoder
4449
import com.radzivon.bartoshyk.avif.coder.PreferredColorConfig
4550
import com.radzivon.bartoshyk.avif.coder.ScaleMode
4651
import kotlinx.coroutines.runInterruptible
4752
import okio.ByteString.Companion.encodeUtf8
4853

4954
public class AnimatedAvifDecoder(
50-
private val source: SourceResult,
55+
private val source: SourceFetchResult,
5156
private val options: Options,
5257
private val preheatFrames: Int,
5358
private val exceptionLogger: ((Exception) -> Unit)? = null,
@@ -58,27 +63,35 @@ public class AnimatedAvifDecoder(
5863
// ColorSpace is preferred to be ignored due to lib is trying to handle all color profile by itself
5964
val sourceData = source.source.source().readByteArray()
6065

61-
var mPreferredColorConfig: PreferredColorConfig = when (options.config) {
66+
var mPreferredColorConfig: PreferredColorConfig = when (options.bitmapConfig) {
6267
Bitmap.Config.ALPHA_8 -> PreferredColorConfig.RGBA_8888
6368
Bitmap.Config.RGB_565 -> if (options.allowRgb565) PreferredColorConfig.RGB_565 else PreferredColorConfig.DEFAULT
6469
Bitmap.Config.ARGB_8888 -> PreferredColorConfig.RGBA_8888
65-
else -> PreferredColorConfig.DEFAULT
70+
else -> {
71+
if (options.allowHardware) {
72+
PreferredColorConfig.DEFAULT
73+
} else {
74+
PreferredColorConfig.RGBA_8888
75+
}
76+
}
6677
}
67-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && options.config == Bitmap.Config.RGBA_F16) {
78+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && options.bitmapConfig == Bitmap.Config.RGBA_F16) {
6879
mPreferredColorConfig = PreferredColorConfig.RGBA_F16
69-
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && options.config == Bitmap.Config.HARDWARE) {
80+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && options.bitmapConfig == Bitmap.Config.HARDWARE) {
7081
mPreferredColorConfig = PreferredColorConfig.HARDWARE
71-
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && options.config == Bitmap.Config.RGBA_1010102) {
82+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && options.bitmapConfig == Bitmap.Config.RGBA_1010102) {
7283
mPreferredColorConfig = PreferredColorConfig.RGBA_1010102
7384
}
7485

7586
if (options.size == Size.ORIGINAL) {
7687
val originalImage = AvifAnimatedDecoder(sourceData)
7788
return@runInterruptible DecodeResult(
78-
drawable = originalImage.drawable(
79-
colorConfig = mPreferredColorConfig,
80-
scaleMode = ScaleMode.FIT,
81-
),
89+
ScaleDrawable(
90+
originalImage.drawable(
91+
colorConfig = mPreferredColorConfig,
92+
scaleMode = ScaleMode.FIT,
93+
), options.scale
94+
).asImage(),
8295
isSampled = false
8396
)
8497
}
@@ -93,12 +106,14 @@ public class AnimatedAvifDecoder(
93106
val originalImage = AvifAnimatedDecoder(sourceData)
94107

95108
DecodeResult(
96-
drawable = originalImage.drawable(
97-
dstWidth = dstWidth,
98-
dstHeight = dstHeight,
99-
colorConfig = mPreferredColorConfig,
100-
scaleMode = scaleMode
101-
),
109+
ScaleDrawable(
110+
originalImage.drawable(
111+
dstWidth = dstWidth,
112+
dstHeight = dstHeight,
113+
colorConfig = mPreferredColorConfig,
114+
scaleMode = scaleMode
115+
), options.scale
116+
).asImage(),
102117
isSampled = true
103118
)
104119
} catch (e: Exception) {
@@ -152,7 +167,7 @@ public class AnimatedAvifDecoder(
152167
) : Decoder.Factory {
153168

154169
override fun create(
155-
result: SourceResult,
170+
result: SourceFetchResult,
156171
options: Options,
157172
imageLoader: ImageLoader,
158173
): Decoder? {

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22
plugins {
3-
id("com.android.application") version "8.7.1" apply false
3+
id("com.android.application") version "8.7.2" apply false
44
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
55
}

0 commit comments

Comments
 (0)