00001 /* 00002 * @(#)Phrase.h 3.00 14 May 1999 00003 * 00004 * Copyright (c) 2000 Pete Goodliffe (pete@cthree.org) 00005 * 00006 * This file is part of TSE3 - the Trax Sequencer Engine version 3.00. 00007 * 00008 * This library is modifiable/redistributable under the terms of the GNU 00009 * General Public License. 00010 * 00011 * You should have received a copy of the GNU General Public License along 00012 * with this program; see the file COPYING. If not, write to the Free Software 00013 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00014 * 00015 */ 00016 00017 #ifndef TSE3_PHRASE_H 00018 #define TSE3_PHRASE_H 00019 00020 #include "tse3/listen/Phrase.h" 00021 00022 #include "tse3/Notifier.h" 00023 #include "tse3/MidiData.h" 00024 #include "tse3/Serializable.h" 00025 #include "tse3/DisplayParams.h" 00026 00027 #include <string> 00028 00029 namespace TSE3 00030 { 00031 class PhraseList; 00032 00069 class Phrase : public MidiData, 00070 public Serializable, 00071 public Listener<DisplayParamsListener>, 00072 public Notifier<PhraseListener> 00073 { 00074 public: 00075 00076 virtual ~Phrase(); 00077 00085 PhraseList *parent() const { return _parent; } 00086 00093 const std::string &title() const { return _title; } 00094 00105 void setTitle(const std::string &title); 00106 00112 DisplayParams *displayParams() { return &_display; } 00113 00117 int operator<(const Phrase &p) const { return _title < p._title; } 00118 00122 int operator==(const Phrase &p) const { return _title == p._title; } 00123 00132 virtual void save(std::ostream &o, int i) const; 00133 00138 friend class PhraseEdit; 00139 00144 friend class PhraseList; 00145 00149 virtual void DisplayParams_Altered(DisplayParams *); 00150 00151 private: 00152 00153 Phrase(const int noEvents); 00154 Phrase(const Phrase &); 00155 Phrase &operator=(const Phrase &); 00156 00169 void setParent(PhraseList *parent); 00170 00171 std::string _title; 00172 DisplayParams _display; 00173 PhraseList *_parent; 00174 }; 00175 } 00176 00177 #endif