marSimpleDicom Class Reference

#include <marSimpleDicom.h>

Inheritance diagram for marSimpleDicom:
Inheritance graph
[legend]
Collaboration diagram for marSimpleDicom:
Collaboration graph
[legend]

List of all members.

Public Types

enum  DicomTags {
  ID_File_Name = 0, ID_SOP_Class_UID, ID_SOP_Instance_UID, ID_Study_Date,
  ID_Series_Date, ID_Acquisition_Date, ID_Image_Date, ID_Study_Time,
  ID_Series_Time, ID_Acquisition_Time, ID_Image_Time, ID_Modality,
  ID_Manufacturer, ID_Institution_Name, ID_Study_Description, ID_Series_Description,
  ID_Admitting_Diagnoses_Description, ID_Patient_Name, ID_Patient_ID, ID_Body_Part_Examined,
  ID_Scanning_Sequence, ID_Sequence_Variant, ID_Scan_Options, ID_MR_Acquisition_Type,
  ID_Sequence_Name, ID_Slice_Thickness, ID_Repetition_Time, ID_Echo_Time,
  ID_Inversion_Time, ID_Number_of_Averages, ID_Imaging_Frequency, ID_Imaged_Nucleus,
  ID_Echo_Number, ID_Magnetic_Field_Strength, ID_Spacing_Between_Slices, ID_Echo_Train_Length,
  ID_Percent_Sampling, ID_Percent_Phase_Field_of_View, ID_Receiving_Coil, ID_Patient_Position,
  ID_Study_Instance_UID, ID_Series_Instance_UID, ID_Study_ID, ID_Series_Number,
  ID_Acquisition_Number, ID_Image_Number, ID_Patient_Orientation, ID_Image_Position,
  ID_Image_Position_Patient, ID_Image_Orientation, ID_Image_Orientation_Patient, ID_Location,
  ID_Frame_of_Reference_UID, ID_Slice_Location, ID_Image_Comments, ID_Pixel_Spacing,
  ID_Window_Center, ID_Window_Width, ID_dicom_tags_count
}

Public Member Functions

void SetVolumeData (int dimX, int dimY, int dimZ, float spacingX, float spacingY, float spacingZ, float rescaleSlope, float rescaleIntercept, unsigned short *pixels)
 marSimpleDicom (marParameters *p=NULL)
virtual ~marSimpleDicom ()
void SetInvestSliceOrder (bool investSliceOrder)
void loadActualSerie (wxGauge *gauge)
void loadVolumeDXMM (bool force=false, wxGauge *gauge=NULL)
void reset ()
void copyFrom (const marObject &from)
bool save (std::ofstream &os)
bool load (std::ifstream &is)
virtual wxString GetPatientName ()
kVolume * getVolume ()
void SetVolume (kVolume *volume)
bool volumeLoaded ()
void freeVolume ()
virtual bool loadImage (int i)
std::vector< std::string * > * GetListImages ()
void CleanListImages ()
void ResetLstFileNotReaded ()
std::string GetMsgLstFile ()
void setParameters (marParameters *p)
void copyParameters (marParameters *p)
void makeACopyParameters ()
marParametersgetParameters ()
bool parametersOwned ()
virtual void copyFrom (const marObject &from)=0
bool save (std::string &nw)
bool load (std::string &nr)

Protected Attributes

std::vector< std::string * > _lstString
std::vector< char * > _lstFileNotReaded

Private Attributes

std::vector< SerieInfom_DicomInfo
unsigned int m_ActualStudy
unsigned int m_ActualSerie
unsigned short * m_pSlicesPixels
int m_nX
int m_nY
int m_nSlices
float m_PixelSpacingColumn
float m_PixelSpacingRow
float m_PixelSpacingSlice
float m_RescaleSlope
float m_RescaleIntercept
bool _investSliceOrder

Detailed Description

Shouldn't we break the dependencies to wx ???

We use vector instead of list for efficiency: for access time futhermore the number of patient is not changing a lot, so we might add the number of patient to params.dat, to allocate the right number of vector

Definition at line 45 of file marSimpleDicom.h.


Member Enumeration Documentation

