]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/FillFilter.cpp
#3171 creaMaracasVisu Feature New Normal - creaVTK_MACROS
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / FillFilter.cpp
index a94e39fbb2e5760be22b93c69059219546cee2e4..8210bec46e5199ab49af3d6662136d626e43d62c 100644 (file)
-/*
-#include "ManualPaintModel.h"
-
-
-ManualPaintModel::ManualPaintModel()
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
+#include "FillFilter.h"
+#include "creaVtk_MACROS.h"
+
+FillFilter::FillFilter() 
 {
-    _graylevel          =   0.0;
-    _brushsize          =   1;
-    _brushform          =   0;      // 0 rectangle-box  ,   1 circle-sphere
-    _2D3D               =   1;      // 0 2D             ,   1 true 3D
-    _brushtool          =   0;      // 0 pencil         ,   1 fill
-    _direction          =   0;      // 1 XZ             ,   0 YZ            ,   2 XY
-    _tolerancefill      =   50;
-    _distancefill       =   500;
-    _limitRecursionFill =   100000;
-    _minX               =   0;
-    _minY               =   0;
-    _minZ               =   0;
-    _maxX               =   0;
-    _maxY               =   0;
-    _maxZ               =   0;
-    _auxImageFill       =   NULL;
+       _tolerancefill          = 50;
+       _distancefill           = 500;
+       _limitRecursionFill = 50000;
+       _auxImageFill           = NULL;
+       _maxXback                       = 0;
+       _maxYback                       = 0;
+       _maxZback                       = 0;
 }
 
 //---------------------------------------------------------------------------
-ManualPaintModel::~ManualPaintModel()
+FillFilter::~FillFilter() 
 {
-    if (_auxImageFill!=NULL)
-    {
-        _auxImageFill->Delete();
-    }
+       if (_auxImageFill != NULL)
+       {
+               _auxImageFill->Delete();
+       }
 }
 
 //---------------------------------------------------------------------------
-void ManualPaintModel::SetImage(vtkImageData *image)
+void FillFilter::SetImages(vtkImageData *image,vtkImageData *image2) // virtual
 {
-    _image=image;
-
-    int ext[6];
-    _image->GetWholeExtent(ext);
-    _minX=0;
-    _minY=0;
-    _minZ=0;
-    _maxX=ext[1]-ext[0];
-    _maxY=ext[3]-ext[2];
-    _maxZ=ext[5]-ext[4];
-
-
-    if (_auxImageFill!=NULL)
-    {
-        _auxImageFill->Delete();
-    }
-       _auxImageFill = vtkImageData::New();
-       _auxImageFill->SetDimensions(_maxX+1,_maxY+1,_maxZ+1);
-       _auxImageFill->SetOrigin(0,0,0);
-       _auxImageFill->SetExtent( 0 , _maxX , 0 , _maxY , 0, _maxZ );
-       _auxImageFill->SetWholeExtent( 0 , _maxX , 0 , _maxY , 0, _maxZ );
-       _auxImageFill->SetScalarTypeToUnsignedChar();
-       _auxImageFill->AllocateScalars();
-
-}
-
-//---------------------------------------------------------------------------
-void ManualPaintModel::PaintImage(int px,int py, int pz)
-{
-    if (_brushtool==0)
-    {
-        BrushTool(px,py,pz);
-    }
-    if (_brushtool==1)
-    {
-        FillTool(px,py,pz);
-    }
+       baseFilterManualPaint::SetImages(image,image2);
+       
+       if ((_maxX!=_maxXback) || (_maxY!=_maxYback) || (_maxZ!=_maxZback)) 
+       {
+               if (_auxImageFill != NULL)
+               {
+                       _auxImageFill->Delete();
+               }
+               _auxImageFill = vtkImageData::New();
+               _auxImageFill->SetDimensions(_maxX + 1, _maxY + 1, _maxZ + 1);
+               _auxImageFill->SetOrigin(0, 0, 0);
+               _auxImageFill->SetExtent(0, _maxX, 0, _maxY, 0, _maxZ);
+               _auxImageFill->SetWholeExtent(0, _maxX, 0, _maxY, 0, _maxZ);
+               _auxImageFill->SetScalarTypeToUnsignedChar();
+               _auxImageFill->AllocateScalars();
+               _ptrAuxImageFill = (unsigned char       *)_auxImageFill->GetScalarPointer();
+               memset(_ptrAuxImageFill, 0, (_maxX+1) * (_maxY+1) * (_maxZ+1) );
+       }
+       _maxXback=_maxX;
+       _maxYback=_maxY;
+       _maxYback=_maxZ;
 }
 
 
 //---------------------------------------------------------------------------
-void ManualPaintModel::FillTool(int px,int py, int pz)
+void FillFilter::Run() // virtual
 {
-    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;
-        unsigned char *pImage = (unsigned char *)_auxImageFill->GetScalarPointer();
-        _usingAuxImageFill=false;
-        memset ( pImage , 0 , _maxX*_maxY*_maxZ );
-
-        FillToolRecursive(px,py,pz);
-        printf("--\n");
-
-        int ii,jj,kk;
-        while (_countRecursiveFillProblem!=0)
-        {
-            _countRecursiveFillProblem  = 0;
-            _usingAuxImageFill=true;
-            for(ii=0;ii<=_maxX;ii++)
-            {
-                for(jj=0;jj<=_maxY;jj++)
-                {
-                    for(kk=0;kk<=_maxZ;kk++)
-                    {
-                        pImage=(unsigned char *)_auxImageFill->GetScalarPointer(ii,jj,kk);
-                        if ( (*pImage)==1 )
-                        {
-                            FillToolRecursive(ii,jj,kk);
-                        }
-                    } // for kk
-                } // for jj
-            } //for ii
-            printf("-\n");
-        } // while
-
-    } //if _minX _maxX _minY _maxY _minZ _maxZ
+       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
+//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 ManualPaintModel::FillToolRecursive(int px,int py, int pz)
+void FillFilter::FillToolRecursive(int px, int py, int pz,long int ivi) 
 {
-    _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)
-        {
-            _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);
-
-        _auxGrayLevelValidationFill =   (_tmpiglfill!=_graylevel) &&
-                                        (_tmpiglfill>=_graylevelbasefill-_tolerancefill) &&
-                                        (_tmpiglfill<=_graylevelbasefill+_tolerancefill) &&
-                                        (_tmpDistfill<=_distbasefill);
-
-        if (  _auxGrayLevelValidationFill==true )
-        {
-            _image->SetScalarComponentFromFloat (px,py,pz, 0, (float)_graylevel );
-
-            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);
-                        FillToolRecursive(px,py-1,pz);
-                        FillToolRecursive(px,py,pz-1);
-                        FillToolRecursive(px,py,pz+1);
-                    }
-                    if (_direction==1) // XZ
-                    {
-                        FillToolRecursive(px+1,py,pz);
-                        FillToolRecursive(px-1,py,pz);
-                        //FillToolRecursive(px,py+1,pz);
-                        //FillToolRecursive(px,py-1,pz);
-                        FillToolRecursive(px,py,pz-1);
-                        FillToolRecursive(px,py,pz+1);
-                    }
-                    if (_direction==2) // XY
-                    {
-                        FillToolRecursive(px+1,py,pz);
-                        FillToolRecursive(px,py+1,pz);
-                        FillToolRecursive(px-1,py,pz);
-                        FillToolRecursive(px,py-1,pz);
-                        //FillToolRecursive(px,py,pz-1);
-                        //FillToolRecursive(px,py,pz+1);
-                    }
-                } else  {   // 3D
-
-                    FillToolRecursive(px+1,py,pz);
-                    FillToolRecursive(px-1,py,pz);
-                    FillToolRecursive(px,py+1,pz);
-                    FillToolRecursive(px,py-1,pz);
-                    FillToolRecursive(px,py,pz-1);
-                    FillToolRecursive(px,py,pz+1);
-                } // 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);
-                        SetAuxImageFill(px,py-1,pz);
-                        SetAuxImageFill(px,py,pz-1);
-                        SetAuxImageFill(px,py,pz+1);
-                    }
-                    if (_direction==1) // XZ
-                    {
-                        SetAuxImageFill(px+1,py,pz);
-                        SetAuxImageFill(px-1,py,pz);
-                        //SetAuxImageFill(px,py+1,pz);
-                        //SetAuxImageFill(px,py-1,pz);
-                        SetAuxImageFill(px,py,pz-1);
-                        SetAuxImageFill(px,py,pz+1);
-                    }
-                    if (_direction==2) // XY
-                    {
-                        SetAuxImageFill(px+1,py,pz);
-                        SetAuxImageFill(px-1,py,pz);
-                        SetAuxImageFill(px,py+1,pz);
-                        SetAuxImageFill(px,py-1,pz);
-                        //SetAuxImageFill(px,py,pz-1);
-                        //SetAuxImageFill(px,py,pz+1);
-                    }
-                } else  {   // 3D
-
-                    SetAuxImageFill(px+1,py,pz);
-                    SetAuxImageFill(px-1,py,pz);
-                    SetAuxImageFill(px,py+1,pz);
-                    SetAuxImageFill(px,py-1,pz);
-                    SetAuxImageFill(px,py,pz-1);
-                    SetAuxImageFill(px,py,pz+1);
-                } // 2D 3D
-
-        } // _graylevel   //_limitRecursionFill
-
-
-    } //if _minX _maxX _minY _maxY _minZ _maxZ
-
-
-    _countRecursiveFill--;
-
+DEF_POINTER_IMAGE_VTK_CREA(v_image,ss_image,p_image,st_image,_image)           
+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) 
+               {
+                       this->_IMManager->AddModifiedPixel(px, py, pz); //DFCH
+//EED01
+//                     _auxImageFill->SetScalarComponentFromFloat(px, py, pz, 0, 0);
+                       _ptrAuxImageFill[ ivi ]=0;
+               }
+               _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
+
+                 //DFCH
+               /*_auxGrayLevelValidationFill =   (_tmpiglfill!=_graylevel) &&
+                (_tmpiglfill>=_graylevelbasefill-_tolerancefill) &&
+                (_tmpiglfill<=_graylevelbasefill+_tolerancefill) &&
+                (_tmpDistfill<=_distbasefill);*/ //DFCH
+
+               if (_auxGrayLevelValidationFill == true) 
+               {
+                       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--;
 }
 
 //---------------------------------------------------------------------------
-void ManualPaintModel::SetAuxImageFill(int px,int py, int pz)
+void FillFilter::SetAuxImageFill(int px, int py, int pz, long int ivi) 
 {
-    if ((px>=_minX) && (px<=_maxX) && (py>=_minY) && (py<=_maxY) && (pz>=_minZ) && (pz<=_maxZ))
-    {
-        _auxImageFill->SetScalarComponentFromFloat (px, py, pz,0, 1);
-    }
+       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
 }
 
 //---------------------------------------------------------------------------
-void ManualPaintModel::BrushTool(int px,int py, int pz)
+void FillFilter::SetToleranceFill(double tolerancefill) 
 {
-    if (_image!=NULL)
-    {
-        float value=(float)_graylevel;
-        int i,j,k;
-        int size = _brushsize-1;
-
-        int minX = px-size;
-        int maxX = px+size;
-        int minY = py-size;
-        int maxY = py+size;
-        int minZ = pz-size;
-        int maxZ = pz+size;
-
-        if (_2D3D==0) //2D
-        {
-            if (_direction==0)  // YZ
-            {
-                minX=px;
-                maxX=px;
-            }
-            if (_direction==1) // XZ
-            {
-                minY=py;
-                maxY=py;
-            }
-            if (_direction==2) // XY
-            {
-                minZ=pz;
-                maxZ=pz;
-            }
-        }
-
-        if (_2D3D==1) // 3D
-        {
-        }
-
-
-        double xx,yy,zz,rr=size*size;
-
-        for (i=minX; i<=maxX; i++)
-        {
-            xx=px-i;
-            xx=xx*xx;
-            for (j=minY; j<=maxY; j++)
-            {
-                yy=py-j;
-                yy=yy*yy;
-                for (k=minZ; k<=maxZ; k++)
-                {
-                    if ((i>=_minX) && (i<=_maxX) && (j>=_minY) && (j<=_maxY) && (k>=_minZ) && (k<=_maxZ))
-                    {
-                        zz=pz-k;
-                        zz=zz*zz;
-                        if (_brushform==0)
-                        {
-                            _image->SetScalarComponentFromFloat (i,j,k, 0, value );
-                        } else if (_brushform==1)
-                        {
-                            if ((xx+yy+zz)<=rr)
-                            {
-                                _image->SetScalarComponentFromFloat (i,j,k, 0, value );
-                            }
-                        } // _brushform
-
-                    } //if _minX _maxX _minY _maxY _minZ _maxZ
-
-                }//k
-            }//j
-        }//i
-        _image->Modified();
-    } else  {
-        printf("ERROR : bbcreaMaracasvisu::vtkInteractorManualPaint::PaintImage :  Image not set. \n");
-    } // _image
+       _tolerancefill = tolerancefill;
 }
 
