All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.com.seiko.imageloader.ui.AutoSizeWidget.ext.kt Maven / Gradle / Ivy

The newest version!
package com.seiko.imageloader.ui

import androidx.compose.foundation.layout.BoxScope
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.DefaultAlpha
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.ContentScale
import com.seiko.imageloader.ImageLoader
import com.seiko.imageloader.LocalImageLoader
import com.seiko.imageloader.model.ImageAction
import com.seiko.imageloader.model.ImageRequest

@Composable
fun AutoSizeBox(
    url: String,
    modifier: Modifier = Modifier,
    imageLoader: ImageLoader = LocalImageLoader.current,
    contentAlignment: Alignment = Alignment.Center,
    propagateMinConstraints: Boolean = false,
    isOnlyPostFirstEvent: Boolean = true,
    content: @Composable BoxScope.(ImageAction) -> Unit,
) {
    AutoSizeBox(
        request = remember(url) { ImageRequest(url) },
        modifier = modifier,
        imageLoader = imageLoader,
        contentAlignment = contentAlignment,
        propagateMinConstraints = propagateMinConstraints,
        isOnlyPostFirstEvent = isOnlyPostFirstEvent,
        content = content,
    )
}

@Composable
fun AutoSizeBox(
    resId: Int,
    modifier: Modifier = Modifier,
    imageLoader: ImageLoader = LocalImageLoader.current,
    contentAlignment: Alignment = Alignment.Center,
    propagateMinConstraints: Boolean = false,
    isOnlyPostFirstEvent: Boolean = true,
    content: @Composable BoxScope.(ImageAction) -> Unit,
) {
    AutoSizeBox(
        request = remember(resId) { ImageRequest(resId) },
        modifier = modifier,
        imageLoader = imageLoader,
        contentAlignment = contentAlignment,
        propagateMinConstraints = propagateMinConstraints,
        isOnlyPostFirstEvent = isOnlyPostFirstEvent,
        content = content,
    )
}

@Composable
fun AutoSizeImage(
    url: String,
    contentDescription: String?,
    modifier: Modifier = Modifier,
    alignment: Alignment = Alignment.Center,
    contentScale: ContentScale = ContentScale.Fit,
    alpha: Float = DefaultAlpha,
    colorFilter: ColorFilter? = null,
    imageLoader: ImageLoader = LocalImageLoader.current,
    placeholderPainter: (@Composable () -> Painter)? = null,
    errorPainter: (@Composable () -> Painter)? = null,
    isOnlyPostFirstEvent: Boolean = true,
) {
    AutoSizeImage(
        request = remember(url) { ImageRequest(url) },
        contentDescription = contentDescription,
        modifier = modifier,
        alignment = alignment,
        contentScale = contentScale,
        alpha = alpha,
        colorFilter = colorFilter,
        imageLoader = imageLoader,
        placeholderPainter = placeholderPainter,
        errorPainter = errorPainter,
        isOnlyPostFirstEvent = isOnlyPostFirstEvent,
    )
}

@Composable
fun AutoSizeImage(
    resId: Int,
    contentDescription: String?,
    modifier: Modifier = Modifier,
    alignment: Alignment = Alignment.Center,
    contentScale: ContentScale = ContentScale.Fit,
    alpha: Float = DefaultAlpha,
    colorFilter: ColorFilter? = null,
    imageLoader: ImageLoader = LocalImageLoader.current,
    placeholderPainter: (@Composable () -> Painter)? = null,
    errorPainter: (@Composable () -> Painter)? = null,
    isOnlyPostFirstEvent: Boolean = true,
) {
    AutoSizeImage(
        request = remember(resId) { ImageRequest(resId) },
        contentDescription = contentDescription,
        modifier = modifier,
        alignment = alignment,
        contentScale = contentScale,
        alpha = alpha,
        colorFilter = colorFilter,
        imageLoader = imageLoader,
        placeholderPainter = placeholderPainter,
        errorPainter = errorPainter,
        isOnlyPostFirstEvent = isOnlyPostFirstEvent,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy