Chopro, Idee ?
Hallo Leute,
da ich manchmal Liedertexte mit Akkorden per MS-Word niederschreibe, und dies sehr mühsam ist Formatierungen, Einrückungen etc..
Es gibt eigentlich dazu eine gute Idee die auch auf Lyricseiten häufig zu sehen ist, Stichwort chopro Format.
Wie könnte eine Purebasic Lösung dazu aussehen ?
Ich erstelle ein Editorgadget um das Textfile einzulesen, klar.
Nun stellt sich mir die Frage mit welchen Mitteln das (formatierte) Ausgabegadget aussehen soll, ich tippe mal auf das Canvas,
dieses könnte bei jeder Änderung neu gezeichnet werden.
Hier wiederrum stellt sich mir die Frage wie dieses dann "1:1" auf Drucker, PDF zu bringen ist (A4) ?
Die Schwierigkeit dabei dürfte die Problematik sein das Canvas -> PDF nicht dasselbe Format verstehen bzw. hier "viel Arbeit" dahinter stehen wird.
Jemand eine Idee wie das am besten zu realisieren wäre ?
Liedertexte, chopro Umsetzung mit Purebasic ?
Re: Liedertexte, chopro Umsetzung mit Purebasic ?
Es geht prinzipiell darum bestimte Marker [Akkord] aus dem Text zu fischen und diese bündig über dem nächsten Wort darzustellen, oder?
Ich würde das auch mit nem CanvasGadget visualisieren. Als Font müsste man einen nehmen, der eine konstante Laufweite
besitzt, bspw. Courier, um die korrekte Position berechnen zu können.
Hier mal ein quick'n dirty Ansatz:
Ich würde das auch mit nem CanvasGadget visualisieren. Als Font müsste man einen nehmen, der eine konstante Laufweite
besitzt, bspw. Courier, um die korrekte Position berechnen zu können.
Hier mal ein quick'n dirty Ansatz:
Code: Alles auswählen
Global FontID = LoadFont(#PB_Any, "Courier New", 20, #PB_Font_HighQuality)
Procedure Update_Canvas()
txt.s = ReplaceString(GetGadgetText(0), #CRLF$, "\")
StartDrawing(CanvasOutput(1))
Box (0, 0, OutputWidth(), OutputHeight(), #White)
DrawingFont(FontID(FontID))
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor(#Blue)
h = TextHeight("A")
w = TextWidth("A")
x = 10
y = 10 + h
For a = 1 To Len(txt)
If Mid(txt, a, 1) = "["
ChordMode = #True
ElseIf Mid(txt, a, 1) = "]"
ChordMode = #False
DrawText(x, y - h, Chord.s)
Chord = ""
ElseIf ChordMode = #True
Chord.s + Mid(txt, a, 1)
ElseIf Mid(txt, a, 1) = "\"
y + (2.5*h)
x = 10
Else
DrawText(x, y, Mid(txt, a, 1))
x + w
If w > OutputWidth()
y + (2.5*h)
x = 10
EndIf
EndIf
Next
StopDrawing()
EndProcedure
OpenWindow(0, 0, 0, 800, 600, "" )
EditorGadget(0, 5, 5, 790, 80)
CanvasGadget(1, 5, 90, 790, 500, #PB_Canvas_Border)
SetGadgetText(0, "[Am]All ya need [E#]is" + #CRLF$ + "what you [D#]need")
BindGadgetEvent(0, @Update_Canvas(), #PB_EventType_Change)
Update_Canvas()
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Re: Liedertexte, chopro Umsetzung mit Purebasic ?
Genau, und noch weiteres..dige hat geschrieben:Es geht prinzipiell darum bestimte Marker [Akkord] aus dem Text zu fischen und diese bündig über dem nächsten Wort darzustellen, oder?
Ich muss mal die Möglichkeiten zw. Canvas und Scintilla vergleichen, welches sich besser dafür eignet, und vor allem das drucken dann daraus
Aber danke für dein Beispiel.
Re: Liedertexte, chopro Umsetzung mit Purebasic ?
Eine Schriftart mit konstanter Breite ist nicht notwendig, wenn man TextWidth() verwendet.
"[G]Hallo Welt [A]neuer Akkord jetzt: [F]und nochmal"
Erstmal muss du ja die Akkorde "rausfischen" und markieren, wo sie stehen. (StringField()...)
Dann hast du deinen Text "Hallo Welt ", "neuer Akkord jetzt: ", "und nochmal" (mit Leerzeichen und Satzzeichen etc.) und speicherst die Breite der Textfragmente mit TextWidth()
Dann malst du einfach dein "A" an der X-Position TextWidth("Hallo Welt ") und dein "F" an der Position TextWidth("Hallo Welt ") + TextWidth("neuer Akkord jetzt: ")
Zum Drucken hast du zwei Möglichkeiten. Du nutzt die PrinterLib von ABB Klaus (die man offenbar nicht mehr findet oO), die besser ist als die von PB.
Oder du speicherst das Canvas einfach als Bild und fügst es in ein Word-Dokument ein. Bei Word, oder auch LibreOffice etc... kann man die Grafik auch verknüpfen, so dass du nur einmal ein Dokument einrichten muss. Dann speicherst du deine Canvas-Bilder immer als "ChordPage01 (02 etc).png", und im Dokument sind sie dann automatisch drin und du musst nur noch drucken / PDF erstellen
"[G]Hallo Welt [A]neuer Akkord jetzt: [F]und nochmal"
Erstmal muss du ja die Akkorde "rausfischen" und markieren, wo sie stehen. (StringField()...)
Dann hast du deinen Text "Hallo Welt ", "neuer Akkord jetzt: ", "und nochmal" (mit Leerzeichen und Satzzeichen etc.) und speicherst die Breite der Textfragmente mit TextWidth()
Dann malst du einfach dein "A" an der X-Position TextWidth("Hallo Welt ") und dein "F" an der Position TextWidth("Hallo Welt ") + TextWidth("neuer Akkord jetzt: ")
Zum Drucken hast du zwei Möglichkeiten. Du nutzt die PrinterLib von ABB Klaus (die man offenbar nicht mehr findet oO), die besser ist als die von PB.
Oder du speicherst das Canvas einfach als Bild und fügst es in ein Word-Dokument ein. Bei Word, oder auch LibreOffice etc... kann man die Grafik auch verknüpfen, so dass du nur einmal ein Dokument einrichten muss. Dann speicherst du deine Canvas-Bilder immer als "ChordPage01 (02 etc).png", und im Dokument sind sie dann automatisch drin und du musst nur noch drucken / PDF erstellen
Signatur und so
Re: Liedertexte, chopro Umsetzung mit Purebasic ?
Vor einiger Zeit hatte ich mich auch mit dem ChordPro-Format beschäftigt.
Ich legte mit ein Tablet zu und eine App, die auch ChordPro-Dateien anzeigen kann. Also brauchte ich einen Editor zum komfortabelen Schreiben von ChordPro-Dateien. Mein Editor unterstützt allerdings nur das, was ich brauche. Das ist hauptsächlich die formatierte Anzeige von Text mit Akkordsymbolen. Als Klavierspieler brauche ich keine Tabulatoren, die fehlen deshalb.
Drucken ist nur rudimentär enthalten; ich wollte wissen, ob ich das hinbekomme. Aber Seitenumbrüche fehlen noch.
Für die Anzeige des formatierten Textes mit Akkordsymbolen verwende ich ein Canvas.
Hier ist der Link zu meinem Projekt
Ich legte mit ein Tablet zu und eine App, die auch ChordPro-Dateien anzeigen kann. Also brauchte ich einen Editor zum komfortabelen Schreiben von ChordPro-Dateien. Mein Editor unterstützt allerdings nur das, was ich brauche. Das ist hauptsächlich die formatierte Anzeige von Text mit Akkordsymbolen. Als Klavierspieler brauche ich keine Tabulatoren, die fehlen deshalb.
Drucken ist nur rudimentär enthalten; ich wollte wissen, ob ich das hinbekomme. Aber Seitenumbrüche fehlen noch.
Für die Anzeige des formatierten Textes mit Akkordsymbolen verwende ich ein Canvas.
Hier ist der Link zu meinem Projekt