CLAM-Development
1.1
|
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 OutControl 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