00001
00008 #ifndef KEYSIGNATURE_H_
00009 #define KEYSIGNATURE_H_
00010
00011 #include <QString>
00012
00013 #include "core/muselement.h"
00014
00015 class CAStaff;
00016
00017 class CAKeySignature : public CAMusElement {
00018 public:
00019 enum CAKeySignatureType {
00020 MajorMinor,
00021 Modus,
00022 Custom
00023 };
00024
00025 enum CAMajorMinorGender {
00026 Undefined=-1,
00027 Major,
00028 Minor
00029 };
00030
00031 enum CAMajorMinorShape {
00032 Natural,
00033 Harmonic,
00034 Melodic
00035 };
00036
00037 enum CAModus {
00038 Ionian,
00039 Dorian,
00040 Phrygian,
00041 Lydian,
00042 Mixolydian,
00043 Aeolian,
00044 Locrian,
00045 Hypodorian,
00046 Hypolydian,
00047 Hypomixolydian,
00048 Hypophrygian
00049 };
00050
00051 CAKeySignature(CAKeySignatureType type, signed char accs, CAMajorMinorGender gender, CAStaff *staff, int timeStart);
00052 ~CAKeySignature();
00053 CAKeySignature *clone();
00054
00055 CAKeySignatureType keySignatureType() { return _keySignatureType; }
00056 void setKeySignatureType(CAKeySignatureType type, signed char accs, CAMajorMinorGender gender);
00057
00059
00061 CAMajorMinorGender majorMinorGender() { return _majorMinorGender; }
00062 CAMajorMinorShape majorMinorShape() { return _majorMinorShape; }
00063 CAModus modus() { return _modus; }
00064 void setMajorMinorGender(CAMajorMinorGender gender) { _majorMinorGender = gender; }
00065 void setMajorMinorShape(CAMajorMinorShape shape) { _majorMinorShape = shape; }
00066 void setModus(CAModus modus) { _modus = modus; }
00067
00068 signed char numberOfAccidentals();
00069 signed char *accidentals() { return _accidentals; }
00070
00071 int compare(CAMusElement* elt);
00072
00073 static const QString keySignatureToString( signed char numberOfAccs, CAMajorMinorGender gender );
00074 static signed char keySigAccsFromString( QString );
00075 static CAKeySignature::CAMajorMinorGender keySigGenderFromString( const QString );
00076 static const QString keySignatureTypeToString(CAKeySignatureType);
00077 static CAKeySignatureType keySignatureTypeFromString(const QString);
00078 static const QString majorMinorGenderToString(CAMajorMinorGender);
00079 static CAMajorMinorGender majorMinorGenderFromString(const QString);
00080 static const QString modusToString(CAModus);
00081 static CAModus modusFromString(const QString);
00082
00083 private:
00084 CAKeySignatureType _keySignatureType;
00085 CAModus _modus;
00086 CAMajorMinorGender _majorMinorGender;
00087 CAMajorMinorShape _majorMinorShape;
00088
00089 signed char _accidentals[7];
00090 };
00091 #endif