+{
+ if (_brushtool==0)
+ {
+ BrushTool(px,py,pz);
+ }
+ if (_brushtool==1)
+ {
+ FillTool(px,py,pz);
+ }
+}
+
+
+void ManualPaintModel::FillTool(int px,int py, int pz)
+{
+ 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;
+ FillToolRecursive(px,py,pz);
+ } //if _minX _maxX _minY _maxY _minZ _maxZ
+}
+
+
+void ManualPaintModel::FillToolRecursive(int px,int py, int pz)
+{
+
+ double dist=(px-_pxfill) * (px-_pxfill) + (py-_pyfill) * (py-_pyfill) + (pz-_pzfill) * (pz-_pzfill);
+
+ if ((px>=_minX) && (px<=_maxX) && (py>=_minY) && (py<=_maxY) && (pz>=_minZ) && (pz<=_maxZ))
+ {
+ float value=(float)_graylevel;
+ double igl=_image->GetScalarComponentAsDouble(px,py,pz, 0);
+ if ( (igl!=_graylevel) &&
+ (igl>=_graylevelbasefill-_tolerancefill) &&
+ (igl<=_graylevelbasefill+_tolerancefill) &&
+ (dist<=_distbasefill)
+ )
+ {
+// _image->SetScalarComponentFromFloat (px,py,pz, 0, dist+500 );
+ _image->SetScalarComponentFromFloat (px,py,pz, 0, value );
+ 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);
+ }
+ } //if _minX _maxX _minY _maxY _minZ _maxZ
+}
+
+void ManualPaintModel::BrushTool(int px,int py, int pz)