#include "BrushFilter.h" BrushFilter::BrushFilter() { _brushsize = 1; _brushform = 0; // 0 rectangle-box , 1 circle-sphere _brushtool = 0; // 0 pencil , 1 fill } //--------------------------------------------------------------------------- BrushFilter::~BrushFilter() // virtual { } //--------------------------------------------------------------------------- void BrushFilter::FindMinMaxBrush(int &minX,int &maxX,int &minY,int &maxY,int &minZ,int &maxZ,int &size) { size = _brushsize-1; minX = _px-size; maxX = _px+size; minY = _py-size; maxY = _py+size; minZ = _pz-size; maxZ = _pz+size; if (_2D3D==0) //2D { if (_direction==0) // YZ { minX=_px; maxX=_px; } if (_direction==1) // XZ { minY=_py; maxY=_py; } if (_direction==2) // XY { minZ=_pz; maxZ=_pz; } } if (_2D3D==1) // 3D { } if (minX<_minX) { minX=_minX; } if (minY<_minY) { minY=_minY; } if (minZ<_minZ) { minZ=_minZ; } if (maxX>_maxX) { maxX=_maxX; } if (maxY>_maxY) { maxY=_maxY; } if (maxZ>_maxZ) { maxZ=_maxZ; } //-- SetGeneralMinMax(minX,maxX,minY,maxY,minZ,maxZ); } //--------------------------------------------------------------------------- void BrushFilter::Run() // virtual { if (_image!=NULL) { float value=(float)_graylevel; int i,j,k; int size; int minX,maxX,minY,maxY,minZ,maxZ; FindMinMaxBrush(minX,maxX,minY,maxY,minZ,maxZ,size); double xx,yy,zz,rr=size*size; for (i=minX; i<=maxX; i++) { xx=_px-i; xx=xx*xx; for (j=minY; j<=maxY; j++) { yy=_py-j; yy=yy*yy; for (k=minZ; k<=maxZ; k++) { // if ((i>=_minX) && (i<=_maxX) && (j>=_minY) && (j<=_maxY) && (k>=_minZ) && (k<=_maxZ)) // { float scalarComponent = _image->GetScalarComponentAsFloat(i,j,k, 0); if( ( this->GetRangeMin() <= scalarComponent ) && ( scalarComponent <= this->GetRangeMax() ) ) { zz=_pz-k; zz=zz*zz; if (_brushform==0) { _image->SetScalarComponentFromFloat (i,j,k, 0, value ); } else if (_brushform==1) { if ((xx+yy+zz)<=rr) { _image->SetScalarComponentFromFloat (i,j,k, 0, value ); } } // _brushform } // GetRangeMin && GetRangeMax // } //if _minX _maxX _minY _maxY _minZ _maxZ }//k }//j }//i _image->Modified(); } else { printf("ERROR : bbcreaMaracasvisu::vtkInteractorManualPaint::PaintImage : Image not set. \n"); } // _image } //--------------------------------------------------------------------------- void BrushFilter::SetBrushSize( int brushsize ) { _brushsize = brushsize; } //--------------------------------------------------------------------------- void BrushFilter::SetBrushForm( int brushform ) { _brushform = brushform; } //--------------------------------------------------------------------------- void BrushFilter::SetBrushTool( int brushtool ) { _brushtool = brushtool; } //--------------------------------------------------------------------------- void BrushFilter::SetRangeMin( int min ) { _RangeMin = min; } //--------------------------------------------------------------------------- void BrushFilter::SetRangeMax( int max ) { _RangeMax = max; } //--------------------------------------------------------------------------- int BrushFilter::GetRangeMin( ) { return( _RangeMin ); } //--------------------------------------------------------------------------- int BrushFilter::GetRangeMax( ) { return( _RangeMax ); }