#include "wxMaracasIRMViewManagerDataMhd.h" wxMaracasIRMViewManagerDataMhd::wxMaracasIRMViewManagerDataMhd(vtkImageData* imagedata, std::string dataname) : wxMaracasIRMViewManagerData(NULL, dataname) { this->setVtkImageData(imagedata); _dataname = dataname; _maxgreylevel = getMaxLevel(imagedata); _prop3D=NULL; _cubesFilter = vtkMarchingCubes::New(); _cleanFilter = vtkCleanPolyData::New(); _dataMapper = vtkPolyDataMapper::New(); vtkActor* dataActor = vtkActor::New(); _cubesFilter->SetInput(this->_imagedata); _cubesFilter->ComputeGradientsOn (); _cubesFilter->ComputeScalarsOn (); _cubesFilter->SetNumberOfContours( 1 ); _cleanFilter->SetInput ( _cubesFilter->GetOutput() ); _dataMapper->SetInput(_cleanFilter->GetOutput()); _dataMapper->ScalarVisibilityOff(); _dataMapper->ImmediateModeRenderingOn(); dataActor->SetMapper(_dataMapper); this->_prop3D = dataActor; this->changeIsoValue(this->_maxgreylevel); } wxMaracasIRMViewManagerDataMhd::~wxMaracasIRMViewManagerDataMhd(){ _cubesFilter->Delete(); _cleanFilter->Delete(); _dataMapper->Delete(); } /** ** changes the isovalue in a prop3D **/ void wxMaracasIRMViewManagerDataMhd::changeIsoValue(double value){ _cubesFilter->SetValue(0,value); _cubesFilter->Update(); _cleanFilter->Update(); _dataMapper->Update(); } int wxMaracasIRMViewManagerDataMhd::getMaxGreyLevel(){ return _maxgreylevel; } /** ** Get's the max grey level of the image **/ int wxMaracasIRMViewManagerDataMhd::getMaxLevel(vtkImageData* img){ int ext[6], i, j, k,max=0; img->GetExtent(ext); for(i = ext[0]; i < ext[1];i++){ for(j = ext[2]; j < ext[3];j++){ for(k = ext[4]; k < ext[5];k++){ unsigned short* ptr = (unsigned short*)img->GetScalarPointer(i,j,k); int temp = (int)*ptr; if(temp > max){ max = temp; } } } } return max; } /** ** Sets the VTK image data **/ void wxMaracasIRMViewManagerDataMhd::setVtkImageData(vtkImageData* imagedata){ _imagedata = imagedata; }