00001 #include "../painter/Painter.h"
00002 #include "../painter/FontAccess.h"
00003
00004 #include "Collider.h"
00005 #ifndef MUSICSYMBOL_H
00006 #define MUSICSYMBOL_H
00007 #define APPLEUNICODE 0
00008
00023 void
00024 testColision(Painter *);
00025
00026
00039 class MusicSymbol
00040 {
00041 private:
00042 QString lname;
00043 #ifdef DEBUGCOLLISION
00044 double xcl,ycl;
00045 #endif
00046
00047 #ifdef DEBUG
00048 static int counter;
00049 int msId;
00050 #endif
00051
00052 #ifdef DRAWTRAJECTORY
00053 static int colorTrajectory;
00054 QValueList<double> xTrajectoryPoints;
00055 QValueList<double> yTrajectoryPoints;
00056 #endif
00057
00058
00059 protected:
00060 MusicSymbol * attachedSymbol;
00061 float x, y;
00062 QString mark;
00067 double naturalLength;
00072 double graphicLength;
00076 double beginModifier;
00077 void * indexNoteMusic;
00078 int lineIndex;
00079 int pageIndex;
00080 public:
00081 MusicSymbol * getAttachedSymbol();
00082 void attachMusicSymbol(MusicSymbol *);
00083
00084 static long nbcollisiondetectioncount;
00085 MusicSymbol (QString name, float x, float y);
00086 virtual void draw (Painter *) = 0;
00087 virtual QString name ();
00088 virtual QPoint getHotSpot ();
00089 void setMark(QString);
00090 virtual double getX();
00091 double getY();
00092 virtual void setX(double);
00093 void setY(double);
00094 void setIndexNoteMusic(void *);
00095 void * getIndexNoteMusic();
00096 int getLineIndex();
00097 void setLineIndex(int);
00098 int getPageIndex();
00099 void setPageIndex(int);
00100 bool collide(MusicSymbol *);
00101 virtual Collider * getCollider()=0;
00102 QString getMark();
00103 double length();
00104 virtual QString toString();
00105
00106 #ifdef DEBUGCOLLISION
00107 double xCollision();
00108 double yCollision();
00109 #endif
00110
00111 #ifdef DRAWTRAJECTORY
00112 void drawTrajectory (Painter *);
00113 #endif
00114
00115 };
00116
00121 class SimpleMusicSymbol:public MusicSymbol
00122 {
00123 protected:
00124 int nglyph;
00125 unsigned long enc;
00126 public:
00127 SimpleMusicSymbol (int, QString n, float, float,int=-1);
00128 virtual void draw (Painter *);
00129 virtual Collider * getCollider();
00130 virtual QCoordsRect getBoundingBox ();
00131 virtual QPoint getHotSpot ();
00132 };
00133
00137 class VoidSymbol:public MusicSymbol{
00138 public:
00139 VoidSymbol();
00140 void draw (Painter *);
00141 Collider * getCollider();
00142 QCoordsRect getBoundingBox ();
00143 };
00147 class Sharp:public SimpleMusicSymbol
00148 {
00149 public:
00150 Sharp (double , double);
00151 };
00155 class Flat:public SimpleMusicSymbol
00156 {
00157 public:
00158 Flat (double, double);
00159 };
00163 class Neutral:public SimpleMusicSymbol
00164 {
00165 public:
00166 Neutral (double, double);
00167 };
00171 class Half:public MusicSymbol
00172 {
00173 public:
00174 Half (float = 0, float = 0);
00175 QCoordsRect getBoundingBox ();
00176 int getNumGlyph ();
00177 void draw (Painter *);
00178 MusicSymbol *clone ();
00179 };
00183 class Whole:public SimpleMusicSymbol
00184 {
00185 public:
00186 Whole (float, float);
00187 };
00188
00189
00190
00191
00192 #endif