MeVisLabToolboxReference
|
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