-
 //---------------------------------------------------------------------------
-void ManualPaintModel::SetBrushSize( int brushsize )
+void FillFilter::SetDistanceFill(int distancefill) 
 {
-    _brushsize = brushsize;
+       _distancefill = distancefill;
 }
 
-//---------------------------------------------------------------------------
-void ManualPaintModel::SetGrayLevel( double graylevel )
-{
-    _graylevel = graylevel;
-}
-
-//---------------------------------------------------------------------------
-void ManualPaintModel::SetBrushForm( int brushform )
-{
-    _brushform = brushform;
-}
 
-//---------------------------------------------------------------------------
-void ManualPaintModel::SetBrushTool( int brushtool )
-{
-    _brushtool = brushtool;
-}
-
-//---------------------------------------------------------------------------
-void ManualPaintModel::Set2D3D( int dim2D3D )
-{
-    _2D3D = dim2D3D;
-}
-
-//---------------------------------------------------------------------------
-void ManualPaintModel::SetToleranceFill(double tolerancefill)
-{
-    _tolerancefill = tolerancefill;
-}
-
-//---------------------------------------------------------------------------
-void ManualPaintModel::SetDistanceFill(int distancefill)
-{
-    _distancefill = distancefill;
-}
-
-//---------------------------------------------------------------------------
-void ManualPaintModel::SetDirection(int direction)
-{
-    _direction = direction;
-}
-*/