wxMaracasIRMViewManagerDataMhd.cxx

Go to the documentation of this file.
00001 
00002 #include "wxMaracasIRMViewManagerDataMhd.h"
00003 
00004 wxMaracasIRMViewManagerDataMhd::wxMaracasIRMViewManagerDataMhd(vtkImageData* imagedata, std::string dataname)
00005 : wxMaracasIRMViewManagerData(NULL, dataname)
00006 {
00007 
00008         this->setVtkImageData(imagedata);
00009         _dataname = dataname;
00010         
00011         _maxgreylevel = getMaxLevel(imagedata);
00012         _prop3D=NULL;                   
00013 
00014         _cubesFilter = vtkMarchingCubes::New();
00015         _cleanFilter = vtkCleanPolyData::New();         
00016         _dataMapper = vtkPolyDataMapper::New();
00017         vtkActor* dataActor = vtkActor::New();
00018         
00019         _cubesFilter->SetInput(this->_imagedata);
00020         _cubesFilter->ComputeGradientsOn ();
00021         _cubesFilter->ComputeScalarsOn ();
00022         _cubesFilter->SetNumberOfContours( 1 );
00023         _cleanFilter->SetInput ( _cubesFilter->GetOutput() );
00024         _dataMapper->SetInput(_cleanFilter->GetOutput());
00025         _dataMapper->ScalarVisibilityOff();
00026         _dataMapper->ImmediateModeRenderingOn();
00027         dataActor->SetMapper(_dataMapper);      
00028 
00029         this->_prop3D = dataActor;
00030 
00031         this->changeIsoValue(this->_maxgreylevel);      
00032 
00033 
00034 }
00035 
00036 wxMaracasIRMViewManagerDataMhd::~wxMaracasIRMViewManagerDataMhd(){      
00037         _cubesFilter->Delete();
00038         _cleanFilter->Delete();
00039         _dataMapper->Delete();
00040 }
00041         
00042 
00046 void wxMaracasIRMViewManagerDataMhd::changeIsoValue(double value){      
00047                 
00048    
00049     _cubesFilter->SetValue(0,value);            
00050         _cubesFilter->Update();    
00051         _cleanFilter->Update();
00052         _dataMapper->Update();  
00053         
00054         
00055         
00056 }
00057 int wxMaracasIRMViewManagerDataMhd::getMaxGreyLevel(){
00058         return _maxgreylevel;
00059 }
00060 
00064 int wxMaracasIRMViewManagerDataMhd::getMaxLevel(vtkImageData* img){
00065 
00066         int ext[6], i, j, k,max=0;
00067         img->GetExtent(ext);
00068 
00069         for(i = ext[0]; i < ext[1];i++){
00070                 for(j = ext[2]; j < ext[3];j++){
00071                         for(k = ext[4]; k < ext[5];k++){
00072                 unsigned short* ptr = (unsigned short*)img->GetScalarPointer(i,j,k);
00073                                 int temp = (int)*ptr;
00074                                 if(temp > max){
00075                     max = temp;
00076                                 }
00077                         }
00078                 }
00079         }
00080         return max;
00081 
00082 
00083 }
00084 
00089 void wxMaracasIRMViewManagerDataMhd::setVtkImageData(vtkImageData* imagedata){
00090         _imagedata = imagedata;
00091 }
00092 

Generated on Wed Jul 29 16:35:30 2009 for creaMaracasVisu_lib by  doxygen 1.5.3