13#ifndef __xmlpart2guido__
14#define __xmlpart2guido__
22#include "clefvisitor.h"
25#include "keysignvisitor.h"
26#include "metronomevisitor.h"
27#include "notevisitor.h"
29#include "timesignvisitor.h"
69 std::stack<Sguidoelement> fStack;
75 vector<delayedElement> fDelayed;
77 bool fGenerateComments, fGenerateBars, fGeneratePositions, fGenerateAutoMeasureNum, fLyricsManualSpacing;
81 bool fInCue, fInGrace, fInhibitNextBar, fPendingBar, fBeamOpened, fMeasureEmpty, fCrescPending,fWavyTrillOpened, fSingleScopeTrill, fNonStandardNoteHead, fDoubleBar, fTremoloInProgress;
86 std::queue<int> fDirectionEraserStack;
87 std::stack< std::pair<int, int> > fBeamStack;
88 std::vector< std::pair<int, int> > fSlurStack;
92 bool isProcessingChord;
99 int fCurrentStaffIndex;
104 long fCurrentDivision;
112 int fCurrentBeamNumber;
113 int fCurrentStemDirection;
117 void add (
Sguidoelement& elt) {
if (fStack.size()) fStack.top()->add(elt); }
119 void checkDelayed (
long time);
120 void push (
Sguidoelement& elt) { add(elt); fStack.push(elt); }
121 void pop () { fStack.pop(); }
123 void moveMeasureTime (
int duration,
bool moveVoiceToo=
false,
int x_default = 0);
128 void checkPostArticulation (
const notevisitor& note );
130 int checkChordOrnaments (
const notevisitor& note );
132 std::vector<Sxmlelement> getChord (
const S_note& note );
133 std::vector<Sxmlelement> getChord (
const Sxmlelement& note );
134 void checkStaff (
int staff );
135 void checkStem (
const S_stem& stem );
136 void checkBeamBegin (
const std::vector<S_beam>& beams );
137 void checkBeamEnd (
const std::vector<S_beam>& beams );
138 void checkTupletBegin(
const std::vector<S_tuplet>& tuplets,
141 void checkTupletEnd (
const std::vector<S_tuplet>& tuplets );
146 void checkSlur (
const std::vector<S_slur>& slurs );
147 void checkSlurBegin (
const std::vector<S_slur>& slurs );
148 void checkSlurEnd (
const std::vector<S_slur>& slurs );
149 bool isSlurClosing(
S_slur elt);
150 void checkTiedBegin (
const std::vector<S_tied>& tied );
151 void checkTiedEnd (
const std::vector<S_tied>& tied );
155 void checkWavyTrillBegin (
const notevisitor& nv );
165 std::vector<S_beam>::const_iterator findValue (
const std::vector<S_beam>& beams,
const std::string& val )
const;
166 std::vector<S_slur>::const_iterator findTypeValue (
const std::vector<S_slur>& slurs,
const std::string& val )
const;
167 std::vector<S_tied>::const_iterator findTypeValue (
const std::vector<S_tied>& tied,
const std::string& val )
const;
168 std::vector< std::pair<int, int> >::const_iterator findSlur (
const int xmlnum )
const;
171 void checkLyricBegin (
const std::vector<S_lyric>& lyrics );
172 void checkLyricEnd (
const std::vector<S_lyric>& lyrics );
173 std::vector<S_lyric>::const_iterator findValue (
const std::vector<S_lyric>& lyrics,
174 const std::string& val )
const;
175 std::string lyricParams;
178 static std::string alter2accident (
float alter );
181 enum { kStemUndefined, kStemUp, kStemDown, kStemNone };
182 enum { kLeaveChord=-1, kNoChord, kEnterChord } chordState;
184 virtual void visitStart(
S_backup& elt);
185 virtual void visitStart(
S_barline& elt);
186 virtual void visitStart(
S_coda& elt);
189 virtual void visitStart(
S_forward& elt);
190 virtual void visitStart(
S_measure& elt);
191 virtual void visitStart(
S_note& elt);
193 virtual void visitStart(
S_part& elt);
194 virtual void visitStart(
S_segno& elt);
195 virtual void visitStart(
S_wedge& elt);
200 virtual void visitEnd (
S_ending& elt);
201 virtual void visitEnd (
S_key& elt);
203 virtual void visitEnd (
S_note& elt);
204 virtual void visitEnd (
S_repeat& elt);
205 virtual void visitEnd (
S_sound& elt);
206 virtual void visitEnd (
S_time& elt);
211 float getNoteDistanceFromStaffTop(
const notevisitor& nv);
215 std::map<int, float> fStaffDistance;
217 bool fIgnoreWedgeWithOffset;
220 float xPosFromTimePos(
float default_x,
float relative_x);
223 xmlpart2guido(
bool generateComments,
bool generateStem,
bool generateBar=
true);
227 void initialize (Sguidoelement seq,
int staff,
int guidostaff,
int voice,
bool notesonly,
rational defaultTimeSign);
228 void generatePositions (
bool state) { fGeneratePositions = state; }
229 const rational& getTimeSign ()
const {
return fCurrentTimeSign; }
231 bool hasLyrics()
const {
return fHasLyrics;}
232 std::multimap<int, std::pair< int, std::pair< rational, string > > > staffClefMap;
234 std::string getClef(
int staffIndex,
rational pos,
int measureNum);
key element data
Definition: clefvisitor.h:35
a simple tree representation
Definition: ctree.h:124
A guido note duration representation.
Definition: guido.h:128
key element data
Definition: keysignvisitor.h:37
key element data
Definition: metronomevisitor.h:37
A note visitor.
Definition: notevisitor.h:86
key element data
Definition: timesignvisitor.h:38
A score visitor to produce a Guido representation.
Definition: xmlpart2guido.h:67
xmlpart2guido(bool generateComments, bool generateStem, bool generateBar=true)
Infer X-Position from TimePosition.
std::map< int, std::map< rational, std::vector< int > > > timePositions
Containing default-x positions on a fCurrentVoicePosition (rational) of measure(int)
Definition: xmlpart2guido.h:237
Rational number representation.
Definition: rational.h:25