/**************************************************************************** PROJECT: MusixTeX PreProcessor FILE : feature.h AUTHOR : J. C. Nieuwenhuizen copyright (c) FlowerSoft 1995 --*/ #ifndef __FEATURE_H #define __FEATURE_H class istream; class ostream; #ifndef __MACRO_H #include "macro.h" #endif class Note; class SimpleNote; /**************************************************************************** class Feature --*/ class Feature : public Macro { public: enum Type { FEATURE = -1, ACCENT, CRESCENDO, FINGER, SLUR, SPACE, STAFF, TEXT }; protected: SimpleNote& note; public: Type type; virtual void operator =( Feature& feature ); static void invokeCalculate( Object& feature, void* note ); static Feature& getFeature( Staff& staff, SimpleNote& n ); virtual void calculate( SimpleNote& note ); virtual void execute( StringList& parameterList, Staff& staff ); virtual void execute( SimpleNote& note ); virtual int getFrom( Staff& staff ); virtual void printOn( ostream& os ) const; Feature( Feature& feature ); Feature( Staff& staff, SimpleNote& n ); Feature( SimpleNote& n, Type t = FEATURE ); Feature( const char* name, const char* substitute = "", Type t = FEATURE, int parameterCount = 0 ); virtual ~Feature(); }; #define ZEROFEATURE ((Feature*)ZERO) #define NOFEATURE (*ZEROFEATURE) //-- Feature // #endif // __FEATURE_H //