+ int GetBitsStored();
+ int GetBitsAllocated();
+ int GetHighBitPosition();
+ int GetSamplesPerPixel();
+ int GetPlanarConfiguration();
+ int GetPixelSize();
+ std::string GetPixelType();
+ bool IsSignedPixelData();
+ bool IsMonochrome();
+ bool IsMonochrome1();
+ bool IsPaletteColor();
+ bool IsYBRFull();
+
+ bool HasLUT();
+ int GetLUTNbits();
+
+ // For rescaling graylevel:
+ float GetRescaleIntercept();
+ float GetRescaleSlope();
+
+ int GetNumberOfScalarComponents();
+ int GetNumberOfScalarComponentsRaw();
+
+ /// Accessor to \ref File::GrPixel
+ uint16_t GetGrPixel() { return GrPixel; }
+ /// Accessor to \ref File::NumPixel
+ uint16_t GetNumPixel() { return NumPixel; }
+
+ size_t GetPixelOffset();
+ size_t GetPixelAreaLength();
+
+ /// returns the RLE info
+ RLEFramesInfo *GetRLEInfo() { return RLEInfo; }
+ /// Returns the JPEG Fragments info
+ JPEGFragmentsInfo *GetJPEGInfo() { return JPEGInfo; }
+
+// Anonymization process
+ void AddAnonymizeElement (uint16_t group, uint16_t elem,
+ std::string const &value);
+ /// Clears the list of elements to be anonymized
+ void ClearAnonymizeList() { UserAnonymizeList.clear(); }
+ void AnonymizeNoLoad();
+ /// Replace patient's own information by info from the Anonymization list
+ bool AnonymizeFile();
+
+ bool Write(std::string fileName, FileType filetype);
+
+protected:
+ 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.
+ JPEGFragmentsInfo *JPEGInfo;
+
+ /// \brief In some cases (e.g. for some ACR-NEMA images) the Entry Element
+ /// Number of the 'Pixel Element' is *not* found at 0x0010. In order to
+ /// make things easier the parser shall store the proper value in
+ /// 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.
+ 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 ReadEncapsulatedBasicOffsetTable();
+ uint32_t *BasicOffsetTableItemValue;
+