00001 #ifndef __ContrastFunctionFactory__ 00002 #define __ContrastFunctionFactory__ 00003 00004 00005 00026 #include <stdio.h> 00027 00028 #include "AContrastFunction.hpp" 00029 00030 #define NUMBER_CONTRASTFUNC_CONTEXT 3 00031 #define NUMBER_CONTRASTFUNC_MODELS 3 00032 00033 class ContrastFunctionFactory 00034 { 00035 public: 00036 00037 const static char context[NUMBER_CONTRASTFUNC_CONTEXT][64]; 00038 const static char model[NUMBER_CONTRASTFUNC_MODELS][64]; 00039 const static int modelContext[NUMBER_CONTRASTFUNC_MODELS]; 00040 00041 protected: 00042 00043 AContrastFunction* createSuperGaussian(double a); 00044 AContrastFunction* createHyperGaussian(double a); 00045 AContrastFunction* createSubGaussian(); 00046 00047 public: 00048 00049 ContrastFunctionFactory(){} 00050 virtual ~ContrastFunctionFactory(){} 00051 00052 static int numberOfContexts(){ return NUMBER_CONTRASTFUNC_CONTEXT; } 00053 static int numberOfModels(){ return NUMBER_CONTRASTFUNC_MODELS; } 00054 00055 static const char* getContext(int i){ return ContrastFunctionFactory::context[getModelContext(i)]; } 00056 static const char* getModel(int i){ return ContrastFunctionFactory::model[i]; } 00057 static const int getModelContext(int i){ return ContrastFunctionFactory::modelContext[i]; } 00058 00059 AContrastFunction* createModel(int indexModel=0, double a=1.0); 00060 00061 virtual void report(FILE* file){} 00062 }; 00063 00064 00065 00066 #endif