Canorus  0.0
lilypondexport.h
Go to the documentation of this file.
1 
8 #ifndef LILYPONDEXPORT_H_
9 #define LILYPONDEXPORT_H_
10 
11 #include <QTextStream>
12 #include <QString>
13 
14 #include "score/keysignature.h"
15 #include "score/timesignature.h"
16 #include "score/clef.h"
17 #include "score/barline.h"
18 #include "score/playable.h"
19 #include "score/note.h"
20 #include "score/rest.h"
21 #include "score/document.h"
22 #include "score/lyricscontext.h"
23 #include "score/syllable.h"
24 
25 #include "export/export.h"
26 
27 class CALilyPondExport : public CAExport {
28 public:
29  CALilyPondExport( QTextStream *out=0 );
30 
32  // Polling export status //
34  // Setter methods are private!
35  inline CAVoice *curVoice() { return _curVoice; }
36  inline CASheet *curSheet() { return _curSheet; }
37  inline CADocument *curDocument() { return _curDocument; }
38  inline CAContext *curContext() { return _curContext; }
39  inline int curContextIndex() { return _curContextIndex; }
40  inline int curIndentLevel() { return _curIndentLevel; }
41 
42 private:
43  void exportSheetImpl(CASheet *sheet);
44  void exportScoreBlock(CASheet *sheet);
45  void exportStaffVoices(CAStaff *staff);
46  void exportVoiceImpl(CAVoice *voice);
50  void exportNoteMarks( CANote* );
52  void exportPlayable( CAPlayable *elt );
53 
54  void writeDocumentHeader();
55  void scanForRepeats(CAStaff *staff);
58 
60  // Helper methods //
62  const QString clefTypeToLilyPond( CAClef::CAClefType type, int c1, int offset );
64  const QString playableLengthToLilyPond( CAPlayableLength length );
65  const QString diatonicPitchToLilyPond( CADiatonicPitch p );
66  const QString restTypeToLilyPond(CARest::CARestType type);
68  const QString syllableToLilyPond( CASyllable *s );
69 
70  inline const QString relativePitchToString(CANote* note, CADiatonicPitch prevPitch) {
71  return relativePitchToString( note->diatonicPitch(), prevPitch);
72  }
73  const QString relativePitchToString( CADiatonicPitch p, CADiatonicPitch prevPitch);
74  void voiceVariableName( QString &name, int staffNum, int voiceNum );
75  void spellNumbers( QString &s );
76 
77  QString markupString( QString );
78  QString escapeWeirdChars( QString );
79 
80  void indent();
81  inline void indentMore() { ++_curIndentLevel; }
82  inline void indentLess() { --_curIndentLevel; }
83 
85  // Getter/Setter methods //
87  inline void setCurVoice(CAVoice *voice) { _curVoice = voice; }
88  inline void setCurSheet(CASheet *sheet) { _curSheet = sheet; }
89  inline void setCurContext(CAContext *context) { _curContext = context; }
90  inline void setCurContextIndex(int c) { _curContextIndex = c; }
91  inline void setCurDocument(CADocument *document) { _curDocument = document; }
92  inline void setIndentLevel( int level) { _curIndentLevel = level; }
93 
95  // Members //
97  QTextStream *_out;
104 
105  // Voice exporting current status
109 
110  void voltaFunction( void );
114  static const QString _regExpVoltaRepeat;
115  static const QString _regExpVoltaBar;
117 };
118 
119 #endif /* LILYPONDEXPORT_H_*/
Represents a single sheet of paper in the document.
Definition: sheet.h:22
void indentLess()
Definition: lilypondexport.h:82
static const QString _regExpVoltaBar
Definition: lilypondexport.h:115
LilyPond export filter This class is used to export the document or parts of the document to LilyPond...
Definition: lilypondexport.h:27
void setCurSheet(CASheet *sheet)
Definition: lilypondexport.h:88
QString markupString(QString)
Definition: lilypondexport.cpp:907
bool _voltaBracketFinishAtRepeat
Definition: lilypondexport.h:112
bool _voltaFunctionWritten
Definition: lilypondexport.h:111
void scanForRepeats(CAStaff *staff)
Definition: lilypondexport.cpp:876
void setIndentLevel(int level)
Definition: lilypondexport.h:92
const QString clefTypeToLilyPond(CAClef::CAClefType type, int c1, int offset)
Definition: lilypondexport.cpp:608
void indent()
Definition: lilypondexport.cpp:1164
CASheet * curSheet()
Definition: lilypondexport.h:36
Class which represents a voice in the staff.
Definition: voice.h:23
Represents a time signature in the staff.
Definition: timesignature.h:18
void exportLyricsContextBlock(CALyricsContext *lc)
Definition: lilypondexport.cpp:492
void setCurContext(CAContext *context)
Definition: lilypondexport.h:89
void voltaFunction(void)
Definition: lilypondexport.cpp:1190
void setCurVoice(CAVoice *voice)
Definition: lilypondexport.h:87
CARestType
Definition: rest.h:17
CADocument * _curDocument
Definition: lilypondexport.h:101
int _curContextIndex
Definition: lilypondexport.h:102
void exportLyricsContextImpl(CALyricsContext *lc)
Definition: lilypondexport.cpp:511
Class which represents the current document.
Definition: document.h:19
bool _timeSignatureFound
Definition: lilypondexport.h:116
bool _voltaBracketFinishAtBar
Definition: lilypondexport.h:113
const QString syllableToLilyPond(CASyllable *s)
Definition: lilypondexport.cpp:782
void exportPlayable(CAPlayable *elt)
Definition: lilypondexport.cpp:171
Represents a note in the score.
Definition: note.h:18
CAVoice * _curVoice
Definition: lilypondexport.h:98
void spellNumbers(QString &s)
Definition: lilypondexport.cpp:1176
CADiatonicPitch _lastNotePitch
Definition: lilypondexport.h:106
const QString playableLengthToLilyPond(CAPlayableLength length)
Definition: lilypondexport.cpp:664
Base class for export filters.
Definition: export.h:22
void exportMarksBeforeElement(CAMusElement *)
Definition: lilypondexport.cpp:440
CADocument * curDocument()
Definition: lilypondexport.h:37
QTextStream * _out
Definition: lilypondexport.h:97
int curIndentLevel()
Definition: lilypondexport.h:40
Musical note pitch.
Definition: diatonicpitch.h:16
Musical length of notes and rests.
Definition: playablelength.h:16
int curContextIndex()
Definition: lilypondexport.h:39
static const QString _regExpVoltaRepeat
Definition: lilypondexport.h:114
const QString relativePitchToString(CANote *note, CADiatonicPitch prevPitch)
Definition: lilypondexport.h:70
void indentMore()
Definition: lilypondexport.h:81
const QString diatonicPitchToLilyPond(CADiatonicPitch p)
Definition: lilypondexport.cpp:707
CAContext * _curContext
Definition: lilypondexport.h:100
CAClefType
Definition: clef.h:36
const QString barlineTypeToLilyPond(CABarline::CABarlineType type)
Definition: lilypondexport.cpp:752
void exportVoiceImpl(CAVoice *voice)
Definition: lilypondexport.cpp:65
void exportSheetImpl(CASheet *sheet)
Definition: lilypondexport.cpp:804
int _curStreamTime
Definition: lilypondexport.h:108
An abstract class which represents every music element in the score.
Definition: muselement.h:21
const QString restTypeToLilyPond(CARest::CARestType type)
Definition: lilypondexport.cpp:734
One stanza line of lyrics.
Definition: lyricscontext.h:19
Playable instances of music elements.
Definition: playable.h:18
CAPlayableLength _lastPlayableLength
Definition: lilypondexport.h:107
CABarlineType
Definition: barline.h:19
CAContext * curContext()
Definition: lilypondexport.h:38
Represents a staff in the sheet.
Definition: staff.h:25
void exportScoreBlock(CASheet *sheet)
Definition: lilypondexport.cpp:985
void setCurDocument(CADocument *document)
Definition: lilypondexport.h:91
CALilyPondExport(QTextStream *out=0)
Definition: lilypondexport.cpp:50
void setCurContextIndex(int c)
Definition: lilypondexport.h:90
void voiceVariableName(QString &name, int staffNum, int voiceNum)
Definition: lilypondexport.cpp:954
CASheet * _curSheet
Definition: lilypondexport.h:99
void exportNoteMarks(CANote *)
Definition: lilypondexport.cpp:405
int _curIndentLevel
Definition: lilypondexport.h:103
const QString diatonicKeyGenderToLilyPond(CADiatonicKey::CAGender gender)
Definition: lilypondexport.cpp:652
Lyrics under the note.
Definition: syllable.h:19
void exportMarksAfterElement(CAMusElement *)
Definition: lilypondexport.cpp:293
void exportStaffVoices(CAStaff *staff)
Definition: lilypondexport.cpp:924
void doAnacrusisCheck(CATimeSignature *time)
Definition: lilypondexport.cpp:521
QString escapeWeirdChars(QString)
Definition: lilypondexport.cpp:914
CADiatonicPitch writeRelativeIntro()
Definition: lilypondexport.cpp:557
QTextStream & out()
Definition: export.h:71
CAVoice * curVoice()
Definition: lilypondexport.h:35
void writeDocumentHeader()
Definition: lilypondexport.cpp:857
Line of music elements in the sheet.
Definition: context.h:16
CADiatonicPitch & diatonicPitch()
Definition: note.h:35
CAGender
Definition: diatonickey.h:17