]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/BrushFilter.cpp
comment out whole file
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / BrushFilter.cpp
1 /*
2
3 #include "BrushFilter.h"
4
5
6 BrushFilter::BrushFilter()
7 {
8     _graylevel          =   0.0;
9     _brushsize          =   1;
10     _brushform          =   0;      // 0 rectangle-box  ,   1 circle-sphere
11     _2D3D               =   1;      // 0 2D             ,   1 true 3D
12     _brushtool          =   0;      // 0 pencil         ,   1 fill
13     _direction          =   0;      // 1 XZ             ,   0 YZ            ,   2 XY
14     _minX               =   0;
15     _minY               =   0;
16     _minZ               =   0;
17     _maxX               =   0;
18     _maxY               =   0;
19     _maxZ               =   0;
20
21     _pMinX              =   0;
22     _pMinY              =   0;
23     _pMinZ              =   0;
24     _pMaxX              =   0;
25     _pMaxY              =   0;
26     _pMaxZ              =   0;
27
28 }
29
30 //---------------------------------------------------------------------------
31 BrushFilter::~BrushFilter()
32 {
33 }
34
35 //---------------------------------------------------------------------------
36 void BrushFilter::SetImage(vtkImageData *image)
37 {
38     _image=image;
39     int ext[6];
40     _image->GetWholeExtent(ext);
41     _minX=0;
42     _minY=0;
43     _minZ=0;
44     _maxX=ext[1]-ext[0];
45     _maxY=ext[3]-ext[2];
46     _maxZ=ext[5]-ext[4];
47
48 }
49
50 //---------------------------------------------------------------------------
51 void BrushFilter::ResetGeneralMinMax()
52 {
53         _pMinX=10000;
54         _pMinY=10000;
55         _pMinZ=10000;
56         _pMaxX=-10000;
57         _pMaxY=-10000;
58         _pMaxZ=-10000;
59 }
60
61
62 //---------------------------------------------------------------------------
63 void BrushFilter::SetGeneralMinMax(int minX,int maxX,int minY,int maxY,int minZ,int maxZ)
64 {
65         if (_pMinX>minX)
66         {
67                 _pMinX=minX;
68         }
69
70         if (_pMinY>minY)
71         {
72                 _pMinY=minY;
73         }
74
75         if (_pMinZ>minZ)
76         {
77                 _pMinZ=minZ;
78         }
79
80         if (_pMaxX<maxX)
81         {
82                 _pMaxX=maxX;
83         }
84
85         if (_pMaxY<maxY)
86         {
87                 _pMaxY=maxY;
88         }
89
90         if (_pMaxZ<maxZ)
91         {
92                 _pMaxZ=maxZ;
93         }
94
95 }
96
97
98 //---------------------------------------------------------------------------
99 void BrushFilter::FindMinMaxBrush(int &minxX,int &maxX,int &minY,int &maxY,int &minZ,int &maxZ,int &size)
100 {
101         size = _brushsize-1;
102         minX = _px-size;
103         maxX = _px+size;
104         minY = _py-size;
105         maxY = _py+size;
106         minZ = _pz-size;
107         maxZ = _pz+size;
108
109         if (_2D3D==0) //2D
110         {
111             if (_direction==0)  // YZ
112             {
113                 minX=px;
114                 maxX=px;
115             }
116             if (_direction==1) // XZ
117             {
118                 minY=py;
119                 maxY=py;
120             }
121             if (_direction==2) // XY
122             {
123                 minZ=pz;
124                 maxZ=pz;
125             }
126         }
127
128         if (_2D3D==1) // 3D
129         {
130         }
131
132         if (minX<_minX)
133         {
134                 minX=_minX;
135         }
136
137         if (minY<_minY)
138         {
139                 minY=_minY;
140         }
141
142         if (minZ<_minZ)
143         {
144                 minZ=_minZ;
145         }
146
147         if (maxX>_maxX)
148         {
149                 maxX=_maxX;
150         }
151
152         if (maxY>_maxY)
153         {
154                 maxY=_maxY;
155         }
156
157         if (maxZ>_maxZ)
158         {
159                 maxZ=_maxZ;
160         }
161
162         //--
163         SetGeneralMinMax(minX,maxX,minY,maxY,minZ,maxZ);
164 }
165
166
167
168 //---------------------------------------------------------------------------
169 void BrushFilter::Run()
170 {
171     if (_image!=NULL)
172     {
173         float value=(float)_graylevel;
174         int i,j,k;
175
176         int size;
177         int minX,maxX,minY,maxY,minZ,maxZ;
178         FindMinMaxBrush(minxX,maxX,minY,maxY,minZ,maxZ,size);
179
180         double xx,yy,zz,rr=size*size;
181
182         for (i=minX; i<=maxX; i++)
183         {
184             xx=px-i;
185             xx=xx*xx;
186             for (j=minY; j<=maxY; j++)
187             {
188                 yy=py-j;
189                 yy=yy*yy;
190                 for (k=minZ; k<=maxZ; k++)
191                 {
192 //                    if ((i>=_minX) && (i<=_maxX) && (j>=_minY) && (j<=_maxY) && (k>=_minZ) && (k<=_maxZ))
193 //                    {
194                         zz=pz-k;
195                         zz=zz*zz;
196                         if (_brushform==0)
197                         {
198                             _image->SetScalarComponentFromFloat (i,j,k, 0, value );
199                         } else if (_brushform==1)
200                         {
201                             if ((xx+yy+zz)<=rr)
202                             {
203                                 _image->SetScalarComponentFromFloat (i,j,k, 0, value );
204                             }
205                         } // _brushform
206
207 //                    } //if _minX _maxX _minY _maxY _minZ _maxZ
208
209                 }//k
210             }//j
211         }//i
212         _image->Modified();
213     } else  {
214         printf("ERROR : bbcreaMaracasvisu::vtkInteractorManualPaint::PaintImage :  Image not set. \n");
215     } // _image
216 }
217
218
219 //---------------------------------------------------------------------------
220 void BrushFilter::SetBrushSize( int brushsize )
221 {
222     _brushsize = brushsize;
223 }
224
225 //---------------------------------------------------------------------------
226 void BrushFilter::SetGrayLevel( double graylevel )
227 {
228     _graylevel = graylevel;
229 }
230
231 //---------------------------------------------------------------------------
232 void BrushFilter::SetBrushForm( int brushform )
233 {
234     _brushform = brushform;
235 }
236
237 //---------------------------------------------------------------------------
238 void BrushFilter::SetBrushTool( int brushtool )
239 {
240     _brushtool = brushtool;
241 }
242
243 //---------------------------------------------------------------------------
244 void BrushFilter::Set2D3D( int dim2D3D )
245 {
246     _2D3D = dim2D3D;
247 }
248
249 //---------------------------------------------------------------------------
250 void BrushFilter::SetDirection(int direction)
251 {
252     _direction = direction;
253 }
254
255 //---------------------------------------------------------------------------
256 void BrushFilter::Set(int px,int py, int pz)
257 {
258     _px=px;
259     _py=py;
260     _pz=pz;
261 }
262
263 */