#include <vtkGdcmReader.h>
Public Member Functions | |
vtkTypeRevisionMacro (vtkGdcmReader, vtkImageReader) | |
void | PrintSelf (ostream &os, vtkIndent indent) |
virtual void | RemoveAllFileName (void) |
virtual void | AddFileName (const char *name) |
virtual void | SetFileName (const char *name) |
vtkSetMacro (AllowLookupTable, int) | |
vtkGetMacro (AllowLookupTable, int) | |
vtkBooleanMacro (AllowLookupTable, int) | |
vtkGetObjectMacro (LookupTable, vtkLookupTable) | |
Static Public Member Functions | |
vtkGdcmReader * | New () |
Protected Member Functions | |
vtkGdcmReader () | |
~vtkGdcmReader () | |
virtual void | ExecuteInformation () |
virtual void | ExecuteData (vtkDataObject *output) |
virtual void | BuildFileListFromPattern () |
virtual int | CheckFileCoherence () |
Private Member Functions | |
void | RemoveAllInternalFileName (void) |
void | AddInternalFileName (const char *name) |
size_t | LoadImageInMemory (std::string FileName, unsigned char *Dest, const unsigned long UpdateProgressTarget, unsigned long &UpdateProgressCount) |
Private Attributes | |
vtkLookupTable * | LookupTable |
vtkTimeStamp | fileTime |
int | AllowLookupTable |
int | NumColumns |
int | NumLines |
int | TotalNumberOfPlanes |
int | NumComponents |
std::string | ImageType |
size_t | PixelSize |
std::list< std::string > | FileNameList |
std::list< std::string > | InternalFileNameList |
|
Definition at line 83 of file vtkGdcmReader.cxx. References AllowLookupTable, and LookupTable.
00084 { 00085 this->LookupTable = NULL; 00086 this->AllowLookupTable = 0; 00087 } |
|
Definition at line 89 of file vtkGdcmReader.cxx. References InternalFileNameList, LookupTable, and RemoveAllFileName().
00090 { 00091 this->RemoveAllFileName(); 00092 this->InternalFileNameList.clear(); 00093 if(this->LookupTable) 00094 this->LookupTable->Delete(); 00095 } |
|
Definition at line 126 of file vtkGdcmReader.cxx. References FileNameList. Referenced by main().
00127 { 00128 // We need to bypass the const pointer [since list<>.push_bash() only 00129 // takes a char* (but not a const char*)] by making a local copy: 00130 char * LocalName = new char[strlen(name) + 1]; 00131 strcpy(LocalName, name); 00132 this->FileNameList.push_back(LocalName); 00133 delete[] LocalName; 00134 this->Modified(); 00135 } |
|
Definition at line 613 of file vtkGdcmReader.cxx. References InternalFileNameList. Referenced by BuildFileListFromPattern().
00614 { 00615 char * LocalName = new char[strlen(name) + 1]; 00616 strcpy(LocalName, name); 00617 this->InternalFileNameList.push_back(LocalName); 00618 delete[] LocalName; 00619 } |
|
Definition at line 342 of file vtkGdcmReader.cxx. References AddInternalFileName(), FileNameList, InternalFileNameList, and RemoveAllInternalFileName(). Referenced by CheckFileCoherence().
00343 { 00344 this->RemoveAllInternalFileName(); 00345 00346 if ((! this->FileNameList.empty()) && this->FileName ) 00347 { 00348 vtkErrorMacro(<< "Both AddFileName and SetFileName schemes were used"); 00349 vtkErrorMacro(<< "No images loaded ! "); 00350 return; 00351 } 00352 00353 if ((! this->FileNameList.empty()) && this->FilePrefix ) 00354 { 00355 vtkErrorMacro(<< "Both AddFileName and SetFilePrefix schemes were used"); 00356 vtkErrorMacro(<< "No images loaded ! "); 00357 return; 00358 } 00359 00360 if (this->FileName && this->FilePrefix) 00361 { 00362 vtkErrorMacro(<< "Both SetFileName and SetFilePrefix schemes were used"); 00363 vtkErrorMacro(<< "No images loaded ! "); 00364 return; 00365 } 00366 00367 if (! this->FileNameList.empty() ) 00368 { 00369 vtkDebugMacro(<< "Using the AddFileName specified files"); 00370 this->InternalFileNameList=this->FileNameList; 00371 return; 00372 } 00373 00374 if (!this->FileName && !this->FilePrefix) 00375 { 00376 vtkErrorMacro(<< "FileNames are not set. Either use AddFileName() or"); 00377 vtkErrorMacro(<< "specify a FileName or FilePrefix."); 00378 return; 00379 } 00380 00381 if( this->FileName ) 00382 { 00383 // Single file loading (as given with ::SetFileName()): 00384 // Case of multi-frame file considered here 00385 this->ComputeInternalFileName(this->DataExtent[4]); 00386 vtkDebugMacro(<< "Adding file " << this->InternalFileName); 00387 this->AddInternalFileName(this->InternalFileName); 00388 } 00389 else 00390 { 00391 // Multi file loading (as given with ::SetFilePattern()): 00392 for (int idx = this->DataExtent[4]; idx <= this->DataExtent[5]; ++idx) 00393 { 00394 this->ComputeInternalFileName(idx); 00395 vtkDebugMacro(<< "Adding file " << this->InternalFileName); 00396 this->AddInternalFileName(this->InternalFileName); 00397 } 00398 } 00399 } |
|
Definition at line 417 of file vtkGdcmReader.cxx. References AllowLookupTable, BuildFileListFromPattern(), gdcm::File::GetNumberOfScalarComponents(), gdcm::File::GetNumberOfScalarComponentsRaw(), gdcm::File::GetPixelSize(), gdcm::File::GetPixelType(), gdcm::File::GetXSize(), gdcm::File::GetXSpacing(), gdcm::File::GetYSize(), gdcm::File::GetYSpacing(), gdcm::File::GetZSize(), gdcm::File::GetZSpacing(), gdcm::File::HasLUT(), ImageType, InternalFileNameList, gdcm::File::IsReadable(), NumColumns, NumComponents, and NumLines. Referenced by ExecuteInformation().
00418 { 00419 int ReturnedTotalNumberOfPlanes = 0; // The returned value. 00420 00421 this->BuildFileListFromPattern(); 00422 if (this->InternalFileNameList.empty()) 00423 { 00424 vtkErrorMacro(<< "FileNames are not set."); 00425 return 0; 00426 } 00427 00428 bool FoundReferenceFile = false; 00429 int ReferenceNZ = 0; 00430 00431 // Loop on the filenames: 00432 // - check for their existence and gdcm "parsability" 00433 // - get the coherence check done: 00434 for (std::list<std::string>::iterator filename = InternalFileNameList.begin(); 00435 filename != InternalFileNameList.end(); 00436 ++filename) 00437 { 00438 // The file is always added in the number of planes 00439 // - If file doesn't exist, it will be replaced by a black plane in the 00440 // ExecuteData method 00441 // - If file has more than 1 plane, other planes will be added later to 00442 // to the ReturnedTotalNumberOfPlanes variable counter 00443 ReturnedTotalNumberOfPlanes += 1; 00444 00446 if(*filename == std::string("GDCM_UNREADABLE")) 00447 continue; 00448 00450 // Stage 1.1: check for file existence. 00451 FILE *fp; 00452 fp = fopen(filename->c_str(),"rb"); 00453 if (!fp) 00454 { 00455 vtkErrorMacro(<< "Unable to open file " << filename->c_str()); 00456 vtkErrorMacro(<< "Removing this file from readed files " 00457 << filename->c_str()); 00458 *filename = "GDCM_UNREADABLE"; 00459 continue; 00460 } 00461 fclose(fp); 00462 00463 // Stage 1.2: check for Gdcm parsability 00464 gdcm::File GdcmFile(filename->c_str() ); 00465 if (!GdcmFile.IsReadable()) 00466 { 00467 vtkErrorMacro(<< "Gdcm cannot parse file " << filename->c_str()); 00468 vtkErrorMacro(<< "Removing this file from readed files " 00469 << filename->c_str()); 00470 *filename = "GDCM_UNREADABLE"; 00471 continue; 00472 } 00473 00474 // Stage 1.3: further gdcm compatibility on PixelType 00475 std::string type = GdcmFile.GetPixelType(); 00476 if ( (type != "8U") && (type != "8S") 00477 && (type != "16U") && (type != "16S") 00478 && (type != "32U") && (type != "32S") ) 00479 { 00480 vtkErrorMacro(<< "Bad File Type for file " << filename->c_str() << "\n" 00481 << " File type found : " << type.c_str() 00482 << " (might be 8U, 8S, 16U, 16S, 32U, 32S) \n" 00483 << " Removing this file from readed files"); 00484 *filename = "GDCM_UNREADABLE"; 00485 continue; 00486 } 00487 00488 // Stage 2: check coherence of the set of files 00489 int NX = GdcmFile.GetXSize(); 00490 int NY = GdcmFile.GetYSize(); 00491 int NZ = GdcmFile.GetZSize(); 00492 if (FoundReferenceFile) 00493 { 00494 // Stage 2.1: mandatory coherence stage: 00495 if ( ( NX != this->NumColumns ) 00496 || ( NY != this->NumLines ) 00497 || ( type != this->ImageType ) ) 00498 { 00499 vtkErrorMacro(<< "This file is not coherent with previous ones" 00500 << filename->c_str()); 00501 vtkErrorMacro(<< "Removing this file from readed files " 00502 << filename->c_str()); 00503 *filename = "GDCM_UNREADABLE"; 00504 continue; 00505 } 00506 00507 // Stage 2.2: optional coherence stage 00508 if ( NZ != ReferenceNZ ) 00509 { 00510 vtkErrorMacro(<< "File is not coherent in Z with previous ones" 00511 << filename->c_str()); 00512 } 00513 else 00514 { 00515 vtkDebugMacro(<< "File is coherent with previous ones" 00516 << filename->c_str()); 00517 } 00518 00519 // Stage 2.3: when the file contains a volume (as opposed to an image), 00520 // notify the caller. 00521 if (NZ > 1) 00522 { 00523 vtkErrorMacro(<< "This file contains multiple planes (images)" 00524 << filename->c_str()); 00525 } 00526 00527 // Eventually, this file can be added on the stack. Update the 00528 // full size of the stack 00529 vtkDebugMacro("Number of planes added to the stack: " << NZ); 00530 ReturnedTotalNumberOfPlanes += NZ - 1; // First plane already added 00531 continue; 00532 00533 } 00534 else 00535 { 00536 // We didn't have a workable reference file yet. Set this one 00537 // as the reference. 00538 FoundReferenceFile = true; 00539 vtkDebugMacro(<< "This file taken as coherence reference:" 00540 << filename->c_str()); 00541 vtkDebugMacro(<< "Image dimension of reference file as read from Gdcm:" 00542 << NX << " " << NY << " " << NZ); 00543 vtkDebugMacro(<< "Number of planes added to the stack: " << NZ); 00544 // Set aside the size of the image 00545 this->NumColumns = NX; 00546 this->NumLines = NY; 00547 ReferenceNZ = NZ; 00548 ReturnedTotalNumberOfPlanes += NZ - 1; // First plane already added 00549 this->ImageType = type; 00550 this->PixelSize = GdcmFile.GetPixelSize(); 00551 00552 if( GdcmFile.HasLUT() && this->AllowLookupTable ) 00553 { 00554 // I could raise an error is AllowLookupTable is on and HasLUT() off 00555 this->NumComponents = GdcmFile.GetNumberOfScalarComponentsRaw(); 00556 } 00557 else 00558 { 00559 this->NumComponents = GdcmFile.GetNumberOfScalarComponents(); //rgb or mono 00560 } 00561 00562 //Set image spacing 00563 this->DataSpacing[0] = GdcmFile.GetXSpacing(); 00564 this->DataSpacing[1] = GdcmFile.GetYSpacing(); 00565 this->DataSpacing[2] = GdcmFile.GetZSpacing(); 00566 00567 //Set image origin 00568 //this->DataOrigin[0] = GdcmFile.GetXOrigin(); 00569 //this->DataOrigin[1] = GdcmFile.GetYOrigin(); 00570 //this->DataOrigin[2] = GdcmFile.GetZOrigin(); 00571 00572 } 00573 } // End of loop on filename 00574 00576 // count the loadable number of files and display their number: 00577 int NumberCoherentFiles = 0; 00578 for (std::list<std::string>::iterator it = InternalFileNameList.begin(); 00579 it != InternalFileNameList.end(); 00580 ++it) 00581 { 00582 if (*it != "GDCM_UNREADABLE") 00583 { 00584 NumberCoherentFiles++; 00585 } 00586 } 00587 vtkDebugMacro(<< "Number of coherent files: " << NumberCoherentFiles); 00588 00589 if (ReturnedTotalNumberOfPlanes == 0) 00590 { 00591 vtkErrorMacro(<< "No loadable file."); 00592 } 00593 00594 vtkDebugMacro(<< "Total number of planes on the stack: " 00595 << ReturnedTotalNumberOfPlanes); 00596 00597 return ReturnedTotalNumberOfPlanes; 00598 } |
|
Definition at line 263 of file vtkGdcmReader.cxx. References InternalFileNameList, LoadImageInMemory(), NumColumns, and NumLines.
00264 { 00265 if (this->InternalFileNameList.empty()) 00266 { 00267 vtkErrorMacro(<< "A least a valid FileName must be specified."); 00268 return; 00269 } 00270 00271 // FIXME : extraneous parsing of header is made when allocating OuputData 00272 vtkImageData *data = this->AllocateOutputData(output); 00273 data->SetExtent(this->DataExtent); 00274 data->GetPointData()->GetScalars()->SetName("DicomImage-Volume"); 00275 00276 // Test if output has valid extent 00277 // Prevent memory errors 00278 if((this->DataExtent[1]-this->DataExtent[0]>=0) && 00279 (this->DataExtent[3]-this->DataExtent[2]>=0) && 00280 (this->DataExtent[5]-this->DataExtent[4]>=0)) 00281 { 00282 // The memory size for a full stack of images of course depends 00283 // on the number of planes and the size of each image: 00284 //size_t StackNumPixels = this->NumColumns * this->NumLines 00285 // * this->TotalNumberOfPlanes * this->NumComponents; 00286 //size_t stack_size = StackNumPixels * this->PixelSize; //not used 00287 // Allocate pixel data space itself. 00288 00289 // Variables for the UpdateProgress. We shall use 50 steps to signify 00290 // the advance of the process: 00291 unsigned long UpdateProgressTarget = (unsigned long) ceil (this->NumLines 00292 * this->TotalNumberOfPlanes 00293 / 50.0); 00294 // The actual advance measure: 00295 unsigned long UpdateProgressCount = 0; 00296 00297 // Feeling the allocated memory space with each image/volume: 00298 unsigned char *Dest = (unsigned char *)data->GetScalarPointer(); 00299 for (std::list<std::string>::iterator filename = InternalFileNameList.begin(); 00300 filename != InternalFileNameList.end(); 00301 ++filename) 00302 { 00303 // Images that were tagged as unreadable in CheckFileCoherence() 00304 // are substituted with a black image to let the caller visually 00305 // notice something wrong is going on: 00306 if (*filename != "GDCM_UNREADABLE") 00307 { 00308 // Update progress related for good files is made in LoadImageInMemory 00309 Dest += this->LoadImageInMemory(*filename, Dest, 00310 UpdateProgressTarget, 00311 UpdateProgressCount); 00312 } 00313 else 00314 { 00315 // We insert a black image in the stack for the user to be aware that 00316 // this image/volume couldn't be loaded. We simply skip one image 00317 // size: 00318 Dest += this->NumColumns * this->NumLines * this->PixelSize; 00319 00320 // Update progress related for bad files: 00321 UpdateProgressCount += this->NumLines; 00322 if (UpdateProgressTarget > 0) 00323 { 00324 if (!(UpdateProgressCount%UpdateProgressTarget)) 00325 { 00326 this->UpdateProgress(UpdateProgressCount/(50.0*UpdateProgressTarget)); 00327 } 00328 } 00329 } // Else, file not loadable 00330 } // Loop on files 00331 } 00332 } |
|
Definition at line 156 of file vtkGdcmReader.cxx. References CheckFileCoherence(), fileTime, ImageType, NumColumns, NumLines, and TotalNumberOfPlanes.
00157 { 00158 if(this->MTime>this->fileTime) 00159 { 00160 this->TotalNumberOfPlanes = this->CheckFileCoherence(); 00161 if ( this->TotalNumberOfPlanes == 0) 00162 { 00163 vtkErrorMacro(<< "File set is not coherent. Exiting..."); 00164 return; 00165 } 00166 00167 // if the user has not set the extent, but has set the VOI 00168 // set the z axis extent to the VOI z axis 00169 if (this->DataExtent[4]==0 && this->DataExtent[5] == 0 && 00170 (this->DataVOI[4] || this->DataVOI[5])) 00171 { 00172 this->DataExtent[4] = this->DataVOI[4]; 00173 this->DataExtent[5] = this->DataVOI[5]; 00174 } 00175 00176 // When the user has set the VOI, check it's coherence with the file content. 00177 if (this->DataVOI[0] || this->DataVOI[1] || 00178 this->DataVOI[2] || this->DataVOI[3] || 00179 this->DataVOI[4] || this->DataVOI[5]) 00180 { 00181 if ((this->DataVOI[0] < 0) || 00182 (this->DataVOI[1] >= this->NumColumns) || 00183 (this->DataVOI[2] < 0) || 00184 (this->DataVOI[3] >= this->NumLines) || 00185 (this->DataVOI[4] < 0) || 00186 (this->DataVOI[5] >= this->TotalNumberOfPlanes )) 00187 { 00188 vtkWarningMacro(<< "The requested VOI is larger than expected extent."); 00189 this->DataVOI[0] = 0; 00190 this->DataVOI[1] = this->NumColumns - 1; 00191 this->DataVOI[2] = 0; 00192 this->DataVOI[3] = this->NumLines - 1; 00193 this->DataVOI[4] = 0; 00194 this->DataVOI[5] = this->TotalNumberOfPlanes - 1; 00195 } 00196 } 00197 00198 // Positionate the Extent. 00199 this->DataExtent[0] = 0; 00200 this->DataExtent[1] = this->NumColumns - 1; 00201 this->DataExtent[2] = 0; 00202 this->DataExtent[3] = this->NumLines - 1; 00203 this->DataExtent[4] = 0; 00204 this->DataExtent[5] = this->TotalNumberOfPlanes - 1; 00205 00206 // We don't need to positionate the Endian related stuff (by using 00207 // this->SetDataByteOrderToBigEndian() or SetDataByteOrderToLittleEndian() 00208 // since the reading of the file is done by gdcm. 00209 // But we do need to set up the data type for downstream filters: 00210 if ( ImageType == "8U" ) 00211 { 00212 vtkDebugMacro(<< "8 bits unsigned image"); 00213 this->SetDataScalarTypeToUnsignedChar(); 00214 } 00215 else if ( ImageType == "8S" ) 00216 { 00217 vtkErrorMacro(<< "Cannot handle 8 bit signed files"); 00218 return; 00219 } 00220 else if ( ImageType == "16U" ) 00221 { 00222 vtkDebugMacro(<< "16 bits unsigned image"); 00223 this->SetDataScalarTypeToUnsignedShort(); 00224 } 00225 else if ( ImageType == "16S" ) 00226 { 00227 vtkDebugMacro(<< "16 bits signed image"); 00228 this->SetDataScalarTypeToShort(); 00229 //vtkErrorMacro(<< "Cannot handle 16 bit signed files"); 00230 } 00231 else if ( ImageType == "32U" ) 00232 { 00233 vtkDebugMacro(<< "32 bits unsigned image"); 00234 vtkDebugMacro(<< "WARNING: forced to signed int !"); 00235 this->SetDataScalarTypeToInt(); 00236 } 00237 else if ( ImageType == "32S" ) 00238 { 00239 vtkDebugMacro(<< "32 bits signed image"); 00240 this->SetDataScalarTypeToInt(); 00241 } 00242 else if ( ImageType == "FD" ) 00243 { 00244 vtkDebugMacro(<< "64 bits Double image"); 00245 this->SetDataScalarTypeToDouble(); 00246 } 00247 //Set number of scalar components: 00248 this->SetNumberOfScalarComponents(this->NumComponents); 00249 00250 this->fileTime=this->MTime; 00251 } 00252 00253 this->Superclass::ExecuteInformation(); 00254 } |
|
Definition at line 625 of file vtkGdcmReader.cxx. References AllowLookupTable, gdcm::FileHelper::GetFile(), gdcm::FileHelper::GetImageData(), gdcm::FileHelper::GetImageDataRaw(), gdcm::FileHelper::GetImageDataSize(), gdcm::FileHelper::GetLutRGBA(), LookupTable, and NumComponents. Referenced by ExecuteData().
00630 { 00631 vtkDebugMacro(<< "Copying to memory image [" << fileName.c_str() << "]"); 00632 gdcm::FileHelper file( fileName.c_str() ); 00633 size_t size; 00634 00635 // If the data structure of vtk for image/volume representation 00636 // were straigthforwards the following would be enough: 00637 // GdcmFile.GetImageDataIntoVector((void*)Dest, size); 00638 // But vtk chooses to invert the lines of an image, that is the last 00639 // line comes first (for some axis related reasons?). Hence we need 00640 // to load the image line by line, starting from the end. 00641 00642 int numColumns = file.GetFile()->GetXSize(); 00643 int numLines = file.GetFile()->GetYSize(); 00644 int numPlanes = file.GetFile()->GetZSize(); 00645 int lineSize = NumComponents * numColumns * file.GetFile()->GetPixelSize(); 00646 int planeSize = lineSize * numLines; 00647 00648 unsigned char *src; 00649 00650 if( file.GetFile()->HasLUT() && AllowLookupTable ) 00651 { 00652 size = file.GetImageDataSize(); 00653 src = (unsigned char*) file.GetImageDataRaw(); 00654 unsigned char *lut = (unsigned char*) file.GetLutRGBA(); 00655 00656 if(!this->LookupTable) 00657 { 00658 this->LookupTable = vtkLookupTable::New(); 00659 } 00660 00661 this->LookupTable->SetNumberOfTableValues(256); 00662 for (int tmp=0; tmp<256; tmp++) 00663 { 00664 this->LookupTable->SetTableValue(tmp, 00665 (float)lut[4*tmp+0]/255.0, 00666 (float)lut[4*tmp+1]/255.0, 00667 (float)lut[4*tmp+2]/255.0, 00668 1); 00669 } 00670 this->LookupTable->SetRange(0,255); 00671 vtkDataSetAttributes *a = this->GetOutput()->GetPointData(); 00672 a->GetScalars()->SetLookupTable(this->LookupTable); 00673 free(lut); 00674 } 00675 else 00676 { 00677 size = file.GetImageDataSize(); 00678 src = (unsigned char*)file.GetImageData(); 00679 } 00680 00681 unsigned char *dst = dest + planeSize - lineSize; 00682 for (int plane = 0; plane < numPlanes; plane++) 00683 { 00684 for (int line = 0; line < numLines; line++) 00685 { 00686 // Copy one line at proper destination: 00687 memcpy((void*)dst, (void*)src, lineSize); 00688 src += lineSize; 00689 dst -= lineSize; 00690 // Update progress related: 00691 if (!(updateProgressCount%updateProgressTarget)) 00692 { 00693 this->UpdateProgress(updateProgressCount/(50.0*updateProgressTarget)); 00694 } 00695 updateProgressCount++; 00696 } 00697 dst += 2 * planeSize; 00698 } 00699 00700 return size; 00701 } |
|
Referenced by main(). |
|
Definition at line 99 of file vtkGdcmReader.cxx. References FileNameList.
00100 { 00101 this->Superclass::PrintSelf(os,indent); 00102 os << indent << "Filenames : " << endl; 00103 vtkIndent nextIndent = indent.GetNextIndent(); 00104 for (std::list<std::string>::iterator it = FileNameList.begin(); 00105 it != FileNameList.end(); 00106 ++it) 00107 { 00108 os << nextIndent << it->c_str() << endl ; 00109 } 00110 } |
|
Definition at line 117 of file vtkGdcmReader.cxx. References FileNameList. Referenced by ~vtkGdcmReader().
00118 { 00119 this->FileNameList.clear(); 00120 this->Modified(); 00121 } |
|
Definition at line 605 of file vtkGdcmReader.cxx. References InternalFileNameList. Referenced by BuildFileListFromPattern().
00606 { 00607 this->InternalFileNameList.clear(); 00608 } |
|
Definition at line 140 of file vtkGdcmReader.cxx. References FileNameList. Referenced by main().
00141 { 00142 vtkImageReader2::SetFileName(name); 00143 // Since we maintain a list of filenames, when building a volume, 00144 // (see vtkGdcmReader::AddFileName), we additionaly need to purge 00145 // this list when we manually positionate the filename. 00146 vtkDebugMacro(<< "Clearing all files given with AddFileName"); 00147 this->FileNameList.clear(); 00148 this->Modified(); 00149 } |
|
|
|
|
|
|
|
|
|
|
|
Definition at line 75 of file vtkGdcmReader.h. Referenced by CheckFileCoherence(), LoadImageInMemory(), and vtkGdcmReader(). |
|
Definition at line 92 of file vtkGdcmReader.h. Referenced by AddFileName(), BuildFileListFromPattern(), PrintSelf(), RemoveAllFileName(), and SetFileName(). |
|
Definition at line 74 of file vtkGdcmReader.h. Referenced by ExecuteInformation(). |
|
Definition at line 87 of file vtkGdcmReader.h. Referenced by CheckFileCoherence(), and ExecuteInformation(). |
|
Definition at line 100 of file vtkGdcmReader.h. Referenced by AddInternalFileName(), BuildFileListFromPattern(), CheckFileCoherence(), ExecuteData(), RemoveAllInternalFileName(), and ~vtkGdcmReader(). |
|
Definition at line 73 of file vtkGdcmReader.h. Referenced by LoadImageInMemory(), vtkGdcmReader(), and ~vtkGdcmReader(). |
|
Definition at line 79 of file vtkGdcmReader.h. Referenced by CheckFileCoherence(), ExecuteData(), and ExecuteInformation(). |
|
Definition at line 85 of file vtkGdcmReader.h. Referenced by CheckFileCoherence(), and LoadImageInMemory(). |
|
Definition at line 81 of file vtkGdcmReader.h. Referenced by CheckFileCoherence(), ExecuteData(), and ExecuteInformation(). |
|
Definition at line 89 of file vtkGdcmReader.h. |
|
Definition at line 83 of file vtkGdcmReader.h. Referenced by ExecuteInformation(). |