Enumerator:
ID_File_Name 
ID_SOP_Class_UID 
ID_SOP_Instance_UID 

0008 0016 UI ID SOP Class UID

ID_Study_Date 

0008 0018 UI ID SOP Instance UID

ID_Series_Date 

0008 0020 DA ID Study Date

ID_Acquisition_Date 

0008 0021 DA ID Series Date

ID_Image_Date 

0008 0022 DA ID Acquisition Date

ID_Study_Time 

0008 0023 DA ID Image Date

ID_Series_Time 

0008 0030 TM ID Study Time

ID_Acquisition_Time 

0008 0031 TM ID Series Time

ID_Image_Time 

0008 0032 TM ID Acquisition Time

ID_Modality 

0008 0033 TM ID Image Time

ID_Manufacturer 

0008 0060 CS ID Modality

ID_Institution_Name 

0008 0070 LO ID Manufacturer

ID_Study_Description 

0008 0080 LO ID Institution Name

ID_Series_Description 

0008 1030 LO ID Study Description

ID_Admitting_Diagnoses_Description 

0008 103e LO ID Series Description

ID_Patient_Name 

0008 1080 LO ID Admitting Diagnoses Description

ID_Patient_ID 

0010 0010 PN PAT Patient Name

ID_Body_Part_Examined 

0010 0020 LO PAT Patient ID

ID_Scanning_Sequence 

0018 0015 CS ACQ Body Part Examined

ID_Sequence_Variant 

0018 0020 CS ACQ Scanning Sequence

ID_Scan_Options 

0018 0021 CS ACQ Sequence Variant

ID_MR_Acquisition_Type 

0018 0022 CS ACQ Scan Options

ID_Sequence_Name 

0018 0023 CS ACQ MR Acquisition Type

ID_Slice_Thickness 

0018 0024 SH ACQ Sequence Name

ID_Repetition_Time 

0018 0050 DS ACQ Slice Thickness

ID_Echo_Time 

0018 0080 DS ACQ Repetition Time

ID_Inversion_Time 

0018 0081 DS ACQ Echo Time

ID_Number_of_Averages 

0018 0082 DS ACQ Inversion Time

ID_Imaging_Frequency 

0018 0083 DS ACQ Number of Averages

ID_Imaged_Nucleus 

0018 0084 DS ACQ Imaging Frequency

ID_Echo_Number 

0018 0085 SH ACQ Imaged Nucleus

ID_Magnetic_Field_Strength 

0018 0086 IS ACQ Echo Number

ID_Spacing_Between_Slices 

0018 0087 DS ACQ Magnetic Field Strength

ID_Echo_Train_Length 

0018 0088 DS ACQ Spacing Between Slices

ID_Percent_Sampling 

0018 0091 IS ACQ Echo Train Length

ID_Percent_Phase_Field_of_View 

0018 0093 DS ACQ Percent Sampling

ID_Receiving_Coil 

0018 0094 DS ACQ Percent Phase Field of View

ID_Patient_Position 

0018 1250 SH ACQ Receiving Coil

ID_Study_Instance_UID 

0018 5100 CS ACQ Patient Position

ID_Series_Instance_UID 

0020 000d UI REL Study Instance UID

ID_Study_ID 

0020 000e UI REL Series Instance UID

ID_Series_Number 

0020 0010 SH REL Study ID

ID_Acquisition_Number 

0020 0011 IS REL Series Number

ID_Image_Number 

0020 0012 IS REL Acquisition Number

ID_Patient_Orientation 

0020 0013 IS REL Image Number

ID_Image_Position 

0020 0020 CS REL Patient Orientation

ID_Image_Position_Patient 

0020 0030 RET REL Image Position

ID_Image_Orientation 

0020 0032 DS REL Image Position Patient

ID_Image_Orientation_Patient 

0020 0035 RET REL Image Orientation

ID_Location 

0020 0037 DS REL Image Orientation (Patient)

ID_Frame_of_Reference_UID 

0020 0050 RET REL Location

ID_Slice_Location 

0020 0052 UI REL Frame of Reference UID

ID_Image_Comments 

0020 1041 DS REL Slice Location

ID_Pixel_Spacing 

