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

net.peanuuutz.fork.ui.foundation.draw.Image.kt Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2020 The Android Open Source Project
 * Modifications Copyright 2022 Peanuuutz
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package net.peanuuutz.fork.ui.foundation.draw

import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import net.peanuuutz.fork.ui.foundation.draw.painter.TextureImagePainter
import net.peanuuutz.fork.ui.foundation.layout.Box
import net.peanuuutz.fork.ui.ui.draw.ContentScale
import net.peanuuutz.fork.ui.ui.draw.ScaleFactor
import net.peanuuutz.fork.ui.ui.draw.shading.TextureRegion
import net.peanuuutz.fork.ui.ui.draw.shading.TextureSpec
import net.peanuuutz.fork.ui.ui.draw.shading.createFullRegion
import net.peanuuutz.fork.ui.ui.layout.Alignment
import net.peanuuutz.fork.ui.ui.modifier.Modifier
import net.peanuuutz.fork.ui.ui.unit.FloatOffset
import net.peanuuutz.fork.util.common.Color

@Composable
fun Image(
    spec: TextureSpec,
    modifier: Modifier = Modifier,
    region: TextureRegion = spec.createFullRegion(),
    scaleFactor: ScaleFactor = ScaleFactor.Unchanged,
    offset: FloatOffset = FloatOffset.Zero,
    tintColor: Color = Color.White,
    alignment: Alignment = Alignment.CenterOnPlane,
    contentScale: ContentScale = ContentScale.Fit
) {
    val painter = remember(spec, region, scaleFactor, tintColor) {
        TextureImagePainter(
            spec = spec,
            region = region,
            scaleFactor = scaleFactor,
            offset = offset,
            tintColor = tintColor
        )
    }

    Box(
        modifier = modifier.paint(
            painter = painter,
            alignment = alignment,
            contentScale = contentScale
        )
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy