LibMusicXML 3.18
lpsrScores.h
1/*
2 MusicXML Library
3 Copyright (C) Grame 2006-2013
4
5 This Source Code Form is subject to the terms of the Mozilla Public
6 License, v. 2.0. If a copy of the MPL was not distributed with this
7 file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
9 Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
10 research@grame.fr
11*/
12
13#ifndef ___lpsrScores___
14#define ___lpsrScores___
15
16/*
17#include <sstream>
18#include <vector>
19#include <string>
20#include <list>
21
22
23#include "exports.h"
24#include "typedefs.h"
25
26#include "msrBasicTypes.h"
27
28
29#include "lpsrVarValAssocs.h"
30
31#include "lpsrScheme.h"
32*/
33
34#include "lpsrComments.h"
35
36#include "lpsrScheme.h"
37
38#include "lpsrHeaders.h"
39#include "lpsrPapers.h"
40#include "lpsrLayouts.h"
41
42#include "lpsrParallelMusic.h"
43#include "lpsrVarValAssocs.h"
44
45#include "lpsrBookBlockElements.h"
46
47#include "msrScores.h"
48
49#include "msrMidi.h"
50
51
52namespace MusicXML2
53{
54
55
56//______________________________________________________________________________
57class lpsrScore : public lpsrElement
58{
59 public:
60
61 // creation from MusicXML
62 // ------------------------------------------------------
63
64 static SMARTP<lpsrScore> create (
65 int inputLineNumber,
66 S_msrScore mScore);
67
68 protected:
69
70 // constructors/destructor
71 // ------------------------------------------------------
72
73 lpsrScore (
74 int inputLineNumber,
75 S_msrScore mScore);
76
77 virtual ~lpsrScore ();
78
79 public:
80
81 // set and get
82 // ------------------------------------------------------
83
84 S_msrScore getMsrScore () const
85 { return fMsrScore; }
86
88 getLilypondVersion () const
89 { return fLilypondVersion; }
90
91 void setScoreGlobalStaffSizeSchemeVariable (float size);
92
94 getScoreGlobalStaffSizeSchemeVariable () const
95 { return fScoreGlobalStaffSizeSchemeVariable; }
96
97 S_lpsrHeader getScoreHeader () const
98 { return fScoreHeader; }
99
100 S_lpsrPaper getScorePaper () const
101 { return fScorePaper; }
102
103 S_lpsrLayout getScoreLayout () const
104 { return fScoreLayout; }
105
106 const list<S_msrElement>&
107 getScoreElementsList () const
108 { return fScoreElementsList; }
109
110 const list<S_lpsrBookBlock>&
111 getScoreBookBlocksList () const
112 { return fScoreBookBlocksList; }
113
114 S_lpsrScoreBlock getScoreScoreBlock () const
115 { return fScoreScoreBlock; }
116
117 // files includes
118 // ---------------------
119
120 void setJianpuFileIncludeIsNeeded ();
121
122 bool getJianpuFileIncludeIsNeeded () const
123 { return fJianpuFileIncludeIsNeeded; }
124
125 // Scheme modules
126 // ---------------------
127
128 void setScmAndAccregSchemeModulesAreNeeded ();
129
130 bool getScmAndAccregSchemeModulesAreNeeded () const
131 { return fScmAndAccregSchemeModulesAreNeeded; }
132
133 // Scheme functions
134 // ---------------------
135
136 // custom short bar lines
137 void setCustomShortBarlineSchemeFunctionIsNeeded ();
138
139 bool getCustomShortBarlineSchemeFunctionIsNeeded () const
140 { return fCustomShortBarlineSchemeFunctionIsNeeded; }
141
142 // tongue
143 void setTongueSchemeFunctionIsNeeded ();
144
145 bool getTongueSchemeFunctionIsNeeded () const
146 { return fTongueSchemeFunctionIsNeeded; }
147
148
149 // editorial accidentals
150 void setEditorialAccidentalSchemeFunctionIsNeeded ();
151
152 bool getEditorialAccidentalSchemeFunctionIsNeeded () const
153 {
154 return
155 fEditorialAccidentalSchemeFunctionIsNeeded;
156 }
157
158 // dynamics
159 void setDynamicsSchemeFunctionIsNeeded ();
160
161 bool getDynamicsSchemeFunctionIsNeeded () const
162 {
163 return
164 fDynamicsSchemeFunctionIsNeeded;
165 }
166
167 // tuplets curved brackets
168 void setTupletsCurvedBracketsSchemeFunctionIsNeeded ();
169
170 bool getTupletsCurvedBracketsSchemeFunctionIsNeeded () const
171 {
172 return
173 fTupletsCurvedBracketsSchemeFunctionIsNeeded;
174 }
175
176 // after
177 void setAfterSchemeFunctionIsNeeded ();
178
179 bool getAfterSchemeFunctionIsNeeded () const
180 {
181 return
182 fAfterSchemeFunctionIsNeeded;
183 }
184
185 // tempo relationships
186 void setTempoRelationshipSchemeFunctionIsNeeded ();
187
188 bool getTempoRelationshipSchemeFunctionIsNeeded () const
189 {
190 return
191 fTempoRelationshipSchemeFunctionIsNeeded;
192 }
193
194 // glissando with text
195 void setGlissandoWithTextSchemeFunctionsIsNeeded ();
196
197 bool getGlissandoWithTextSchemeFunctionsIsNeeded () const
198 {
199 return
200 fGlissandoWithTextSchemeFunctionsIsNeeded;
201 }
202
203 // other dynamic
204 void setOtherDynamicSchemeFunctionIsNeeded ();
205
206 bool getOtherDynamicSchemeFunctionIsNeeded () const
207 {
208 return
209 fOtherDynamicSchemeFunctionIsNeeded;
210 }
211
212 // damps
213 void setDampMarkupIsNeeded ();
214
215 bool getDampMarkupIsNeeded () const
216 {
217 return
218 fDampMarkupIsNeeded;
219 }
220
221 void setDampAllMarkupIsNeeded ();
222
223 bool getDampAllMarkupIsNeeded () const
224 {
225 return
226 fDampAllMarkupIsNeeded;
227 }
228
229 // white note heads
230 void setWhiteNoteHeadsIsNeeded ();
231
232 bool getWhiteNoteHeadsIsNeeded () const
233 {
234 return
235 fWhiteNoteHeadsIsNeeded;
236 }
237
238 // bar numbers
239 void setBoxAroundNextBarNumberIsNeeded ();
240
241 bool getBoxAroundNextBarNumberIsNeeded () const
242 {
243 return
244 fBoxAroundNextBarNumberIsNeeded;
245 }
246
247 // jazz chords display
248 void setJazzChordsDisplayIsNeeded ();
249
250 bool getJazzChordsDisplayIsNeeded () const
251 {
252 return
253 fJazzChordsDisplayIsNeeded;
254 }
255
256 // colored ledger lines
257 void setColoredLedgerLinesIsNeeded ();
258
259 bool getColoredLedgerLinesIsNeeded () const
260 {
261 return
262 fColoredLedgerLinesIsNeeded;
263 }
264
265 public:
266
267 // public services
268 // ------------------------------------------------------
269
270 void appendVoiceToScoreElementsList (
271 S_msrVoice voice)
272 { fScoreElementsList.push_back (voice); }
273
274 void appendStanzaToScoreElementsList (
275 S_msrStanza stanza)
276 { fScoreElementsList.push_back (stanza); }
277
278 void appendBookBlockToBookBlocksList (
279 S_lpsrBookBlock bookBlock)
280 { fScoreBookBlocksList.push_back (bookBlock); }
281
282 void addGlissandoWithTextSchemeFunctionsToScore ();
283
284 private:
285
286 // private services
287 // ------------------------------------------------------
288
289 // files includes
290
291 void addJianpuFileIncludeToScore ();
292
293 // Scheme modules
294
295 void addAccordionRegistrationSchemeModulesToScore ();
296
297 // Scheme functions
298
299 void addDateAndTimeSchemeFunctionsToScore ();
300
301 void addPointAndClickOffSchemeFunctionsToScore ();
302
303 void addCustomShortBarlineSchemeFunctionToScore ();
304
305 void addTongueSchemeFunctionToScore ();
306
307 void addEditorialAccidentalSchemeFunctionToScore ();
308
309 void addDynamicsSchemeFunctionToScore ();
310
311 void addTupletsCurvedBracketsSchemeFunctionToScore ();
312
313 void addAfterSchemeFunctionToScore ();
314
315 void addTempoRelationshipSchemeFunctionToScore ();
316
317 void addOtherDynamicSchemeFunctionToScore ();
318
319 // markups
320
321 void addDampMarkupToScore ();
322 void addDampAllMarkupToScore ();
323
324 // white note heads
325
326 void addWhiteNoteHeadsToScore ();
327
328 // bar numbers
329 void addBoxAroundNextBarNumberToScore ();
330
331 // jazz chords display
332
333 void addJazzChordsDisplayToScore ();
334
335 // colored ledger lines
336
337 void addColoredLedgerLinesToScore ();
338
339 public:
340
341 // visitors
342 // ------------------------------------------------------
343
344 virtual void acceptIn (basevisitor* v);
345 virtual void acceptOut (basevisitor* v);
346
347 virtual void browseData (basevisitor* v);
348
349 public:
350
351 // print
352 // ------------------------------------------------------
353
354 virtual void print (ostream& os) const;
355
356 private:
357
358 // fields
359 // ------------------------------------------------------
360
361 // MSR data
362 S_msrScore fMsrScore;
363
364 // general information
365 S_lpsrVarValAssoc fLilypondVersion;
366
367 // command line
368 S_lpsrComment fInputSourceNameComment;
369 S_lpsrComment fTranslationDateComment;
370 S_lpsrComment fCommandLineAsSuppliedComment;
371 S_lpsrComment fCommandLineLongOptionsComment;
372 S_lpsrComment fCommandLineShortOptionsComment;
373
374 // scaling
375 S_lpsrSchemeVariable fScoreGlobalStaffSizeSchemeVariable; // JMI
376
377 // LilyPond stuff
378 S_lpsrHeader fScoreHeader;
379 S_lpsrPaper fScorePaper;
380 S_lpsrLayout fScoreLayout;
381
382 // to keep the original line breaks
383 S_lpsrVarValAssoc fMyBreakIsBreakAssoc;
384 S_lpsrVarValAssoc fMyBreakIsEmptyAssoc;
385
386 // to keep the original page breaks
387 S_lpsrVarValAssoc fMyPageBreakIsPageBreakAssoc;
388 S_lpsrVarValAssoc fMyPageBreakIsEmptyAssoc;
389
390 // to generate 'global' variable
391 S_lpsrVarValAssoc fScoreGlobalAssoc;
392
393 // variables, voices and stanzas
394 list<S_msrElement> fScoreElementsList;
395
396 // score LPSR book blocks list
397 list<S_lpsrBookBlock> fScoreBookBlocksList;
398 S_lpsrScoreBlock fScoreScoreBlock; // JMI ???
399
400 // files includes
401 bool fJianpuFileIncludeIsNeeded;
402
403 // Scheme modules
404 bool fScmAndAccregSchemeModulesAreNeeded;
405
406 // Scheme functions
407 bool fTongueSchemeFunctionIsNeeded;
408 bool fCustomShortBarlineSchemeFunctionIsNeeded;
409 bool fEditorialAccidentalSchemeFunctionIsNeeded;
410 bool fDynamicsSchemeFunctionIsNeeded;
411 bool fTupletsCurvedBracketsSchemeFunctionIsNeeded;
412 bool fAfterSchemeFunctionIsNeeded;
413 bool fTempoRelationshipSchemeFunctionIsNeeded;
414 bool fGlissandoWithTextSchemeFunctionsIsNeeded;
415 bool fOtherDynamicSchemeFunctionIsNeeded;
416
417 // markups
418 bool fDampMarkupIsNeeded;
419 bool fDampAllMarkupIsNeeded;
420
421 // white note heads
422 bool fWhiteNoteHeadsIsNeeded;
423
424 // bar numbers
425 bool fBoxAroundNextBarNumberIsNeeded;
426
427 // jazz chords display
428 bool fJazzChordsDisplayIsNeeded;
429
430 // colored ledger lines
431 bool fColoredLedgerLinesIsNeeded;
432
433 map<string, S_lpsrSchemeFunction>
434 fScoreSchemeFunctionsMap;
435};
437EXP ostream& operator<< (ostream& os, const S_lpsrScore& elt);
438
439
440}
441
442
443#endif
Definition: basevisitor.h:25
Definition: lpsrElements.h:24
Definition: lpsrScores.h:58