First attempt to better place (offseted) markers

This commit is contained in:
dotmg 2025-08-15 08:58:15 +02:00
parent 5782425643
commit 81c8c9a411
6 changed files with 44 additions and 16 deletions

View file

@ -2,9 +2,9 @@
"themeMode": "DARK",
"fontSize": 18.5,
"playlist": [
"assets://ffpm-72.txt",
"assets://ews-24.txt",
"assets://ffpm-79-2.txt",
"assets://ffpm-111.txt",
"assets://ews-23.txt",
"assets://ffpm-190.txt",
"assets://ews-13.txt",
"assets://ffpm-137.txt",

View file

@ -2,7 +2,7 @@ M0:|c:Db|m:4/4|t:EWS 24 When the mists have rolled in splendor|a:Annie Elvira Hu
U0:z0:313131313131314/313131313131314/313131313131314/31313113313131$Q4/31431313122314/31431313131314/31313131313131$Q4/31313113313${rit.}1$Q3$Q1$Q4/
N1:mfsssssd'tlssssssSlllllllllltd'tlsd'd'd'd'd'mfsllllr'r'd'tttttsltd'd'd'd'd'mfs---d'tls----sSl---ltd't----ltd'd'd'd'd'mfsllllr'r'd'tttttsltd'd'd'd'd'
N2:drmmmmmmsfmmffmmmffffffffFFsFsffmmmmmdrmffffFffffffffffmmfrmdrm---msfmmffmmmf--FFsls----ffmmmmmdrmffffFffffffffffmmfrm
N3:ssssssssssd'd'ttd'/sd'd'd'd'd'd'd'd'd'd'd'tr'r'/ttd'sssssd'd'd'd'd'll/td'r'r'r'r'r'td'r'd'Tlss/---sss-zzzd'ttd'z--d'd'd'd'tr'r'r'r'r'ttr'd'd'd'd'd'ssd'd'd'd'lltd'r'r'r'r'r'td'r'd'Tlss
N3:ssssssssssd'd'ttd'/sd'd'd'd'd'd'd'd'd'd'd'tr'r'/ttd'sssssd'd'd'd'd'll/td'r'r'r'r'r'td'r'd'Tlss/zzzsss-zzzd'ttd'zzzd'd'd'd'tr'r'r'r'r'ttr'd'd'd'd'd'ssd'd'd'd'lltd'r'r'r'r'r'td'r'd'Tlss
N4:ddddddddddddrs,d/ddffffffffrrrrs/ssddddddddffffr/ssssssssssddddd/zzzddd-zzzdrs,d/zzzffrrrrsssssssmmmmddddffffrssssssssssddddd
O1:v34:_3We shall know _3as we are known,_4/Ne_ver more _3to walk a_lone,
E1:When the mists have rolled in splen_dor/From the beau_ty of the hills,/And the sun_light falls in glad_ness/On the ri_ver and the rills,/We re_call our Fa_ther's pro_mise/In the rain_bow of the spray:/We shall know each o_ther bet_ter/When the mists have cleared a_way./${R=}${O:1}We shall know _3as we are known,_4/Ne_ver more _3to walk a_lone,_4/In the dawn_ing of the morn_ing/Of that bright and hap_py day./We shall know each o_ther bet_ter,/When the mists have rolled a_way.

View file

@ -1,15 +1,35 @@
package mg.dot.feufaro.solfa
class PTemplate (val template: String, val separatorAfter: String, private val markers: MutableList<String> = mutableListOf("")){
class PMarkers(val code: String, val offset: Int = 0, var boundaries: Int = 0) {
fun changeBoundaries(newBoundaries: Int) {
boundaries = newBoundaries
}
}
class PTemplate (val template: String, val separatorAfter: String, private val markers: MutableList<PMarkers> = mutableListOf()){
var lastCalledMarker = 0
fun resetCalledMarker() {
lastCalledMarker = 0
}
fun hasMarker(marker: String): Boolean {
return markers.contains(marker)
return markers.any { it.code == marker }
}
fun callNextMarker(): PMarkers? {
if (markers.size <= lastCalledMarker) return null
val boundaries = if (markers.size > lastCalledMarker+1) {
markers[lastCalledMarker+1].offset
} else 0
val pMarkers = markers[lastCalledMarker]
lastCalledMarker++
pMarkers.changeBoundaries(boundaries)
return pMarkers
}
fun markerToString(): String {
if (markers.isEmpty()) {
return ""
}
return markers.joinToString(separator = "") {
it.replace(Regex("^\\$\\{([abd-z]:)?(.*)\\}"), "$2")
val prefix = if (it.offset <= 0) "" else " ".repeat(it.offset) //@todo better position the marker
prefix + it.code.replace(Regex("^\\$\\{([abd-z]:)?(.*)\\}"), "$2")
.replace("\$Q", "\uD834\uDD10")
.replace(Regex("^[<=>]$"), "")
.replace($$"$T", "")
@ -19,7 +39,7 @@ class PTemplate (val template: String, val separatorAfter: String, private val m
fun hasKeyChange(): String {
var returnFun = ""
markers.map {
val regexFound = Regex("^\\$\\{c:(..?)\\}").find(it)
val regexFound = Regex("^\\$\\{c:(..?)\\}").find(it.code)
if (regexFound != null) {
returnFun = regexFound.groupValues[1]
}

View file

@ -376,16 +376,18 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository
private fun loadT(line: String) {
templateString = line
var nextTemplate = ""
val nextMarker: MutableList<String> = mutableListOf()
val nextMarker: MutableList<PMarkers> = mutableListOf()
var tMarker = ""
val lineChar = line.toCharArray()
var offset: Int = 0
var templateOffset = 0
lineChar.forEach {
if (tMarker != "") {
tMarker += it
if ((it == '}')
|| (tMarker.length == 2 && it != '{')) {
TimeUnitObject.hasMarker(true)
nextMarker.add(tMarker)
nextMarker.add(PMarkers(tMarker, offset - templateOffset))
tMarker = ""
}
return@forEach
@ -394,12 +396,14 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository
tMarker = "$"
return@forEach
}
offset ++
if (it == ':' || it == '|' || it == '/' || it == '!') {
val newTemplateItem =
PTemplate(nextTemplate, it.toString(), nextMarker.toMutableList())
T.add(newTemplateItem)
nextMarker.clear()
nextTemplate = ""
templateOffset = offset
} else {
nextTemplate += it
}

View file

@ -43,6 +43,7 @@ class TUNote (private val detailNote: MutableList<Note> = mutableListOf()){
}
fun toString(fromKey: String = "", toKey: String = "") : String {
var result = detailNote.joinToString (separator = ""){ it.toString() }
.replace(Regex("^z\\.- ,[zw-]$"), "")
.replace(Regex("\\. *,-$"), "")
.replace(Regex(",-$"), "")
.replace(Regex("(- *,z|- *,-|0$)"), "-")

View file

@ -243,13 +243,6 @@ fun TimeUnitComposable(
}
var fontStyle = FontStyle.Normal
var fontWeight = FontWeight.Normal
val text = tuo.pTemplate.markerToString()
if (text.contains(Regex("^([mfp]+|[rR]it.*)$"))) {
fontStyle = FontStyle.Italic
}
if (text.contains("p")) {
fontWeight = FontWeight.Bold
}
val hairPinSymbol = tuo.hasHairPin()
val yHeight = with(density) { lineHeightDp.toPx()}
@ -298,6 +291,16 @@ fun TimeUnitComposable(
if (hairPinSymbol != null && hairPinSymbol != '=') {
TimeUnitObject.startHairPin(hairPinSymbol, tuo.numBlock)
}
// @todo pTemplate.markerToString retourne les marqueurs comme une seule chaîne
// problème si template = $QD:,-$QD
tuo.pTemplate.resetCalledMarker()
val text = tuo.pTemplate.markerToString()
if (text.contains(Regex("^([mfp]+|[rR]it.*)$"))) {
fontStyle = FontStyle.Italic
}
if (text.contains("p")) {
fontWeight = FontWeight.Bold
}
AutoResizingText(
text = text,
minFontSize = 8.sp,