First attempt to better place (offseted) markers
This commit is contained in:
parent
5782425643
commit
81c8c9a411
6 changed files with 44 additions and 16 deletions
|
|
@ -2,9 +2,9 @@
|
||||||
"themeMode": "DARK",
|
"themeMode": "DARK",
|
||||||
"fontSize": 18.5,
|
"fontSize": 18.5,
|
||||||
"playlist": [
|
"playlist": [
|
||||||
"assets://ffpm-72.txt",
|
"assets://ews-24.txt",
|
||||||
|
"assets://ffpm-79-2.txt",
|
||||||
"assets://ffpm-111.txt",
|
"assets://ffpm-111.txt",
|
||||||
"assets://ews-23.txt",
|
|
||||||
"assets://ffpm-190.txt",
|
"assets://ffpm-190.txt",
|
||||||
"assets://ews-13.txt",
|
"assets://ews-13.txt",
|
||||||
"assets://ffpm-137.txt",
|
"assets://ffpm-137.txt",
|
||||||
|
|
|
||||||
|
|
@ -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/
|
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'
|
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
|
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
|
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,
|
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.
|
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.
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,35 @@
|
||||||
package mg.dot.feufaro.solfa
|
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 {
|
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 {
|
fun markerToString(): String {
|
||||||
if (markers.isEmpty()) {
|
if (markers.isEmpty()) {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return markers.joinToString(separator = "") {
|
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("\$Q", "\uD834\uDD10")
|
||||||
.replace(Regex("^[<=>]$"), "")
|
.replace(Regex("^[<=>]$"), "")
|
||||||
.replace($$"$T", "")
|
.replace($$"$T", "")
|
||||||
|
|
@ -19,7 +39,7 @@ class PTemplate (val template: String, val separatorAfter: String, private val m
|
||||||
fun hasKeyChange(): String {
|
fun hasKeyChange(): String {
|
||||||
var returnFun = ""
|
var returnFun = ""
|
||||||
markers.map {
|
markers.map {
|
||||||
val regexFound = Regex("^\\$\\{c:(..?)\\}").find(it)
|
val regexFound = Regex("^\\$\\{c:(..?)\\}").find(it.code)
|
||||||
if (regexFound != null) {
|
if (regexFound != null) {
|
||||||
returnFun = regexFound.groupValues[1]
|
returnFun = regexFound.groupValues[1]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -376,16 +376,18 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository
|
||||||
private fun loadT(line: String) {
|
private fun loadT(line: String) {
|
||||||
templateString = line
|
templateString = line
|
||||||
var nextTemplate = ""
|
var nextTemplate = ""
|
||||||
val nextMarker: MutableList<String> = mutableListOf()
|
val nextMarker: MutableList<PMarkers> = mutableListOf()
|
||||||
var tMarker = ""
|
var tMarker = ""
|
||||||
val lineChar = line.toCharArray()
|
val lineChar = line.toCharArray()
|
||||||
|
var offset: Int = 0
|
||||||
|
var templateOffset = 0
|
||||||
lineChar.forEach {
|
lineChar.forEach {
|
||||||
if (tMarker != "") {
|
if (tMarker != "") {
|
||||||
tMarker += it
|
tMarker += it
|
||||||
if ((it == '}')
|
if ((it == '}')
|
||||||
|| (tMarker.length == 2 && it != '{')) {
|
|| (tMarker.length == 2 && it != '{')) {
|
||||||
TimeUnitObject.hasMarker(true)
|
TimeUnitObject.hasMarker(true)
|
||||||
nextMarker.add(tMarker)
|
nextMarker.add(PMarkers(tMarker, offset - templateOffset))
|
||||||
tMarker = ""
|
tMarker = ""
|
||||||
}
|
}
|
||||||
return@forEach
|
return@forEach
|
||||||
|
|
@ -394,12 +396,14 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository
|
||||||
tMarker = "$"
|
tMarker = "$"
|
||||||
return@forEach
|
return@forEach
|
||||||
}
|
}
|
||||||
|
offset ++
|
||||||
if (it == ':' || it == '|' || it == '/' || it == '!') {
|
if (it == ':' || it == '|' || it == '/' || it == '!') {
|
||||||
val newTemplateItem =
|
val newTemplateItem =
|
||||||
PTemplate(nextTemplate, it.toString(), nextMarker.toMutableList())
|
PTemplate(nextTemplate, it.toString(), nextMarker.toMutableList())
|
||||||
T.add(newTemplateItem)
|
T.add(newTemplateItem)
|
||||||
nextMarker.clear()
|
nextMarker.clear()
|
||||||
nextTemplate = ""
|
nextTemplate = ""
|
||||||
|
templateOffset = offset
|
||||||
} else {
|
} else {
|
||||||
nextTemplate += it
|
nextTemplate += it
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ class TUNote (private val detailNote: MutableList<Note> = mutableListOf()){
|
||||||
}
|
}
|
||||||
fun toString(fromKey: String = "", toKey: String = "") : String {
|
fun toString(fromKey: String = "", toKey: String = "") : String {
|
||||||
var result = detailNote.joinToString (separator = ""){ it.toString() }
|
var result = detailNote.joinToString (separator = ""){ it.toString() }
|
||||||
|
.replace(Regex("^z\\.- ,[zw-]$"), "")
|
||||||
.replace(Regex("\\. *,-$"), "")
|
.replace(Regex("\\. *,-$"), "")
|
||||||
.replace(Regex(",-$"), "")
|
.replace(Regex(",-$"), "")
|
||||||
.replace(Regex("(- *,z|- *,-|0$)"), "-")
|
.replace(Regex("(- *,z|- *,-|0$)"), "-")
|
||||||
|
|
|
||||||
|
|
@ -243,13 +243,6 @@ fun TimeUnitComposable(
|
||||||
}
|
}
|
||||||
var fontStyle = FontStyle.Normal
|
var fontStyle = FontStyle.Normal
|
||||||
var fontWeight = FontWeight.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 hairPinSymbol = tuo.hasHairPin()
|
||||||
val yHeight = with(density) { lineHeightDp.toPx()}
|
val yHeight = with(density) { lineHeightDp.toPx()}
|
||||||
|
|
||||||
|
|
@ -298,6 +291,16 @@ fun TimeUnitComposable(
|
||||||
if (hairPinSymbol != null && hairPinSymbol != '=') {
|
if (hairPinSymbol != null && hairPinSymbol != '=') {
|
||||||
TimeUnitObject.startHairPin(hairPinSymbol, tuo.numBlock)
|
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(
|
AutoResizingText(
|
||||||
text = text,
|
text = text,
|
||||||
minFontSize = 8.sp,
|
minFontSize = 8.sp,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue