Merge branch 'devel' into feature/nextgen

This commit is contained in:
Koitharu
2022-07-06 16:15:37 +03:00
25 changed files with 243 additions and 114 deletions

View File

@@ -18,25 +18,20 @@ inline fun <T> MutableSet(size: Int, init: (index: Int) -> T): MutableSet<T> {
return set
}
inline fun <T> createSet(size: Int, init: (index: Int) -> T): Set<T> = when (size) {
@Suppress("FunctionName")
inline fun <T> Set(size: Int, init: (index: Int) -> T): Set<T> = when (size) {
0 -> emptySet()
1 -> Collections.singleton(init(0))
else -> MutableSet(size, init)
}
inline fun <T> createList(size: Int, init: (index: Int) -> T): List<T> = when (size) {
0 -> emptyList()
1 -> Collections.singletonList(init(0))
else -> MutableList(size, init)
}
fun <T> List<T>.asArrayList(): ArrayList<T> = if (this is ArrayList<*>) {
this as ArrayList<T>
} else {
ArrayList(this)
}
fun <K, V> Map<K, V>.findKey(value: V): K? {
fun <K, V> Map<K, V>.findKeyByValue(value: V): K? {
for ((k, v) in entries) {
if (v == value) {
return k

View File

@@ -1,34 +0,0 @@
package org.koitharu.kotatsu.utils.ext
import androidx.core.os.LocaleListCompat
import java.util.*
fun LocaleListCompat.getOrThrow(index: Int) = get(index) ?: throw kotlin.NoSuchElementException()
fun LocaleListCompat.toList(): List<Locale> = createList(size()) { i -> getOrThrow(i) }
operator fun LocaleListCompat.iterator() = object : Iterator<Locale> {
private var index = 0
override fun hasNext(): Boolean = index < size()
override fun next(): Locale = getOrThrow(index++)
}
inline fun <R, C : MutableCollection<in R>> LocaleListCompat.mapTo(
destination: C,
block: (Locale) -> R,
): C {
val len = size()
for (i in 0 until len) {
val item = get(i) ?: continue
destination.add(block(item))
}
return destination
}
inline fun <T> LocaleListCompat.map(block: (Locale) -> T): List<T> {
return mapTo(ArrayList(size()), block)
}
inline fun <T> LocaleListCompat.mapToSet(block: (Locale) -> T): Set<T> {
return mapTo(LinkedHashSet(size()), block)
}

View File

@@ -0,0 +1,35 @@
package org.koitharu.kotatsu.utils.ext
import androidx.core.os.LocaleListCompat
import java.util.*
operator fun LocaleListCompat.iterator(): ListIterator<Locale> = LocaleListCompatIterator(this)
fun LocaleListCompat.toList(): List<Locale> = List(size()) { i -> getOrThrow(i) }
inline fun <T> LocaleListCompat.map(block: (Locale) -> T): List<T> {
return List(size()) { i -> block(getOrThrow(i)) }
}
inline fun <T> LocaleListCompat.mapToSet(block: (Locale) -> T): Set<T> {
return Set(size()) { i -> block(getOrThrow(i)) }
}
fun LocaleListCompat.getOrThrow(index: Int) = get(index) ?: throw NoSuchElementException()
private class LocaleListCompatIterator(private val list: LocaleListCompat) : ListIterator<Locale> {
private var index = 0
override fun hasNext() = index < list.size()
override fun hasPrevious() = index > 0
override fun next() = list.get(index++) ?: throw NoSuchElementException()
override fun nextIndex() = index
override fun previous() = list.get(--index) ?: throw NoSuchElementException()
override fun previousIndex() = index - 1
}

View File

@@ -0,0 +1,25 @@
package org.koitharu.kotatsu.utils.image
import android.content.Context
import android.graphics.drawable.Drawable
import android.text.Html
import coil.ImageLoader
import coil.executeBlocking
import coil.request.ImageRequest
class CoilImageGetter(
private val context: Context,
private val coil: ImageLoader,
) : Html.ImageGetter {
override fun getDrawable(source: String?): Drawable? {
return coil.executeBlocking(
ImageRequest.Builder(context)
.data(source)
.allowHardware(false)
.build()
).drawable?.apply {
setBounds(0, 0, intrinsicHeight, intrinsicHeight)
}
}
}