Skip to content

Commit c17b0d6

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents 1ab6b2e + 8085e38 commit c17b0d6

File tree

2 files changed

+41
-49
lines changed

2 files changed

+41
-49
lines changed

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

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
package com.github.awxkee.avifcoil.decoder
3030

3131
import android.graphics.Bitmap
32-
import android.graphics.drawable.BitmapDrawable
3332
import android.os.Build
3433
import coil3.ImageLoader
3534
import coil3.asImage
@@ -41,7 +40,6 @@ import coil3.request.allowHardware
4140
import coil3.request.allowRgb565
4241
import coil3.request.bitmapConfig
4342
import coil3.size.Scale
44-
import coil3.size.ScaleDrawable
4543
import coil3.size.Size
4644
import coil3.size.pxOrElse
4745
import com.radzivon.bartoshyk.avif.coder.HeifCoder
@@ -53,7 +51,6 @@ import okio.ByteString.Companion.encodeUtf8
5351
class HeifDecoder(
5452
private val source: SourceFetchResult,
5553
private val options: Options,
56-
private val imageLoader: ImageLoader,
5754
private val exceptionLogger: ((Exception) -> Unit)? = null,
5855
) : Decoder {
5956

@@ -85,18 +82,14 @@ class HeifDecoder(
8582
}
8683

8784
if (options.size == Size.ORIGINAL) {
88-
val originalImage =
89-
coder.decode(
90-
sourceData,
91-
preferredColorConfig = mPreferredColorConfig
92-
)
85+
val originalImage = coder.decode(
86+
byteArray = sourceData,
87+
preferredColorConfig = mPreferredColorConfig
88+
)
89+
9390
return@runInterruptible DecodeResult(
94-
ScaleDrawable(
95-
BitmapDrawable(
96-
options.context.resources,
97-
originalImage
98-
), options.scale
99-
).asImage(), false
91+
image = originalImage.asImage(),
92+
isSampled = false
10093
)
10194
}
10295

@@ -107,21 +100,17 @@ class HeifDecoder(
107100
Scale.FIT -> ScaleMode.FIT
108101
}
109102

110-
val originalImage =
111-
coder.decodeSampled(
112-
sourceData,
113-
dstWidth,
114-
dstHeight,
115-
preferredColorConfig = mPreferredColorConfig,
116-
scaleMode,
117-
)
103+
val originalImage = coder.decodeSampled(
104+
byteArray = sourceData,
105+
scaledWidth = dstWidth,
106+
scaledHeight = dstHeight,
107+
preferredColorConfig = mPreferredColorConfig,
108+
scaleMode = scaleMode,
109+
)
110+
118111
return@runInterruptible DecodeResult(
119-
ScaleDrawable(
120-
BitmapDrawable(
121-
options.context.resources,
122-
originalImage
123-
), options.scale
124-
).asImage(), true
112+
image = originalImage.asImage(),
113+
isSampled = true
125114
)
126115
} catch (e: Exception) {
127116
exceptionLogger?.invoke(e)
@@ -135,9 +124,16 @@ class HeifDecoder(
135124
options: Options,
136125
imageLoader: ImageLoader
137126
): Decoder? {
138-
return if (AVAILABLE_BRANDS.any {
127+
return if (
128+
AVAILABLE_BRANDS.any {
139129
result.source.source().rangeEquals(4, it)
140-
}) HeifDecoder(result, options, imageLoader) else null
130+
}
131+
) {
132+
HeifDecoder(
133+
source = result,
134+
options = options
135+
)
136+
} else null
141137
}
142138

143139
companion object {

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

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ package com.github.awxkee.avifcoil.decoder.animation
3030

3131
import android.graphics.Bitmap
3232
import android.graphics.drawable.BitmapDrawable
33-
import android.graphics.drawable.Drawable
3433
import android.os.Build
34+
import coil3.Image
3535
import coil3.ImageLoader
3636
import coil3.asImage
3737
import coil3.decode.DecodeResult
@@ -42,7 +42,6 @@ import coil3.request.allowHardware
4242
import coil3.request.allowRgb565
4343
import coil3.request.bitmapConfig
4444
import coil3.size.Scale
45-
import coil3.size.ScaleDrawable
4645
import coil3.size.Size
4746
import coil3.size.pxOrElse
4847
import com.radzivon.bartoshyk.avif.coder.AvifAnimatedDecoder
@@ -85,13 +84,12 @@ public class AnimatedAvifDecoder(
8584

8685
if (options.size == Size.ORIGINAL) {
8786
val originalImage = AvifAnimatedDecoder(sourceData)
87+
8888
return@runInterruptible DecodeResult(
89-
ScaleDrawable(
90-
originalImage.drawable(
91-
colorConfig = mPreferredColorConfig,
92-
scaleMode = ScaleMode.FIT,
93-
), options.scale
94-
).asImage(),
89+
image = originalImage.toCoilImage(
90+
colorConfig = mPreferredColorConfig,
91+
scaleMode = ScaleMode.FIT,
92+
),
9593
isSampled = false
9694
)
9795
}
@@ -106,14 +104,12 @@ public class AnimatedAvifDecoder(
106104
val originalImage = AvifAnimatedDecoder(sourceData)
107105

108106
DecodeResult(
109-
ScaleDrawable(
110-
originalImage.drawable(
111-
dstWidth = dstWidth,
112-
dstHeight = dstHeight,
113-
colorConfig = mPreferredColorConfig,
114-
scaleMode = scaleMode
115-
), options.scale
116-
).asImage(),
107+
image = originalImage.toCoilImage(
108+
dstWidth = dstWidth,
109+
dstHeight = dstHeight,
110+
colorConfig = mPreferredColorConfig,
111+
scaleMode = scaleMode
112+
),
117113
isSampled = true
118114
)
119115
} catch (e: Exception) {
@@ -122,12 +118,12 @@ public class AnimatedAvifDecoder(
122118
}
123119
}
124120

125-
private fun AvifAnimatedDecoder.drawable(
121+
private fun AvifAnimatedDecoder.toCoilImage(
126122
dstWidth: Int = 0,
127123
dstHeight: Int = 0,
128124
colorConfig: PreferredColorConfig,
129125
scaleMode: ScaleMode
130-
): Drawable = if (getFramesCount() > 1) {
126+
): Image = if (getFramesCount() > 1) {
131127
AnimatedDrawable(
132128
frameStore = AvifAnimatedStore(
133129
avifAnimatedDecoder = this,
@@ -157,7 +153,7 @@ public class AnimatedAvifDecoder(
157153
)
158154
}
159155
)
160-
}
156+
}.asImage()
161157

162158
public class Factory(
163159
private val preheatFrames: Int = 6,

0 commit comments

Comments
 (0)