2 #include "ManualPaintModel.h"
5 ManualPaintModel::ManualPaintModel()
9 _brushform = 0; // 0 rectangle-box , 1 circle-sphere
10 _2D3D = 0; // 0 2D , 1 true 3D
11 _brushtool = 0; // 0 pencil , 1 fill
21 //---------------------------------------------------------------------------
22 ManualPaintModel::~ManualPaintModel()
26 void ManualPaintModel::SetImage(vtkImageData *image)
31 _image->GetWholeExtent(ext);
40 void ManualPaintModel::PaintImage(int px,int py, int pz)
53 void ManualPaintModel::FillTool(int px,int py, int pz)
55 if ((px>=_minX) && (px<=_maxX) && (py>=_minY) && (py<=_maxY) && (pz>=_minZ) && (pz<=_maxZ))
57 _graylevelbasefill = _image->GetScalarComponentAsDouble(px,py,pz, 0);
61 _distbasefill = _distancefill*_distancefill;
62 FillToolRecursive(px,py,pz);
63 } //if _minX _maxX _minY _maxY _minZ _maxZ
67 void ManualPaintModel::FillToolRecursive(int px,int py, int pz)
70 double dist=(px-_pxfill) * (px-_pxfill) + (py-_pyfill) * (py-_pyfill) + (pz-_pzfill) * (pz-_pzfill);
72 if ((px>=_minX) && (px<=_maxX) && (py>=_minY) && (py<=_maxY) && (pz>=_minZ) && (pz<=_maxZ))
74 float value=(float)_graylevel;
75 double igl=_image->GetScalarComponentAsDouble(px,py,pz, 0);
76 if ( (igl!=_graylevel) &&
77 (igl>=_graylevelbasefill-_tolerancefill) &&
78 (igl<=_graylevelbasefill+_tolerancefill) &&
82 // _image->SetScalarComponentFromFloat (px,py,pz, 0, dist+500 );
83 _image->SetScalarComponentFromFloat (px,py,pz, 0, value );
84 FillToolRecursive(px+1,py,pz);
85 FillToolRecursive(px,py+1,pz);
86 FillToolRecursive(px-1,py,pz);
87 FillToolRecursive(px,py-1,pz);
88 // FillToolRecursive(px,py,pz-1);
89 // FillToolRecursive(px,py,pz+1);
91 } //if _minX _maxX _minY _maxY _minZ _maxZ
94 void ManualPaintModel::BrushTool(int px,int py, int pz)
97 printf("EED ManualPaintModel::PaintImage %d %d %d\n", px,py,pz);
100 float value=(float)_graylevel;
102 int size = _brushsize-1;
110 double xx,yy,zz,rr=size*size;
112 printf("EED bbcreaMaracasvisu::vtkInteractorManualPaint::PaintImage brushForm=%d\n",_brushform);
113 for (i=minX; i<=maxX; i++)
117 for (j=minY; j<=maxY; j++)
121 for (k=minZ; k<=maxZ; k++)
123 if ((i>=_minX) && (i<=_maxX) && (j>=_minY) && (j<=_maxY) && (k>=_minZ) && (k<=_maxZ))
129 _image->SetScalarComponentFromFloat (i,j,k, 0, value );
130 } else if (_brushform==1)
134 _image->SetScalarComponentFromFloat (i,j,k, 0, value );
138 } //if _minX _maxX _minY _maxY _minZ _maxZ
145 printf("ERROR : bbcreaMaracasvisu::vtkInteractorManualPaint::PaintImage : Image not set. \n");
150 //---------------------------------------------------------------------------
151 void ManualPaintModel::SetBrushSize( int brushsize )
153 _brushsize = brushsize;
156 //---------------------------------------------------------------------------
157 void ManualPaintModel::SetGrayLevel( double graylevel )
159 _graylevel = graylevel;
162 //---------------------------------------------------------------------------
163 void ManualPaintModel::SetBrushForm( int brushform )
165 _brushform = brushform;
168 //---------------------------------------------------------------------------
169 void ManualPaintModel::SetBrushTool( int brushtool )
171 _brushtool = brushtool;
174 //---------------------------------------------------------------------------
175 void ManualPaintModel::Set2D3D( int dim2D3D )
180 //---------------------------------------------------------------------------
181 void ManualPaintModel::SetToleranceFill(double tolerancefill)
183 _tolerancefill = tolerancefill;
186 //---------------------------------------------------------------------------
187 void ManualPaintModel::SetDistanceFill(int distancefill)
189 _distancefill = distancefill;