0020 4000 LT REL Image Comments

ID_Window_Center 

0028 0030 DS IMG Pixel Spacing

ID_Window_Width 

0028 1050 DS IMG Window Center

ID_dicom_tags_count 

0028 1051 DS IMG Window Width

Definition at line 49 of file marSimpleDicom.h.

00050     {
00051                 ID_File_Name = 0                   ,
00052                         ID_SOP_Class_UID                   ,
00053                         ID_SOP_Instance_UID                ,
00054                         ID_Study_Date                      ,
00055                         ID_Series_Date                     ,
00056                         ID_Acquisition_Date                ,
00057                         ID_Image_Date                      ,
00058                         ID_Study_Time                      ,
00059                         ID_Series_Time                     ,
00060                         ID_Acquisition_Time                ,
00061                         ID_Image_Time                      ,
00062                         ID_Modality                        ,
00063                         ID_Manufacturer                    ,
00064                         ID_Institution_Name                ,
00065                         ID_Study_Description               ,
00066                         ID_Series_Description              ,
00067                         ID_Admitting_Diagnoses_Description ,
00068                         ID_Patient_Name                    ,
00069                         ID_Patient_ID                      ,
00070                         ID_Body_Part_Examined              ,
00071                         ID_Scanning_Sequence               ,
00072                         ID_Sequence_Variant                ,
00073                         ID_Scan_Options                    ,
00074                         ID_MR_Acquisition_Type             ,
00075                         ID_Sequence_Name                   ,
00076                         ID_Slice_Thickness                 ,
00077                         ID_Repetition_Time                 ,
00078                         ID_Echo_Time                       ,
00079                         ID_Inversion_Time                  ,
00080                         ID_Number_of_Averages              ,
00081                         ID_Imaging_Frequency               ,
00082                         ID_Imaged_Nucleus                  ,
00083                         ID_Echo_Number                     ,
00084                         ID_Magnetic_Field_Strength         ,
00085                         ID_Spacing_Between_Slices          ,
00086                         ID_Echo_Train_Length               ,
00087                         ID_Percent_Sampling                ,
00088                         ID_Percent_Phase_Field_of_View     ,
00089                         ID_Receiving_Coil                  ,
00090                         ID_Patient_Position                ,
00091                         ID_Study_Instance_UID              ,
00092                         ID_Series_Instance_UID             ,
00093                         ID_Study_ID                        ,
00094                         ID_Series_Number                   ,
00095                         ID_Acquisition_Number              ,
00096                         ID_Image_Number                    ,
00097                         ID_Patient_Orientation             ,
00098                         ID_Image_Position                  ,
00099                         ID_Image_Position_Patient          ,
00100                         ID_Image_Orientation               ,
00101                         ID_Image_Orientation_Patient       ,
00102                         ID_Location                        ,
00103                         ID_Frame_of_Reference_UID          ,
00104                         ID_Slice_Location                  ,
00105                         ID_Image_Comments                  ,
00106                         ID_Pixel_Spacing                   ,
00107                         ID_Window_Center                   ,
00108                         ID_Window_Width                    ,
00109                         ID_dicom_tags_count
00110     };


Constructor & Destructor Documentation

marSimpleDicom::marSimpleDicom ( marParameters p = NULL  ) 

Definition at line 136 of file marSimpleDicom.cpp.

00137 : marFilesBase( p ), m_pSlicesPixels(NULL),
00138 m_ActualStudy(0), m_ActualSerie(0)
00139 // PS -> ,helper(NULL)
00140 {
00141         // FillDicomInfo( );
00142 }

marSimpleDicom::~marSimpleDicom (  )  [virtual]

Definition at line 145 of file marSimpleDicom.cpp.

References reset().

00145                                {
00146         reset( );
00147 }

Here is the call graph for this function:


Member Function Documentation

void marFilesBase::CleanListImages (  )  [inherited]

Definition at line 45 of file marDicomBase.cpp.

References marFilesBase::_lstString.

Referenced by marRAW2Files::loadActualSerie(), marRAW2AsciiFiles::loadActualSerie(), and marRAWFiles::loadActualSerie().

