Main Page | Modules | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | Related Pages

TClef.h

00001 /*
00002 
00003   MusicXML Library
00004   Copyright (C) 2003  Grame
00005 
00006   This library is free software; you can redistribute it and/or
00007   modify it under the terms of the GNU Lesser General Public
00008   License as published by the Free Software Foundation; either
00009   version 2.1 of the License, or (at your option) any later version.
00010 
00011   This library is distributed in the hope that it will be useful,
00012   but WITHOUT ANY WARRANTY; without even the implied warranty of
00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014   Lesser General Public License for more details.
00015 
00016   You should have received a copy of the GNU Lesser General Public
00017   License along with this library; if not, write to the Free Software
00018   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020   Grame Research Laboratory, 9 rue du Garet, 69001 Lyon - France
00021   grame@grame.fr
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 } // namespace MusicXML
00100 
00101 #endif

Generated on Tue Mar 23 09:49:43 2004 for LibMusicXML by doxygen 1.3.3