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 InControl mFreqCtl;
00043 InControl 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_