//============================================================================= // MuseScore // Music Composition & Notation // // Copyright (C) 2008-2011 Werner Schweer // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 // as published by the Free Software Foundation and appearing in // the file LICENCE.GPL //============================================================================= #ifndef __EXCERPT_H__ #define __EXCERPT_H__ #include #include "fraction.h" namespace Ms { class MasterScore; class Score; class Part; class Measure; class XmlWriter; class Staff; class XmlReader; //--------------------------------------------------------- // @@ Excerpt //--------------------------------------------------------- class Excerpt : public QObject { MasterScore* _oscore; Score* _partScore { 0 }; QString _title; QList _parts; QMultiMap _tracks; public: Excerpt(MasterScore* s = 0) { _oscore = s; } Excerpt(const Excerpt& ex, bool copyPartScore = true); ~Excerpt(); QList& parts() { return _parts; } void setParts(const QList& p) { _parts = p; } QMultiMap& tracks() { return _tracks; } void setTracks(const QMultiMap& t) { _tracks = t; } MasterScore* oscore() const { return _oscore; } Score* partScore() const { return _partScore; } void setPartScore(Score* s); void read(XmlReader&); bool operator!=(const Excerpt&) const; bool operator==(const Excerpt&) const; QString title() const { return _title; } void setTitle(const QString& s) { _title = s; } static QList createAllExcerpt(MasterScore* score); static QString createName(const QString& partName, QList&); static void createExcerpt(Excerpt*); static void cloneStaves(Score* oscore, Score* score, const QList& map, QMultiMap& allTracks); static void cloneStaff(Staff* ostaff, Staff* nstaff); static void cloneStaff2(Staff* ostaff, Staff* nstaff, const Fraction& stick, const Fraction& etick); }; } // namespace Ms #endif