Program: gdcm
Module: $RCSfile: vtkGdcmReader.h,v $
Language: C++
- Date: $Date: 2005/07/30 18:31:25 $
- Version: $Revision: 1.24 $
+ Date: $Date: 2007/09/04 16:21:50 $
+ Version: $Revision: 1.35 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include <string>
#include <vector>
-typedef void (*VOID_FUNCTION_PUINT8_PFILE_POINTER)(uint8_t *, gdcm::File *);
+typedef void (*VOID_FUNCTION_PUINT8_PFILE_POINTER)(uint8_t *, GDCM_NAME_SPACE::File *);
//-----------------------------------------------------------------------------
class vtkLookupTable;
virtual void RemoveAllFileName(void);
virtual void AddFileName(const char *name);
virtual void SetFileName(const char *name);
- void SetCoherentFileList( std::vector<gdcm::File* > *cfl) {
+
+ //BTX
+ void SetCoherentFileList( std::vector<GDCM_NAME_SPACE::File* > *cfl) {
CoherentFileList = cfl; }
- void SetCheckFileCoherenceLight();
+ //ETX
+
+ //vtkSetMacro(AllowLightChecking, bool);
+ //vtkGetMacro(AllowLightChecking, bool);
+ //vtkBooleanMacro(AllowLightChecking, bool);
+
+ //BTX
+
+ /// \todo fix possible problems around VTK pipelining
+
void SetUserFunction (VOID_FUNCTION_PUINT8_PFILE_POINTER userFunc )
- { UserFunction = userFunc; }
+ { UserFunction = userFunc; }
+ //ETX
+
// Description:
// If this flag is set and the DICOM reader encounters a dicom file with
// lookup table the data will be kept as unsigned chars and a lookuptable
// will be exported and accessible through GetLookupTable()
- vtkSetMacro(AllowLookupTable, int);
- vtkGetMacro(AllowLookupTable, int);
- vtkBooleanMacro(AllowLookupTable, int);
+ vtkSetMacro(AllowLookupTable, bool);
+ vtkGetMacro(AllowLookupTable, bool);
+ vtkBooleanMacro(AllowLookupTable, bool);
+
+
+ vtkSetMacro(KeepOverlays, bool);
+ vtkGetMacro(KeepOverlays, bool);
+ vtkBooleanMacro(KeepOverlays, bool);
vtkGetObjectMacro(LookupTable, vtkLookupTable);
-/**
- * \brief Sets the LoadMode as a boolean string.
- * NO_SEQ, NO_SHADOW, NO_SHADOWSEQ... (nothing more, right now)
+// FIXME : HOW to doxygen a VTK macro?
+/*
+ * \ brief Sets the LoadMode as a boolean string.
+ * gdcm.LD_NOSEQ, gdcm.LD_NOSHADOW, gdcm.LD_NOSHADOWSEQ...
+ * (nothing more, right now)
* WARNING : before using NO_SHADOW, be sure *all* your files
* contain accurate values in the 0x0000 element (if any)
* of *each* Shadow Group. The parser will fail if the size is wrong !
* @param mode Load mode to be used
*/
- void SetLoadMode (int mode) { LoadMode = mode; }
+ vtkSetMacro(LoadMode, int);
+ vtkGetMacro(LoadMode, int);
+ vtkBooleanMacro(LoadMode, int);
+
+/*
+ * \ brief drop images with duplicate position
+ * and therefore calculate ZSpacing for the whole file set
+ * @param mode user wants to drop images with duplicate position
+ */
+ vtkSetMacro(DropDuplicatePositions, bool);
+ vtkGetMacro(DropDuplicatePositions, bool);
+ vtkBooleanMacro(DropDuplicatePositions, bool);
protected:
vtkGdcmReader();
virtual void ExecuteInformation();
virtual void ExecuteData(vtkDataObject *output);
+
+ //virtual void BuildData(vtkDataObject *output); // for VTK5.0
virtual void BuildFileListFromPattern();
- virtual int CheckFileCoherence();
- virtual int CheckFileCoherenceLight();
- virtual int CheckFileCoherenceAlreadyDone();
+ virtual void LoadFileInformation();
+ virtual void UpdateFileInformation();
+ //BTX
+ virtual void GetFileInformation(GDCM_NAME_SPACE::File *file);
+ virtual bool TestFileInformation(GDCM_NAME_SPACE::File *file);
+ //ETX
+
private:
void RemoveAllInternalFileName(void);
- void AddInternalFileName(const char* name);
+ void AddInternalFileName(const char *name);
+ void RemoveAllInternalFile(void);
//BTX
- size_t LoadImageInMemory(std::string fileName, unsigned char *dest,
- const unsigned long updateProgressTarget,
- unsigned long &updateProgressCount);
-
- size_t LoadImageInMemory(gdcm::File *f, unsigned char *dest,
- const unsigned long updateProgressTarget,
- unsigned long &updateProgressCount);
-
- size_t DoTheLoadingJob (gdcm::File *f,
- unsigned char *dest,
- const unsigned long updateProgressTarget,
- unsigned long &updateProgressCount);
+ void IncrementProgress(const unsigned long updateProgressTarget,
+ unsigned long &updateProgressCount);
+ /*void LoadImageInMemory(std::string fileName, unsigned char *dest,
+ const unsigned long updateProgressTarget,
+ unsigned long &updateProgressCount);*/
+
+ void LoadImageInMemory(GDCM_NAME_SPACE::File *f, unsigned char *dest,
+ const unsigned long updateProgressTarget,
+ unsigned long &updateProgressCount);
//ETX
// Variables
+ //BTX
+ typedef std::vector<GDCM_NAME_SPACE::File *> gdcmFileList;
+ //ETX
+
vtkLookupTable *LookupTable;
vtkTimeStamp fileTime;
- int AllowLookupTable;
- bool LightChecking;
+
+ bool AllowLookupTable;
+ bool AllowLightChecking;
//BTX
// Number of columns of the image/volume to be loaded
int NumColumns;
// Number of lines of the image/volume to be loaded
int NumLines;
+ // Number of lines of the image/volume to be loaded
+ int NumPlanes;
// Total number of planes (or images) of the stack to be build.
int TotalNumberOfPlanes;
// Number of scalar components of the image to be loaded (1=monochrome 3=rgb)
// List of filenames to be read in order to build a stack of images
// or volume. The order in the list shall be the order of the images.
std::list<std::string> FileNameList;
+ gdcmFileList *CoherentFileList;
+ bool OwnFile;
// List of filenames created in ExecuteInformation and used in
// ExecuteData.
// Otherwise, InternalFileNameList correspond to the list of
// files patterned
std::list<std::string> InternalFileNameList;
- std::vector<gdcm::File* > *CoherentFileList;
+ gdcmFileList InternalFileList;
+ //bool Execution; // For VTK5.0
//ETX
/// Bit 2 : Skip Sequences inside a Shadow Group, if possible
/// Probabely (?), some more to add
int LoadMode;
-
+
+ bool DropDuplicatePositions;
+
+ bool KeepOverlays;
+
/// Pointer to a user suplied function to allow modification of pixel order
VOID_FUNCTION_PUINT8_PFILE_POINTER UserFunction;