Line data Source code
1 : /*
2 : * SPDX-License-Identifier: GPL-3.0-only
3 : * MuseScore-Studio-CLA-applies
4 : *
5 : * MuseScore Studio
6 : * Music Composition & Notation
7 : *
8 : * Copyright (C) 2021 MuseScore Limited and others
9 : *
10 : * This program is free software: you can redistribute it and/or modify
11 : * it under the terms of the GNU General Public License version 3 as
12 : * published by the Free Software Foundation.
13 : *
14 : * This program is distributed in the hope that it will be useful,
15 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : * GNU General Public License for more details.
18 : *
19 : * You should have received a copy of the GNU General Public License
20 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 : */
22 :
23 : #ifndef __MUSEDATA_H__
24 : #define __MUSEDATA_H__
25 :
26 : #include "engraving/types/fraction.h"
27 :
28 : namespace mu::engraving {
29 : class EngravingItem;
30 : class Staff;
31 : class Part;
32 : class Score;
33 : class ChordRest;
34 : class Measure;
35 : class Slur;
36 : }
37 :
38 : namespace mu::iex::musedata {
39 : //---------------------------------------------------------
40 : // MuseData
41 : // used importing Musedata files
42 : //---------------------------------------------------------
43 :
44 : class MuseData
45 : {
46 : int _division;
47 : engraving::Fraction curTick;
48 : QList<QStringList> parts;
49 : engraving::Score* score;
50 : engraving::ChordRest* chordRest;
51 : int ntuplet;
52 : engraving::Measure* measure;
53 : int voice;
54 : engraving::Slur* slur[4];
55 :
56 : void musicalAttribute(QStringView s, engraving::Part*);
57 : void readPart(const QStringList& sl, engraving::Part*);
58 : void readNote(engraving::Part*, QStringView s);
59 : void readChord(engraving::Part*, QStringView s);
60 : void readRest(engraving::Part*, QStringView s);
61 : void readBackup(QStringView s);
62 : engraving::Measure* createMeasure();
63 : int countStaves(const QStringList& sl);
64 : void openSlur(int idx, const engraving::Fraction& tick, engraving::Staff* staff, int voice, mu::engraving::EngravingItem* startChord);
65 : void closeSlur(int idx, const engraving::Fraction& tick, engraving::Staff* staff, int voice, engraving::EngravingItem* endChord);
66 : QString diacritical(QStringView);
67 :
68 : public:
69 0 : MuseData(engraving::Score* s) { score = s; }
70 : bool read(const QString&);
71 : void convert();
72 : };
73 : } // namespace Ms
74 : #endif
|