Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
musicxmlimport.h
Go to the documentation of this file.
1 
8 #ifndef MUSICXMLIMPORT_H_
9 #define MUSICXMLIMPORT_H_
10 
11 #include <QXmlStreamReader>
12 #include <QString>
13 #include <QStack>
14 #include <QHash>
15 #include <QMultiHash>
16 
17 #include "core/playablelength.h"
18 #include "core/diatonicpitch.h"
19 #include "import/import.h"
20 
21 class CADocument;
22 class CASheet;
23 class CAStaff;
24 class CAClef;
25 class CAKeySignature;
26 class CATimeSignature;
27 
28 class CAMusicXmlImport: public CAImport, private QXmlStreamReader {
29 public:
30  CAMusicXmlImport( QTextStream *stream=0 );
31  CAMusicXmlImport( const QString stream );
32  virtual ~CAMusicXmlImport();
33 
34  const QString readableStatus();
35 
36 private:
37  void initMusicXmlImport();
39 
40  void readHeader();
41  void readScorePartwise();
42  void readScoreTimewise();
43  void readWork();
44  void readIdentification();
45  void readDefaults();
46  void readPartList();
47  void readPart();
48  void readMeasure( QString partId );
49  void readAttributes( QString partId );
50  void readNote( QString partId, int );
51  void readForward( QString partId, int );
52  CAVoice *addVoiceIfNeeded( QString partId, int staff, int voice );
53 
55 
57  QHash<QString, QHash<int, CAVoice*> > _partMapVoice; // part name -> map of voice number : voice
58  QHash<QString, QList<CAStaff*> > _partMapStaff; // part name -> list of staffs
59  QHash<QString, QHash<int, CAClef*> > _partMapClef; // part name -> map of staff number : last clef
60  QHash<QString, QHash<int, CAKeySignature*> > _partMapKeySig; // part name -> map of staff number : last keysig
61  QHash<QString, QHash<int, CATimeSignature*> > _partMapTimeSig; // part name -> map of staff number : last timesig
62  QHash<QString, int> _midiChannel;
63  QHash<QString, int> _midiProgram;
64  QHash<QString, QString> _partName;
65  QHash<QString, int> _divisions; // part name -> divisions
66 };
67 
68 #endif /* MUSICXMLIMPORT_H_ */