]> 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 4156a3d54492d2c5cb7394dd916002e6892a752f..0bf97b99bc0540d496687ac483454882364674d5 100644 (file)
 # ------------------------------------------------------------------------ */
 
 #include "FillFilter.h"
+#include "creaVtk_MACROS.h"
+
+#include <vector>
+
+
 
 FillFilter::FillFilter() 
 {
-       _tolerancefill          = 50;
-       _distancefill           = 500;
-       _limitRecursionFill = 50000;
+       _tolerancefill          = 125;
+       _distancefill           = 5;
        _auxImageFill           = NULL;
+       _maxXback                       = 0;
+       _maxYback                       = 0;
+       _maxZback                       = 0;
 }
 
 //---------------------------------------------------------------------------
@@ -39,265 +46,205 @@ FillFilter::~FillFilter()
        if (_auxImageFill != NULL)
        {
                _auxImageFill->Delete();
-       }
+       }//_auxImageFill
 }
 
 //---------------------------------------------------------------------------
 void FillFilter::SetImages(vtkImageData *image,vtkImageData *image2) // virtual
-{
-       baseFilterManualPaint::SetImages(image,image2);
-       if (_auxImageFill != NULL)
+{      
+       baseFilterManualPaint::SetImages(image,image2); 
+       if ((_maxX!=_maxXback) || (_maxY!=_maxYback) || (_maxZ!=_maxZback)) 
        {
-               _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);
-
-
+               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);
 //EED 2017-01-01 Migration VTK7
 #if VTK_MAJOR_VERSION <= 5
-       _auxImageFill->SetWholeExtent(0, _maxX, 0, _maxY, 0, _maxZ);
-       _auxImageFill->SetScalarTypeToUnsignedChar();
-       _auxImageFill->AllocateScalars();
+               _auxImageFill->SetWholeExtent(0, _maxX, 0, _maxY, 0, _maxZ);
+               _auxImageFill->SetScalarTypeToUnsignedChar();
+               _auxImageFill->AllocateScalars();
 #else
-       _auxImageFill->AllocateScalars(VTK_UNSIGNED_CHAR,1);
+               _auxImageFill->AllocateScalars(VTK_UNSIGNED_CHAR,1);
 #endif
+       }
+       unsigned char   * ptrAuxImageFill = (unsigned char      *)_auxImageFill->GetScalarPointer();
+       memset(ptrAuxImageFill, 0, (_maxX+1) * (_maxY+1) * (_maxZ+1) );
+       _maxXback=_maxX;
+       _maxYback=_maxY;
+       _maxZback=_maxZ;        
+}
+
 
 
-}
 
 //---------------------------------------------------------------------------
 void FillFilter::Run() // 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;
-               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
-
+                       && (_pz >= _minZ) && (_pz <= _maxZ)) 
+       {
+               this->_IMManager->BaseInitialPoint(_px, _py ,_pz);
+               _graylevelbasefill                      = _image->GetScalarComponentAsDouble(_px, _py, _pz,0);
+               _distbasefill                           = _distancefill * _distancefill;
+               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
 }
 
 //---------------------------------------------------------------------------
-void FillFilter::FillToolRecursive(int px, int py, int pz
+void FillFilter::FillToolLoop(int px, int py, int pz,long int iviA
 {
-       _countRecursiveFill++;
-
-       _countProgressingFill++;
-       if (_countProgressingFill > 200000) 
+       double difX,difY,difZ,_tmpDistfill;
+       std::vector<int> lstX;
+       std::vector<int> lstY;
+       std::vector<int> lstZ;
+       std::vector<long long int> lstivi;
+       lstX.push_back(px);
+       lstY.push_back(py);
+       lstZ.push_back(pz);
+       lstivi.push_back( iviA );
+
+       DEF_POINTER_IMAGE_VTK_CREA_set(v_image,ss_image,p_image,st_image,_image)                
+       if (_image2!=NULL)
        {
-               printf("R %ld \n", _countRecursiveFill);
-               _countProgressingFill = 0;
-       }
+               DEF_POINTER_IMAGE_VTK_CREA_set(v_image2,ss_image2,p_image2,st_image2,_image2)           
+       } // if _image2
 
-       if ((px >= _minX) && (px <= _maxX) && (py >= _minY) && (py <= _maxY)
-                       && (pz >= _minZ) && (pz <= _maxZ)) 
+       DEF_POINTER_IMAGE_VTK_CREA(v_auxImageFill,ss_auxImageFill,p_auxImageFill,st_auxImageFill,_auxImageFill)         
+       while ( lstX.size()!=0 )
        {
-               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);
-
-               if (_image2!=NULL)
-               {
-                       _tmpiglfill2    =       _image2->GetScalarComponentAsDouble(px, py, pz, 0);
-               } 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 esle
-
-               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)
+               // if point inside image
+               if ((lstX[0] >= _minX) && (lstX[0] <= _maxX) && (lstY[0] >= _minY) && (lstY[0] <= _maxY) && (lstZ[0] >= _minZ) && (lstZ[0] <= _maxZ)) 
+               {   
+                       difX = px-lstX[0];
+                       difY = py-lstY[0];
+                       difZ = pz-lstZ[0];
+                       _tmpDistfill = difX*difX + difY*difY + difZ*difZ;
+                       // if distance of center point
+                       if (_tmpDistfill<=_distbasefill)
                        {
-                               _image2->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
-                       } else {
-                               _image->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
-                       }
+                               // if point not visited
+                               GETVALUE2_VTK_CREA(v_auxImageFill,p_auxImageFill,st_auxImageFill,lstivi[0] );   
+                               if (v_auxImageFill==0)
+                               { 
+                                       // If Gray Level valid
 
-                       if (_countRecursiveFill < _limitRecursionFill) 
-                       {
+                                       //EED01 
+                                       //              _tmpiglfill     = _image->GetScalarComponentAsDouble(px, py, pz, 0);
+                                       GETVALUE2_VTK_CREA(_tmpiglfill,p_image,st_image,lstivi[0])      
 
-                               if (_2D3D == 0) //2D
-                               {
-                                       if (_direction == 0) // YZ
+                                       if (_image2!=NULL)
                                        {
-                                               //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);
+                                               //EED01
+                                               //                      _tmpiglfill2    =       _image2->GetScalarComponentAsDouble(px, py, pz, 0);
+                                               GETVALUE2_VTK_CREA(_tmpiglfill2,p_image2,st_image2,lstivi[0])   
+                                       } else {
+                                               _tmpiglfill2    =       _tmpiglfill;
                                        }
-                                       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
+                                       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)  
+                                       {
 
-               if ((_auxGrayLevelValidationFill == true)
-                               && (_countRecursiveFill >= _limitRecursionFill)) 
-               {
-                       _countRecursiveFillProblem++;
+                                               this->_IMManager->AddModifiedPixel(lstX[0], lstY[0], lstZ[0]); //DFCH
 
-                       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
+                                               // Modifie image
+                                               if (_image2!=NULL)
                                                {
-                                       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
+                                                       //                              _image2->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
+                                                       SETVALUE2_VTK_CREA(_graylevel,p_image2,st_image2,lstivi[0])
+                                               } else {
+                                                       //                              _image->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
+                                                       SETVALUE2_VTK_CREA(_graylevel,p_image,st_image,lstivi[0])
+                                               } // if _image2
+
+                                               // Add neighborhood points in the list 
+                                               if (_2D3D == 0) //2D
                                                {
-                                       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--;
-
-}
-
-//---------------------------------------------------------------------------
-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
-               _auxImageFill->SetScalarComponentFromFloat(px, py, pz, 0, 1);
-       }
+                                                       if (_direction == 0) // YZ
+                                                       {
+                                                               //lstX.push_back(lstX[0]+1); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]+_OneColumn);
+                                                               //lstX.push_back(lstX[0]-1); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]-_OneColumn);
+                                                               lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]+1); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]+_OneLine);
+                                                               lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]-1); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]-_OneLine);
+                                                               lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]+1); lstivi.push_back( lstivi[0]+_OnePlane);
+                                                               lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]-1); lstivi.push_back( lstivi[0]-_OnePlane);
+                                                       }
+                                                       if (_direction == 1) // XZ
+                                                       {
+                                                               lstX.push_back(lstX[0]+1); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]+_OneColumn);
+                                                               lstX.push_back(lstX[0]-1); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]-_OneColumn);
+                                                               // lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]+1); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]+_OneLine);
+                                                               // lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]-1); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]-_OneLine);
+                                                               lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]+1); lstivi.push_back( lstivi[0]+_OnePlane);
+                                                               lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]-1); lstivi.push_back( lstivi[0]-_OnePlane);
+                                                       }
+                                                       if (_direction == 2) // XY
+                                                       {
+                                                               lstX.push_back(lstX[0]+1); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]+_OneColumn);
+                                                               lstX.push_back(lstX[0]-1); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]-_OneColumn);
+                                                               lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]+1); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]+_OneLine);
+                                                               lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]-1); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]-_OneLine);
+                                                               //lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]+1); lstivi.push_back( lstivi[0]+_OnePlane);
+                                                               //lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]-1); lstivi.push_back( lstivi[0]-_OnePlane);
+                                                       }
+                                               } else { // 3D
+                                                       lstX.push_back(lstX[0]+1); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]+_OneColumn);
+                                                       lstX.push_back(lstX[0]-1); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]-_OneColumn);
+                                                       lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]+1); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]+_OneLine);
+                                                       lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]-1); lstZ.push_back(lstZ[0]  ); lstivi.push_back( lstivi[0]-_OneLine);
+                                                       lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]+1); lstivi.push_back( lstivi[0]+_OnePlane);
+                                                       lstX.push_back(lstX[0]  ); lstY.push_back(lstY[0]  ); lstZ.push_back(lstZ[0]-1); lstivi.push_back( lstivi[0]-_OnePlane);
+                                               } // 2D 3D
+                                       } // if gray level valid      _auxGrayLevelValidationFill
+                               } // if point not visited
+                               // Add point to already visited
+                               SETVALUE2_VTK_CREA(1,p_auxImageFill,st_auxImageFill,lstivi[0]);
+                       } // if distance of center point
+               } // if point inside image
+               // Remove point from the list
+               lstX.erase( lstX.begin() );
+               lstY.erase( lstY.begin() );
+               lstZ.erase( lstZ.begin() );
+               lstivi.erase( lstivi.begin() );
+       } // while _lstX.size
 }
 
 //---------------------------------------------------------------------------
@@ -312,4 +259,11 @@ void FillFilter::SetDistanceFill(int distancefill)
        _distancefill = distancefill;
 }
 
+//---------------------------------------------------------------------------
+vtkImageData* FillFilter::GetAuxImageFill() 
+{
+       return _auxImageFill;
+}
+
+