]> Creatis software - gdcm.git/blobdiff - src/gdcmHeader.h
Coding Style + Doxygenation
[gdcm.git] / src / gdcmHeader.h
index 2b01cc81b1405e769e67d09d45eb13ea5d5381a4..8c56bdd042384a8229ab3c85044aadb161288eea 100644 (file)
@@ -3,12 +3,12 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmHeader.h,v $
   Language:  C++
-  Date:      $Date: 2004/06/28 09:51:02 $
-  Version:   $Revision: 1.79 $
+  Date:      $Date: 2005/01/06 20:03:28 $
+  Version:   $Revision: 1.97 $
                                                                                 
   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
 #ifndef GDCMHEADER_H
 #define GDCMHEADER_H
 
-#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.
  */
 
 //-----------------------------------------------------------------------------
@@ -90,33 +92,30 @@ enum ModalityType {
 };
 //-----------------------------------------------------------------------------
 
-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();
@@ -124,6 +123,11 @@ public:
    int GetSamplesPerPixel();
    int GetPlanarConfiguration();
    int GetPixelSize();
+   int GetHighBitPosition();
+   bool IsSignedPixelData();
+   bool IsMonochrome();
+   bool IsPaletteColor();
+   bool IsYBRFull();
 
    std::string GetPixelType();
    size_t GetPixelOffset();
@@ -137,7 +141,6 @@ public:
    float GetXSpacing();
    float GetYSpacing();
    float GetZSpacing();
-   //void GetSpacing(float &x, float &y, float &z);
 
    // Useful for rescaling graylevel:
    float GetRescaleIntercept();
@@ -146,52 +149,42 @@ public:
    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)
-   void SetImageDataSize(size_t expectedSize);
+   bool Write(std::string fileName, FileType filetype);
 
-   void gdcmHeader::Write(FILE* fp,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