diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt index bb4c0c7..efe9ced 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt @@ -58,7 +58,7 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository return } val pTemplate = T[nextTIndex] - val unitObject = TimeUnitObject(pTemplate, lastTUO) + val unitObject = TimeUnitObject(pTemplate, lastTUO, N.size) if (lastTUO == null) { unitObject.setOldKey(sharedScreenModel.songKey.value) } else { diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TimeUnitObject.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TimeUnitObject.kt index cd8f13d..da9f90d 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TimeUnitObject.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TimeUnitObject.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyGridState import androidx.compose.foundation.lazy.grid.LazyVerticalGrid -import androidx.compose.foundation.lazy.grid.items import androidx.compose.ui.Modifier import androidx.compose.material3.Text import androidx.compose.material3.LocalTextStyle @@ -45,7 +44,7 @@ import androidx.compose.ui.text.withStyle val FEUFAROO_TRIOLET_COLOR = Color.DarkGray val FEUFAROO_KEY_CHANGE_COLOR = Color.Blue -class TimeUnitObject (val pTemplate: PTemplate, val prevTUO: TimeUnitObject?) { +class TimeUnitObject (val pTemplate: PTemplate, val prevTUO: TimeUnitObject?, countOfN: Int) { var mutableNoteVersion: Int by mutableStateOf(0) private var lyrics: MutableList = mutableListOf() var sep0: String = "" @@ -59,10 +58,10 @@ class TimeUnitObject (val pTemplate: PTemplate, val prevTUO: TimeUnitObject?) { companion object { var nbBlock: Int = 0 var sep1: String = "" - var _hasmarker: Boolean by mutableStateOf(false) + var _hasMarker: Boolean by mutableStateOf(false) var nbStanzas: Int = 0 fun hasMarker(yes: Boolean) { - _hasmarker = yes + _hasMarker = yes } var lastHairPinStart: Int = -1 var lastHairPinSymbol: Char? = null @@ -93,6 +92,11 @@ class TimeUnitObject (val pTemplate: PTemplate, val prevTUO: TimeUnitObject?) { sep1 = pTemplate.separatorAfter nbStanzas = 0 annotated = false + if (pTemplate.template == "") { + repeat(countOfN) { + tuNotes.add(it, TUNote()) + } + } } fun hasHairPin(): Char? { if (pTemplate.hasMarker($$"${<}")) { @@ -235,7 +239,7 @@ fun TimeUnitComposable( modifier = Modifier .background(col) ) { - if (TimeUnitObject._hasmarker) { + if (TimeUnitObject._hasMarker) { val lineHeight = 20.sp val density = LocalDensity.current val lineHeightDp : Dp = with(density) { @@ -471,7 +475,7 @@ fun AutoResizingText( // Un Text() invisible ou non affiché pour mesurer le texte sans le dessiner directement // Vous pouvez aussi utiliser textMeasurer.measure() directement - // On rend le texte visible une fois la taille ajustée pour éviter les clignotements + // On rend le texte visible une fois la taille ajustée pour éviter les clignotements. var readyToDraw by remember { mutableStateOf(false) } val textLinesCount = text.split("\n").size * maxLines @@ -481,11 +485,11 @@ fun AutoResizingText( style = textStyle.copy(fontSize = fontSize), maxLines = textLinesCount, // Très important pour qu'il ne déborde pas en hauteur overflow = TextOverflow.Clip, // Masque si ça déborde encore (ne devrait pas si le calcul est bon) - // onTextLayout est appelé après que le texte ait été mesuré + // onTextLayout est appelé après que le texte a été mesuré onTextLayout = { textLayoutResult: TextLayoutResult -> if (textLayoutResult.hasVisualOverflow && fontSize > minFontSize) { // Si le texte déborde en largeur, réduisez la taille de la police - // Vous pouvez utiliser un pas plus fin ou une méthode de recherche binaire pour optimiser + // Vous pouvez utiliser un pas plus fin ou une méthode de recherche binaire pour optimiser. fontSize *= 0.9f // Réduire de 10% à chaque fois } else { readyToDraw = true // La taille est stable ou min atteinte, on peut dessiner @@ -550,7 +554,7 @@ fun LazyVerticalGridTUO( horizontalArrangement = Arrangement.spacedBy(horizontalArrangementSpacing), verticalArrangement = Arrangement.spacedBy(8.dp), - contentPadding = PaddingValues(8.dp), // c'est juste le padding exterieur de toute la liste + contentPadding = PaddingValues(8.dp), // c'est juste le padding extérieur de toute la liste state = lazyGridState ) { itemsIndexed(items = tuoList.drop(1), key = { _, it -> it.numBlock }) { relativeIndex, oneTUO ->