00001 #ifndef __PROCESSOR_H__ 00002 #define __PROCESSOR_H__ 00003 00004 #include <stdint.h> 00005 #include <list> 00006 #include <utility> 00007 00008 #include "stm_export.h" 00009 00010 namespace control 00011 { 00012 class ProcessThread; 00013 } 00014 00015 namespace spectral 00016 { 00017 class Image; 00018 class Parameters; 00019 00021 class STM_EXPORT Processor 00022 { 00023 public: 00024 Processor(); 00025 virtual ~Processor(); 00026 00027 Parameters *GetParameters(void) const; 00028 00029 void Progress(float); 00030 00031 void SetThread(control::ProcessThread *thread){m_processThread = thread;} 00032 00036 virtual uint32_t GetInterface( 00037 std::list<std::pair<uint32_t, uint32_t> > &mandatory, 00038 std::list<std::pair<uint32_t, uint32_t> > &optional) const = 0; 00039 00041 virtual bool SetImage(uint32_t slot, const Image *img) = 0; 00042 00044 virtual void SetParameters(const Parameters *params) = 0; 00045 00047 virtual Image *Process(void) = 0; 00048 00050 virtual void ClearImage(uint32_t slot); 00051 00052 protected: 00053 00055 virtual void GetParameters(Parameters *params) const = 0; 00056 00057 private: 00058 control::ProcessThread *m_processThread; 00059 }; 00060 00061 } 00062 00063 #endif