Program: gdcm
Module: $RCSfile: gdcmHeader.h,v $
Language: C++
- Date: $Date: 2004/06/28 09:30:58 $
- Version: $Revision: 1.78 $
+ Date: $Date: 2004/11/25 13:12:02 $
+ Version: $Revision: 1.94 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
- http://www.creatis.insa-lyon.fr/Public/Gdcm/License.htm for details.
+ http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
#include "gdcmCommon.h"
#include "gdcmDocument.h"
+
+namespace gdcm
+{
//-----------------------------------------------------------------------------
/**
* \brief
- * The purpose of an instance of gdcmHeader is to act as a container of
+ * The purpose of an instance of Header is to act as a container of
* all the DICOM elements and their corresponding values (and
* additionaly the corresponding DICOM dictionary entry) of the header
* of a DICOM file.
*
- * The typical usage of instances of class gdcmHeader is to classify a set of
+ * The typical usage of instances of class Header is to classify a set of
* 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.
* \note The various entries of the explicit value representation (VR) shall
- * be managed within a dictionary which is shared by all gdcmHeader
+ * be managed within a dictionary which is shared by all Header
* instances.
- * \note The gdcmHeader::Set*Tag* family members cannot be defined as
+ * \note The Header::Set*Tag* family members cannot be defined as
* protected due to Swig limitations for as Has_a dependency between
- * gdcmFile and gdcmHeader.
+ * File and Header.
*/
//-----------------------------------------------------------------------------
};
//-----------------------------------------------------------------------------
-class GDCM_EXPORT gdcmHeader : public gdcmDocument
+class GDCM_EXPORT Header : public Document
{
protected:
/// \brief In some cases (e.g. for some ACR-NEMA images) the Header 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. See also the constructor
- /// \ref gdcmHeader::gdcmHeader
- guint16 NumPixel;
+ /// \ref Header::Header
+ 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. See also the constructor
- /// \ref gdcmHeader::gdcmHeader
- guint16 GrPixel;
+ /// \ref Header::Header
+ uint16_t GrPixel;
public:
- gdcmHeader(bool exception_on_error = false);
- gdcmHeader(std::string const & filename,
- bool exception_on_error = false,
- bool enable_sequences = false,
- bool skip_shadow = false);
+ Header();
+ Header( std::string const & filename );
- virtual ~gdcmHeader();
+ ~Header();
// Standard values and informations contained in the header
- virtual bool IsReadable();
+ bool IsReadable();
// Some heuristic based accessors, end user intended
int GetBitsStored();
int GetSamplesPerPixel();
int GetPlanarConfiguration();
int GetPixelSize();
+ int GetHighBitPosition();
+ bool IsSignedPixelData();
+ bool IsMonochrome();
+ bool IsPaletteColor();
+ bool IsYBRFull();
std::string GetPixelType();
size_t GetPixelOffset();
float GetXSpacing();
float GetYSpacing();
float GetZSpacing();
- //void GetSpacing(float &x, float &y, float &z);
// Useful for rescaling graylevel:
float GetRescaleIntercept();
int GetNumberOfScalarComponents();
int GetNumberOfScalarComponentsRaw();
- // This is usefull for strategy of ordering study / series
- // Marking them as deprecated since I believe this is achieve in the
- // gdcmDocument operator<
- //std::string GetStudyUID();
- //std::string GetSeriesUID();
- //std::string GetClassUID();
- //std::string GetInstanceUID();
-
int GetImageNumber();
ModalityType GetModality();
- /**
- * change GetXImagePosition -> GetXOrigin in order not to confuse reader
- * -# GetXOrigin can return default value (=0) if it was not ImagePosition
- * -# Image Position is different in dicomV3 <> ACR NEMA -> better use generic
- * name
- */
float GetXOrigin();
float GetYOrigin();
float GetZOrigin();
- //void GetOrigin(float &x, float &y, float &z);
bool HasLUT();
int GetLUTNbits();
- unsigned char * GetLUTRGBA();
+ /// Return the Transfer Syntax as a string
std::string GetTransfertSyntaxName();
- /// Accessor to \ref gdcmHeader::GrPixel
- guint16 GetGrPixel() {return GrPixel;}
+ /// Accessor to \ref Header::GrPixel
+ uint16_t GetGrPixel() { return GrPixel; }
- /// Accessor to \ref gdcmHeader::NumPixel
- guint16 GetNumPixel() {return NumPixel;}
+ /// Accessor to \ref Header::NumPixel
+ uint16_t GetNumPixel() { return NumPixel; }
- /// Read (used in gdcmFile)
+ /// Read (used in File)
void SetImageDataSize(size_t expectedSize);
+ bool Write(std::string fileName, FileType filetype);
+
+ /// Initialize DICOM header when none
+ void InitializeDefaultHeader();
+
protected:
+ /// Replace patient's specific information by 'anonymous'
bool AnonymizeHeader();
- void GetImageOrientationPatient( float* iop );
+
+ /// Helper function needed to organize DICOM files based on
+ /// their x,y,z position
+ void GetImageOrientationPatient( float iop[6] );
private:
- friend class gdcmSerieHeader;
+ friend class SerieHeader;
};
+} // end namespace gdcm
//-----------------------------------------------------------------------------
#endif