Aktuelle Zeit: 18.12.2018 21:42

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Liedertexte, chopro Umsetzung mit Purebasic ?
BeitragVerfasst: 11.03.2018 20:53 
Offline

Registriert: 04.05.2014 10:05
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 ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Liedertexte, chopro Umsetzung mit Purebasic ?
BeitragVerfasst: 12.03.2018 12:00 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:53
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:

Code:
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, ich laufe schneller, dann ist es nicht so weit."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Liedertexte, chopro Umsetzung mit Purebasic ?
BeitragVerfasst: 17.03.2018 20:32 
Offline

Registriert: 04.05.2014 10:05
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?

Genau, und noch weiteres..
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Liedertexte, chopro Umsetzung mit Purebasic ?
BeitragVerfasst: 18.03.2018 00:30 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
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

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Liedertexte, chopro Umsetzung mit Purebasic ?
BeitragVerfasst: 18.03.2018 20:37 
Offline

Registriert: 30.03.2011 20:53
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


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye