]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/FillFilter.cpp
#2864 creaMaracasVisu Feature New Normal - Manual Paint , modifies external image...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / FillFilter.cpp
index 197b07eea9135949f7a7fb0aa087185cb754b48b..afdaf48a362a2193d29e9a0c78824d6288be27da 100644 (file)
 
 #include "FillFilter.h"
 
-FillFilter::FillFilter() {
-       _tolerancefill = 50;
-       _distancefill = 500;
+FillFilter::FillFilter() 
+{
+       _tolerancefill          = 50;
+       _distancefill           = 500;
        _limitRecursionFill = 50000;
-       _auxImageFill = NULL;
+       _auxImageFill           = NULL;
 }
 
 //---------------------------------------------------------------------------
-FillFilter::~FillFilter() {
+FillFilter::~FillFilter() 
+{
        if (_auxImageFill != NULL)
        {
                _auxImageFill->Delete();
@@ -41,9 +43,9 @@ FillFilter::~FillFilter() {
 }
 
 //---------------------------------------------------------------------------
-void FillFilter::SetImage(vtkImageData *image) // virtual
-               {
-       baseFilterManualPaint::SetImage(image);
+void FillFilter::SetImages(vtkImageData *image,vtkImageData *image2) // virtual
+{
+       baseFilterManualPaint::SetImages(image,image2);
        if (_auxImageFill != NULL)
        {
                _auxImageFill->Delete();
@@ -102,25 +104,36 @@ void FillFilter::Run() // virtual
 }
 
 //---------------------------------------------------------------------------
-void FillFilter::FillToolRecursive(int px, int py, int pz) {
+void FillFilter::FillToolRecursive(int px, int py, int pz) 
+{
        _countRecursiveFill++;
 
        _countProgressingFill++;
-       if (_countProgressingFill > 200000) {
+       if (_countProgressingFill > 200000) 
+       {
                printf("R %ld \n", _countRecursiveFill);
                _countProgressingFill = 0;
        }
 
        if ((px >= _minX) && (px <= _maxX) && (py >= _minY) && (py <= _maxY)
-                       && (pz >= _minZ) && (pz <= _maxZ)) {
-               if (_usingAuxImageFill == true) {
+                       && (pz >= _minZ) && (pz <= _maxZ)) 
+       {
+               if (_usingAuxImageFill == true) 
+               {
                        this->_IMManager->AddModifiedPixel(px, py, pz); //DFCH
                        _auxImageFill->SetScalarComponentFromFloat(px, py, pz, 0, 0);
                }
                _tmpDistfill = (px - _pxfill) * (px - _pxfill)
                                + (py - _pyfill) * (py - _pyfill)
                                + (pz - _pzfill) * (pz - _pzfill);
-               _tmpiglfill = _image->GetScalarComponentAsDouble(px, py, pz, 0);
+               _tmpiglfill     = _image->GetScalarComponentAsDouble(px, py, pz, 0);
+
+               if (_image2!=NULL)
+               {
+                       _tmpiglfill2    =       _image2->GetScalarComponentAsDouble(px, py, pz, 0);
+               } else {
+                       _tmpiglfill2    =       _tmpiglfill;
+               }
 
                float grayLBFMTOL = _graylevelbasefill - _tolerancefill;
                float grayLBFPTOL = _graylevelbasefill + _tolerancefill;
@@ -144,31 +157,40 @@ void FillFilter::FillToolRecursive(int px, int py, int pz) {
                        isInRange = true;
                } //fi esle
 
-               if (isInRange) {
+               if (isInRange) 
+               {
                        _auxGrayLevelValidationFill = (_tmpiglfill != _graylevel)
+                                       && (_tmpiglfill2 != _graylevel)
                                        && (_tmpiglfill >= grayLBFMTOL)
                                        && (_tmpiglfill <= grayLBFPTOL)
                                        && (_tmpDistfill <= _distbasefill); //DFCH
-               } //fi
-               else {
+               } else {
                        _auxGrayLevelValidationFill = false;
-               } //esle
+               } // if isInRange
+
                  //DFCH
                /*_auxGrayLevelValidationFill =   (_tmpiglfill!=_graylevel) &&
                 (_tmpiglfill>=_graylevelbasefill-_tolerancefill) &&
                 (_tmpiglfill<=_graylevelbasefill+_tolerancefill) &&
                 (_tmpDistfill<=_distbasefill);*/ //DFCH
-               if (_auxGrayLevelValidationFill == true) {
+
+               if (_auxGrayLevelValidationFill == true) 
+               {
                        this->_IMManager->AddModifiedPixel(px, py, pz); //DFCH
-                       _image->SetScalarComponentFromFloat(px, py, pz, 0,
-                                       (float) _graylevel);
+                       if (_image2!=NULL)
+                       {
+                               _image2->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
+                       } else {
+                               _image->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
+                       }
 
-                       if (_countRecursiveFill < _limitRecursionFill) {
+                       if (_countRecursiveFill < _limitRecursionFill) 
+                       {
 
                                if (_2D3D == 0) //2D
-                                               {
+                               {
                                        if (_direction == 0) // YZ
-                                                       {
+                                       {
                                                //FillToolRecursive(px+1,py,pz);
                                                //FillToolRecursive(px-1,py,pz);
                                                FillToolRecursive(px, py + 1, pz);
@@ -208,7 +230,8 @@ void FillFilter::FillToolRecursive(int px, int py, int pz) {
                } // _graylevel
 
                if ((_auxGrayLevelValidationFill == true)
-                               && (_countRecursiveFill >= _limitRecursionFill)) {
+                               && (_countRecursiveFill >= _limitRecursionFill)) 
+               {
                        _countRecursiveFillProblem++;
 
                        if (_2D3D == 0) //2D
@@ -259,7 +282,8 @@ void FillFilter::FillToolRecursive(int px, int py, int pz) {
 }
 
 //---------------------------------------------------------------------------
-void FillFilter::SetAuxImageFill(int px, int py, int pz) {
+void FillFilter::SetAuxImageFill(int px, int py, int pz) 
+{
        if ((px >= _minX) && (px <= _maxX) && (py >= _minY) && (py <= _maxY)
                        && (pz >= _minZ) && (pz <= _maxZ)) {
                this->_IMManager->AddModifiedPixel(px, py, pz); //DFCH
@@ -268,31 +292,15 @@ void FillFilter::SetAuxImageFill(int px, int py, int pz) {
 }
 
 //---------------------------------------------------------------------------
-void FillFilter::SetToleranceFill(double tolerancefill) {
+void FillFilter::SetToleranceFill(double tolerancefill) 
+{
        _tolerancefill = tolerancefill;
 }
 
 //---------------------------------------------------------------------------
-void FillFilter::SetDistanceFill(int distancefill) {
+void FillFilter::SetDistanceFill(int distancefill) 
+{
        _distancefill = distancefill;
 }
 
-//---------------------------------------------------------------------------
-void FillFilter::SetRangeMin(int min) {
-       _RangeMin = min;
-}
-
-//---------------------------------------------------------------------------
-void FillFilter::SetRangeMax(int max) {
-       _RangeMax = max;
-}
-
-//---------------------------------------------------------------------------
-int FillFilter::GetRangeMin() {
-       return (_RangeMin);
-}
 
-//---------------------------------------------------------------------------
-int FillFilter::GetRangeMax() {
-       return (_RangeMax);
-}