-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
twrite.h
255 lines (208 loc) · 9.31 KB
/
twrite.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
/*
* SPDX-License-Identifier: GPL-3.0-only
* MuseScore-CLA-applies
*
* MuseScore
* Music Composition & Notation
*
* Copyright (C) 2021 MuseScore BVBA and others
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef MU_ENGRAVING_TWRITE_H
#define MU_ENGRAVING_TWRITE_H
#include "../../libmscore/property.h"
#include "global/modularity/ioc.h"
#include "../../iengravingconfiguration.h"
namespace mu::engraving {
class XmlWriter;
class WriteContext;
class EngravingItem;
class Accidental;
class ActionIcon;
class Ambitus;
class Arpeggio;
class Articulation;
class BagpipeEmbellishment;
class BarLine;
class Beam;
class Bend;
class Box;
class HBox;
class VBox;
class FBox;
class TBox;
class Bracket;
class Breath;
class Chord;
class ChordRest;
class ChordLine;
class Clef;
class DurationElement;
class Dynamic;
class Fermata;
class FiguredBass;
class FiguredBassItem;
class Fingering;
class FretDiagram;
class Glissando;
class GradualTempoChange;
class Groups;
class Hairpin;
class Harmony;
class Hook;
class Image;
class InstrumentChange;
class Jump;
class KeySig;
class LayoutBreak;
class LedgerLine;
class LetRing;
class Location;
class Lyrics;
class Marker;
class MeasureNumber;
class MeasureRepeat;
class MMRest;
class MMRestRange;
class Note;
class NoteEvent;
class NoteDot;
class NoteLine;
class Ottava;
class Page;
class PalmMute;
class Part;
class Pedal;
class PlayTechAnnotation;
class RehearsalMark;
class Rest;
class Segment;
class Slur;
class SlurTie;
class SLine;
class Spanner;
class Spacer;
class StaffState;
class StaffText;
class StaffTextBase;
class StaffType;
class StaffTypeChange;
class Stem;
class StemSlash;
class Sticking;
class Symbol;
class BSymbol;
class System;
class SystemDivider;
class SystemText;
class TextLineBase;
class TextBase;
}
namespace mu::engraving::rw400 {
class TWrite
{
INJECT_STATIC(engraving, IEngravingConfiguration, engravingConfiguration)
public:
TWrite() = default;
static void write(const Accidental* a, XmlWriter& xml, WriteContext& ctx);
static void write(const ActionIcon* a, XmlWriter& xml, WriteContext& ctx);
static void write(const Ambitus* a, XmlWriter& xml, WriteContext& ctx);
static void write(const Arpeggio* a, XmlWriter& xml, WriteContext& ctx);
static void write(const Articulation* a, XmlWriter& xml, WriteContext& ctx);
static void write(const BagpipeEmbellishment* b, XmlWriter& xml, WriteContext& ctx);
static void write(const BarLine* b, XmlWriter& xml, WriteContext& ctx);
static void write(const Beam* b, XmlWriter& xml, WriteContext& ctx);
static void write(const Bend* b, XmlWriter& xml, WriteContext& ctx);
static void write(const Box* b, XmlWriter& xml, WriteContext& ctx);
static void write(const HBox* b, XmlWriter& xml, WriteContext& ctx);
static void write(const VBox* b, XmlWriter& xml, WriteContext& ctx);
static void write(const FBox* b, XmlWriter& xml, WriteContext& ctx);
static void write(const TBox* b, XmlWriter& xml, WriteContext& ctx);
static void write(const Bracket* b, XmlWriter& xml, WriteContext& ctx);
static void write(const Breath* b, XmlWriter& xml, WriteContext& ctx);
static void write(const Chord* c, XmlWriter& xml, WriteContext& ctx);
static void write(const ChordLine* c, XmlWriter& xml, WriteContext& ctx);
static void write(const Clef* c, XmlWriter& xml, WriteContext& ctx);
static void write(const Dynamic* d, XmlWriter& xml, WriteContext& ctx);
static void write(const Fermata* f, XmlWriter& xml, WriteContext& ctx);
static void write(const FiguredBass* f, XmlWriter& xml, WriteContext& ctx);
static void write(const FiguredBassItem* f, XmlWriter& xml, WriteContext& ctx);
static void write(const Fingering* f, XmlWriter& xml, WriteContext& ctx);
static void write(const FretDiagram* f, XmlWriter& xml, WriteContext& ctx);
static void write(const Glissando* g, XmlWriter& xml, WriteContext& ctx);
static void write(const GradualTempoChange* g, XmlWriter& xml, WriteContext& ctx);
static void write(const Groups* g, XmlWriter& xml, WriteContext& ctx);
static void write(const Hairpin* h, XmlWriter& xml, WriteContext& ctx);
static void write(const Harmony* h, XmlWriter& xml, WriteContext& ctx);
static void write(const Hook* h, XmlWriter& xml, WriteContext& ctx);
static void write(const Image* i, XmlWriter& xml, WriteContext& ctx);
static void write(const InstrumentChange* i, XmlWriter& xml, WriteContext& ctx);
static void write(const Jump* j, XmlWriter& xml, WriteContext& ctx);
static void write(const KeySig* k, XmlWriter& xml, WriteContext& ctx);
static void write(const LayoutBreak* l, XmlWriter& xml, WriteContext& ctx);
static void write(const LedgerLine* l, XmlWriter& xml, WriteContext& ctx);
static void write(const LetRing* l, XmlWriter& xml, WriteContext& ctx);
static void write(const Location* l, XmlWriter& xml, WriteContext& ctx);
static void write(const Lyrics* l, XmlWriter& xml, WriteContext& ctx);
static void write(const Marker* m, XmlWriter& xml, WriteContext& ctx);
static void write(const MeasureNumber* m, XmlWriter& xml, WriteContext& ctx);
static void write(const MeasureRepeat* m, XmlWriter& xml, WriteContext& ctx);
static void write(const MMRest* m, XmlWriter& xml, WriteContext& ctx);
static void write(const MMRestRange* m, XmlWriter& xml, WriteContext& ctx);
static void write(const Note* n, XmlWriter& xml, WriteContext& ctx);
static void write(const NoteEvent* n, XmlWriter& xml, WriteContext& ctx);
static void write(const NoteDot* n, XmlWriter& xml, WriteContext& ctx);
static void write(const NoteLine* n, XmlWriter& xml, WriteContext& ctx);
static void write(const Ottava* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Page* item, XmlWriter& xml, WriteContext& ctx);
static void write(const PalmMute* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Part* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Pedal* item, XmlWriter& xml, WriteContext& ctx);
static void write(const PlayTechAnnotation* item, XmlWriter& xml, WriteContext& ctx);
static void write(const RehearsalMark* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Rest* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Segment* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Slur* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Spacer* item, XmlWriter& xml, WriteContext& ctx);
static void write(const StaffState* item, XmlWriter& xml, WriteContext& ctx);
static void write(const StaffText* item, XmlWriter& xml, WriteContext& ctx);
static void write(const StaffType* item, XmlWriter& xml, WriteContext& ctx);
static void write(const StaffTypeChange* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Stem* item, XmlWriter& xml, WriteContext& ctx);
static void write(const StemSlash* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Sticking* item, XmlWriter& xml, WriteContext& ctx);
static void write(const Symbol* item, XmlWriter& xml, WriteContext& ctx);
static void write(const System* item, XmlWriter& xml, WriteContext& ctx);
static void write(const SystemDivider* item, XmlWriter& xml, WriteContext& ctx);
static void write(const SystemText* item, XmlWriter& xml, WriteContext& ctx);
private:
static void writeProperty(const EngravingItem* item, XmlWriter& xml, Pid pid);
static void writeStyledProperties(const EngravingItem* item, XmlWriter& xml);
static void writeItemProperties(const EngravingItem* item, XmlWriter& xml, WriteContext& ctx);
static void writeBoxProperties(const Box* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const Box* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const HBox* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const ChordRest* item, XmlWriter& xml, WriteContext& ctx);
static void writeChordRestBeam(const ChordRest* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const Rest* item, XmlWriter& xml, WriteContext& ctx);
static void write(const StaffTextBase* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const SlurTie* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const SLine* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const Spanner* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const BSymbol* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const TextLineBase* item, XmlWriter& xml, WriteContext& ctx);
static void writeProperties(const TextBase* item, XmlWriter& xml, WriteContext& ctx, bool writeText);
};
}
#endif // MU_ENGRAVING_TWRITE_H