2
0

ImageBitmapExt.kt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package org.mjdev.desktop.extensions
  2. import android.graphics.Bitmap
  3. import androidx.compose.ui.graphics.ImageBitmap
  4. import androidx.compose.ui.graphics.asAndroidBitmap
  5. import androidx.compose.ui.graphics.asImageBitmap
  6. import coil3.request.ImageRequest
  7. import coil3.toBitmap
  8. import okio.Path
  9. import org.mjdev.desktop.context.IDesktopContext
  10. @Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")
  11. actual object ImageBitmapExt {
  12. actual fun ImageBitmap.cut(
  13. x: Int,
  14. y: Int,
  15. width: Int,
  16. height: Int
  17. ): ImageBitmap = Bitmap.createBitmap(asAndroidBitmap(), x, y, width, height).asImageBitmap()
  18. actual suspend fun IDesktopContext.loadPicture(
  19. src: Any?
  20. ): ImageBitmap? = runCatching {
  21. ImageRequest.Builder(platformContext!!)
  22. .data(
  23. when (src) {
  24. is Path -> src.toFile()
  25. else -> src.toString()
  26. }
  27. )
  28. .build().let { req ->
  29. imageLoader?.execute(req)?.image?.toBitmap()?.asImageBitmap()
  30. }
  31. }.getOrNull()
  32. }