Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
/home/iurt/rpm/BUILD/canorus-0.7.R1002/src/core/keysignature.h
Go to the documentation of this file.
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_ */