MuseScore/mscore/importmidi_data.h
2013-09-28 01:27:16 +04:00

53 lines
1.9 KiB
C++

#ifndef IMPORTMIDI_DATA_H
#define IMPORTMIDI_DATA_H
#include "midi/midifile.h"
#include "importmidi_fraction.h"
#include "importmidi_inner.h"
namespace Ms {
struct TrackData;
class MidiData
{
public:
void setTracksData(const QString &fileName, const QList<TrackData> &tracksData);
void saveHHeaderState(const QString &fileName, const QByteArray &headerData);
void saveVHeaderState(const QString &fileName, const QByteArray &headerData);
void excludeFile(const QString &fileName);
QList<TrackData> tracksData(const QString &fileName) const;
QByteArray HHeaderData(const QString &fileName) const;
QByteArray VHeaderData(const QString &fileName) const;
int selectedRow(const QString &fileName) const;
void setSelectedRow(const QString &fileName, int row);
void setMidiFile(const QString &fileName, const MidiFile &midiFile);
const MidiFile *midiFile(const QString &fileName) const;
// lyrics
void addTrackLyrics(const QString &fileName,
const std::multimap<ReducedFraction, std::string> &trackLyrics);
const QList<std::multimap<ReducedFraction, std::string> > *
getLyrics(const QString &fileName);
QString charset(const QString &fileName) const;
void setCharset(const QString &fileName, const QString &charset);
private:
struct MidiDataStore
{
QByteArray HHeaderData;
QByteArray VHeaderData;
QList<TrackData> tracksData;
// tracks of <tick, lyric fragment> from karaoke files
QList<std::multimap<ReducedFraction, std::string>> lyricTracks;
int selectedRow = 0;
MidiFile midiFile;
QString charset = MidiCharset::defaultCharset();
};
QMap<QString, MidiDataStore> data; // <file name, tracks data>
};
} // namespace Ms
#endif // IMPORTMIDI_DATA_H