00001
00008 #ifndef FINGERING_H_
00009 #define FINGERING_H_
00010
00011 #include <QList>
00012 #include "core/mark.h"
00013
00014 class CANote;
00015
00016 class CAFingering: public CAMark {
00017 public:
00018 enum CAFingerNumber {
00019 First = 1,
00020 Second = 2,
00021 Third = 3,
00022 Fourth = 4,
00023 Fifth = 5,
00024 Thumb,
00025 LHeel,
00026 RHeel,
00027 LToe,
00028 RToe,
00029 Undefined
00030 };
00031
00032 CAFingering( CAFingerNumber finger, CANote *m, bool italic=false );
00033 CAFingering( QList<CAFingerNumber> fingers, CANote *m, bool italic=false );
00034 virtual ~CAFingering();
00035
00036 CAMusElement *clone();
00037 int compare(CAMusElement *elt);
00038
00039 inline CAFingerNumber finger() { return (_fingerList.size()?_fingerList[0]:Undefined); }
00040 inline void setFinger(CAFingerNumber f) { _fingerList.clear(); _fingerList << f; }
00041 inline QList<CAFingerNumber>& fingerList() { return _fingerList; }
00042 inline void addFinger( CAFingerNumber f ) { _fingerList << f; }
00043 inline void removeFingerAt( int idx ) { _fingerList.removeAt(idx); }
00044
00045 inline bool isOriginal() { return _original; }
00046 inline void setOriginal( bool original ) { _original = original; }
00047
00048 static const QString fingerNumberToString( CAFingerNumber n );
00049 static CAFingerNumber fingerNumberFromString( const QString s );
00050
00051 private:
00052 QList<CAFingerNumber> _fingerList;
00053 bool _original;
00054 };
00055
00056 #endif