00046 {
00047         int i,size;
00048         size=this->_lstString.size();
00049         for(i=0;i<size;i++)
00050         {
00051                 delete _lstString[i];
00052         }
00053         _lstString.clear();
00054 }

Here is the caller graph for this function:

virtual void marObject::copyFrom ( const marObject from  )  [pure virtual, inherited]
void marSimpleDicom::copyFrom ( const marObject from  ) 

Todo:
TODO

Definition at line 474 of file marSimpleDicom.cpp.

00475 { 
00476 }

void marObject::copyParameters ( marParameters p  )  [inherited]

Definition at line 42 of file marObject.cpp.

References marObject::_parameters, and marObject::_parametersCopied.

00043 {
00044     if( _parametersCopied && _parameters != NULL ) delete _parameters;
00045     _parameters = new marParameters( );
00046     *_parameters = *p;
00047     _parametersCopied = true;
00048 }

void marFilesBase::freeVolume (  )  [inherited]

Definition at line 31 of file marDicomBase.cpp.

References marFilesBase::_volume.

Referenced by InitExperiment_dll(), marRAW2Files::loadActualSerie(), marRAW2AsciiFiles::loadActualSerie(), marRAWFiles::loadActualSerie(), and marFilesBase::~marFilesBase().

00031                               {
00032         if( _volume ) delete _volume;
00033         _volume = NULL;
00034 }

Here is the caller graph for this function:

std::vector< std::string * > * marFilesBase::GetListImages (  )  [inherited]

Definition at line 39 of file marDicomBase.cpp.

References marFilesBase::_lstString.

00040 {
00041         return &_lstString;
00042 }

std::string marFilesBase::GetMsgLstFile (  )  [inherited]

Definition at line 65 of file marDicomBase.cpp.

References marFilesBase::_lstFileNotReaded.

Referenced by LoadRangeImage::ForceToFinisReadActiveImages().

00066 {
00067         int i,sizeLst;
00068 //EEDx44
00069         std::string msgLstFile="";
00070         sizeLst=_lstFileNotReaded.size();
00071         for (i=0;i<sizeLst;i++)
00072         {
00073                 msgLstFile = msgLstFile + *(_lstFileNotReaded[i]) ;
00074                 msgLstFile = msgLstFile + "\n";
00075         }
00076 
00077         return msgLstFile;
00078 }

Here is the caller graph for this function:

marParameters* marObject::getParameters (  )  [inline, inherited]
virtual wxString marFilesBase::GetPatientName (  )  [inline, virtual, inherited]

Definition at line 26 of file marDicomBase.h.

00026 {return _T(""); };

kVolume * marFilesBase::getVolume (  )  [inherited]
bool marObject::load ( std::string &  nr  )  [inherited]

Definition at line 67 of file marObject.cpp.

References marObject::load().

Referenced by marObject::load().

00068 {
00069     std::ifstream is( nr.c_str( ) );
00070 
00071     if( is ) {
00072 
00073         load( is );
00074         is.close( );
00075         return( true );
00076 
00077     } // fi
00078 
00079     return( false );
00080 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool marSimpleDicom::load ( std::ifstream &  is  )  [virtual]

Implements marObject.

Definition at line 511 of file marSimpleDicom.cpp.

References m_DicomInfo.

00512 {
00513 /*  int s;
00514 
00515  reset( );
00516 
00517   is.read( ( char* )&s, sizeof( int ) );
00518   _actualStudy.resize( s );
00519   is.read( ( char* )_actualStudy.c_str( ), s * sizeof( char ) );
00520   is.read( ( char* )&s, sizeof( int ) );
00521   _actualSerie.resize( s );
00522         is.read( ( char* )_actualSerie.c_str( ), s * sizeof( char ) );*/
00523 
00524         for(std::vector<SerieInfo>::iterator it1 = m_DicomInfo.begin();
00525         it1 != m_DicomInfo.end(); it1++ )
00526     {
00527                 for(std::vector<wxArrayString>::iterator it2 = it1->begin();
00528                 it2 != it1->end(); it2++ )
00529         {
00530             for(int i=0; i<it2->GetCount(); i++)
00531                         {
00532                 std::string temp;
00533                 is >> temp ;
00534                 it2->Add( temp.c_str() );
00535                         }
00536         }
00537     }
00538 
00539 
00540         return( true );
00541 }

void marSimpleDicom::loadActualSerie ( wxGauge *  gauge  )  [virtual]

Conversion de C-string en wxString.

Reimplemented from marFilesBase.

Definition at line 267 of file marSimpleDicom.cpp.

References loadVolumeDXMM().

Referenced by wxMaracasFrame::OnStartExperiment().

00268 {
00269         // PS ->   #ifdef DXMM
00270         loadVolumeDXMM( true , gauge);
00271         // PS ->   #else
00272         // PS ->   loadVolume( true , gauge);
00273         // PS ->   #endif
00274 }

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool marFilesBase::loadImage ( int  i  )  [inline, virtual, inherited]

Reimplemented in marRAWFiles, marRAW2Files, and marRAW2AsciiFiles.

Definition at line 33 of file marDicomBase.h.

Referenced by PriorityLoadImageBar::Action_i().

00033 {return true; };

Here is the caller graph for this function:

void marSimpleDicom::loadVolumeDXMM ( bool  force = false,
wxGauge *  gauge = NULL 
)

Todo:
thanks

Definition at line 346 of file marSimpleDicom.cpp.

References _investSliceOrder, marParameters::e_RescaleIntercept, marParameters::e_RescaleSlope, marObject::getParameters(), m_nSlices, m_nX, m_nY, m_PixelSpacingColumn, m_PixelSpacingRow, m_PixelSpacingSlice, m_pSlicesPixels, m_RescaleIntercept, m_RescaleSlope, marParameters::setDoubleParam(), and marFilesBase::SetVolume().

Referenced by loadActualSerie().

00347 {
00348 // PS ->
00349 // PS ->  FILE *stream;
00350 // PS ->  char string[20];
00351 // PS ->  wxString prefix, fileParam, fileVol, rootdir;
00352 // PS ->  rootdir=wxString("c:/temp");
00353 // PS ->  wxDir dir(rootdir);
00354 // PS ->  int dimX, dimY, dimZ;
00355 // PS ->  float spacing[3];
00356 // PS ->  vtkImageReader *volVTK = NULL;
00357 // PS ->
00358 // PS ->  fileParam = rootdir + "/" + "paramDxMM.txt";
00359 // PS ->  stream = fopen(fileParam.c_str(),"r");
00360 // PS ->
00361 // PS ->  wxString errorMsg;
00362 // PS ->  errorMsg= "Cannot open file "+fileParam;
00363 // PS ->  wxASSERT_MSG(stream!=NULL,errorMsg);
00364 // PS ->
00365 // PS ->  fscanf(stream,"%s", string);
00366 // PS ->  dimX = atoi(string);
00367 // PS ->  fscanf(stream,"%s", string);
00368 // PS ->  dimY = atoi(string);
00369 // PS ->  fscanf(stream,"%s", string);
00370 // PS ->  dimZ = atoi(string);
00371 // PS ->  fscanf(stream,"%s", string);
00372 // PS ->  spacing[0] = atof(string);
00373 // PS ->  fscanf(stream,"%s", string);
00374 // PS ->  spacing[1] = atof(string);
00375 // PS ->  fscanf(stream,"%s", string);
00376 // PS ->  spacing[2] = atof(string);
00377 // PS ->  fclose(stream);
00378 // PS ->
00379 // PS ->  getParameters( )->setDoubleParam( marParameters::e_voxel_x_dimension, spacing[0] );
00380 // PS ->  getParameters( )->setDoubleParam( marParameters::e_voxel_y_dimension, spacing[1] );
00381 // PS ->  getParameters( )->setDoubleParam( marParameters::e_voxel_z_dimension, spacing[2] );
00382 // PS ->
00383 // PS ->  if( force || !_volume )
00384 // PS ->  {
00385 // PS ->        freeVolume( );
00386 // PS ->  } // fi
00387 // PS ->
00388 // PS ->  marProgressObserver *progressEvent = marProgressObserver::New();
00389 // PS ->  progressEvent->FrameGauge = gauge;
00390 // PS ->  progressEvent->Delete();
00391 // PS ->
00392 // PS ->  prefix = rootdir + "/" + "imaDxMM";
00393 // PS ->  volVTK = vtkImageReader::New();
00394 // PS ->  volVTK->SetDataByteOrderToLittleEndian();
00395 // PS ->  volVTK->SetDataScalarTypeToUnsignedShort();
00396 // PS ->  volVTK->SetDataExtent(0, dimX-1, 0, dimY-1, 0, dimZ-1);
00397 // PS ->  volVTK->SetFilePrefix( prefix.c_str() );
00398 // PS ->  volVTK->SetFilePattern( "%s%d.raw");
00399 // PS ->  volVTK->SetDataSpacing(spacing[0],spacing[1],spacing[2]);
00400 // PS ->  volVTK->Update();
00401 // PS ->  vtkImageResample* ir = vtkImageResample::New( );
00402 // PS ->  ir->SetInput(volVTK->GetOutput());
00403 // PS ->  ir->SetDimensionality( 3 );
00404 // PS ->  ir->SetAxisOutputSpacing( 0, getParameters( )->getVoxelSize( ) );
00405 // PS ->  ir->SetAxisOutputSpacing( 1, getParameters( )->getVoxelSize( ) );
00406 // PS ->  ir->SetAxisOutputSpacing( 2, getParameters( )->getVoxelSize( ) );
00407 // PS ->  ir->InterpolateOn( );
00408 // PS ->  ir->Update( );    //important
00409 // PS ->
00410 // PS ->  _volume = new kVolume( ir->GetOutput( ) );
00411 // PS ->
00412 // PS ->  //!\todo thanks
00413 // PS ->  if (ir) ir->Delete( );
00414 // PS ->  if(volVTK) volVTK->Delete();
00415 
00416         if (m_pSlicesPixels!=NULL)
00417         {
00418                 vtkUnsignedShortArray * dataArray=vtkUnsignedShortArray::New();
00419 
00420                 int iRow,iColumn,iSlice,iPixel;
00421 
00422                 int iiSlice;
00423                 for (iiSlice=0;iiSlice<m_nSlices;iiSlice++)
00424                 {
00425                         if (_investSliceOrder==false) {
00426                                 iSlice=iiSlice;
00427                         } else {
00428                                 iSlice=(iiSlice*(-1)) + m_nSlices - 1;
00429                         }
00430 
00431                         for (iRow=0;iRow<m_nY;iRow++)
00432                         {
00433                                 for (iColumn=0;iColumn<m_nX;iColumn++)
00434                                 {
00435                                         iPixel=(m_nSlices-1-iSlice)*m_nX*m_nY + (m_nY-1-iRow)*m_nX + iColumn;
00436                                         dataArray->InsertNextValue(m_pSlicesPixels[iPixel]);
00437                                 }                               
00438                         }
00439                 }
00440                 vtkImageData*imgData=vtkImageData::New();
00441                 imgData->SetDimensions(m_nX,m_nY,m_nSlices);
00442                 imgData->SetSpacing(m_PixelSpacingRow,m_PixelSpacingColumn,m_PixelSpacingSlice);
00443                 imgData->SetOrigin(0,0,0);
00444                 imgData->SetScalarTypeToUnsignedShort();
00445                 imgData->GetPointData()->SetScalars(dataArray);
00446 
00447 
00448                 // TO DO : remplir le vtkImageResample
00449                 vtkImageResample* ir = vtkImageResample::New();
00450                 ir->SetInput(imgData);
00451                 ir->SetDimensionality( 3 );
00452                 ir->SetAxisOutputSpacing( 0, getParameters()->getVoxelSize() );
00453                 ir->SetAxisOutputSpacing( 1, getParameters()->getVoxelSize() );
00454                 ir->SetAxisOutputSpacing( 2, getParameters()->getVoxelSize() );
00455                 ir->InterpolateOn( );
00456                 ir->Update( );    //important
00457 
00458 // EED
00459 //              _volume = new kVolume( ir->GetOutput( ) );
00460                 SetVolume( new kVolume( ir->GetOutput()  )  );
00461 
00463                 if (ir) ir->Delete();
00464                 if(imgData) imgData->Delete();
00465                 if(dataArray) dataArray->Delete();
00466         getParameters( )->setDoubleParam( marParameters::e_RescaleSlope    , m_RescaleSlope     );
00467         getParameters( )->setDoubleParam( marParameters::e_RescaleIntercept, m_RescaleIntercept );
00468         }
00469 
00470 }

Here is the call graph for this function:

Here is the caller graph for this function:

void marObject::makeACopyParameters (  )  [inline, inherited]

Definition at line 48 of file marObject.h.

00049     {
00050             copyParameters( _parameters );
00051     }

bool marObject::parametersOwned (  )  [inline, inherited]

Definition at line 56 of file marObject.h.

00056 { return( _parametersCopied ); };

void marSimpleDicom::reset (  )  [virtual]

General methods

Todo:
does this clear evrythg ?

Implements marObject.

Definition at line 566 of file marSimpleDicom.cpp.

References m_DicomInfo, m_nSlices, m_nX, m_nY, m_PixelSpacingColumn, m_PixelSpacingRow, m_PixelSpacingSlice, m_pSlicesPixels, m_RescaleIntercept, and m_RescaleSlope.

Referenced by ~marSimpleDicom().

00566                            {
00567 //              freeVolume( );
00568                 //_imageFileNames.Clear( );
00569                 
00570                 int n = m_DicomInfo.size();
00572                 for(int i=0; i<n; i++) {
00573                         m_DicomInfo[i].clear();
00574                 }
00575                 m_DicomInfo.clear();
00576                 
00577 // PS ->                if(helper)
00578 // PS ->                        delete helper;
00579 // PS ->                helper = NULL;
00580                 m_pSlicesPixels         =       NULL;
00581                 m_nX                            =       0;
00582                 m_nY                            =       0;
00583                 m_nSlices                       =       0;
00584                 m_PixelSpacingColumn=   0;
00585                 m_PixelSpacingRow       =       0;
00586                 m_PixelSpacingSlice     =       0;
00587                 m_RescaleSlope          =       1;
00588                 m_RescaleIntercept      =       0;
00589     }

Here is the caller graph for this function:

void marFilesBase::ResetLstFileNotReaded (  )  [inherited]

Definition at line 58 of file marDicomBase.cpp.

References marFilesBase::_lstFileNotReaded.

Referenced by LoadRangeImage::Start().

00059 {
00060         _lstFileNotReaded.clear();
00061 }

Here is the caller graph for this function:

bool marObject::save ( std::string &  nw  )  [inherited]

Persistence methods

Definition at line 51 of file marObject.cpp.

References marObject::save().

00052 {
00053     std::ofstream os( nw.c_str( ) );
00054 
00055     if( os ) {
00056 
00057         save( os );
00058         os.close( );
00059         return( true );
00060 
00061     } // fi
00062 
00063     return( false );
00064 }

Here is the call graph for this function:

bool marSimpleDicom::save ( std::ofstream &  os  )  [virtual]

Persistence methods

Implements marObject.

Definition at line 479 of file marSimpleDicom.cpp.

References m_DicomInfo.

00480 {
00481 /*  int s = _actualStudy.length( );
00482 
00483  os.write( ( const char* )&s, sizeof( int ) );
00484  os.write( ( char* )_actualStudy.c_str( ), s * sizeof( char ) );
00485 
00486   s = _actualSerie.length( );
00487 
00488    os.write( ( const char* )&s, sizeof( int ) );
00489         os.write( ( char* )_actualSerie.c_str( ), s * sizeof( char ) );*/
00490 
00491         for(std::vector<SerieInfo>::iterator it1 = m_DicomInfo.begin();
00492         it1 != m_DicomInfo.end(); it1++ )
00493     {
00494                 for(std::vector<wxArrayString>::iterator it2 = it1->begin();
00495                 it2 != it1->end(); it2++ )
00496         {
00497             for(int i=0; i<it2->GetCount(); i++)
00498                         {
00499                 //wxString temp( it2->Item(i) );
00500                 os << it2->Item(i); //temp;
00501                         }
00502         }
00503     }
00504 
00505 
00506 
00507         return( true );
00508 }

void marSimpleDicom::SetInvestSliceOrder ( bool  investSliceOrder  ) 

Function which return an *ordered* array string The string is ordered so that filename are in the right order

Definition at line 592 of file marSimpleDicom.cpp.

References _investSliceOrder.

Referenced by wxMaracasApp::SetVolumeData().

00592                                                              {
00593         _investSliceOrder=investSliceOrder;
00594 }

Here is the caller graph for this function:

void marObject::setParameters ( marParameters p  )  [inherited]

Parameters assignation methods.

You can assign a marParameters object by reference (setParameters) or by value (copyParameters). Besides, if you want to make your actual reference to be by value, call makeACopyParameters.

Definition at line 34 of file marObject.cpp.

References marObject::_parameters, and marObject::_parametersCopied.

00035 {
00036     if( _parametersCopied && _parameters != NULL ) delete _parameters;
00037     _parameters = p;
00038     _parametersCopied = false;
00039 }

void marFilesBase::SetVolume ( kVolume *  volume  )  [inherited]

Definition at line 23 of file marDicomBase.cpp.

References marFilesBase::_volume.

Referenced by marRAW2Files::loadActualSerie(), marRAW2AsciiFiles::loadActualSerie(), marRAWFiles::loadActualSerie(), loadVolumeDXMM(), and wxMaracasFrame::OnStartExperiment().

00023                                               {
00024         _volume=volume;
00025 }

Here is the caller graph for this function:

void marSimpleDicom::SetVolumeData ( int  dimX,
int  dimY,
int  dimZ,
float  spacingX,
float  spacingY,
float  spacingZ,
float  rescaleSlope,
float  rescaleIntercept,
unsigned short *  pixels 
)

Definition at line 544 of file marSimpleDicom.cpp.

References m_nSlices, m_nX, m_nY, m_PixelSpacingColumn, m_PixelSpacingRow, m_PixelSpacingSlice, m_pSlicesPixels, m_RescaleIntercept, and m_RescaleSlope.

Referenced by wxMaracasApp::SetVolumeData().

00553 {
00554         m_pSlicesPixels         = pixels;
00555         m_nX                            = dimX;
00556         m_nY                            = dimY;
00557         m_nSlices                       = dimZ;
00558         m_PixelSpacingColumn= spacingX;
00559         m_PixelSpacingRow       = spacingY;
00560         m_PixelSpacingSlice     = spacingZ;
00561         m_RescaleSlope          = rescaleSlope;
00562         m_RescaleIntercept      = rescaleIntercept;
00563 }

Here is the caller graph for this function:

bool marFilesBase::volumeLoaded (  )  [inherited]

Definition at line 27 of file marDicomBase.cpp.

References marFilesBase::_volume.

00027                                 {
00028         return( _volume != NULL );
00029 }


Member Data Documentation

Definition at line 205 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), and SetInvestSliceOrder().

std::vector< char*> marFilesBase::_lstFileNotReaded [protected, inherited]
std::vector< std::string*> marFilesBase::_lstString [protected, inherited]
unsigned int marSimpleDicom::m_ActualSerie [private]

Definition at line 198 of file marSimpleDicom.h.

unsigned int marSimpleDicom::m_ActualStudy [private]

Definition at line 197 of file marSimpleDicom.h.

std::vector< SerieInfo > marSimpleDicom::m_DicomInfo [private]

Definition at line 196 of file marSimpleDicom.h.

Referenced by load(), reset(), and save().

Definition at line 202 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().

int marSimpleDicom::m_nX [private]

Definition at line 202 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().

int marSimpleDicom::m_nY [private]

Definition at line 202 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().

Definition at line 203 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().

Definition at line 203 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().

Definition at line 203 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().

unsigned short* marSimpleDicom::m_pSlicesPixels [private]

Definition at line 201 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().

Definition at line 204 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().

Definition at line 204 of file marSimpleDicom.h.

Referenced by loadVolumeDXMM(), reset(), and SetVolumeData().


The documentation for this class was generated from the following files:

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1