#ifndef _KBPART_H_
#define _KBPART_H_

#include "kbId.h"

class IfFactory;
class KbTrack;
class IfPart;
class KbMain;
class KbNote;

/**
 * This class contains the properties of a part. Its (graphical) presentation is attached via the interface IfPart
 * @short kooBase Part
 * @author Jan Wuerthner
 * @see IfPart
 * @see QtPart
 */
class KbPart : public KbId
{
 private:
  IfPart * ifPart;
  KbPart * next;
  int from;
  int to;
  KbTrack * track;
  int program;
  int time1;
  int time2;
  int key;
  int clef;

  KbNote * first;
  KbNote * last;
  KbNote * cur;

 public:

  KbPart( KbTrack * kbTrack, int left, int right );
  ~KbPart();
  IfPart * gInterface();
  KbTrack * gTrack();
  KbPart * gNext();
  void sNext(KbPart * n);
  int gFrom();
  void sFrom(int);
  int gTo();
  void sTo(int);
  int gKey();
  void sKey(int);
  int gClef();
  void sClef(int);
  int gTime1();
  void sTime1(int);
  int gTime2();
  void sTime2(int);
  int gProgram();
  void sProgram(int);

  void split(int);
  void glue();
  void deletePart();
  
  KbNote * gFirst();
  KbNote * gLast();
  KbNote * gCur();
  void sFirst(KbNote * n);
  void sCur(KbNote * n);
  void sLast(KbNote * n);

  void addNote(KbNote * n);
  void appendNote(KbNote * n);
  void selectNote(KbNote * n);
  void deleteNote(KbNote * n);
  void quantize(int q=0, int l=0, int r=0);
  void quantizeLength(int q=0, int l=0, int r=0);
  void fixedLength(int q=0, int l=0, int r=0);
  void erase(int l, int r);
  bool left();
  bool right();


};

#endif

Documentation generated by wuerthne@clouseau on Sat Feb 20 16:41:13 MST 1999