OutControlSender.hxx

Go to the documentation of this file.
00001 
00002 #ifndef __OutControlSender_hxx__
00003 #define __OutControlSender_hxx__
00004 
00005 #include "OutControl.hxx"
00006 #include "Processing.hxx"
00007 #include "ProcessingConfig.hxx"
00008 #include "Enum.hxx"
00009 
00010 namespace CLAM
00011 {
00012 
00013 class OutControlSenderConfig : public ProcessingConfig
00014 {       
00015 public:
00016 
00017         class EControlRepresentation : public Enum
00018         {
00019         public:
00020 
00021                 static tEnumValue sEnumValues[];
00022                 static tValue sDefault;
00023                 EControlRepresentation() : Enum(sEnumValues, sDefault) {}
00024                 EControlRepresentation(tValue v) : Enum(sEnumValues, v) {};
00025                 EControlRepresentation(std::string s) : Enum(sEnumValues, s) {};
00026 
00027                 typedef enum {
00028                         eUndetermined,
00029                         eVerticalSlider,
00030                         eHorizontalSlider,
00031                         eKnot,
00032                         eSpinBox                
00033                 } tEnum; 
00034                 
00035                 Component* Species() const
00036                 {
00037                         return new EControlRepresentation;
00038                 };
00039                 
00040         };
00041 
00042         class EMapping : public Enum
00043         {
00044         public:
00045 
00046                 static tEnumValue sEnumValues[];
00047                 static tValue sDefault;
00048                 EMapping() : Enum(sEnumValues, sDefault) {}
00049                 EMapping(tValue v) : Enum(sEnumValues, v) {};
00050                 EMapping(std::string s) : Enum(sEnumValues, s) {};
00051 
00052                 typedef enum {
00053                         eLinear,                
00054                         eInverted,              
00055                         eLog,                   
00056                         eReverseLog             
00057                 } tEnum; 
00058                 
00059                 Component* Species() const
00060                 {
00061                         return new EMapping;
00062                 };
00063                 
00064         };
00065 
00066         DYNAMIC_TYPE_USING_INTERFACE (OutControlSenderConfig, 6, ProcessingConfig);
00067         DYN_ATTRIBUTE (0, public, TControlData, Min );
00068         DYN_ATTRIBUTE (1, public, TControlData, Default );
00069         DYN_ATTRIBUTE (2, public, TControlData, Max );
00070         DYN_ATTRIBUTE (3, public, TControlData, Step );
00071         DYN_ATTRIBUTE (4, public, EControlRepresentation, ControlRepresentation );
00072         DYN_ATTRIBUTE (5, public, EMapping, Mapping );
00073 
00074 
00075 protected:
00076         void DefaultInit(void);
00077 };
00078 
00079 class OutControlSender : public Processing
00080 {
00081         OutControlSenderConfig mConfig;
00082         FloatOutControl mOutput;
00083         TControlData mLastValue;
00084         bool mFirstDoAfterStart;
00085 public:
00086         OutControlSender();
00087         OutControlSender( const OutControlSenderConfig & );
00088 
00089         bool Do();
00090         const char * GetClassName() const {return "OutControlSender";}
00091 
00092         const ProcessingConfig &GetConfig() const { return mConfig;}
00093         void SendControl(TControlData value);
00094 protected:
00095         bool ConcreteConfigure(const ProcessingConfig& c);
00096         bool ConcreteStart();
00097 };
00098 
00099 } //namespace CLAM
00100 
00101 #endif //__OutControlSender_hxx__
00102 
00103 
00104 
Generated by  doxygen 1.6.3