8 #ifndef __VRV_PREPAREDATAFUNCTOR_H__
9 #define __VRV_PREPAREDATAFUNCTOR_H__
16 class SystemMilestoneInterface;
45 FunctorCode VisitAccid(
Accid *accid)
override;
46 FunctorCode VisitDiv(
Div *div)
override;
47 FunctorCode VisitChord(
Chord *chord)
override;
48 FunctorCode VisitFloatingObject(
FloatingObject *floatingObject)
override;
49 FunctorCode VisitKeySig(
KeySig *keySig)
override;
50 FunctorCode VisitMSpace(
MSpace *mSpace)
override;
51 FunctorCode VisitRepeatMark(
RepeatMark *repeatMark)
override;
52 FunctorCode VisitScore(
Score *score)
override;
53 FunctorCode VisitSpace(
Space *space)
override;
54 FunctorCode VisitTextLayoutElement(
TextLayoutElement *textLayoutElement)
override;
93 FunctorCode VisitLayerElement(
LayerElement *layerElement)
override;
132 FunctorCode VisitLayerElement(
LayerElement *layerElement)
override;
133 FunctorCode VisitLayerElementEnd(
LayerElement *layerElement)
override;
134 FunctorCode VisitMeasure(
Measure *measure)
override;
147 Staff *m_currentCrossStaff;
149 Layer *m_currentCrossLayer;
177 SymbolTable *GetSymbolTable()
const {
return m_symbolTable; }
183 FunctorCode VisitObject(Object *
object)
override;
194 SymbolTable *m_symbolTable;
222 const ListOfObjects &GetZonelessSyls()
const {
return m_zonelessSyls; }
227 Facsimile *GetFacsimile()
const {
return m_facsimile; }
233 FunctorCode VisitObject(Object *
object)
override;
244 Facsimile *m_facsimile;
246 ListOfObjects m_zonelessSyls;
275 const MapOfLinkingInterfaceIDPairs &GetNextIDPairs()
const {
return m_nextIDPairs; }
276 const MapOfLinkingInterfaceIDPairs &GetSameasIDPairs()
const {
return m_sameasIDPairs; }
277 const MapOfNoteIDPairs &GetStemSameasIDPairs()
const {
return m_stemSameasIDPairs; }
284 void InsertNextIDPair(
const std::string &nextID, LinkingInterface *interface);
285 void InsertSameasIDPair(
const std::string &sameasID, LinkingInterface *interface);
292 FunctorCode VisitObject(Object *
object)
override;
304 void ResolveStemSameas(Note *note);
310 MapOfLinkingInterfaceIDPairs m_nextIDPairs;
312 MapOfLinkingInterfaceIDPairs m_sameasIDPairs;
314 MapOfNoteIDPairs m_stemSameasIDPairs;
343 const ArrayOfPlistObjectIDPairs &GetInterfaceIDPairs()
const {
return m_plistObjectIDPairs; }
344 void InsertInterfaceObjectIDPair(Object *objectWithPlist,
const std::string &elementID);
351 FunctorCode VisitObject(Object *
object)
override;
362 ArrayOfPlistObjectIDPairs m_plistObjectIDPairs;
391 FunctorCode VisitLayerElement(
LayerElement *layerElement)
override;
392 FunctorCode VisitScore(
Score *score)
override;
393 FunctorCode VisitScoreDef(
ScoreDef *scoreDef)
override;
394 FunctorCode VisitStaffDef(
StaffDef *staffDef)
override;
405 data_DURATION m_durDefault;
407 std::map<int, data_DURATION> m_durDefaultForStaffN;
443 FunctorCode VisitF(
F *f)
override;
444 FunctorCode VisitFloatingObject(
FloatingObject *floatingObject)
override;
445 FunctorCode VisitLayerElement(
LayerElement *layerElement)
override;
446 FunctorCode VisitMeasureEnd(
Measure *measure)
override;
457 ListOfPointingInterClassIdPairs m_timePointingInterfaces;
488 const ListOfSpanningInterOwnerPairs &GetInterfaceOwnerPairs()
const {
return m_timeSpanningInterfaces; }
489 void InsertInterfaceOwnerPair(Object *owner, TimeSpanningInterface *interface);
496 FunctorCode VisitF(F *f)
override;
497 FunctorCode VisitFloatingObject(FloatingObject *floatingObject)
override;
498 FunctorCode VisitLayerElement(LayerElement *layerElement)
override;
499 FunctorCode VisitMeasure(Measure *measure)
override;
500 FunctorCode VisitMeasureEnd(Measure *measure)
override;
507 FunctorCode CallPseudoFunctor(Object *timeSpanningObject);
513 ListOfSpanningInterOwnerPairs m_timeSpanningInterfaces;
515 bool m_insideMeasure;
546 const ListOfSpanningInterClassIdPairs &GetInterfaceIDPairs()
const {
return m_timeSpanningInterfaces; }
547 void InsertInterfaceIDPair(ClassId classID, TimeSpanningInterface *interface);
548 void InsertObjectBeatPair(Object *
object,
const data_MEASUREBEAT &beat);
555 FunctorCode VisitDocEnd(Doc *doc)
override;
556 FunctorCode VisitF(F *f)
override;
557 FunctorCode VisitFloatingObject(FloatingObject *floatingObject)
override;
558 FunctorCode VisitMeasureEnd(Measure *measure)
override;
569 ListOfSpanningInterClassIdPairs m_timeSpanningInterfaces;
571 ListOfObjectBeatPairs m_tstamps;
600 FunctorCode VisitMeasureEnd(
Measure *measure)
override;
601 FunctorCode VisitPedal(
Pedal *pedal)
override;
612 std::list<Pedal *> m_pedalLines;
642 FunctorCode VisitDot(
Dot *dot)
override;
643 FunctorCode VisitLayerElement(
LayerElement *layerElement)
override;
644 FunctorCode VisitMeasureEnd(
Measure *measure)
override;
688 FunctorCode VisitChord(
Chord *chord)
override;
689 FunctorCode VisitDocEnd(
Doc *doc)
override;
690 FunctorCode VisitNote(
Note *note)
override;
691 FunctorCode VisitSyl(
Syl *syl)
override;
737 FunctorCode VisitChord(
Chord *chord)
override;
738 FunctorCode VisitNote(
Note *note)
override;
739 FunctorCode VisitRest(
Rest *rest)
override;
740 FunctorCode VisitTabDurSym(
TabDurSym *tabDurSym)
override;
741 FunctorCode VisitTuplet(
Tuplet *tuplet)
override;
750 Dots *ProcessDots(
Dots *dots,
Object *parent,
bool shouldExist)
const;
752 Flag *ProcessFlag(
Flag *flag,
Object *parent,
bool shouldExist)
const;
787 FunctorCode VisitLayer(
Layer *layer)
override;
788 FunctorCode VisitMRpt(
MRpt *mRpt)
override;
789 FunctorCode VisitStaff(
Staff *staff)
override;
802 data_BOOLEAN m_multiNumber;
831 const std::map<LayerElement *, Turn *> &GetDelayedTurns()
const {
return m_delayedTurns; }
842 FunctorCode VisitLayerElement(LayerElement *layerElement)
override;
843 FunctorCode VisitTurn(Turn *turn)
override;
854 LayerElement *m_previousElement;
856 Chord *m_currentChord;
860 std::map<LayerElement *, Turn *> m_delayedTurns;
889 const std::vector<SystemMilestoneInterface *> &GetStartMilestones()
const {
return m_startMilestones; }
890 void InsertStartMilestone(SystemMilestoneInterface *interface);
897 FunctorCode VisitEditorialElement(EditorialElement *editorialElement)
override;
898 FunctorCode VisitEnding(Ending *ending)
override;
899 FunctorCode VisitMeasure(Measure *measure)
override;
900 FunctorCode VisitSection(Section *section)
override;
901 FunctorCode VisitSystemMilestone(SystemMilestoneEnd *systemMilestoneEnd)
override;
912 Measure *m_lastMeasure;
914 Ending *m_currentEnding;
916 std::vector<SystemMilestoneInterface *> m_startMilestones;
946 FunctorCode VisitDir(
Dir *dir)
override;
947 FunctorCode VisitDynam(
Dynam *dynam)
override;
948 FunctorCode VisitEnding(
Ending *ending)
override;
949 FunctorCode VisitHairpin(
Hairpin *hairpin)
override;
950 FunctorCode VisitHarm(
Harm *harm)
override;
951 FunctorCode VisitMeasure(
Measure *measure)
override;
952 FunctorCode VisitMeasureEnd(
Measure *measure)
override;
953 FunctorCode VisitPedal(
Pedal *pedal)
override;
967 std::vector<Dynam *> m_dynams;
969 std::vector<Hairpin *> m_hairpins;
971 std::map<std::string, Harm *> m_harms;
1002 const ArrayOfObjects &GetTimeSpanningElements()
const {
return m_timeSpanningElements; }
1003 void InsertTimeSpanningElement(Object *element);
1010 FunctorCode VisitF(F *f)
override;
1011 FunctorCode VisitFloatingObject(FloatingObject *floatingObject)
override;
1012 FunctorCode VisitMeasureEnd(Measure *measure)
override;
1013 FunctorCode VisitStaff(Staff *staff)
override;
1014 FunctorCode VisitSyl(Syl *syl)
override;
1025 ArrayOfObjects m_timeSpanningElements;
1054 FunctorCode VisitReh(
Reh *reh)
override;
1094 FunctorCode VisitBeamSpan(
BeamSpan *beamSpan)
override;
1102 ArrayOfObjects GetBeamSpanElementList(
BeamSpan *beamSpan,
Layer *layer,
const Staff *staff)
const;
This class models the MEI <accid> element.
Definition: accid.h:41
This class models the MEI <beamSpan> element.
Definition: beamspan.h:36
This class represents a collection of notes in the same layer with the same onset time.
Definition: chord.h:44
This class is a mixin for all functors that require two step processing: (1) Collecing data.
Definition: functor.h:220
This class models the MEI <dir> element.
Definition: dir.h:33
This class represents an MEI Div.
Definition: div.h:24
This abstract class is the base class for all mutable functors that need access to the document.
Definition: functor.h:151
This class is a hold the data and corresponds to the model of a MVC design pattern.
Definition: doc.h:41
This class models a group of dots as a layer element part and has no direct MEI equivalent.
Definition: elementpart.h:27
This class represents a MEI ending.
Definition: ending.h:33
This class models the MEI <f> element.
Definition: f.h:24
Implements the facsimile element in MEI.
Definition: facsimile.h:31
This class models a stem as a layer element part and has no direct MEI equivalent.
Definition: elementpart.h:97
This class represents elements appearing within a measure.
Definition: floatingobject.h:28
This abstract class is the base class for all mutable functors.
Definition: functor.h:101
This class models the MEI <hairpin> element.
Definition: hairpin.h:32
This class models the MEI <harm> element.
Definition: harm.h:32
This class models the MEI <keySig> element.
Definition: keysig.h:51
This class is a base class for the Layer (<layer>) content.
Definition: layerelement.h:51
This class represents a layer in a laid-out score (Doc).
Definition: layer.h:40
This class models the MEI <mRpt> element.
Definition: mrpt.h:26
This class models the MEI <space> element.
Definition: mspace.h:22
This class represents a measure in a page-based score (Doc).
Definition: measure.h:46
This class models the MEI <note> element.
Definition: note.h:69
This class represents a basic object.
Definition: object.h:66
This class models the MEI <pedal> element.
Definition: pedal.h:34
This class matches the @altsym element to the corresponding symbolDef.
Definition: preparedatafunctor.h:159
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:172
This class gets the list of referenced elements for the BeamSpan and marks referenced objects as cont...
Definition: preparedatafunctor.h:1075
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:1088
This class sets the cross staff and cross layer pointers on layer elements.
Definition: preparedatafunctor.h:113
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:126
This class sets the drawing cue size for all layer elements.
Definition: preparedatafunctor.h:74
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:87
This class is responsible for one time member initialization at the very begin.
Definition: preparedatafunctor.h:26
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:39
This class sets Turn::m_drawingEndNote for delayed turns.
Definition: preparedatafunctor.h:813
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:826
This class extracts the default duration from scoredef/staffdef.
Definition: preparedatafunctor.h:372
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:385
This class associates layer elements with @facs to the appropriate zone.
Definition: preparedatafunctor.h:204
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:217
This class groups FloatingObjects by drawingGrpId.
Definition: preparedatafunctor.h:927
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:940
This class adds LayerElement parts (stem, flag, dots, etc).
Definition: preparedatafunctor.h:718
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:731
This class matches linking elements (e.g, @next).
Definition: preparedatafunctor.h:256
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:269
This class sets wordpos and connector ends.
Definition: preparedatafunctor.h:669
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:682
This class sets the Measure of Ending.
Definition: preparedatafunctor.h:870
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:883
This class matches down and up pedal lines.
Definition: preparedatafunctor.h:581
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:594
This class matches elements of @plist.
Definition: preparedatafunctor.h:324
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:337
This class processes by layer and sets drawing pointers.
Definition: preparedatafunctor.h:623
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:636
This class resolves the Reh time pointing position in case none is set.
Definition: preparedatafunctor.h:1035
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:1048
This class sets mRpt drawing numbers (if required).
Definition: preparedatafunctor.h:768
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:781
This class goes through all the TimeSpanningInterface elements and sets them for each staff that is c...
Definition: preparedatafunctor.h:983
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:996
This class matches the start for TimePointingInterface elements (such as fermata or harm).
Definition: preparedatafunctor.h:417
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:430
This class matches start and end for TimeSpanningInterface elements (such as tie or slur).
Definition: preparedatafunctor.h:469
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:482
This class matches start and end for TimeSpanningInterface elements with tstamp(2) attributes.
Definition: preparedatafunctor.h:527
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: preparedatafunctor.h:540
This class models the MEI <reh> element.
Definition: reh.h:30
This class models the MEI <ornam> element.
Definition: repeatmark.h:32
This class models the MEI <rest> element.
Definition: rest.h:49
This class represents a MEI scoreDef.
Definition: scoredef.h:136
This class represent a <score> in MEI.
Definition: score.h:30
This class models the MEI <space> element.
Definition: space.h:23
This class represents a MEI staffDef.
Definition: staffdef.h:37
This class represents a staff in a laid-out score (Doc).
Definition: staff.h:110
This class models a stem as a layer element part and as MEI <stem> element.
Definition: stem.h:27
Syl is a TimeSpanningInterface for managing syllable connectors.
Definition: syl.h:38
Definition: symboltable.h:20
This class models an end milestone element at the system level.
Definition: systemmilestone.h:28
This class models the MEI <tabDurSym> element.
Definition: tabdursym.h:29
This class represents a text element featuring horizontal and vertical layout.
Definition: textlayoutelement.h:24
This class is an interface for elements having a single time point, such as tempo,...
Definition: timeinterface.h:39