00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __TClef__
00026 #define __TClef__
00027
00028 #include "exports.h"
00029 #include "TScoreVisitor.h"
00030 #include "bimap.h"
00031
00032 #include <string>
00033
00034 namespace MusicXML
00035 {
00036
00055 class EXP TClef : public visitable, public smartable {
00056
00057 public:
00058 enum { undefined=-1, none=1, G, F, C, percussion, TAB, last=TAB };
00059
00060 EXP friend SMARTP<TClef> newClef();
00061
00062 virtual void accept(TScoreVisitor& visitor);
00063
00064 void setStaffNum (long num);
00065 void setSign (long sign);
00066 void setLine (long line);
00067 void setOctave (long oct);
00068
00069 long getStaffNum () const { return fNum; }
00070 long getSign () const { return fSign; }
00071 long getLine () const { return fLine; }
00072 long getOctave () const { return fOctave; }
00073
00075 static const string xmlsign (int d);
00077 static int xmlsign (const string str);
00078
00079 protected:
00080 TClef() : fNum(undefined), fSign(G), fLine(undefined), fOctave(0) {}
00081 virtual ~TClef() {}
00082
00083 private:
00085 long fNum;
00087 long fSign;
00089 long fLine;
00091 long fOctave;
00092
00093 static bimap<string, int> fClef2String;
00094 static int fClefTbl[];
00095 static string fClefStrings[];
00096 };
00097 typedef SMARTP<TClef> SClef;
00098
00099 }
00100
00101 #endif