]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/BrushFilter.cpp
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / BrushFilter.cpp
1
2 #include "BrushFilter.h"
3
4
5
6 BrushFilter::BrushFilter()
7 {
8     _brushsize          =   1;
9     _brushform          =   0;      // 0 rectangle-box  ,   1 circle-sphere
10     _brushtool          =   0;      // 0 pencil         ,   1 fill
11 }
12
13 //---------------------------------------------------------------------------
14 BrushFilter::~BrushFilter()  // virtual
15 {
16 }
17
18 //---------------------------------------------------------------------------
19 void BrushFilter::FindMinMaxBrush(int &minX,int &maxX,int &minY,int &maxY,int &minZ,int &maxZ,int &size)
20 {
21         size = _brushsize-1;
22         minX = _px-size;
23         maxX = _px+size;
24         minY = _py-size;
25         maxY = _py+size;
26         minZ = _pz-size;
27         maxZ = _pz+size;
28
29         if (_2D3D==0) //2D
30         {
31             if (_direction==0)  // YZ
32             {
33                 minX=_px;
34                 maxX=_px;
35             }
36             if (_direction==1) // XZ
37             {
38                 minY=_py;
39                 maxY=_py;
40             }
41             if (_direction==2) // XY
42             {
43                 minZ=_pz;
44                 maxZ=_pz;
45             }
46         }
47
48         if (_2D3D==1) // 3D
49         {
50         }
51
52         if (minX<_minX)
53         {
54                 minX=_minX;
55         }
56
57         if (minY<_minY)
58         {
59                 minY=_minY;
60         }
61
62         if (minZ<_minZ)
63         {
64                 minZ=_minZ;
65         }
66
67         if (maxX>_maxX)
68         {
69                 maxX=_maxX;
70         }
71
72         if (maxY>_maxY)
73         {
74                 maxY=_maxY;
75         }
76
77         if (maxZ>_maxZ)
78         {
79                 maxZ=_maxZ;
80         }
81
82         //--
83         SetGeneralMinMax(minX,maxX,minY,maxY,minZ,maxZ);
84 }
85
86
87
88 //---------------------------------------------------------------------------
89 void BrushFilter::Run()  // virtual
90 {
91     if (_image!=NULL)
92     {
93         float value=(float)_graylevel;
94         int i,j,k;
95
96         int size;
97         int minX,maxX,minY,maxY,minZ,maxZ;
98         FindMinMaxBrush(minX,maxX,minY,maxY,minZ,maxZ,size);
99
100         double xx,yy,zz,rr=size*size;
101
102         for (i=minX; i<=maxX; i++)
103         {
104             xx=_px-i;
105             xx=xx*xx;
106             for (j=minY; j<=maxY; j++)
107             {
108                 yy=_py-j;
109                 yy=yy*yy;
110                 for (k=minZ; k<=maxZ; k++)
111                 {
112 //                    if ((i>=_minX) && (i<=_maxX) && (j>=_minY) && (j<=_maxY) && (k>=_minZ) && (k<=_maxZ))
113 //                    {
114                         zz=_pz-k;
115                         zz=zz*zz;
116                         if (_brushform==0)
117                         {
118                             _image->SetScalarComponentFromFloat (i,j,k, 0, value );
119                         } else if (_brushform==1)
120                         {
121                             if ((xx+yy+zz)<=rr)
122                             {
123                                 _image->SetScalarComponentFromFloat (i,j,k, 0, value );
124                             }
125                         } // _brushform
126
127 //                    } //if _minX _maxX _minY _maxY _minZ _maxZ
128
129                 }//k
130             }//j
131         }//i
132         _image->Modified();
133     } else  {
134         printf("ERROR : bbcreaMaracasvisu::vtkInteractorManualPaint::PaintImage :  Image not set. \n");
135     } // _image
136 }
137
138
139 //---------------------------------------------------------------------------
140 void BrushFilter::SetBrushSize( int brushsize )
141 {
142     _brushsize = brushsize;
143 }
144
145 //---------------------------------------------------------------------------
146 void BrushFilter::SetBrushForm( int brushform )
147 {
148     _brushform = brushform;
149 }
150
151 //---------------------------------------------------------------------------
152 void BrushFilter::SetBrushTool( int brushtool )
153 {
154     _brushtool = brushtool;
155 }
156
157