/media/hdb5/canorusNightlyBuildSystem/trunk/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 
00015 class CAStaff;
00016 
00017 class CAKeySignature : public CAMusElement {
00018 public:
00019         enum CAKeySignatureType {
00020                 MajorMinor, // Marks the standard 7-level Major/Minor
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         // Diatonic keys properties //
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];    // Accidentals configuration for each level
00090 };
00091 #endif /* KEYSIGNATURE_H_ */

Generated on Sat Feb 9 13:06:25 2008 for Canorus by  doxygen 1.5.3