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 }
00100
00101 #endif //__OutControlSender_hxx__
00102
00103
00104