MeVisLabToolboxReference
MeVisLab/Standard/Sources/ML/MLKernel/mlKernelModule.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //-------------------------------------------------------------------------
00004 
00014 //-------------------------------------------------------------------------
00015 // Prevent multiple including of this file.
00016 #if !defined(__mlKernelModule_H)
00017 #define __mlKernelModule_H
00018 
00019 // ML-includes
00020 #ifndef __mlInitSystemKernel_H
00021 #include "mlInitSystemKernel.h"
00022 #endif
00023 #ifndef __mlKernelBaseModule_H
00024 #include "mlKernelBaseModule.h"
00025 #endif
00026 
00027 ML_START_NAMESPACE
00028 
00029   //----------------------------------------------------------------------
00035   //----------------------------------------------------------------------
00036   class MLKERNELEXPORT KernelModule : public KernelBaseModule{
00037 
00038   public:
00039 
00044     KernelModule(int inputNum=1, int outputNum=1);
00045 
00046 
00048 
00049 
00051     inline IntField    *getKernelXFld() const          { return _kernelXFld; }
00053     inline IntField    *getKernelYFld() const          { return _kernelYFld; }
00055     inline IntField    *getKernelZFld() const          { return _kernelZFld; }
00057     inline IntField    *getKernelCFld() const          { return _kernelCFld; }
00059     inline IntField    *getKernelTFld() const          { return _kernelTFld; }
00061     inline IntField    *getKernelUFld() const          { return _kernelUFld; }
00062 
00067     inline BoolField   *getMakeSphericalFld() const     { return _makeSphericalFld; }
00069 
00070 
00071 
00073 
00074 
00075 
00076 
00077 
00078     inline BoolField   *getNormalizeFld() const         { return _normalizeFld; }
00080 
00081 
00082 
00084 
00085 
00086 
00087 
00088 
00089 
00090     inline StringField *getExternalKernelFld() const   { return _externalKernelFld; }
00091 
00096     inline BoolField *getUseExternalKernelFld() const  { return _useExternalKernelFld; }
00097 
00103     inline StringField *getKernelOutputFld() const     { return _kernelOutputFld; }
00105 
00106 
00108 
00109 
00110 
00111 
00112     inline StringField *getKernelInfoFld() const       { return _kernelInfoFld; }
00113 
00122     inline DoubleField *getKernelElementsSumFld() const { return _kernelElementsSumFld; }
00123 
00129     inline IntField   *getNumKernelElementsFld() const  { return _numKernelElementsFld;    }
00131 
00132 
00133 
00135 
00136 
00137 
00138 
00139 
00140 
00141     inline DoubleField *getImageIntervalMinFld() const { return _imageIntervalMinFld; }
00142 
00148     inline DoubleField *getImageIntervalMaxFld() const { return _imageIntervalMaxFld; }
00149 
00155     inline BoolField *getUseImageIntervalFld() const   { return _useImageIntervalFld; }
00157 
00158 
00159 
00161 
00162 
00163 
00164 
00165 
00166 
00167     inline DoubleField *getKernelIntervalMinFld() const { return _kernelIntervalMinFld; }
00168 
00174     inline DoubleField *getKernelIntervalMaxFld() const { return _kernelIntervalMaxFld; }
00175 
00181     inline BoolField *getUseKernelIntervalFld() const   { return _useKernelIntervalFld; }
00183 
00184 
00185 
00187 
00188 
00189 
00190 
00191 
00192 
00193 
00194 
00195 
00196 
00197 
00198 
00199     inline BoolField *getAutoCalcMinMaxFld() const      { return _autoCalcMinMaxFld;    }
00200 
00207     inline NotifyField *getSetAutoMinMaxFld() const     { return _setAutoMinMaxFld;     }
00209 
00210 
00211 
00213 
00214 
00215 
00216 
00217     inline DoubleField *getOutputMinFld() const         { return _outputMinFld;         }
00218 
00222     inline DoubleField *getOutputMaxFld() const         { return _outputMaxFld;         }
00223 
00228     inline BoolField   *getUseMinMaxFld() const         { return _useMinMaxFld;         }
00230 
00231   protected:
00232 
00233     //-------------------------------------------------------------------------------------------
00234     // Stuff often overloaded in derived classes.
00235     //-------------------------------------------------------------------------------------------
00236 
00237     //-------------------------------------------------------------------------------------------
00239 
00240     //-------------------------------------------------------------------------------------------
00247     virtual void _userKernelPreUpdate() { };
00248 
00257     virtual void _userKernelPostUpdate() { };
00259 
00260 
00261 
00262     //-------------------------------------------------------------------------------------------
00263     // Stuff often called - but usually not overloaded - by derived classes.
00264     //-------------------------------------------------------------------------------------------
00265     //-------------------------------------------------------------------------------------------
00267 
00268     //-------------------------------------------------------------------------------------------
00269 
00279     virtual void _createKernelExtentFields(int numDim=6,
00280                                            const ImageVector &defaultExt=ImageVector(3,3,1,1,1,1));
00281 
00284     virtual void _validateKernelExtents();
00285 
00295     virtual void _createMakeSphericalField(bool defaultVal=false);
00296 
00306     virtual void _createNormalizeField(bool defaultVal=false);
00307 
00326     virtual void _createMinMaxCalcFields(bool defaultValue=false, bool createSetOutputMinMax=false);
00327 
00341     virtual void _createMinMaxFields(MLdouble minVal=0, MLdouble maxVal=0, bool defaultValue=false);
00342 
00354     virtual void _createExternalKernelFields(bool createUseToggle=false, bool defaultVal=false);
00355 
00362     virtual void _createKernelOutputField();
00363 
00377     virtual void _createImageIntervalFields(MLdouble min=0, MLdouble max=1024,
00378                                             bool createToggle=false, bool useIt=false);
00379 
00394     virtual void _createKernelIntervalFields(MLdouble min=0, MLdouble max=1024,
00395                                              bool createToggle=false, bool useIt=false);
00396 
00397 
00398 
00403     virtual void _createKernelInfoField();
00404 
00412     virtual void _createNumKernelElementsField();
00413 
00421     virtual void _createKernelElementsSumField();
00423 
00424 
00425 
00426 
00427     //-------------------------------------------------------------------------------------------
00429 
00430     //-------------------------------------------------------------------------------------------
00431 
00436     virtual void _updateKernel(){ _updateKernel(true); };
00437 
00499     virtual void _updateKernel(bool permitExtentChanges);
00500 
00503     virtual void _updateKernelOutputField();
00504 
00507     virtual std::string _composeKernelInfo(bool valid=true) const;
00509 
00510 
00511     //-------------------------------------------------------------------------------------------
00513 
00514     //-------------------------------------------------------------------------------------------
00515 
00521     void _setImageInterval(MLdouble minVal=-DBL_MAX, MLdouble maxVal=DBL_MAX);
00522 
00529     void _setKernelInterval(MLdouble minVal=-DBL_MAX, MLdouble maxVal=DBL_MAX);
00530 
00535     bool _isInImageInterval(MLdouble v) const;
00536 
00541     bool _isInKernelInterval(MLdouble v) const;
00543 
00544 
00545 
00546 
00547     //-------------------------------------------------------------------------------------------
00549 
00550     //-------------------------------------------------------------------------------------------
00551 
00554     virtual void handleNotification(Field* field);
00555 
00558     virtual void activateAttachments();
00559 
00566     virtual void calculateOutputImageProperties(int outIndex);
00567 
00577     virtual void calcOutSubImagePostProcessing(SubImage *outSubImg, int outIndex, SubImage *inSubImgs);
00579 
00580   private:
00581 
00582     //-------------------------------------------------------------------------------------------
00584 
00585     //-------------------------------------------------------------------------------------------
00586 
00588     IntField    *_kernelXFld;
00590     IntField    *_kernelYFld;
00592     IntField    *_kernelZFld;
00594     IntField    *_kernelCFld;
00596     IntField    *_kernelTFld;
00598     IntField    *_kernelUFld;
00599 
00604     BoolField   *_makeSphericalFld;
00606 
00607 
00608 
00609     //-------------------------------------------------------------------------------------------
00611 
00612     //-------------------------------------------------------------------------------------------
00618     BoolField   *_normalizeFld;
00620 
00621 
00622 
00623     //-------------------------------------------------------------------------------------------
00625 
00626     //-------------------------------------------------------------------------------------------
00632     StringField *_externalKernelFld;
00633 
00639     BoolField *_useExternalKernelFld;
00640 
00647     StringField *_kernelOutputFld;
00649 
00650 
00651 
00652     //-------------------------------------------------------------------------------------------
00654 
00655     //-------------------------------------------------------------------------------------------
00662     DoubleField *_imageIntervalMinFld;
00663 
00670     DoubleField *_imageIntervalMaxFld;
00671 
00678     BoolField *_useImageIntervalFld;
00680 
00681 
00682 
00683     //-------------------------------------------------------------------------------------------
00685 
00686     //-------------------------------------------------------------------------------------------
00693     DoubleField *_kernelIntervalMinFld;
00694 
00701     DoubleField *_kernelIntervalMaxFld;
00702 
00709     BoolField *_useKernelIntervalFld;
00711 
00712 
00713     //-------------------------------------------------------------------------------------------
00715 
00716     //-------------------------------------------------------------------------------------------
00721     StringField *_kernelInfoFld;
00722 
00731     IntField *_numKernelElementsFld;
00732 
00741     DoubleField *_kernelElementsSumFld;
00743 
00744 
00745     //-------------------------------------------------------------------------------------------
00747 
00748     //-------------------------------------------------------------------------------------------
00761     BoolField *_autoCalcMinMaxFld;
00762 
00770     NotifyField *_setAutoMinMaxFld;
00772 
00773 
00774 
00775     //-------------------------------------------------------------------------------------------
00777 
00778     //-------------------------------------------------------------------------------------------
00782     DoubleField *_outputMinFld;
00783 
00787     DoubleField *_outputMaxFld;
00788 
00793     BoolField   *_useMinMaxFld;
00795 
00796 
00797 
00798     //-------------------------------------------------------------------------------------------
00800 
00801     //-------------------------------------------------------------------------------------------
00802 
00805     MLdouble _autoMin;
00806 
00809     MLdouble _autoMax;
00810 
00814     bool      _autoMinMaxValid;
00816 
00817 
00819 
00820     bool      _normImageInterval;
00821 
00823     bool      _normKernelInterval;
00824 
00827     MLdouble _imageIntervalMin;
00828 
00831     MLdouble _imageIntervalMax;
00832 
00835     MLdouble _kernelIntervalMin;
00836 
00839     MLdouble _kernelIntervalMax;
00841 
00842 
00843 
00848     ML_ABSTRACT_MODULE_CLASS_HEADER(KernelModule);
00849  };
00850 
00851 #ifdef ML_DEPRECATED
00852 
00853 // disable deprecation warnings
00854 #ifdef WIN32
00855 #pragma warning(push)
00856 #pragma warning(disable : 4996 )
00857 #endif
00858 
00861  class MLKERNELEXPORT ML_DEPRECATED KernelOp : public KernelModule
00862  {
00863  public:
00864    KernelOp(int inputNum=1, int outputNum=1):KernelModule(inputNum,outputNum)
00865    {};
00866 
00867    ML_ABSTRACT_MODULE_CLASS_HEADER(KernelOp)
00868  };
00869 
00870  // re-enable deprecation warnings
00871 #ifdef WIN32
00872 #pragma warning(pop)
00873 #endif
00874 
00875 #endif // ML_DEPRECATED
00876 
00877 
00878 
00879 ML_END_NAMESPACE
00880 
00881 #endif //of __mlKernelModule_H
00882 
00883 
00884