|
Canorus
0.7
|
00001 00008 #ifndef KEYSIGNATURE_H_ 00009 #define KEYSIGNATURE_H_ 00010 00011 #include <QString> 00012 00013 #include "core/muselement.h" 00014 #include "core/diatonickey.h" 00015 #include "core/staff.h" 00016 00017 class CAContext; 00018 00019 class CAKeySignature : public CAMusElement { 00020 public: 00021 enum CAKeySignatureType { 00022 MajorMinor, // Marks the standard 7-level Major/Minor 00023 Modus, 00024 Custom 00025 }; 00026 00027 enum CAModus { 00028 Ionian, 00029 Dorian, 00030 Phrygian, 00031 Lydian, 00032 Mixolydian, 00033 Aeolian, 00034 Locrian, 00035 Hypodorian, 00036 Hypolydian, 00037 Hypomixolydian, 00038 Hypophrygian 00039 }; 00040 00041 CAKeySignature(CADiatonicKey k, CAStaff *staff, int timeStart); 00042 CAKeySignature(CAModus m, CAStaff *staff, int timeStart); 00043 ~CAKeySignature(); 00044 CAKeySignature *clone(CAContext* context=0); 00045 CAStaff *staff() { return static_cast<CAStaff*>(context()); } 00046 00047 inline CAKeySignatureType keySignatureType() { return _keySignatureType; } 00048 inline void setKeySignatureType(CAKeySignatureType type) { _keySignatureType = type; } 00049 00050 CADiatonicKey diatonicKey() { return _diatonicKey; } 00051 CAModus modus() { return _modus; } 00052 00053 void setDiatonicKey(CADiatonicKey k) { _diatonicKey = k; updateAccidentals(); } 00054 void setModus(CAModus modus) { _modus = modus; } 00055 00056 signed char *accidentals() { return _accidentals; } 00057 00058 int compare(CAMusElement* elt); 00059 00060 static const QString keySignatureTypeToString(CAKeySignatureType); 00061 static CAKeySignatureType keySignatureTypeFromString(const QString); 00062 static const QString modusToString(CAModus); 00063 static CAModus modusFromString(const QString); 00064 00065 private: 00066 void updateAccidentals(); 00067 00068 CAKeySignatureType _keySignatureType; 00069 CAModus _modus; 00070 CADiatonicKey _diatonicKey; 00071 00072 signed char _accidentals[7]; // Accidentals configuration for each level 00073 }; 00074 #endif /* KEYSIGNATURE_H_ */
1.8.0