Canorus 0.0
lilypondimport.h
Go to the documentation of this file.
1
8#ifndef LILYPONDIMPORT_H_
9#define LILYPONDIMPORT_H_
10
11#include <QString>
12#include <QStack>
13
14#include "score/voice.h"
15#include "score/rest.h"
16#include "score/keysignature.h"
17#include "score/clef.h"
18#include "score/timesignature.h"
19#include "score/barline.h"
20#include "score/lyricscontext.h"
21#include "score/syllable.h"
23#include "score/diatonicpitch.h"
24
25#include "import/import.h"
26
27class QTextStream;
28
29class CALilyPondImport : public CAImport {
30public:
31 // Constructors
32 CALilyPondImport( const QString in );
33 CALilyPondImport( QTextStream *in=0 );
34 CALilyPondImport( CADocument *document, QTextStream *in=0 );
35 inline void setTemplateVoice( CAVoice *voice ) { _templateVoice = voice; }
36
37 // Destructor
38 virtual ~CALilyPondImport();
39
40 const QString readableStatus();
42
43private:
44 void initLilyPondImport();
45
46 static const QRegExp WHITESPACE_DELIMITERS;
47 static const QRegExp SYNTAX_DELIMITERS;
48 static const QRegExp DELIMITERS;
49
50 // Internal time signature
51 struct CATime {
52 int beats;
53 int beat;
54 };
55
60 Chord
61 };
62
63 // Actual import of the input string
66
67 inline CAVoice *curVoice() { return _curVoice; }
68 inline void setCurVoice(CAVoice *voice) { _curVoice = voice; }
69
70 const QString parseNextElement();
71 const QString peekNextElement();
72 void addError(QString description, int lineError = 0, int charError = 0);
73
75 // Helper functions //
77 CAPlayableLength playableLengthFromLilyPond( QString &playableElt, bool parse=false );
78
79 bool isNote(const QString elt);
80 CADiatonicPitch relativePitchFromLilyPond(QString &note, CADiatonicPitch prevPitch, bool parse=false);
81 bool isRest(const QString elt);
82 CARest::CARestType restTypeFromLilyPond(QString& rest, bool parse=false);
84 int clefOffsetFromLilyPond( const QString clef );
87 CATime timeSigFromLilyPond(QString time);
88
90
92 // Getter/Setter methods //
94 inline QString& in() { return *stream()->string(); }
95 inline CALilyPondDepth curDepth() { return _depth.top(); }
96 inline void pushDepth(CALilyPondDepth depth) { _depth.push(depth); }
97 inline CALilyPondDepth popDepth() { return _depth.pop(); }
98 inline int curLine() { return _curLine; }
99 inline int curChar() { return _curChar; }
100
101 // Attributes
105 QStack<CALilyPondDepth> _depth; // which block is currently processed
107 QList<QString> _errors;
108 QList<QString> _warnings;
109
111 CAVoice *_templateVoice; // used when importing voice to set the staff etc.
112
114};
115
116#endif /* LILYPONDIMPORT_H_ */
CABarlineType
Definition: barline.h:19
CAPredefinedClefType
Definition: clef.h:20
CAGender
Definition: diatonickey.h:17
Musical note pitch.
Definition: diatonicpitch.h:16
Class which represents the current document.
Definition: document.h:19
QTextStream * stream()
Definition: file.h:36
Base class for import filters.
Definition: import.h:20
Definition: lilypondimport.h:29
CASheet * importSheetImpl()
Definition: lilypondimport.cpp:76
const QString readableStatus()
Definition: lilypondimport.cpp:716
CAVoice * templateVoice()
Definition: lilypondimport.h:110
int curChar()
Definition: lilypondimport.h:99
CAVoice * importVoiceImpl()
Definition: lilypondimport.cpp:109
bool isNote(const QString elt)
Definition: lilypondimport.cpp:513
void setCurVoice(CAVoice *voice)
Definition: lilypondimport.h:68
CABarline::CABarlineType barlineTypeFromLilyPond(const QString bar)
Definition: lilypondimport.cpp:701
QString & in()
Definition: lilypondimport.h:94
CAVoice * _templateVoice
Definition: lilypondimport.h:111
static const QRegExp DELIMITERS
Definition: lilypondimport.h:48
CALilyPondImport(const QString in)
Definition: lilypondimport.cpp:44
CAMusElement * findSharedElement(CAMusElement *elt)
Definition: lilypondimport.cpp:492
CAVoice * _curVoice
Definition: lilypondimport.h:102
CALilyPondDepth popDepth()
Definition: lilypondimport.h:97
int _curLine
Definition: lilypondimport.h:106
CALilyPondDepth curDepth()
Definition: lilypondimport.h:95
const QString parseNextElement()
Definition: lilypondimport.cpp:403
int curLine()
Definition: lilypondimport.h:98
CASlur * _curPhrasingSlur
Definition: lilypondimport.h:104
const QString peekNextElement()
Definition: lilypondimport.cpp:445
CARest::CARestType restTypeFromLilyPond(QString &rest, bool parse=false)
Definition: lilypondimport.cpp:615
CADiatonicKey::CAGender diatonicKeyGenderFromLilyPond(QString gender)
Definition: lilypondimport.cpp:678
int _curChar
Definition: lilypondimport.h:106
void setTemplateVoice(CAVoice *voice)
Definition: lilypondimport.h:35
CADiatonicPitch relativePitchFromLilyPond(QString &note, CADiatonicPitch prevPitch, bool parse=false)
Definition: lilypondimport.cpp:531
CALyricsContext * importLyricsContextImpl()
Definition: lilypondimport.cpp:362
CALilyPondDepth
Definition: lilypondimport.h:56
@ Chord
Definition: lilypondimport.h:60
@ Voice
Definition: lilypondimport.h:59
@ Score
Definition: lilypondimport.h:57
@ Layout
Definition: lilypondimport.h:58
CADocument * _document
Definition: lilypondimport.h:113
CASlur * _curSlur
Definition: lilypondimport.h:103
CAClef::CAPredefinedClefType predefinedClefTypeFromLilyPond(const QString clef)
Definition: lilypondimport.cpp:632
CAPlayableLength playableLengthFromLilyPond(QString &playableElt, bool parse=false)
Definition: lilypondimport.cpp:583
void addError(QString description, int lineError=0, int charError=0)
Definition: lilypondimport.cpp:69
void pushDepth(CALilyPondDepth depth)
Definition: lilypondimport.h:96
CATime timeSigFromLilyPond(QString time)
Definition: lilypondimport.cpp:688
QList< QString > _errors
Definition: lilypondimport.h:107
QStack< CALilyPondDepth > _depth
Definition: lilypondimport.h:105
bool isRest(const QString elt)
Definition: lilypondimport.cpp:522
static const QRegExp WHITESPACE_DELIMITERS
Definition: lilypondimport.h:46
static const QRegExp SYNTAX_DELIMITERS
Definition: lilypondimport.h:47
int clefOffsetFromLilyPond(const QString clef)
Definition: lilypondimport.cpp:656
void initLilyPondImport()
Definition: lilypondimport.cpp:63
virtual ~CALilyPondImport()
Definition: lilypondimport.cpp:60
QList< QString > _warnings
Definition: lilypondimport.h:108
CAVoice * curVoice()
Definition: lilypondimport.h:67
One stanza line of lyrics.
Definition: lyricscontext.h:19
An abstract class which represents every music element in the score.
Definition: muselement.h:21
Musical length of notes and rests.
Definition: playablelength.h:16
CARestType
Definition: rest.h:17
Represents a single sheet of paper in the document.
Definition: sheet.h:22
Slur, Tie, Phrasing slur and Laissez vibrer tie This class represents any type of slur....
Definition: slur.h:18
Class which represents a voice in the staff.
Definition: voice.h:23
Definition: lilypondimport.h:51
int beats
Definition: lilypondimport.h:52
int beat
Definition: lilypondimport.h:53