61 lines
2.0 KiB
Kotlin
Raw Normal View History

2022-04-23 15:51:50 -04:00
package eu.kanade.presentation.util
import android.content.res.Resources
import androidx.annotation.DrawableRes
2022-04-23 15:51:50 -04:00
import androidx.annotation.PluralsRes
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.runtime.remember
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.painter.BitmapPainter
2022-04-23 15:51:50 -04:00
import androidx.compose.ui.platform.LocalContext
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toBitmap
2022-04-23 15:51:50 -04:00
/**
* Load a quantity string resource.
*
* @param id the resource identifier
* @param quantity The number used to get the string for the current language's plural rules.
* @return the string data associated with the resource
*/
@Composable
@ReadOnlyComposable
2022-04-23 15:51:50 -04:00
fun quantityStringResource(@PluralsRes id: Int, quantity: Int): String {
val context = LocalContext.current
return context.resources.getQuantityString(id, quantity, quantity)
}
/**
* Load a quantity string resource with formatting.
*
* @param id the resource identifier
* @param quantity The number used to get the string for the current language's plural rules.
* @param formatArgs the format arguments
* @return the string data associated with the resource
*/
@Composable
@ReadOnlyComposable
2022-04-23 15:51:50 -04:00
fun quantityStringResource(@PluralsRes id: Int, quantity: Int, vararg formatArgs: Any): String {
val context = LocalContext.current
return context.resources.getQuantityString(id, quantity, *formatArgs)
}
/**
* Create a BitmapPainter from an drawable resource.
*
* > Only use this if [androidx.compose.ui.res.painterResource] doesn't work.
*
* @param id the resource identifier
* @return the bitmap associated with the resource
*/
@Composable
fun rememberResourceBitmapPainter(@DrawableRes id: Int): BitmapPainter {
val context = LocalContext.current
return remember(id) {
val drawable = ContextCompat.getDrawable(context, id)
?: throw Resources.NotFoundException()
BitmapPainter(drawable.toBitmap().asImageBitmap())
}
}