SpectralPhaseModulation.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SpectralPhaseModulation_
00025 #define _SpectralPhaseModulation_
00026
00027 #include "InPort.hxx"
00028 #include "OutPort.hxx"
00029 #include "InControl.hxx"
00030 #include "Frame.hxx"
00031 #include "FrameTransformation.hxx"
00032 #include "FrameTransformationConfig.hxx"
00033 #include "SimpleOscillator.hxx"
00034
00035 namespace CLAM{
00036
00037 class SpectralPhaseModulation: public FrameTransformationTmpl<Spectrum>
00038 {
00039 InPort<Spectrum> mIn;
00040 OutPort<Spectrum> mOut;
00041
00042 FloatInControl mFreqCtl;
00043 FloatInControl mWidthCtl;
00044 public:
00045 const char* GetClassName() const
00046 {
00047 return "SpectralPM";
00048 }
00049
00050 SpectralPhaseModulation()
00051 :
00052 mIn("In Spectrum", this),
00053 mOut("Out Spectrum", this) ,
00054 mFreqCtl("Freq", this),
00055 mWidthCtl("Width", this)
00056 {
00057 Configure( FrameTransformationConfig() );
00058 SimpleOscillatorConfig cfg;
00059 cfg.SetFrequency(200);
00060 cfg.SetPhase(1);
00061 mOscillator.Configure(cfg);
00062 }
00063
00064 ~SpectralPhaseModulation() {}
00065
00066 virtual bool InitControls()
00067 {
00068 mFreqCtl.DoControl(1000.);
00069 mWidthCtl.DoControl(1.);
00070 return true;
00071 }
00072
00073 bool Do(const Frame& in, Frame& out)
00074 {
00075 return Do(in.GetSpectrum(),
00076 out.GetSpectrum());
00077 }
00078
00079 bool Do(const Spectrum& in, Spectrum& out);
00080
00081 bool Do()
00082 {
00083 bool result = Do(mIn.GetData(), mOut.GetData());
00084 mIn.Consume();
00085 mOut.Produce();
00086 return result;
00087 }
00088 private:
00089 SimpleOscillator mOscillator;
00090 };
00091 };
00092
00093 #endif // _SpectralPhaseModulation_