vtkGdcmReader::vtkGdcmReader()
{
this->LookupTable = NULL;
+ this->AllowLookupTable = 0;
}
vtkGdcmReader::~vtkGdcmReader()
// Since we maintain a list of filenames, when building a volume,
// (see vtkGdcmReader::AddFileName), we additionaly need to purge
// this list when we manually positionate the filename.
+ vtkDebugMacro("Clearing all files given with AddFileName");
this->FileNameList.clear();
this->Modified();
}
*/
void vtkGdcmReader::BuildFileListFromPattern()
{
+ this->RemoveAllInternalFileName();
+
if ((! this->FileNameList.empty()) && this->FileName )
{
- vtkErrorMacro("Both file patterns and AddFileName schemes were used");
- vtkErrorMacro("Only the files specified with AddFileName shall be used");
+ vtkErrorMacro("Both AddFileName and SetFileName schemes were used");
+ vtkErrorMacro("No images loaded ! ");
+ return;
+ }
+
+ if ((! this->FileNameList.empty()) && this->FilePrefix )
+ {
+ vtkErrorMacro("Both AddFileName and SetFilePrefix schemes were used");
+ vtkErrorMacro("No images loaded ! ");
+ return;
+ }
+
+ if (this->FileName && this->FilePrefix)
+ {
+ vtkErrorMacro("Both SetFileName and SetFilePrefix schemes were used");
+ vtkErrorMacro("No images loaded ! ");
return;
}
return;
}
- if (!this->FileName && !this->FilePattern)
+ if (!this->FileName && !this->FilePrefix)
{
vtkErrorMacro("FileNames are not set. Either use AddFileName() or");
- vtkErrorMacro("specify a FileName or FilePattern.");
+ vtkErrorMacro("specify a FileName or FilePrefix.");
return;
}
- this->RemoveAllInternalFileName();
- if( this->FileNameList.empty() )
+ if( this->FileName )
{
- //Multiframe case:
+ // Single file loading (as given with ::SetFileName()):
+ // Case of multi-frame file considered here
this->ComputeInternalFileName(this->DataExtent[4]);
vtkDebugMacro("Adding file " << this->InternalFileName);
this->AddInternalFileName(this->InternalFileName);
}
else
{
- //stack of 2D dicom case:
+ // Multi file loading (as given with ::SetFilePattern()):
for (int idx = this->DataExtent[4]; idx <= this->DataExtent[5]; ++idx)
{
this->ComputeInternalFileName(idx);
this->ImageType = type;
this->PixelSize = GdcmHeader.GetPixelSize();
- if( GdcmHeader.HasLUT() )
+ if( GdcmHeader.HasLUT() && this->AllowLookupTable )
{
+ // I could raise an error is AllowLookupTable is on and HasLUT() off
this->NumComponents = GdcmHeader.GetNumberOfScalarComponentsRaw();
}
else
unsigned char * Source;
- if( GdcmFile.GetHeader()->HasLUT() )
+ if( GdcmFile.GetHeader()->HasLUT() && this->AllowLookupTable )
{
size = GdcmFile.GetImageDataSizeRaw();
Source = (unsigned char*) GdcmFile.GetImageDataRaw();