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

commonMain.ru.casperix.multiplatform.text.impl.TextScheme.kt Maven / Gradle / Ivy

package ru.casperix.multiplatform.text.impl

import ru.casperix.math.axis_aligned.float32.Box2f
import ru.casperix.math.color.Color
import ru.casperix.multiplatform.font.FontReference
import ru.casperix.multiplatform.text.StringMetrics

data class TextScheme(val elements: List) {
    val summaryArea = lazy {
        if (elements.isEmpty()) {
            Box2f.ZERO
        } else {
            val min = elements.map { it.textArea.min }.reduce { a, b -> a.lower(b) }
            val max = elements.map { it.textArea.max }.reduce { a, b -> a.upper(b) }
            Box2f(min, max)
        }
    }

    companion object {
        val EMPTY = TextScheme(emptyList())
    }
}

data class TextSchemeElement(val part: TextPart, val textArea: Box2f, val stringMetrics: StringMetrics, val font: FontReference, val foreground: Color, val background: Color?)




© 2015 - 2025 Weber Informatics LLC | Privacy Policy