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 
52 namespace MusicXML2
53 {
54 
55 
56 //______________________________________________________________________________
57 class 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 };
437 EXP 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