X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmFile.h;h=b3bb6aec37edb51588bd9ac1257165dedc629942;hb=cb69bd56675d6a06c5835a01afabc5aae7a6fed0;hp=dd48d1c53a419deba2f89bc83ae78d6a2afb4e67;hpb=f5c24f2018ff4775ff6ae006de753a394d8cae0f;p=gdcm.git diff --git a/src/gdcmFile.h b/src/gdcmFile.h index dd48d1c5..b3bb6aec 100644 --- a/src/gdcmFile.h +++ b/src/gdcmFile.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmFile.h,v $ Language: C++ - Date: $Date: 2005/02/06 14:39:35 $ - Version: $Revision: 1.103 $ + Date: $Date: 2006/05/11 19:49:38 $ + Version: $Revision: 1.126 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -19,10 +19,14 @@ #ifndef GDCMFILE_H #define GDCMFILE_H +#include "gdcmDebug.h" #include "gdcmDocument.h" +#include "gdcmTagKey.h" + namespace gdcm { + class RLEFramesInfo; class JPEGFragmentsInfo; @@ -84,7 +88,7 @@ enum ModalityType { * dicom files according to header information e.g. to create a file hierarchy * reflecting the Patient/Study/Serie informations, or extracting a given * SerieId. Accessing the content (image[s] or volume[s]) is beyond the - * functionality of this class and belongs to gdmcFile. + * functionality of this class and belongs to gdcm::FileHelper. * \note The various entries of the explicit value representation (VR) shall * be managed within a dictionary which is shared by all File * instances. @@ -94,13 +98,19 @@ enum ModalityType { */ class GDCM_EXPORT File : public Document { + gdcmTypeMacro(File); + public: - File(); - File( std::string const &filename ); - ~File(); + static File *New() {return new File();} + // Loading + GDCM_LEGACY(bool Load( std::string const &filename )) + bool Load(); // Standard values and informations contained in the header bool IsReadable(); + + void SetFourthDimensionLocation(uint16_t group, uint16_t elem) { + FourthDimensionLocation = TagKey(group, elem); } // Some heuristic based accessors, end user intended int GetImageNumber(); @@ -109,7 +119,8 @@ public: int GetXSize(); int GetYSize(); int GetZSize(); - + int GetTSize(); // unnormalized in DICOM V3 + float GetXSpacing(); float GetYSpacing(); float GetZSpacing(); @@ -118,7 +129,7 @@ public: float GetYOrigin(); float GetZOrigin(); - void GetImageOrientationPatient( float iop[6] ); + bool GetImageOrientationPatient( float iop[6] ); int GetBitsStored(); int GetBitsAllocated(); @@ -129,6 +140,7 @@ public: std::string GetPixelType(); bool IsSignedPixelData(); bool IsMonochrome(); + bool IsMonochrome1(); bool IsPaletteColor(); bool IsYBRFull(); @@ -159,7 +171,7 @@ public: void AddAnonymizeElement (uint16_t group, uint16_t elem, std::string const &value); /// Clears the list of elements to be anonymized - void ClearAnonymizeList() { AnonymizeList.clear(); } + void ClearAnonymizeList() { UserAnonymizeList.clear(); } void AnonymizeNoLoad(); /// Replace patient's own information by info from the Anonymization list bool AnonymizeFile(); @@ -167,9 +179,12 @@ public: bool Write(std::string fileName, FileType filetype); protected: - /// Initialize DICOM File when none - void InitializeDefaultFile(); - + File(); + virtual ~File(); + /// \brief Protect the Writer from writing illegal groups + bool MayIWrite(uint16_t group) + { if (group < 8 && group !=2 ) return false; else return true; } + /// Store the RLE frames info obtained during parsing of pixels. RLEFramesInfo *RLEInfo; /// Store the JPEG fragments info obtained during parsing of pixels. @@ -181,17 +196,22 @@ protected: /// NumPixel to provide a unique access facility. uint16_t NumPixel; /// \brief In some cases (e.g. for some ACR-NEMA images) the header entry for - /// the group of pixels is *not* found at 0x7fe0. In order to - /// make things easier the parser shall store the proper value in - /// GrPixel to provide a unique access facility. + /// the group of pixels is *not* found at 0x7fe0. + /// In order to make things easier the parser shall store the proper value + /// in GrPixel to provide a unique access facility. uint16_t GrPixel; + /// \brief allows user to tell gdcm in which DataElement is stored + ///the -unnormalized- 4th Dimension + TagKey FourthDimensionLocation; private: + bool DoTheLoadingJob(); void ComputeRLEInfo(); void ComputeJPEGFragmentInfo(); bool ReadTag(uint16_t, uint16_t); uint32_t ReadTagLength(uint16_t, uint16_t); - void ReadAndSkipEncapsulatedBasicOffsetTable(); + void ReadEncapsulatedBasicOffsetTable(); + uint32_t *BasicOffsetTableItemValue; }; } // end namespace gdcm