Verovio
Source code documentation
resetfunctor.h
1 // Name: resetfunctor.h
3 // Author: David Bauer
4 // Created: 2023
5 // Copyright (c) Authors and others. All rights reserved.
7 
8 #ifndef __VRV_RESETFUNCTOR_H__
9 #define __VRV_RESETFUNCTOR_H__
10 
11 #include "functor.h"
12 
13 namespace vrv {
14 
15 //----------------------------------------------------------------------------
16 // ResetDataFunctor
17 //----------------------------------------------------------------------------
18 
22 class ResetDataFunctor : public Functor {
23 public:
29  virtual ~ResetDataFunctor() = default;
31 
32  /*
33  * Abstract base implementation
34  */
35  bool ImplementsEndInterface() const override { return false; }
36 
37  /*
38  * Functor interface
39  */
41  FunctorCode VisitAccid(Accid *accid) override;
42  FunctorCode VisitArpeg(Arpeg *arpeg) override;
43  FunctorCode VisitArtic(Artic *artic) override;
44  FunctorCode VisitBeam(Beam *beam) override;
45  FunctorCode VisitBeamSpan(BeamSpan *beamSpan) override;
46  FunctorCode VisitChord(Chord *chord) override;
47  FunctorCode VisitControlElement(ControlElement *controlElement) override;
48  FunctorCode VisitCustos(Custos *custos) override;
49  FunctorCode VisitDiv(Div *div) override;
50  FunctorCode VisitDot(Dot *dot) override;
51  FunctorCode VisitDots(Dots *dots) override;
52  FunctorCode VisitEditorialElement(EditorialElement *editorialElement) override;
53  FunctorCode VisitEnding(Ending *ending) override;
54  FunctorCode VisitF(F *f) override;
55  FunctorCode VisitFlag(Flag *flag) override;
56  FunctorCode VisitFloatingObject(FloatingObject *floatingObject) override;
57  FunctorCode VisitFTrem(FTrem *fTrem) override;
58  FunctorCode VisitHairpin(Hairpin *hairpin) override;
59  FunctorCode VisitKeySig(KeySig *keySig) override;
60  FunctorCode VisitLayer(Layer *layer) override;
61  FunctorCode VisitLayerElement(LayerElement *layerElement) override;
62  FunctorCode VisitLigature(Ligature *ligature) override;
63  FunctorCode VisitMeasure(Measure *measure) override;
64  FunctorCode VisitMRest(MRest *mRest) override;
65  FunctorCode VisitNote(Note *note) override;
66  FunctorCode VisitNc(Nc *nc) override;
67  FunctorCode VisitObject(Object *object) override;
68  FunctorCode VisitPage(Page *page) override;
69  FunctorCode VisitRepeatMark(RepeatMark *repeatMark) override;
70  FunctorCode VisitRest(Rest *rest) override;
71  FunctorCode VisitSection(Section *section) override;
72  FunctorCode VisitSlur(Slur *slur) override;
73  FunctorCode VisitStaff(Staff *staff) override;
74  FunctorCode VisitStaffDef(StaffDef *staffDef) override;
75  FunctorCode VisitStem(Stem *stem) override;
76  FunctorCode VisitSyl(Syl *syl) override;
77  FunctorCode VisitSystem(System *system) override;
78  FunctorCode VisitSystemMilestone(SystemMilestoneEnd *systemMilestoneEnd) override;
79  FunctorCode VisitTabDurSym(TabDurSym *tabDurSym) override;
80  FunctorCode VisitTempo(Tempo *tempo) override;
81  FunctorCode VisitTuplet(Tuplet *tuplet) override;
82  FunctorCode VisitTurn(Turn *turn) override;
83  FunctorCode VisitVerse(Verse *verse) override;
85 
86 protected:
87  //
88 private:
89  //
90 public:
91  //
92 private:
93  //
94 };
95 
96 //----------------------------------------------------------------------------
97 // ResetHorizontalAlignmentFunctor
98 //----------------------------------------------------------------------------
99 
104 public:
110  virtual ~ResetHorizontalAlignmentFunctor() = default;
112 
113  /*
114  * Abstract base implementation
115  */
116  bool ImplementsEndInterface() const override { return false; }
117 
118  /*
119  * Functor interface
120  */
122  FunctorCode VisitAccid(Accid *accid) override;
123  FunctorCode VisitArpeg(Arpeg *arpeg) override;
124  FunctorCode VisitBeam(Beam *beam) override;
125  FunctorCode VisitBeamSpan(BeamSpan *beamSpan) override;
126  FunctorCode VisitCustos(Custos *custos) override;
127  FunctorCode VisitDiv(Div *div) override;
128  FunctorCode VisitDot(Dot *dot) override;
129  FunctorCode VisitDots(Dots *dots) override;
130  FunctorCode VisitFloatingObject(FloatingObject *floatingObject) override;
131  FunctorCode VisitLayer(Layer *layer) override;
132  FunctorCode VisitLayerElement(LayerElement *layerElement) override;
133  FunctorCode VisitMeasure(Measure *measure) override;
134  FunctorCode VisitMRest(MRest *mRest) override;
135  FunctorCode VisitNote(Note *note) override;
136  FunctorCode VisitProport(Proport *proport) override;
137  FunctorCode VisitRest(Rest *rest) override;
138  FunctorCode VisitScoreDef(ScoreDef *scoreDef) override;
139  FunctorCode VisitSystem(System *system) override;
140  FunctorCode VisitTuplet(Tuplet *tuplet) override;
141  FunctorCode VisitTupletBracket(TupletBracket *tupletBracket) override;
142  FunctorCode VisitTupletNum(TupletNum *tupletNum) override;
144 
145 protected:
146  //
147 private:
148  //
149 public:
150  //
151 private:
152  //
153 };
154 
155 //----------------------------------------------------------------------------
156 // ResetVerticalAlignmentFunctor
157 //----------------------------------------------------------------------------
158 
163 public:
169  virtual ~ResetVerticalAlignmentFunctor() = default;
171 
172  /*
173  * Abstract base implementation
174  */
175  bool ImplementsEndInterface() const override { return false; }
176 
177  /*
178  * Functor interface
179  */
181  FunctorCode VisitArtic(Artic *artic) override;
182  FunctorCode VisitFloatingObject(FloatingObject *floatingObject) override;
183  FunctorCode VisitLayerElement(LayerElement *layerElement) override;
184  FunctorCode VisitOctave(Octave *octave) override;
185  FunctorCode VisitPage(Page *page) override;
186  FunctorCode VisitStaff(Staff *staff) override;
187  FunctorCode VisitSystem(System *system) override;
188  FunctorCode VisitTextElement(TextElement *textElement) override;
189  FunctorCode VisitTuplet(Tuplet *tuplet) override;
190  FunctorCode VisitTupletBracket(TupletBracket *tupletBracket) override;
192 
193 protected:
194  //
195 private:
196  //
197 public:
198  //
199 private:
200  //
201 };
202 
203 } // namespace vrv
204 
205 #endif // __VRV_RESETFUNCTOR_H__
This class models the MEI <accid> element.
Definition: accid.h:37
This class models the MEI <arpeg> element.
Definition: arpeg.h:31
Definition: artic.h:29
Definition: beam.h:284
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 represents elements appearing within a measure.
Definition: controlelement.h:33
Definition: custos.h:29
This class represents an MEI Div.
Definition: div.h:24
Definition: dot.h:22
This class models a group of dots as a layer element part and has no direct MEI equivalent.
Definition: elementpart.h:27
This class is a base class for the editorial element containing musical content, for example <rgd> or...
Definition: editorial.h:43
This class represents a MEI ending.
Definition: ending.h:33
This class models the MEI <f> element.
Definition: f.h:24
This class models the MEI <fTrem> element.
Definition: ftrem.h:25
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:31
This class models the MEI <keySig> element.
Definition: keysig.h:52
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:39
This class represents a collection of notes in the same layer with successive onset times,...
Definition: ligature.h:28
This class models the MEI <mRest> element.
Definition: mrest.h:32
This class represents a measure in a page-based score (Doc).
Definition: measure.h:46
This class models the MEI <nc> element.
Definition: nc.h:41
This class models the MEI <note> element.
Definition: note.h:67
This class represents a basic object.
Definition: object.h:61
This class models the MEI <octave> element.
Definition: octave.h:31
This class represents a page in a laid-out score (Doc).
Definition: page.h:31
This class models the MEI <proport> element.
Definition: proport.h:23
This class models the MEI <ornam> element.
Definition: repeatmark.h:32
This class resets the drawing values before calling PrepareData after changes.
Definition: resetfunctor.h:22
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: resetfunctor.h:35
This class resets the horizontal alignment for various types.
Definition: resetfunctor.h:103
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: resetfunctor.h:116
This class resets the vertical alignment for various types.
Definition: resetfunctor.h:162
bool ImplementsEndInterface() const override
Return true if the functor implements the end interface.
Definition: resetfunctor.h:175
This class models the MEI <rest> element.
Definition: rest.h:45
This class represents a MEI scoreDef.
Definition: scoredef.h:135
This class represents a MEI section.
Definition: section.h:28
Definition: slur.h:57
This class represents a MEI staffDef.
Definition: staffdef.h:37
This class represents a staff in a laid-out score (Doc).
Definition: staff.h:107
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:36
This class represents a system in a laid-out score (Doc).
Definition: system.h:36
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 is an interface for <tempo> elements at the measure level.
Definition: tempo.h:33
Definition: textelement.h:22
This class models a bracket as a layer element part and has no direct MEI equivalent.
Definition: elementpart.h:150
Definition: tuplet.h:33
This class models a tuplet num as a layer element part and has no direct MEI equivalent.
Definition: elementpart.h:249
This class models the MEI <turn> element.
Definition: turn.h:32
Definition: verse.h:28