]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/FillFilter.cpp
#3358 creaMaracasVisu Feature New Normal - Box::ColorLayerImageView Change informat...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / FillFilter.cpp
index d584e3a5ed0e6983c9fc65aa90453830a1f84e01..0bf97b99bc0540d496687ac483454882364674d5 100644 (file)
@@ -34,9 +34,6 @@ FillFilter::FillFilter()
 {
        _tolerancefill          = 125;
        _distancefill           = 5;
-/*
-       _limitRecursionFill = 50000;
-*/
        _auxImageFill           = NULL;
        _maxXback                       = 0;
        _maxYback                       = 0;
@@ -49,7 +46,7 @@ FillFilter::~FillFilter()
        if (_auxImageFill != NULL)
        {
                _auxImageFill->Delete();
-       }
+       }//_auxImageFill
 }
 
 //---------------------------------------------------------------------------
@@ -92,22 +89,9 @@ void FillFilter::Run() // virtual
        if ((_px >= _minX) && (_px <= _maxX) && (_py >= _minY) && (_py <= _maxY)
                        && (_pz >= _minZ) && (_pz <= _maxZ)) 
        {
+               this->_IMManager->BaseInitialPoint(_px, _py ,_pz);
                _graylevelbasefill                      = _image->GetScalarComponentAsDouble(_px, _py, _pz,0);
                _distbasefill                           = _distancefill * _distancefill;
-/*
-               _pxfill                                         = _px;
-               _pyfill                                         = _py;
-               _pzfill                                         = _pz;
-               _countRecursiveFill             = 0;
-               _countRecursiveFillProblem      = 0;
-               _countProgressingFill           = 0;
-               DEF_POINTER_IMAGE_VTK_CREA_set(v_image,ss_image,p_image,st_image,_image)                
-               if (_image2!=NULL)
-               {
-                       DEF_POINTER_IMAGE_VTK_CREA_set(v_image2,ss_image2,p_image2,st_image2,_image2)           
-               } // if _image2
-*/
-//             _usingAuxImageFill                      = false;
                ivi                                             = _px + _py*(_maxX+1) + _pz*(_maxX+1)*(_maxY+1);  // index vector image
                FillToolLoop(_px, _py, _pz, ivi);
        } //if _minX _maxX _minY _maxY _minZ _maxZ
@@ -263,286 +247,23 @@ void FillFilter::FillToolLoop(int px, int py, int pz,long int iviA)
        } // while _lstX.size
 }
 
