00001 #ifndef __PHOTOGRAPHIC_H__
00002 #define __PHOTOGRAPHIC_H__
00003
00004 #include <stdint.h>
00005 #include "processor.h"
00006
00007 namespace convolution {
00008
00010 class ConvolveMono : public spectral::Processor
00011 {
00012 public:
00013 ConvolveMono();
00014 virtual ~ConvolveMono();
00015
00016 protected:
00017
00018
00019
00020 virtual uint32_t GetInterface(
00021 std::list<std::pair<uint32_t, uint32_t> > &mandatory,
00022 std::list<std::pair<uint32_t, uint32_t> > &optional) const;
00023
00024
00025 virtual bool SetImage(uint32_t type, const spectral::Image *img);
00026
00027
00028 virtual void SetParameters(const spectral::Parameters *);
00029
00030
00031 virtual spectral::Image *Process(void);
00032
00033
00034 virtual void ClearImage(uint32_t type);
00035
00036 protected:
00037
00038
00039 virtual void GetParameters(spectral::Parameters *) const;
00040
00041 void GetFullSize(uint32_t &width, uint32_t &height, uint32_t &offset_x, uint32_t &offset_y);
00042 void *CreateImageBuffer(spectral::Image *, uint32_t n);
00043 void UnpackImageBuffer(void *,spectral::Image *, uint32_t n);
00044 void *CreateFilterBuffer(uint32_t n);
00045
00046 private:
00047
00048 const spectral::Image *m_picture;
00049 const spectral::Image *m_filter;
00050
00051 bool m_wrap_horizontal, m_wrap_vertical;
00052 };
00053
00054 }
00055
00056 #endif