00001 #ifndef __AnImageOp__
00002 #define __AnImageOp__
00003
00023 #include <stdio.h>
00024
00025 #include "AnImage.hpp"
00026 #include "AR3ChannelConverter.hpp"
00027
00028 #include "AbsLimiter.hpp"
00029
00030 class AnImageOp
00031 {
00032 protected:
00033
00034 int channelDepth;
00035
00036 bool autoLuminanceFlag;
00037
00038 AbsLimiter* limiter;
00039
00041 int maskValue;
00042
00044 int nMask;
00046 int* xm;
00048 int* ym;
00049
00050 protected:
00051
00053
00055 virtual void loadMask(AnImage& mask);
00057 virtual void unloadMask(){ delete[] xm; delete[] ym; nMask=0; }
00058
00059 public:
00060
00061 AnImageOp()
00062 {nMask=0; xm=0; ym=0; maskValue=255; limiter=0; autoLuminanceFlag=false; channelDepth=8;}
00063 virtual ~AnImageOp();
00064
00065 virtual int getChannelDepth(){return channelDepth;}
00066 virtual void setChannelDepth(int val){channelDepth= val;}
00067
00068 virtual bool getLuminanceFlag(){ return autoLuminanceFlag; }
00069 virtual void setLuminanceFlag(bool autoGrey=true){ autoLuminanceFlag= autoGrey; }
00070
00071 virtual AbsLimiter* getLimiter(){return limiter;}
00072 virtual void setLimiter(AbsLimiter* alimiter=0){ limiter= alimiter; }
00073
00075 virtual int getMaskValue(){return maskValue;}
00077 virtual void setMaskValue(int value){maskValue= value;}
00078
00079 virtual void setMask(int n, int* xp, int* yp){ xm=xp; ym=yp; nMask=n; }
00080
00082
00086 virtual AnImage* filter(AnImage* src, AnImage* dest=0)=0;
00087
00089
00094 virtual AnImage* filter(AR3ChannelConverter* convertor, AnImage* src, AnImage* dest=0)
00095 { return filter(src,dest); }
00096
00098
00103 virtual AnImage* selectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0)
00104 { return filter(src,dest); }
00105
00107
00113 virtual AnImage* selectedFilter(AR3ChannelConverter* convertor, AnImage* mask, AnImage* src, AnImage* dest=0)
00114 { return filter(src,dest); }
00115
00116 virtual void report(FILE* file){}
00117 };
00118
00119
00120 #endif