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

net.peanuuutz.fork.ui.foundation.text.BasicText.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.text

import androidx.compose.runtime.Composable
import androidx.compose.runtime.NonRestartableComposable
import androidx.compose.runtime.compositionLocalOf
import net.minecraft.util.Identifier
import net.peanuuutz.fork.render.text.TextConstants.DefaultFont
import net.peanuuutz.fork.render.text.TextConstants.DefaultFontColor
import net.peanuuutz.fork.render.text.TextConstants.DefaultFontSize
import net.peanuuutz.fork.ui.ui.draw.text.Paragraph
import net.peanuuutz.fork.ui.ui.draw.text.TextAlign
import net.peanuuutz.fork.ui.ui.draw.text.TextFeature
import net.peanuuutz.fork.ui.ui.draw.text.TextShadow
import net.peanuuutz.fork.ui.ui.draw.text.TextStyle
import net.peanuuutz.fork.ui.ui.modifier.Modifier
import net.peanuuutz.fork.util.common.Color

@NonRestartableComposable
@Composable
fun BasicText(
    text: String,
    modifier: Modifier = Modifier,
    color: Color = DefaultFontColor,
    fontSize: Int = DefaultFontSize,
    font: Identifier = DefaultFont,
    feature: TextFeature = TextFeature.None,
    shadow: TextShadow? = null,
    lineSpace: Float = 0.0f,
    textAlign: TextAlign = TextAlign.Left,
    textStyle: TextStyle = LocalTextStyle.current,
    overflow: TextOverflow = TextOverflow.Clip,
    softWrap: Boolean = true,
    maxLines: Int = Int.MAX_VALUE,
    onTextLayout: ((TextLayoutResult) -> Unit)? = null,
    selector: TextSelector? = null
) {
    val mergedTextStyle = textStyle.merge(
        color = color,
        fontSize = fontSize,
        font = font,
        feature = feature,
        shadow = shadow,
        lineSpace = lineSpace,
        textAlign = textAlign
    )

    BasicText(
        text = text,
        modifier = modifier,
        textStyle = mergedTextStyle,
        overflow = overflow,
        softWrap = softWrap,
        maxLines = maxLines,
        onTextLayout = onTextLayout,
        selector = selector
    )
}

@NonRestartableComposable
@Composable
fun BasicText(
    text: String,
    modifier: Modifier = Modifier,
    textStyle: TextStyle = LocalTextStyle.current,
    overflow: TextOverflow = TextOverflow.Clip,
    softWrap: Boolean = true,
    maxLines: Int = Int.MAX_VALUE,
    onTextLayout: ((TextLayoutResult) -> Unit)? = null,
    selector: TextSelector? = null
) {
    CoreText(
        paragraph = Paragraph(text),
        textStyle = textStyle,
        overflow = overflow,
        softWrap = softWrap,
        maxLines = maxLines,
        onTextLayout = onTextLayout,
        selector = selector,
        modifier = modifier
    )
}

@NonRestartableComposable
@Composable
fun BasicText(
    paragraph: Paragraph,
    modifier: Modifier = Modifier,
    color: Color = DefaultFontColor,
    fontSize: Int = DefaultFontSize,
    font: Identifier = DefaultFont,
    feature: TextFeature = TextFeature.None,
    shadow: TextShadow? = null,
    lineSpace: Float = 0.0f,
    textAlign: TextAlign = TextAlign.Left,
    textStyle: TextStyle = LocalTextStyle.current,
    overflow: TextOverflow = TextOverflow.Clip,
    softWrap: Boolean = true,
    maxLines: Int = Int.MAX_VALUE,
    onTextLayout: ((TextLayoutResult) -> Unit)? = null,
    selector: TextSelector? = null
) {
    val mergedTextStyle = textStyle.merge(
        color = color,
        fontSize = fontSize,
        font = font,
        feature = feature,
        shadow = shadow,
        lineSpace = lineSpace,
        textAlign = textAlign
    )

    BasicText(
        paragraph = paragraph,
        modifier = modifier,
        textStyle = mergedTextStyle,
        overflow = overflow,
        softWrap = softWrap,
        maxLines = maxLines,
        onTextLayout = onTextLayout,
        selector = selector
    )
}

@NonRestartableComposable
@Composable
fun BasicText(
    paragraph: Paragraph,
    modifier: Modifier = Modifier,
    textStyle: TextStyle = LocalTextStyle.current,
    overflow: TextOverflow = TextOverflow.Clip,
    softWrap: Boolean = true,
    maxLines: Int = Int.MAX_VALUE,
    onTextLayout: ((TextLayoutResult) -> Unit)? = null,
    selector: TextSelector? = null
) {
    CoreText(
        paragraph = paragraph,
        textStyle = textStyle,
        overflow = overflow,
        softWrap = softWrap,
        maxLines = maxLines,
        onTextLayout = onTextLayout,
        selector = selector,
        modifier = modifier
    )
}

val LocalTextStyle = compositionLocalOf { TextStyle.Default }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy