00001
00008 #ifndef ARTICULATION_H_
00009 #define ARTICULATION_H_
00010
00011 #include "core/mark.h"
00012 #include "core/note.h"
00013
00014 class CAArticulation : public CAMark {
00015 public:
00016 enum CAArticulationType {
00017 Undefined = -1,
00018 Accent,
00019 Marcato,
00020 Staccatissimo,
00021 Espressivo,
00022 Staccato,
00023 Tenuto,
00024 Portato,
00025 UpBow,
00026 DownBow,
00027 Flageolet,
00028 Open,
00029 Stopped,
00030 Turn,
00031 ReverseTurn,
00032 Trill,
00033 Prall,
00034 Mordent,
00035 PrallPrall,
00036 PrallMordent,
00037 UpPrall,
00038 DownPrall,
00039 UpMordent,
00040 DownMordent,
00041 PrallDown,
00042 PrallUp,
00043 LinePrall
00044 };
00045
00046 CAArticulation( CAArticulationType t, CANote *n );
00047 virtual ~CAArticulation();
00048
00049 CAMusElement* clone();
00050 int compare(CAMusElement *elt);
00051
00052 inline CANote *associatedNote() { return static_cast<CANote*>(associatedElement()); }
00053 inline void *setAssociatedNote( CANote* n ) { setAssociatedElement(n); }
00054
00055 inline CAArticulationType articulationType() { return _articulationType; }
00056 inline void setArticulationType( CAArticulationType t ) { _articulationType = t; }
00057
00058 static const QString articulationTypeToString( CAArticulationType t );
00059 static CAArticulationType articulationTypeFromString( const QString s );
00060
00061 private:
00062 CAArticulationType _articulationType;
00063 };
00064
00065 #endif