-
-/*
-
-
-//---------------------------------------------------------------------------
-void FillFilter::Run2() // virtual
-{
-
-       long int ivi;
-       if ((_px >= _minX) && (_px <= _maxX) && (_py >= _minY) && (_py <= _maxY)
-                       && (_pz >= _minZ) && (_pz <= _maxZ)) 
-       {
-               _graylevelbasefill                      = _image->GetScalarComponentAsDouble(_px, _py, _pz,0);
-               _pxfill                                         = _px;
-               _pyfill                                         = _py;
-               _pzfill                                         = _pz;
-               _distbasefill                           = _distancefill * _distancefill;
-               _countRecursiveFill             = 0;
-               _countRecursiveFillProblem      = 0;
-               _countProgressingFill           = 0;
-               _usingAuxImageFill                      = false;
-
-               ivi                                             = _px + _py*(_maxX+1) + _pz*(_maxX+1)*(_maxY+1);  // index vector image
-
-DEF_POINTER_IMAGE_VTK_CREA_set(v_image,ss_image,p_image,st_image,_image)               
-if (_image2!=NULL)
-{
-       DEF_POINTER_IMAGE_VTK_CREA_set(v_image2,ss_image2,p_image2,st_image2,_image2)           
-}
-
-//EED01
-//             FillToolRecursive(_px, _py, _pz);
-               FillToolRecursive(_px, _py, _pz, ivi);
-               unsigned char *pImage;
-               pImage                                          = (unsigned char *) _auxImageFill->GetScalarPointer();
-               int ii, jj, kk;
-               ivi                                                     = 0;
-
-               while (_countRecursiveFillProblem != 0) 
-               {
-                       _countRecursiveFillProblem  = 0;
-                       _usingAuxImageFill                      = true;
-                       for (kk = 0; kk <= _maxZ; kk++) 
-                       {
-                               for (jj = 0; jj <= _maxY; jj++) 
-                               {
-                                       for (ii = 0; ii <= _maxX; ii++) 
-                                       {
-                                               if (pImage[ivi] == 1) 
-                                               {
-//EED01
-//                                                     FillToolRecursive(ii, jj, kk);
-                                                       FillToolRecursive(ii, jj, kk, ivi);
-                                               }  // if
-                                               ivi++;
-                                       } // for ii
-                               } // for jj
-                       } //for kk
-//                     printf("-\n");
-               } // while
-       } //if _minX _maxX _minY _maxY _minZ _maxZ
-}
-
-
-
 //---------------------------------------------------------------------------
-void FillFilter::FillToolRecursive(int px, int py, int pz,long int ivi
+void FillFilter::SetToleranceFill(double tolerancefill
 {
-//ups ??EED   DEF_POINTER_IMAGE_VTK_CREA(v_image,ss_image,p_image,st_image,_image)             
-//ups ??EED   DEF_POINTER_IMAGE_VTK_CREA(v_image2,ss_image2,p_image2,st_image2,_image2)                
-
-       _countRecursiveFill++;
-       _countProgressingFill++;
-       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) 
-               {
-//UPS ??EED                    this->_IMManager->AddModifiedPixel(px, py, pz); //DFCH
-//EED01
-//                     _auxImageFill->SetScalarComponentFromFloat(px, py, pz, 0, 0);
-                       _ptrAuxImageFill[ ivi ]=0;
-               }
-               difX=px-_pxfill;
-               difY=py-_pyfill;
-               difZ=pz-_pzfill;
-               _tmpDistfill = difX*difX + difY*difY + difZ*difZ;
-//             _tmpDistfill = (px-_pxfill)*(px-_pxfill)
-//                                     +  (py-_pyfill)*(py-_pyfill)
-//                                     +  (pz-_pzfill)*(pz-_pzfill);
-
-//if (_countRecursiveFill >1 )
-//{
-//     printf("   -> %d %d %d   cr=%ld  r=%f\n", px,py,pz,_countRecursiveFill , _tmpDistfill);
-//}
-
-//EED01 
-//             _tmpiglfill     = _image->GetScalarComponentAsDouble(px, py, pz, 0);
-GETVALUE2_VTK_CREA(_tmpiglfill,p_image,st_image,ivi)   
-
-               if (_image2!=NULL)
-               {
-//EED01
-//                     _tmpiglfill2    =       _image2->GetScalarComponentAsDouble(px, py, pz, 0);
-GETVALUE2_VTK_CREA(_tmpiglfill2,p_image2,st_image2,ivi)        
-               } else {
-                       _tmpiglfill2    =       _tmpiglfill;
-               }
-
-               float grayLBFMTOL       = _graylevelbasefill - _tolerancefill;
-               float grayLBFPTOL       = _graylevelbasefill + _tolerancefill;
-               bool isInRange          = false;
-               //DFCH
-               if (_RangeMin <= grayLBFMTOL && _RangeMax >= grayLBFPTOL) {
-                       isInRange               = true;
-               } //fi esle
-               else if (_RangeMin > grayLBFMTOL && _RangeMax >= grayLBFPTOL) {
-                       grayLBFMTOL     = _RangeMin;
-                       isInRange               = true;
-               } //fi esle
-               else if (_RangeMin <= grayLBFMTOL && _RangeMax < grayLBFPTOL) {
-                       grayLBFPTOL     = _RangeMax;
-                       isInRange               = true;
-               } //fi esle
-               else if ((_RangeMin <= _graylevelbasefill) && (_graylevelbasefill <= _RangeMax)) {
-                       grayLBFMTOL     = _RangeMin;
-                       grayLBFPTOL     = _RangeMax;
-                       isInRange               = true;
-               } //fi Range
-
-               if (isInRange) 
-               {
-                       _auxGrayLevelValidationFill = (_tmpiglfill != _graylevel)
-                                       && (_tmpiglfill2 != _graylevel)
-                                       && (_tmpiglfill >= grayLBFMTOL)
-                                       && (_tmpiglfill <= grayLBFPTOL)
-                                       && (_tmpDistfill <= _distbasefill); //DFCH
-               } else {
-                       _auxGrayLevelValidationFill = false;
-               } // if isInRange
-
-
-               if (_auxGrayLevelValidationFill == true) 
-               {
-//UPS ??EED                    this->_IMManager->AddModifiedPixel(px, py, pz); //DFCH
-                       if (_image2!=NULL)
-                       {
-//EED01
-//                             _image2->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
-SETVALUE2_VTK_CREA(_graylevel,p_image2,st_image2,ivi)
-                       } else {
-//EED01
-//                             _image->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
-SETVALUE2_VTK_CREA(_graylevel,p_image,st_image,ivi)
-                       }
-
-                       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, ivi+_OneLine  );
-                                               FillToolRecursive(px, py - 1, pz, ivi-_OneLine  );
-                                               FillToolRecursive(px, py, pz - 1, ivi-_OnePlane );
-                                               FillToolRecursive(px, py, pz + 1, ivi+_OnePlane );
-                                       }
-                                       if (_direction == 1) // XZ
-                                                       {
-                                               FillToolRecursive(px + 1, py, pz, ivi+_OneColumn);
-                                               FillToolRecursive(px - 1, py, pz, ivi-_OneColumn);
-                                               //FillToolRecursive(px,py+1,pz);
-                                               //FillToolRecursive(px,py-1,pz);
-                                               FillToolRecursive(px, py, pz - 1, ivi-_OnePlane );
-                                               FillToolRecursive(px, py, pz + 1, ivi+_OnePlane );
-                                       }
-                                       if (_direction == 2) // XY
-                                                       {
-                                               FillToolRecursive(px + 1, py, pz, ivi+_OneColumn);
-                                               FillToolRecursive(px, py + 1, pz, ivi+_OneLine);
-                                               FillToolRecursive(px - 1, py, pz, ivi-_OneColumn);
-                                               FillToolRecursive(px, py - 1, pz, ivi-_OneLine);
-                                               //FillToolRecursive(px,py,pz-1);
-                                               //FillToolRecursive(px,py,pz+1);
-                                       }
-                               } else { // 3D
-                                       FillToolRecursive(px + 1, py, pz, ivi+_OneColumn );
-                                       FillToolRecursive(px - 1, py, pz, ivi-_OneColumn );
-                                       FillToolRecursive(px, py + 1, pz, ivi+_OneLine );
-                                       FillToolRecursive(px, py - 1, pz, ivi-_OneLine );
-                                       FillToolRecursive(px, py, pz - 1, ivi-_OnePlane );
-                                       FillToolRecursive(px, py, pz + 1, ivi+_OnePlane );
-                               } // 2D 3D
-
-                       } //_countRecursiveFill
-               } // _graylevel
-
-               if ((_auxGrayLevelValidationFill == true) && (_countRecursiveFill >= _limitRecursionFill)) 
-               {
-                       _countRecursiveFillProblem++;
-                       if (_2D3D == 0) //2D
-                       {
-                               if (_direction == 0) // YZ
-                               {
-                                       //SetAuxImageFill(px+1,py,pz);
-                                       //SetAuxImageFill(px-1,py,pz);
-                                       SetAuxImageFill(px, py + 1, pz,ivi+_OneLine);
-                                       SetAuxImageFill(px, py - 1, pz,ivi-_OneLine);
-                                       SetAuxImageFill(px, py, pz - 1,ivi-_OnePlane);
-                                       SetAuxImageFill(px, py, pz + 1,ivi+_OnePlane);
-                               }
-                               if (_direction == 1) // XZ
-                               {
-                                       SetAuxImageFill(px + 1, py, pz,ivi+_OneColumn);
-                                       SetAuxImageFill(px - 1, py, pz,ivi-_OneColumn);
-                                       //SetAuxImageFill(px,py+1,pz);
-                                       //SetAuxImageFill(px,py-1,pz);
-                                       SetAuxImageFill(px, py, pz - 1,ivi-_OnePlane);
-                                       SetAuxImageFill(px, py, pz + 1,ivi+_OnePlane);
-                               }
-                               if (_direction == 2) // XY
-                               {
-                                       SetAuxImageFill(px + 1, py, pz,ivi+_OneColumn);
-                                       SetAuxImageFill(px - 1, py, pz,ivi-_OneColumn);
-                                       SetAuxImageFill(px, py + 1, pz,ivi+_OneLine);
-                                       SetAuxImageFill(px, py - 1, pz,ivi-_OneLine);
-                                       //SetAuxImageFill(px,py,pz-1);
-                                       //SetAuxImageFill(px,py,pz+1);
-                               }
-                       } else { // 3D
-                               SetAuxImageFill(px + 1, py, pz,ivi+_OneColumn);
-                               SetAuxImageFill(px - 1, py, pz,ivi-_OneColumn);
-                               SetAuxImageFill(px, py + 1, pz,ivi+_OneLine);
-                               SetAuxImageFill(px, py - 1, pz,ivi-_OneLine);
-                               SetAuxImageFill(px, py, pz - 1,ivi-_OnePlane);
-                               SetAuxImageFill(px, py, pz + 1,ivi+_OnePlane);
-                       } // 2D 3D
-
-               } // _graylevel   //_limitRecursionFill
-
-       } //if _minX _maxX _minY _maxY _minZ _maxZ
-       _countRecursiveFill--;
+       _tolerancefill = tolerancefill;
 }
 
-
 //---------------------------------------------------------------------------
-void FillFilter::SetAuxImageFill(int px, int py, int pz, long int ivi
+void FillFilter::SetDistanceFill(int distancefill
 {
-       if ((px >= _minX) && (px <= _maxX) && (py >= _minY) && (py <= _maxY)
-                       && (pz >= _minZ) && (pz <= _maxZ)) 
-       {
-               this->_IMManager->AddModifiedPixel(px, py, pz); //DFCH
-//EED01
-//             _auxImageFill->SetScalarComponentFromFloat(px, py, pz, 0, 1);
-                       _ptrAuxImageFill[ ivi ]=1;
-       } // if px py pz
+       _distancefill = distancefill;
 }
-*/
-
 
 //---------------------------------------------------------------------------
-void FillFilter::SetToleranceFill(double tolerancefill
+vtkImageData* FillFilter::GetAuxImageFill(
 {
-       _tolerancefill = tolerancefill;
+       return _auxImageFill;
 }
 
-//---------------------------------------------------------------------------
-void FillFilter::SetDistanceFill(int distancefill) 
-{
-       _distancefill = distancefill;
-}