Skip to content

Instantly share code, notes, and snippets.

@jershell
Last active October 20, 2023 09:33
Show Gist options
  • Save jershell/75e5f44e7a7bf82933c21d6736958762 to your computer and use it in GitHub Desktop.
Save jershell/75e5f44e7a7bf82933c21d6736958762 to your computer and use it in GitHub Desktop.
seiko example svg
package cargo
import androidx.compose.foundation.Image
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.width
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.ImageBitmapConfig
import androidx.compose.ui.graphics.asSkiaBitmap
import androidx.compose.ui.graphics.drawscope.CanvasDrawScope
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import com.seiko.imageloader.*
import com.seiko.imageloader.model.ImageResult
@Composable
fun Cargo8() {
CompositionLocalProvider(
LocalImageLoader provides remember { ImageLoader.Default },
) {
Column(Modifier.fillMaxHeight().width(200.dp).border(1.dp, Color.Green)) {
val density = LocalDensity.current
val url = "https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/eee.svg"
val imageAction by rememberImageAction(url)
when (imageAction) {
is ImageResult.Painter -> {
val painter = rememberImageActionPainter(imageAction)
val bmp = ImageBitmap(
painter.intrinsicSize.width.toInt(),
painter.intrinsicSize.height.toInt(),
ImageBitmapConfig.Argb8888
)
val canvas = androidx.compose.ui.graphics.Canvas(bmp)
CanvasDrawScope().draw(
density = density,
canvas = canvas,
layoutDirection = LayoutDirection.Ltr,
size = Size(painter.intrinsicSize.width, painter.intrinsicSize.height),
block = {
with(painter) {
draw(painter.intrinsicSize)
}
}
)
Image(
painter = BitmapPainter(bmp),
contentDescription = "",
modifier = Modifier.fillMaxWidth(),
contentScale = ContentScale.FillWidth
)
Image(
painter = painter,
contentDescription = "",
modifier = Modifier.border(4.dp, Color.Blue).fillMaxWidth(),
contentScale = ContentScale.FillWidth
)
}
else -> {
Text("else block | error or loading")
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment