+ _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
+ _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)
+ {
+ _image2->SetScalarComponentFromFloat(px, py, pz, 0,(float) _graylevel);
+ } else {
+ _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--;